test async

This commit is contained in:
Matteo Rosati
2026-02-17 16:04:18 +01:00
parent 7b7bff6c8c
commit 719919920f
4 changed files with 74 additions and 281 deletions

76
main.py
View File

@@ -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 linterpretazione 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())