LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Greife über "messages" im state auf die letzte Nachricht zu.
  • Schreibe eine Bedingung, die prüft, ob last_message eine AIMessage ist und diese Nachricht außerdem tool_calls enthält.
  • Wenn die Bedingung erfüllt ist, gib die erste "response" aus tool_calls der last_message im content-Feld der AIMessage zurück.
  • Wenn die Bedingung nicht erfüllt ist, wende .invoke() auf model_with_tools an, um eine Antwort zu erzeugen, und übergib dabei den vollständigen Gesprächsverlauf aus state["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": [____.____(____["____"])]}
Code bearbeiten und ausführen