Os chatbots evoluíram exponencialmente com o desenvolvimento em inteligência synthetic (IA). Agora, com o aparecimento dos agentes de IA, estes tornaram-se capazes de lidar com interações mais complexas e em camadas, muito além dos limites tradicionais de conversação. Em nosso artigo anterior sobre Construindo Chatbots Multiagentes com AutoGenexploramos o conceito de chat sequencial usando AutoGen, que permite comunicação estruturada e baseada em turnos entre vários agentes. Agora, com base nessa base, passaremos para um recurso mais complexo: bate-papo aninhado. Com a estrutura robusta do AutoGen, as conversas aninhadas permitem que os bots mantenham trocas fluidas em vez de seguir uma sequência fixa. Eles podem explorar outras ferramentas, lidar com interrupções e retomar sem problemas, tudo em um único fluxo de conversa. Este artigo irá guiá-lo na implementação de chat aninhado no AutoGen e destacar sua relevância na criação de interações de agente dinâmicas e responsivas.
O que é bate-papo aninhado?
Vamos começar entendendo o que é um chat aninhado.
Considere um bate-papo com três agentes em que é necessário que dois agentes conversem repetidamente entre si em um loop. Este chat entre dois agentes pode ser adicionado em um chat aninhado. Depois que essa conversa separada for concluída, o agente poderá trazer de volta o contexto da conversa principal.
A figura abaixo mostra o fluxo de conversão de um chat aninhado.

Quando a mensagem recebida aciona uma condição, essa mensagem vai para o chat aninhado. Esse aninhado pode ser um chat de dois agentes, um chat sequencial ou qualquer outro. Em seguida, os resultados do chat aninhado são enviados de volta para a conversa principal.
Implementando bate-papo aninhado no AutoGen
Neste artigo, construiremos um sistema de redação de artigos usando um bate-papo aninhado. Para isso, criaremos três agentes – um para escrever o esboço do artigo, outro para escrever o artigo com base neste esboço e outro para revisar o artigo. Queremos que o redator e o revisor conversem várias vezes, então teremos esses dois em um bate-papo aninhado.
Além disso, também forneceremos ao agente do esboço acesso a uma ferramenta para consultar an internet.
Agora, vamos implementar isso com código.
Pré-requisitos
Antes de criar agentes AutoGen, certifique-se de ter as chaves de API necessárias para os LLMs necessários. Para este exercício, também usaremos o Tavily para pesquisar na internet.
Carregue o arquivo .env com as chaves de API necessárias. Aqui usaremos OpenAI e Tavily Chaves de API ().
from dotenv import load_dotenv
load_dotenv('/house/santhosh/Initiatives/programs/Pinnacle/.env')
Defina o LLM a ser usado como config_list
config_list = {
"config_list": ({"mannequin": "gpt-4o-mini", "temperature": 0.2})
}
Bibliotecas-chave necessárias
autogen-agentchat – 0.2.37
Tavily-python – 0.5.0
Agora, vamos à implementação.
Etapa 1: definir o agente do Define com o uso da ferramenta
Defina o agente user_proxy que também executará a ferramenta. Em seguida, defina o Define Agent usando o LLM para gerar o esboço do artigo.
from autogen import ConversableAgent
user_proxy = ConversableAgent(
identify="Consumer",
llm_config=False,
is_termination_msg=lambda msg: msg.get("content material") is just not None and "TERMINATE" in msg("content material"),
human_input_mode="TERMINATE")
define = ConversableAgent(
identify="Article_outline",
system_message="""You're an knowledgeable content material strategist tasked with creating an in depth define
for an article on a specified matter. Your objective is to prepare the article into
logical sections that assist convey the primary concepts clearly and successfully.
Use the web_search instrument if wanted.
Return 'TERMINATE' when the duty is completed.""",
llm_config=config_list,
silent=False,
)
Defina a função web_search para consultar o arquivo internet.
def web_search(question: str) -> str:
tavily_client = TavilyClient()
response = tavily_client.search(question, max_results=3, days=10, include_raw_content=True)
return response('outcomes')
Registre a função web_search no agente de estrutura com o executor como user_proxy.
Estamos tornando o executor user_proxy para que possamos revisar o esboço que vai para o agente escritor.
register_function(
web_search,
caller=define, # The assistant agent can counsel calls.
executor=user_proxy, # The consumer proxy agent can execute the calls.
identify="web_search", # By default, the perform identify is used because the instrument identify.
description="Searches web to get the outcomes a for given question", # An outline of the instrument.
)
Etapa 2: definir os agentes redatores e revisores
Defina um agente para gerar o conteúdo do artigo e outro para revisar o artigo e dar sugestões de melhorias.
author = ConversableAgent(
identify="Article_Writer",
system_message="""You're a expert author assigned to create a complete, partaking article
based mostly on a given define. Your objective is to observe the construction offered within the define,
increasing on every part with well-researched, clear, and informative content material.
Preserve the article size to round 500 phrases.
Use the web_search instrument if wanted.
Return 'TERMINATE' when the duty is completed.""",
llm_config=config_list,
silent=False,
)
reviewer = ConversableAgent(
identify="Article_Reviewer",
system_message="""You're a expert article reviewer who can overview technical articles.
Evaluate the given article and supply solutions to make the article extra partaking and fascinating.
""",
llm_config=config_list,
silent=False,
)
Etapa 3: registrar o bate-papo aninhado
Agora podemos registrar os chats aninhados para ambos os agentes.
author.register_nested_chats(
set off=user_proxy,
chat_queue=(
{
"sender": reviewer,
"recipient": author,
"summary_method": "last_msg",
"max_turns": 2,
}
),
)
No código acima, quando user_proxy envia qualquer mensagem ao agente escritor, isso irá acionar o chat aninhado. Em seguida, o agente redator escreverá o artigo e o agente revisor revisará o artigo quantas vezes max_turns, duas neste caso. Finalmente, o resultado do chat aninhado é enviado de volta ao agente do usuário.
Etapa 4: iniciar o bate-papo aninhado
Agora que tudo está definido, vamos iniciar o chat
chat_results = user_proxy.initiate_chats(
({"recipient": define,
"message": "Write an article on Magentic-One agentic system launched by Microsoft.",
"summary_method": "last_msg",
},
{"recipient": author,
"message": "That is the article define",
"summary_method": "last_msg",
}))
Aqui, vamos escrever um artigo sobre o sistema de agentes Magentic-One. Primeiro, o agente user_proxy iniciará um bate-papo com o Define Agent e, em seguida, com o Author Agent.
Agora, a saída do código acima será assim:

