Brunarize / app.py
lemesdaniel's picture
a
6ac70aa
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)