Skapa en funktion för att returnera ett LLM-svar
Din chatbot har nu tillgång till flera verktyg. Det är ändå användbart att anropa LLM:en direkt när en fråga inte är kopplad till något av de tillgängliga verktygen. Nu ska du definiera en funktion som kontrollerar det senaste meddelandet i konversationen efter eventuella verktygsanrop. Om inga sådana finns använder chatboten helt enkelt LLM:en för att generera ett svar. För att kunna hantera både användarens frågor och chatbotens svar har följande moduler importerats åt dig.
from langchain_core.messages import AIMessage, HumanMessage
Den här övningen är en del av kursen
Designa agentbaserade system med LangChain
Övningsinstruktioner
- Hämta det senaste meddelandet från
statemed hjälp av"messages". - Skriv en villkorssats som kontrollerar om
last_messageär ettAIMessageoch att meddelandet också innehållertool_calls. - Om villkoret är uppfyllt, returnera det första
"response"-värdet fråntool_callsilast_messagesomcontent-fält iAIMessage. - Om villkoret inte är uppfyllt, anropa
.invoke()påmodel_with_toolsför att generera ett svar och skicka med hela konversationshistoriken frånstate["messages"].
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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": [____.____(____["____"])]}