Como podemos ver, o user_proxy primeiro envia uma mensagem informando o tópico do artigo para o Define Agent. Isso aciona a chamada da ferramenta e user_proxy executa a ferramenta. Com base nesses resultados, o Define Agent irá gerar o esboço e enviá-lo ao agente escritor. Depois disso, o bate-papo aninhado entre o agente redator e o agente revisor continua conforme discutido acima.
Agora vamos imprimir o resultado last, que é o artigo sobre magentic-one.
print(chat_results(1).chat_history(-2)('content material'))

Conclusão
O bate-papo aninhado no AutoGen aprimora os recursos do chatbot, permitindo interações complexas e multitarefa em um único fluxo de conversa. O chat aninhado permite que os bots iniciem chats separados e especializados e integrem seus resultados perfeitamente. Esse recurso oferece suporte a respostas dinâmicas e direcionadas em diversas aplicações, desde comércio eletrônico até assistência médica. Com bate-papo aninhado, o AutoGen abre caminho para sistemas de IA mais responsivos e sensíveis ao contexto. Isso permite que os desenvolvedores criem chatbots sofisticados que atendam com eficiência às diversas necessidades dos usuários.
Se você quiser saber mais sobre AI Brokers, confira nosso exclusivo Programa pioneiro de IA Agentic!
Perguntas frequentes
R. O chat aninhado no AutoGen permite que um chatbot gerencie várias subconversas em um único fluxo de chat, geralmente envolvendo outros agentes ou ferramentas para recuperar informações específicas. Ao contrário do chat sequencial, que segue uma abordagem estruturada e baseada em turnos, o chat aninhado permite que os bots lidem com interrupções e tarefas paralelas, integrando seus resultados de volta à conversa principal.
R. O chat aninhado melhora o suporte ao cliente, permitindo que os bots deleguem tarefas a agentes especializados. Por exemplo, no comércio eletrônico, um chatbot pode consultar um agente separado para verificar o standing do pedido ou as informações do produto e, em seguida, retransmitir perfeitamente as informações ao usuário, garantindo respostas mais rápidas e precisas.
R. O chat aninhado pode ser aplicado em diversos setores. Na banca, oferece suporte especializado para consultas de contas e empréstimos; no RH, auxilia nas tarefas de integração; e na área da saúde, trata do agendamento de consultas e consultas de cobrança. Essa flexibilidade torna o bate-papo aninhado adequado para qualquer domínio que exija multitarefa e manipulação detalhada de informações.
R. Sim, a implementação de chat aninhado no AutoGen requer a configuração de agentes com chaves de API específicas, como para modelos de linguagem ou ferramentas de pesquisa na internet como Tavily. Além disso, cada agente deve ser definido com tarefas e ferramentas adequadas para a boa execução de conversas aninhadas.
R. Sim, o AutoGen permite rastrear os custos incorridos por cada agente em um chat aninhado. Ao acessar o atributo `custo` nos resultados do chat, os desenvolvedores podem monitorar despesas relacionadas às interações dos agentes, ajudando a otimizar o uso e a eficiência dos recursos do chatbot.