Erstelle eine Funktion, die eine LLM Antwort zurückgibt
Dein Chatbot hat jetzt eine Menge Werkzeuge zur Verfügung. Es ist immer noch nützlich, LLM selbst aufzurufen, wenn eine Frage keinen Bezug zu einem der Tools hat, die dem Chatbot hinzugefügt wurden. Jetzt definierst du eine Funktion, die die letzte Nachricht in der Konversation auf mögliche Tool-Aufrufe überprüft. Wenn keine vorhanden sind, verwendet der Chatbot einfach die LLM, um eine Antwort zu geben. Um sowohl die Anfragen der Nutzer als auch die Antworten des Chatbots bearbeiten zu können, wurden die folgenden Module importiert, damit du verschiedene Arten von Nachrichten bearbeiten kannst.
from langchain_core.messages import AIMessage, HumanMessage
Diese Übung ist Teil des Kurses
Agentensysteme mit LangChain entwerfen
Anleitung zur Übung
- Rufe die letzte Nachricht von der
state
mit"messages"
auf. - Schreibe eine bedingte Anweisung, um zu prüfen, ob die
last_message
eineAIMessage
ist und ob diese Nachricht auchtool_calls
enthält. - Wenn die Bedingung erfüllt ist, gibst du den ersten
"response"
austool_calls
zurück, der aus demlast_message
im Feldcontent
desAIMessage
entnommen wurde. - Wenn die Bedingung nicht erfüllt ist, wende
.invoke()
aufmodel_with_tools
an, um eine Antwort zu generieren und übergebe den vollständigen Gesprächsverlauf vonstate["messages"]
.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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": [____.____(____["____"])]}