4 etapas para criar bate-papos aninhados multiagentes com AutoGen


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.

4 etapas para criar bate-papos aninhados multiagentes com AutoGen

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:

bate-papo de agente aninhado no AutoGen

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

Estou trabalhando como Cientista de Dados Associado na Analytics Vidhya, uma plataforma dedicada à construção do ecossistema de Ciência de Dados. Meus interesses estão nas áreas de Processamento de Linguagem Pure (PNL), Aprendizado Profundo e Agentes de IA.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *