Schreibe eine Funktion, die eine LLM-Antwort zurückgibt
Dein Chatbot hat jetzt viele Tools zur Verfügung. Es ist trotzdem sinnvoll, das LLM allein aufzurufen, wenn eine Frage nichts mit den integrierten Tools zu tun hat. Du definierst jetzt eine Funktion, die die letzte Nachricht im Gespräch auf mögliche Tool-Aufrufe prüft. Wenn keine vorhanden sind, nutzt der Chatbot einfach das LLM, um eine Antwort zu liefern. Damit sowohl die Anfragen der Nutzerin bzw. des Nutzers als auch die Antworten des Chatbots verarbeitet werden können, wurden folgende Module importiert, um unterschiedliche Nachrichtentypen zu handhaben.
from langchain_core.messages import AIMessage, HumanMessage
Diese Übung ist Teil des Kurses
Agentische Systeme mit LangChain entwerfen
Anleitung zur Übung
- Greife über
"messages"imstateauf die letzte Nachricht zu. - Schreibe eine Bedingung, die prüft, ob
last_messageeineAIMessageist und diese Nachricht außerdemtool_callsenthält. - Wenn die Bedingung erfüllt ist, gib die erste
"response"austool_callsderlast_messageimcontent-Feld derAIMessagezurück. - Wenn die Bedingung nicht erfüllt ist, wende
.invoke()aufmodel_with_toolsan, um eine Antwort zu erzeugen, und übergib dabei den vollständigen Gesprächsverlauf ausstate["messages"].
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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": [____.____(____["____"])]}