ComeçarComece de graça

Crie uma função para retornar uma resposta do LLM

Seu chatbot agora tem várias ferramentas disponíveis. Ainda assim, é útil invocar o LLM sozinho quando a pergunta não tem relação com nenhuma das ferramentas adicionadas ao chatbot. Agora você vai definir uma função que verifica a última mensagem da conversa para possíveis chamadas de ferramenta. Se não houver, o chatbot usará apenas o LLM para retornar uma resposta. Para conseguir lidar tanto com as consultas do usuário quanto com as respostas do chatbot, os seguintes módulos foram importados para você tratar diferentes tipos de mensagens.

from langchain_core.messages import AIMessage, HumanMessage

Este exercício faz parte do curso

Projetando Sistemas Agentes com LangChain

Ver curso

Instruções do exercício

  • Acesse a última mensagem do state usando "messages".
  • Escreva uma condição para verificar se last_message é um AIMessage e se essa mensagem também contém tool_calls.
  • Se a condição for satisfeita, retorne o primeiro "response" de tool_calls, obtido de last_message, no campo content do AIMessage.
  • Se a condição não for satisfeita, aplique .invoke() a model_with_tools para gerar uma resposta, passando todo o histórico da conversa de state["messages"].

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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": [____.____(____["____"])]}
Editar e executar o código