Definindo nós e arestas para chamadas de função flexíveis

Projetando Sistemas Agentes com LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Construindo um fluxo com várias ferramentas

   

  • Várias ferramentas disponíveis

    • Palíndromo
    • Eventos históricos
    • Wikipedia

Fluxo completo do chatbot

Projetando Sistemas Agentes com LangChain

Definir funções do fluxo de trabalho

   

  • Criar uma função de parada

Nós de chatbot e ferramentas do fluxo.

Projetando Sistemas Agentes com LangChain

Definir funções do fluxo de trabalho

   

  • Criar uma função de parada

    • Verificar chamadas de ferramenta

Regras da função de parada destacadas.

Projetando Sistemas Agentes com LangChain

Definir funções do fluxo de trabalho

   

  • Criar uma função de parada

    • Verificar chamadas de ferramenta
    • Encerrar a conversa se não houver

Regras de END destacadas no fluxo

Projetando Sistemas Agentes com LangChain

Definir funções do fluxo de trabalho

   

  • Criar uma função de parada

    • Verificar chamadas de ferramenta
    • Encerrar a conversa se não houver    
  • Criar um chamador de ferramenta dinâmico

    • Retornar a resposta da ferramenta se houver chamada

Regras de Call_model destacadas.

Projetando Sistemas Agentes com LangChain

Definir funções do fluxo de trabalho

   

  • Criar uma função de parada

    • Verificar chamadas de ferramenta
    • Encerrar a conversa se não houver    
  • Criar um chamador de ferramenta dinâmico

    • Retornar a resposta da ferramenta se houver chamada
    • Invocar o LLM só com o nó do chatbot se não houver chamadas

Regras de Call_model destacadas.

Projetando Sistemas Agentes com LangChain

Definir funções do fluxo de trabalho

   

  • Criar uma função de parada

    • Verificar chamadas de ferramenta
    • Encerrar a conversa se não houver    
  • Criar um chamador de ferramenta dinâmico

    • Retornar a resposta da ferramenta se houver chamada
    • Invocar o LLM só com o nó do chatbot se não houver chamadas
  • Compilar o grafo completo

Regras de Call_model destacadas.

Projetando Sistemas Agentes com LangChain

Criar uma função de condição de parada

from langgraph.graph import MessagesState, START, END


# Use MessagesState para definir o estado da função de parada def should_continue(state: MessagesState):
# Pegue a última mensagem do estado last_message = state["messages"][-1]
# Verifique se a última mensagem inclui chamadas de ferramenta if last_message.tool_calls: return "tools"
# Encerre a conversa se não houver chamadas de ferramenta return END
Projetando Sistemas Agentes com LangChain

Criar um chamador de ferramenta dinâmico

# Extraia a última mensagem do histórico
def call_model(state: MessagesState):

last_message = state["messages"][-1]
# Se a última mensagem tiver chamadas de ferramenta, retorne a resposta da ferramenta if isinstance(last_message, AIMessage) and last_message.tool_calls:
# Retorne as mensagens da chamada de ferramenta return {"messages": [AIMessage(content=last_message.tool_calls[0]["response"])]}
# Caso contrário, prossiga com uma resposta normal do LLM return {"messages": [model_with_tools.invoke(state["messages"])]}
Projetando Sistemas Agentes com LangChain

Criar o grafo

workflow = StateGraph(MessagesState)












Projetando Sistemas Agentes com LangChain

Criar o grafo

workflow = StateGraph(MessagesState)


# Adicione nós para chatbot e ferramentas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)

Nós de chatbot e ferramentas.

Projetando Sistemas Agentes com LangChain

Criar o grafo

workflow = StateGraph(MessagesState)


# Adicione nós para chatbot e ferramentas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Conecte o nó START ao chatbot workflow.add_edge(START, "chatbot")

Adicionar nó START ao chatbot.

Projetando Sistemas Agentes com LangChain

Criar o grafo

workflow = StateGraph(MessagesState)


# Adicione nós para chatbot e ferramentas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Conecte o nó START ao chatbot workflow.add_edge(START, "chatbot")
# Defina condições e volte para o chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])

Grafo com condições adicionadas.

Projetando Sistemas Agentes com LangChain

Criar o grafo

workflow = StateGraph(MessagesState)


# Adicione nós para chatbot e ferramentas workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Conecte o nó START ao chatbot workflow.add_edge(START, "chatbot")
# Defina condições e volte para o chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])
workflow.add_edge("tools", "chatbot")

Fluxo do grafo completo.

Projetando Sistemas Agentes com LangChain

Adicionando memória

# Configurar memória e compilar o fluxo
memory = MemorySaver()

app = workflow.compile( checkpointer=memory)
display(Image(app.get_graph() .draw_mermaid_png()))

Fluxo do grafo completo.

Projetando Sistemas Agentes com LangChain

Vamos praticar!

Projetando Sistemas Agentes com LangChain

Preparing Video For Download...