Spaces:
Building
Building
import os | |
from pinecone import Pinecone as PineconeClient | |
import gradio as gr | |
from langchain.chains import LLMChain | |
from langchain.prompts import PromptTemplate | |
from langchain_community.chat_models import ChatOpenAI | |
from langchain_community.vectorstores import Pinecone | |
from langchain_openai import OpenAIEmbeddings | |
from dotenv import load_dotenv, find_dotenv | |
load_dotenv(find_dotenv(), override=True) | |
PINECONE_API_KEY = os.environ.get('PINECONE_API_KEY') | |
PINECONE_ENV = os.environ.get('PINECONE_ENV') | |
embeddings = OpenAIEmbeddings() | |
pc = PineconeClient(api_key=PINECONE_API_KEY) | |
index_name = "linuxtips" | |
index = pc.Index(index_name) | |
index.describe_index_stats() | |
llm = ChatOpenAI(model='gpt-4o-mini', temperature=0) | |
template="""Assistente é uma IA jurídica que tira dúvidas. | |
Assistente elabora repostas simplificadas, com base no contexto fornecido. | |
Assistente fornece referências extraídas do contexto abaixo. Não gere links ou referência adicionais. | |
Assistente fornece a resposta em duas versões, português e inglês. | |
Ao final da resposta exiba no formato de lista as referências extraídas. | |
Caso não consiga encontrar no contexto abaixo ou caso a pergunta não esteja relacionada do contexto jurídico, | |
diga apenas 'Eu não sei!' | |
Question: {query} | |
Context: {context} | |
""" | |
prompt = PromptTemplate( | |
template=template, | |
input_variables=["query", "context"], | |
) | |
def search(query): | |
docsearch = Pinecone.from_existing_index(index_name, embeddings) | |
docs = docsearch.similarity_search(query, k=3) | |
context = docs[0].page_content + docs[1].page_content + docs[2].page_content | |
resp = LLMChain(prompt=prompt, llm=llm) | |
return resp.run(query=query, context=context) | |
with gr.Blocks(title="Brunarize GPT", theme=gr.themes.Soft()) as ui: | |
gr.Markdown("# Sou Brunarize, uma IA que tem a seguros como base de conhecimento") | |
query = gr.Textbox(label='Faça a sua pergunta:', placeholder="EX: please tell me what are the main functions of an autarchy department?") | |
text_output = gr.Textbox(label="Resposta") | |
btn = gr.Button("Perguntar") | |
btn.click(fn=search, inputs=query, outputs=[text_output]) | |
ui.launch(share=True) | |