Zprovoznění konverzace s více otázkami pomocí paměti
Chatbot je téměř připravený ke sdílení se školní administrativou! Aby měli studenti plynulý průběh učení, je důležité umožnit jim pokládat doplňující otázky. Pokud chatbot v první odpovědi něco nevysvětlí dostatečně, mohou studenti svůj dotaz upřesnit a pokračovat v konverzaci. Teď upravíš streamovací funkci chatbota tak, aby podporovala více otázek za sebou – a vypisovala jak dotaz uživatele, tak odpověď chatbota. Aby paměť fungovala, LangGraph při každé doplňující otázce odešle celou dosavadní konverzaci do LLM. Parametry config jsou už nastavené pro jednoho uživatele:
config = {"configurable": {"thread_id": "1"}}
Toto cvičení je součástí kurzu
Návrh agentních systémů s LangChain
Pokyny k cvičení
- Na začátku každého kola vypiš dotaz uživatele
queryze seznamuqueries. - Iteruj přes
msgametadatapomocíapp.stream(), přičemž předejqueryjakocontentzprávyHumanMessagespolu sconfig, a spoj hodnotymsg.content. - Pro extrakci odpovědí chatbota vypiš
msg.contents vyloučením zpráv označených jakoHumanMessagea před dalším dotazem přidej nový řádek.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Print the user query first for every interaction
def user_agent_multiturn(queries):
for ____ in ____:
print(f"User: {____}")
# Stream through messages corresponding to queries, excluding metadata
print("Agent: " + "".join(____.____ for ____, ____ in app.____(
{"messages": [____(____=_____)]}, config, stream_mode="messages")
# Filter out the human messages to print agent messages
if ____.____ and not isinstance(____, ____)) + "____")
queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
"What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)