Tworzenie funkcji zwracającej odpowiedź modelu LLM
Twój chatbot ma teraz do dyspozycji wiele narzędzi. Mimo to przydatne jest samodzielne wywoływanie modelu LLM, gdy pytanie nie jest związane z żadnym z dodanych narzędzi. Teraz zdefiniujesz funkcję, która sprawdza ostatnią wiadomość w rozmowie pod kątem potencjalnych wywołań narzędzi. Jeśli żadne nie są dostępne, chatbot po prostu użyje modelu LLM, aby udzielić odpowiedzi. Aby obsługiwać zarówno zapytania użytkownika, jak i odpowiedzi chatbota, zaimportowano dla ciebie następujące moduły do obsługi różnych typów wiadomości.
from langchain_core.messages import AIMessage, HumanMessage
To ćwiczenie jest częścią kursu
Projektowanie systemów agentowych z LangChain
Instrukcje do ćwiczenia
- Pobierz ostatnią wiadomość ze
stateza pomocą klucza"messages". - Napisz instrukcję warunkową sprawdzającą, czy
last_messagejest instancjąAIMessageoraz czy ta wiadomość zawieratool_calls. - Jeśli warunek jest spełniony, zwróć pierwszą wartość
"response"ztool_callspobraną zlast_messagew polucontentobiektuAIMessage. - Jeśli warunek nie jest spełniony, wywołaj
.invoke()namodel_with_tools, aby wygenerować odpowiedź, przekazując pełną historię rozmowy zstate["messages"].
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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": [____.____(____["____"])]}