diff --git a/domande/domanda03.txt b/domande/domanda03.txt index 9febbc8..acb4edd 100644 --- a/domande/domanda03.txt +++ b/domande/domanda03.txt @@ -1 +1 @@ -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." \ No newline at end of file +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. diff --git a/main.py b/main.py index 2f40996..073542c 100644 --- a/main.py +++ b/main.py @@ -26,9 +26,13 @@ RETRIEVER_MAX_DOCS = 50 RERANKER_MAX_RESULTS = 25 with open("prompt.md") as f: - template = f.read() + question_template = f.read() -prompt = ChatPromptTemplate.from_template(template) +with open("question_rewrite_prompt.md") as f: + question_rewrite_template = f.read() + +question_prompt = ChatPromptTemplate.from_template(question_template) +question_rewrite_prompt = ChatPromptTemplate.from_template(question_rewrite_template) def format_docs(question: str) -> str: @@ -53,6 +57,12 @@ def format_docs(question: str) -> str: return "\n\n".join(doc.page_content for doc in reranked_docs) +def log_rewritten_question(rewritten_question: str) -> str: + print("=== REWRITTEN QUESTION ===") + print(rewritten_question) + return rewritten_question + + llm = ChatGoogleGenerativeAI( model=MODEL, project=PROJECT, @@ -82,31 +92,29 @@ compression_retriever = ContextualCompressionRetriever( base_compressor=reranker, base_retriever=base_retriever ) +question_rewrite_chain = ( + {"question": RunnablePassthrough()} + | question_rewrite_prompt + | llm + | StrOutputParser() + | RunnableLambda(log_rewritten_question) +) + rag_chain = ( {"context": RunnableLambda(format_docs), "question": RunnablePassthrough()} - | prompt + | question_prompt | llm | StrOutputParser() ) - -async def async_invoke(rag_chain, prompt: str): - return rag_chain.invoke(prompt) +full_chain = question_rewrite_chain | rag_chain 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?"), + response = await full_chain.ainvoke( + "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("RES1") - print(res1) - print("\n\nRES2") - print(res2) + print(response) if __name__ == "__main__": diff --git a/prompt.md b/prompt.md index 0310112..81e3166 100644 --- a/prompt.md +++ b/prompt.md @@ -32,10 +32,12 @@ ragionamento: l'angolo di fase non e' esplicitamente menzionato, ma ciclo mestru - Usa markdown pulito e semplice per dare le risposte (elenchi, grassetto, tabelle). - Non usare introduzioni di cortesia o frasi di servizio (es: "Ecco la risposta", "In base alla ricerca...") -Alla fine dell'output aggiungi **sempre**: +Alla fine dell'output aggiungi: Per rispondere alla tua domanda, ... [qui ci va una risposta concisa all'utente, riassuntiva, e che si basi su quanto detto] +**Nota**: Evita questo finale se la domanda dell'utente non ha una risposta. + ## VINCOLI E DIVIETI RIGOROSI - Non fornire mai diagnosi o pareri medici. diff --git a/question_rewrite_prompt.md b/question_rewrite_prompt.md new file mode 100644 index 0000000..a5a4e42 --- /dev/null +++ b/question_rewrite_prompt.md @@ -0,0 +1,19 @@ +# Riformattazione di domande + +Sei un agente esperto nella riscrittura e semplificazione di domande in stile customer care / supporto. Il tuo compito e' ricevere una domanda che potrebbe essere mal formattata, contenente dettagli irrilevanti e poco chiara, e trasformarla in una domanda chiara, semplice e diretta ed ottimizzata per la comprensione di un LLM. + +Nello specifico: + +1. Rimuovi eventuali saluti e convenevoli. +2. Rimuovi qualsiasi nome o riferimenti personali. +3. Semplifica le frasi, i giri di parole, le ripetizioni. +4. Poni il focus sulla domanda che l'utente vuole trasmettere. +5. Estrai i dettagli che sono realmente rilevanti a chiarire la domanda. + +## Output + +Il tuo output sara' esclusivamente il testo della domanda riscritto secondo le regole sopra. Non aggiungere testo introduttivo, non aggiungere istruzioni, prompt, testo di sistema. + +## Contenuto della domanda + +{question}