Schrijf een functie die een LLM-respons teruggeeft
Je chatbot heeft nu flink wat tools beschikbaar. Het is nog steeds handig om de LLM op zichzelf aan te roepen wanneer een vraag niets te maken heeft met de tools die aan de chatbot zijn toegevoegd. Je gaat nu een functie definiëren die het laatste bericht in het gesprek controleert op mogelijke tool-calls. Als die er niet zijn, gebruikt de chatbot simpelweg de LLM om een antwoord te geven. Om zowel de vragen van de gebruiker als de reacties van de chatbot te kunnen verwerken, zijn de volgende modules voor je geïmporteerd om verschillende typen berichten te behandelen.
from langchain_core.messages import AIMessage, HumanMessage
Deze oefening maakt deel uit van de cursus
Agentic Systems ontwerpen met LangChain
Oefeninstructies
- Haal het laatste bericht op uit de
statevia"messages". - Schrijf een voorwaardelijke instructie om te controleren of
last_messageeenAIMessageis en dat dit bericht ooktool_callsbevat. - Als aan de voorwaarde is voldaan, retourneer de eerste
"response"uittool_callsvan delast_messagein hetcontent-veld van deAIMessage. - Als niet aan de voorwaarde is voldaan, pas
.invoke()toe opmodel_with_toolsom een respons te genereren, en geef de volledige gespreksgeschiedenis door viastate["messages"].
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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": [____.____(____["____"])]}