test async
This commit is contained in:
76
main.py
76
main.py
@@ -1,3 +1,5 @@
|
||||
import asyncio
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from langchain_classic.retrievers import ContextualCompressionRetriever
|
||||
from langchain_core.output_parsers import StrOutputParser
|
||||
@@ -13,6 +15,7 @@ PROJECT = "akqa-ita-ai-poc1"
|
||||
DATA_STORE = "akern-ds_1771234036654"
|
||||
MODEL = "gemini-2.5-flash"
|
||||
LOCATION = "eu"
|
||||
PRINT_SOURCES = False
|
||||
|
||||
# LLM CONFIG
|
||||
TOP_K = 40
|
||||
@@ -30,19 +33,22 @@ prompt = ChatPromptTemplate.from_template(template)
|
||||
|
||||
def format_docs(question: str) -> str:
|
||||
retrieved_docs = base_retriever.invoke(question)
|
||||
|
||||
print("========== RETRIEVER DOCUMENTS ==========")
|
||||
for idx, doc in enumerate(retrieved_docs, start=1):
|
||||
snippet = doc.page_content[:200].replace("\n", " ")
|
||||
print(f"[{idx}] metadata={doc.metadata['source']} | snippet=...{snippet}...")
|
||||
|
||||
reranked_docs = compression_retriever.invoke(question)
|
||||
print("========== RERANKED DOCUMENTS ==========")
|
||||
for idx, doc in enumerate(reranked_docs, start=1):
|
||||
snippet = doc.page_content[:200].replace("\n", " ")
|
||||
print(
|
||||
f"[{idx}] metadata={doc.metadata['relevance_score']} | snippet=...{snippet}..."
|
||||
)
|
||||
|
||||
if PRINT_SOURCES:
|
||||
print("========== RETRIEVER DOCUMENTS ==========")
|
||||
for idx, doc in enumerate(retrieved_docs, start=1):
|
||||
snippet = doc.page_content[:200].replace("\n", " ")
|
||||
print(
|
||||
f"[{idx}] metadata={doc.metadata['source']} | snippet=...{snippet}..."
|
||||
)
|
||||
|
||||
print("========== RERANKED DOCUMENTS ==========")
|
||||
for idx, doc in enumerate(reranked_docs, start=1):
|
||||
snippet = doc.page_content[:200].replace("\n", " ")
|
||||
print(
|
||||
f"[{idx}] metadata={doc.metadata['relevance_score']} | snippet=...{snippet}..."
|
||||
)
|
||||
|
||||
return "\n\n".join(doc.page_content for doc in reranked_docs)
|
||||
|
||||
@@ -84,40 +90,24 @@ rag_chain = (
|
||||
)
|
||||
|
||||
|
||||
# def parse_questions():
|
||||
# domande_dir = "domande"
|
||||
# risposte_dir = "risposte"
|
||||
async def async_invoke(rag_chain, prompt: str):
|
||||
return rag_chain.invoke(prompt)
|
||||
|
||||
# os.makedirs(risposte_dir, exist_ok=True)
|
||||
|
||||
# for filename in sorted(os.listdir(domande_dir)):
|
||||
# if not filename.lower().endswith(".txt"):
|
||||
# continue
|
||||
async def main():
|
||||
(
|
||||
res1,
|
||||
res2,
|
||||
) = await asyncio.gather(
|
||||
async_invoke(rag_chain, "come si calcola l'angolo di fase?"),
|
||||
async_invoke(rag_chain, "cos'e' la massa magra?"),
|
||||
)
|
||||
|
||||
# domanda_path = os.path.join(domande_dir, filename)
|
||||
|
||||
# with open(domanda_path, "r", encoding="utf-8") as f:
|
||||
# contents = f.read()
|
||||
# print(f"========== DOMANDA ({domanda_path}) ==========")
|
||||
# print(contents)
|
||||
|
||||
# response = rag_chain.invoke(contents)
|
||||
|
||||
# print("========== RISPOSTA ==========")
|
||||
# print(response)
|
||||
# print("\n\n")
|
||||
|
||||
# base_name = os.path.splitext(filename)[0]
|
||||
# suffix = "".join(ch for ch in base_name if ch.isdigit()) or base_name
|
||||
# risposta_path = os.path.join(risposte_dir, f"risposta{suffix}.txt")
|
||||
|
||||
# with open(risposta_path, "w", encoding="utf-8") as f:
|
||||
# f.write(response)
|
||||
print("RES1")
|
||||
print(res1)
|
||||
print("\n\nRES2")
|
||||
print(res2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
response = rag_chain.invoke(
|
||||
"""Buongiorno, non so se è la mail specifica ma volevo se possibile dei chiarimenti per l’interpretazione dei parametri BCM /SMM/ASMM. Mi capita a volte di trovare casi in cui la BCM è aumentata ma allo stesso tempo SMM/ASMM hanno subito una piccola flessione in negativo (o viceversa). Se la parte metabolicamente attiva aumenta perchè può succedere che gli altri compartimenti si riducono?? E allo stesso tempo phA e BCM possono essere inversamente proporzionali?? So che il phA correla con massa e struttura + idratazione."""
|
||||
)
|
||||
|
||||
print(response)
|
||||
asyncio.run(main())
|
||||
|
||||
Reference in New Issue
Block a user