Bir LLM yanıtı döndüren fonksiyon oluştur
Sohbet botunun artık birçok aracı var. Yine de, sohbete eklenen araçlarla ilgisi olmayan bir soru geldiğinde LLM'i tek başına çağırmak faydalıdır. Şimdi, konuşmadaki son mesajı olası araç çağrıları için kontrol eden bir fonksiyon tanımlayacaksın. Eğer hiçbir araç çağrısı yoksa, sohbet botu yalnızca LLM'i kullanarak bir yanıt döndürecek. Hem kullanıcının sorgularını hem de sohbet botunun yanıtlarını işleyebilmek için, farklı mesaj türlerini ele almak üzere şu modüller senin için içe aktarıldı:
from langchain_core.messages import AIMessage, HumanMessage
Bu egzersiz
LangChain ile Aracı Sistemler Tasarlama
kursunun bir parçasıdırEgzersiz talimatları
stateiçinden"messages"anahtarını kullanarak son mesaja eriş.last_message'ın birAIMessageolup olmadığını ve bu mesajıntool_callsiçerip içermediğini kontrol eden bir koşullu ifade yaz.- Koşul sağlanıyorsa,
last_messageiçindekitool_calls'tan ilk"response"değerini al veAIMessage'ıncontentalanında döndür. - Koşul sağlanmıyorsa,
model_with_toolsüzerinde.invoke()çağırarak bir yanıt üret vestate["messages"]içindeki tam konuşma geçmişini geçir.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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": [____.____(____["____"])]}