Organize as saídas do chatbot com memória

Projetando Sistemas Agentes com LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Streaming de várias saídas de ferramentas

    Fluxo completo do grafo.

 

  • Imprimir saídas com várias ferramentas
      - Agent: [Tool 1: answer]
      - Agent: [Tool 2: answer]
    
  • Mostrar a pergunta e ativar memória
      - User: [Query]
      - Agent: [Tool 1: answer]
    
      - User: [Follow-up query]
      - Agent: [Tool 1: follow-up answer]
    
Projetando Sistemas Agentes com LangChain

Streaming de várias saídas de ferramentas

from langchain_core.messages import AIMessage, HumanMessage


config = {"configurable": {"thread_id": "1"}}
# Criar a mensagem de entrada com a pergunta do usuário def multi_tool_output(query):
inputs = {"messages": [HumanMessage(content=query)]}
# Fazer streaming de mensagens e metadados do app do chatbot for msg, metadata in app.stream(inputs, config, stream_mode="messages"):
# Verificar se há conteúdo e se não é do humano if msg.content and not isinstance(msg, HumanMessage): print(msg.content, end="", flush=True)
print("\n")
Projetando Sistemas Agentes com LangChain

Testar com várias ferramentas

Verificar atribuição dinâmica de ferramentas
multi_tool_output("Is `Stella won no wallets` a palindrome?")

multi_tool_output("What happened on April 12th, 1955?")
A frase ou palavra 'Stella won no wallets' é um palíndromo.

Sim, a frase "Stella won no wallets" é um palíndromo.
12 de abril de 1955 foi notável por vários motivos, especialmente em ciência e tecnologia. Nessa data, a primeira vacina bem-sucedida contra a pólio, desenvolvida pelo Dr. Jonas Salk, foi anunciada ao público. Esse avanço foi decisivo no combate à poliomielite, doença que causava medo e surtos, afetando principalmente crianças. O anúncio marcou um ponto de virada na saúde pública e levou a campanhas de vacinação em larga escala que quase erradicaram a pólio...
Projetando Sistemas Agentes com LangChain

Perguntas de acompanhamento com várias ferramentas

# Imprimir a pergunta do usuário primeiro em cada interação
def user_agent_multiturn(queries):
    for query in queries:
        print(f"User: {query}")


# Fazer streaming das mensagens das perguntas, excluindo metadados print("Agent: " + "".join(msg.content for msg, metadata in app.stream( {"messages": [HumanMessage(content=query)]}, config, stream_mode="messages")
# Filtrar mensagens humanas para imprimir as do agente if msg.content and not isinstance(msg, HumanMessage)) + "\n")
queries = ["What happened on the 12 April 1961?", "What about 10 December 1948?", "Is `Mr. Owl ate my metal worm?` a palindrome?", "What about 'palladium stadium?'"] user_agent_multiturn(queries)
Projetando Sistemas Agentes com LangChain

Saída da conversa completa

  • Eventos históricos
User: O que aconteceu em 12 de abril de 1961?
Agent: Em 12 de abril de 1961, Yuri Gagarin, cosmonauta soviético, foi o primeiro humano a ir 
ao espaço a bordo da espaçonave Vostok 1...

User: E em 22 de novembro de 1963?
Agent: 10 de dezembro de 1948... marca a Declaração Universal dos Direitos Humanos (DUDH).
  • Verificação de palíndromo
User: `Mr. Owl ate my metal worm?` é um palíndromo?
Agent: A frase ou palavra 'Mr. Owl ate my metal worm?' é um palíndromo...

User: E 'palladium stadium'?
Agent: Não, a expressão `palladium stadium` não é um palíndromo...
Projetando Sistemas Agentes com LangChain

Vamos praticar!

Projetando Sistemas Agentes com LangChain

Preparing Video For Download...