AutoGen中的嵌套式聊天:构建更具响应性和动态性的AI代理交互
人工智能(AI)的进步使聊天机器人得到了飞速发展。如今,随着AI代理的出现,聊天机器人能够处理更复杂、更分层的交互,远远超出了传统对话的限制。在我们之前的文章《使用AutoGen构建多代理聊天机器人》中,我们探讨了使用AutoGen进行顺序聊天的概念,该概念允许在多个代理之间进行结构化、轮流式的通信。现在,在此基础上,我们将转向一个更复杂的功能:嵌套式聊天。借助AutoGen强大的框架,嵌套式对话使机器人能够保持流畅的交流,而不是遵循固定的顺序。它们可以在单个对话流程中深入研究其他工具,处理中断并顺利恢复。本文将指导您在AutoGen中实现嵌套式聊天,并重点介绍其在创建响应式、动态代理交互中的相关性。
目录
- 什么是嵌套式聊天?
- 在AutoGen中实现嵌套式聊天
- 先决条件
- 步骤1:使用工具定义轮廓代理
- 步骤2:定义编写者和审阅者代理
- 步骤3:注册嵌套式聊天
- 步骤4:启动嵌套式聊天
- 常见问题解答
什么是嵌套式聊天?
让我们首先了解什么是嵌套式聊天。
考虑一个三方代理聊天,其中需要两个代理反复进行循环对话。这两个代理之间的聊天可以添加到嵌套式聊天中。完成此单独的对话后,代理可以将上下文带回到主对话中。
下图显示了嵌套式聊天的转换流程。
当传入的消息触发某个条件时,该消息将进入嵌套式聊天。该嵌套式聊天可以是双代理聊天、顺序聊天或其他任何聊天。然后,嵌套式聊天的聊天结果将发送回主对话。
在AutoGen中实现嵌套式聊天
在本文中,我们将使用嵌套式聊天构建一个文章写作系统。为此,我们将创建三个代理——一个用于编写文章提纲,一个用于根据此提纲编写文章,另一个用于审阅文章。我们希望编写者和审阅者多次互相交谈,因此我们将这两个代理放在嵌套式聊天中。
此外,我们还将向轮廓代理提供访问网络查询工具的权限。
现在,让我们用代码来实现这一点。
先决条件
在构建AutoGen代理之前,请确保您拥有所需LLM的必要API密钥。在本练习中,我们还将使用Tavily搜索网络。
使用所需的API密钥加载.env文件。在这里,我们将使用OpenAI和Tavily API密钥()。
<code>from dotenv import load_dotenv load_dotenv('/home/santhosh/Projects/courses/Pinnacle/.env')</code>
将要使用的LLM定义为config_list
<code>config_list = { "config_list": [{"model": "gpt-4o-mini", "temperature": 0.2}] }</code>
所需的密钥库
autogen-agentchat – 0.2.37
Tavily-python – 0.5.0
现在,让我们开始实现。
步骤1:使用工具定义轮廓代理
定义user_proxy代理,它还将执行工具。然后使用LLM定义轮廓代理来生成文章提纲。
<code>from autogen import ConversableAgent user_proxy = ConversableAgent( name="User", llm_config=False, is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"], human_input_mode="TERMINATE") outline = ConversableAgent( name="Article_outline", system_message="""您是一位经验丰富的內容策略師,負責為指定主題的文章創建詳細的提綱。您的目標是將文章組織成邏輯部分,以便清晰有效地傳達主要思想。如有需要,請使用web_search工具。任務完成後返回“TERMINATE”。""", llm_config=config_list, silent=False, )</code>
定义web_search函数以查询网络。
<code>def web_search(query: str) -> str: tavily_client = TavilyClient() response = tavily_client.search(query, max_results=3, days=10, include_raw_content=True) return response['results']</code>
使用执行器user_proxy将web_search函数注册到轮廓代理。
我们将执行器设置为user_proxy,以便我们可以审查发送给编写者代理的提纲。
<code>register_function( web_search, caller=outline, # 助手代理可以建议调用。 executor=user_proxy, # 用户代理可以执行调用。 name="web_search", # 默认情况下,函数名称用作工具名称。 description="搜索互联网以获取给定查询的结果", # 工具的描述。 )</code>
步骤2:定义编写者和审阅者代理
定义一个代理来生成文章内容,另一个代理来审阅文章并提供改进建议。
<code>writer = ConversableAgent( name="Article_Writer", system_message="""您是一位熟练的作家,负责根据给定的提纲创作一篇全面、引人入胜的文章。您的目标是遵循提纲中提供的结构,用经过充分研究、清晰且内容翔实的內容扩展每个部分。保持文章长度约为500字。如有需要,請使用web_search工具。任務完成後返回“TERMINATE”。""", llm_config=config_list, silent=False, ) reviewer = ConversableAgent( name="Article_Reviewer", system_message="""您是一位熟练的技术文章审阅者。审阅给定的文章,并提供建议以使文章更具吸引力和趣味性。""", llm_config=config_list, silent=False, )</code>
步骤3:注册嵌套式聊天
现在,我们可以为两个代理注册嵌套式聊天。
<code>writer.register_nested_chats( trigger=user_proxy, chat_queue=[ { "sender": reviewer, "recipient": writer, "summary_method": "last_msg", "max_turns": 2, } ], )</code>
在上面的代码中,当user_proxy向writer代理发送任何消息时,这将触发嵌套式聊天。然后,writer代理将编写文章,reviewer代理将根据max_turns(在本例中为两次)多次审阅文章。最后,嵌套式聊天的结果将发送回用户代理。
步骤4:启动嵌套式聊天
现在一切设置就绪,让我们启动聊天
<code>chat_results = user_proxy.initiate_chats( [{"recipient": outline, "message": "撰写一篇关于微软发布的Magentic-One代理系统的文章。", "summary_method": "last_msg", }, {"recipient": writer, "message": "这是文章提纲", "summary_method": "last_msg", }])</code>
在这里,我们将撰写一篇关于Magentic-One代理系统的文章。首先,user_proxy代理将与轮廓代理启动聊天,然后与编写者代理启动聊天。
现在,上述代码的输出将如下所示:
正如我们所看到的,user_proxy首先向轮廓代理发送一条消息,说明文章的主题。这将触发工具调用,user_proxy执行该工具。根据这些结果,轮廓代理将生成提纲并将其发送给编写者代理。之后,编写者代理和审阅者代理之间的嵌套式聊天将按上述讨论继续进行。
现在,让我们打印最终结果,即关于magentic-one的文章。
<code>print(chat_results[1].chat_history[-2]['content'])</code>
结论
AutoGen中的嵌套式聊天通过在单个对话流程中实现复杂的多任务交互来增强聊天机器人的功能。嵌套式聊天允许机器人启动单独的专用聊天并将它们的输出无缝集成。此功能支持各种应用程序(从电子商务到医疗保健)的动态、有针对性的响应。借助嵌套式聊天,AutoGen为更具响应性、上下文感知的AI系统铺平了道路。这使开发人员能够构建能够有效满足各种用户需求的复杂聊天机器人。
如果您想了解有关AI代理的更多信息,请查看我们独家推出的代理式AI先锋计划!
常见问题解答
Q1. AutoGen中的嵌套式聊天是什么,它与顺序聊天有何不同?A. AutoGen中的嵌套式聊天允许聊天机器人在一个聊天流程中管理多个子对话,通常涉及其他代理或工具来检索特定信息。与遵循结构化、轮流式方法的顺序聊天不同,嵌套式聊天使机器人能够处理中断和并行任务,并将它们的输出集成回主对话中。
Q2. 嵌套式聊天如何改进应用程序中的客户支持?A. 嵌套式聊天通过允许机器人将任务委托给专业代理来改进客户支持。例如,在电子商务中,聊天机器人可以咨询单独的代理来检查订单状态或产品信息,然后将信息无缝地转发给用户,从而确保更快、更准确的响应。
Q3. 嵌套式聊天在不同行业的关键用例是什么?A. 嵌套式聊天可以应用于不同的行业。在银行业,它为账户和贷款查询提供专业支持;在人力资源部门,它协助入职任务;在医疗保健领域,它处理预约安排和账单查询。这种灵活性使嵌套式聊天适合任何需要多任务处理和详细信息处理的领域。
Q4. 我是否需要任何特定设置才能在AutoGen中实现嵌套式聊天?A. 是的,在AutoGen中实现嵌套式聊天需要使用特定的API密钥配置代理,例如语言模型或Tavily等网络搜索工具。此外,每个代理都必须定义适当的任务和工具,以便顺利执行嵌套式对话。
Q5. 我可以在AutoGen中跟踪与每个嵌套式聊天代理相关的成本吗?A. 是的,AutoGen允许跟踪嵌套式聊天中每个代理产生的成本。通过访问聊天结果中的cost
属性,开发人员可以监控与代理交互相关的支出,从而帮助优化聊天机器人的资源使用率和效率。
以上是与Autogen建立多代理嵌套聊天的4个步骤的详细内容。更多信息请关注PHP中文网其他相关文章!

大型语言模型(LLMS)的流行激增,工具称呼功能极大地扩展了其功能,而不是简单的文本生成。 现在,LLM可以处理复杂的自动化任务,例如Dynamic UI创建和自主a

视频游戏可以缓解焦虑,建立焦点或支持多动症的孩子吗? 随着医疗保健在全球范围内挑战,尤其是在青年中的挑战,创新者正在转向一种不太可能的工具:视频游戏。现在是世界上最大的娱乐印度河之一

“历史表明,尽管技术进步推动了经济增长,但它并不能自行确保公平的收入分配或促进包容性人类发展,”乌托德秘书长Rebeca Grynspan在序言中写道。

易于使用,使用生成的AI作为您的谈判导师和陪练伙伴。 让我们来谈谈。 对创新AI突破的这种分析是我正在进行的《福布斯》列的最新覆盖范围的一部分,包括识别和解释

在温哥华举行的TED2025会议昨天在4月11日举行了第36版。它有来自60多个国家 /地区的80个发言人,包括Sam Altman,Eric Schmidt和Palmer Luckey。泰德(Ted)的主题“人类重新构想”是量身定制的

约瑟夫·斯蒂格利茨(Joseph Stiglitz)是2001年著名的经济学家,是诺贝尔经济奖的获得者。斯蒂格利茨认为,AI可能会使现有的不平等和合并权力恶化,并在几个主导公司的手中加剧,最终破坏了经济的经济。

图数据库:通过关系彻底改变数据管理 随着数据的扩展及其特征在各个字段中的发展,图形数据库正在作为管理互连数据的变革解决方案的出现。与传统不同

大型语言模型(LLM)路由:通过智能任务分配优化性能 LLM的快速发展的景观呈现出各种各样的模型,每个模型都具有独特的优势和劣势。 有些在创意内容gen上表现出色


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Dreamweaver Mac版
视觉化网页开发工具

Dreamweaver CS6
视觉化网页开发工具