Vytvoř funkci pro vrácení odpovědi LLM
Tvůj chatbot teď disponuje řadou nástrojů. Přesto je užitečné volat LLM samostatně, když dotaz nesouvisí s žádným z dostupných nástrojů. Teď nadefinuješ funkci, která zkontroluje poslední zprávu v konverzaci a ověří, zda obsahuje nějaká tool calls. Pokud ne, chatbot jednoduše použije LLM k vygenerování odpovědi. Aby bylo možné pracovat jak s dotazy uživatele, tak s odpověďmi chatbota, jsou pro tebe již naimportovány následující moduly pro práci s různými typy zpráv.
from langchain_core.messages import AIMessage, HumanMessage
Toto cvičení je součástí kurzu
Návrh agentních systémů s LangChain
Pokyny k cvičení
- Načti poslední zprávu ze
statepomocí klíče"messages". - Napiš podmíněný příkaz, který ověří, zda je
last_messageinstancíAIMessagea zda tato zpráva obsahujetool_calls. - Pokud podmínka platí, vrať první
"response"ztool_callsnačtenou zlast_messagev policontentobjektuAIMessage. - Pokud podmínka neplatí, aplikuj
.invoke()namodel_with_toolspro vygenerování odpovědi a předej mu celou historii konverzace zestate["messages"].
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Extract the last message from the history
def call_model(state: MessagesState):
____ = ____["____"][____]
# If the last message has tool calls, return the tool's response
if isinstance(____, ____) and ____.____:
# Return only the messages from the tool call
return {"messages": [____(content=____.____[0]["____"])]}
# Otherwise, proceed with a regular LLM response
return {"messages": [____.____(____["____"])]}