Spaces:
Running
Running
File size: 2,836 Bytes
e63103b 408e821 e63103b 3f199c2 4d3bceb e63103b 3f199c2 7d2e972 3f199c2 0870c96 e63103b 3f199c2 1a93363 e63103b 4d3bceb 0870c96 3f199c2 0870c96 4d3bceb 4e93adb 4d3bceb 4e93adb 4d3bceb 4e93adb 4d3bceb 3251505 4e93adb 4d3bceb 4e93adb 4d3bceb 4167f1d 4d3bceb 7dc6d22 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import os
from _utils.utils import create_prompt_llm_chain, create_retriever, getPDF, create_llm, create_prompt_llm_chain_summary, process_embedding_summary
from _utils import utils
from langchain.chains import create_retrieval_chain
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
from langchain.chains.summarize import load_summarize_chain
os.environ.get("OPENAI_API_KEY")
def get_llm_answer(system_prompt, user_prompt, pdf_url, model, embedding):
if embedding == "gpt":
embedding_object = OpenAIEmbeddings()
else:
embedding_object = HuggingFaceEmbeddings(model_name=embedding)
vectorstore = Chroma(
collection_name="documents",
embedding_function=embedding_object
)
print('model: ', model)
print('embedding: ', embedding)
pages = []
if pdf_url:
pages = getPDF(pdf_url)
else:
pages = getPDF()
retriever = create_retriever(pages, vectorstore)
rag_chain = create_retrieval_chain(retriever, create_prompt_llm_chain(system_prompt, model))
results = rag_chain.invoke({"input": user_prompt})
# print('allIds ARQUIVO MAIN: ', utils.allIds)
vectorstore.delete( utils.allIds)
vectorstore.delete_collection()
utils.allIds = []
# print('utils.allIds: ', utils.allIds)
return results
def get_llm_answer_summary(system_prompt, user_prompt, pdf_url, model, isIterativeRefinement):
print('model: ', model)
print('isIterativeRefinement: ', isIterativeRefinement)
print('\n\n\n')
pages = getPDF(pdf_url)
if not isIterativeRefinement:
rag_chain = create_prompt_llm_chain_summary(system_prompt, model)
results = rag_chain.invoke({"input": user_prompt, "context": pages})
return results
else:
chain = load_summarize_chain(create_llm(model), "refine", True)
result = chain.invoke({"input_documents": pages})
print('result: ', result)
return result
# Obs --> Para passar informações personalizadas --> chain = load_summarize_chain(llm, "refine", True, question_prompt=initial_prompt, refine_prompt=PromptTemplate.from_template(refine_prompt))
# Para ver mais opções --> Acessa a origem da função load_summarize_chain , e nela acessa a origem da função _load_refine_chain --> As opções são os parâmetros que esta última função recebe
def get_llm_answer_summary_with_embedding(system_prompt, user_prompt, pdf_url, model, isIterativeRefinement):
print('model: ', model)
print('isIterativeRefinement: ', isIterativeRefinement)
print('\n\n\n')
pages = getPDF(pdf_url)
full_texto = ""
for p in pages:
full_texto += p.page_content
print('full_texto: ', full_texto)
rag_chain = process_embedding_summary(system_prompt, model)
results = rag_chain.invoke({"input": user_prompt, "context": pages})
return results |