Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Haal het laatste bericht op uit de state via "messages".
  • Schrijf een voorwaardelijke instructie om te controleren of last_message een AIMessage is en dat dit bericht ook tool_calls bevat.
  • Als aan de voorwaarde is voldaan, retourneer de eerste "response" uit tool_calls van de last_message in het content-veld van de AIMessage.
  • Als niet aan de voorwaarde is voldaan, pas .invoke() toe op model_with_tools om een respons te genereren, en geef de volledige gespreksgeschiedenis door via state["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": [____.____(____["____"])]}
Code bewerken en uitvoeren