目录
目录
什么是嵌套式聊天?
在AutoGen中实现嵌套式聊天
先决条件
步骤1:使用工具定义轮廓代理
步骤2:定义编写者和审阅者代理
步骤3:注册嵌套式聊天
步骤4:启动嵌套式聊天
结论
常见问题解答
首页 科技周边 人工智能 与Autogen建立多代理嵌套聊天的4个步骤

与Autogen建立多代理嵌套聊天的4个步骤

Mar 19, 2025 am 11:00 AM

AutoGen中的嵌套式聊天:构建更具响应性和动态性的AI代理交互

人工智能(AI)的进步使聊天机器人得到了飞速发展。如今,随着AI代理的出现,聊天机器人能够处理更复杂、更分层的交互,远远超出了传统对话的限制。在我们之前的文章《使用AutoGen构建多代理聊天机器人》中,我们探讨了使用AutoGen进行顺序聊天的概念,该概念允许在多个代理之间进行结构化、轮流式的通信。现在,在此基础上,我们将转向一个更复杂的功能:嵌套式聊天。借助AutoGen强大的框架,嵌套式对话使机器人能够保持流畅的交流,而不是遵循固定的顺序。它们可以在单个对话流程中深入研究其他工具,处理中断并顺利恢复。本文将指导您在AutoGen中实现嵌套式聊天,并重点介绍其在创建响应式、动态代理交互中的相关性。

目录

  • 什么是嵌套式聊天?
  • 在AutoGen中实现嵌套式聊天
    • 先决条件
    • 步骤1:使用工具定义轮廓代理
    • 步骤2:定义编写者和审阅者代理
    • 步骤3:注册嵌套式聊天
    • 步骤4:启动嵌套式聊天
  • 常见问题解答

什么是嵌套式聊天?

让我们首先了解什么是嵌套式聊天。

考虑一个三方代理聊天,其中需要两个代理反复进行循环对话。这两个代理之间的聊天可以添加到嵌套式聊天中。完成此单独的对话后,代理可以将上下文带回到主对话中。

下图显示了嵌套式聊天的转换流程。

4 Steps to Build Multi-Agent Nested Chats with AutoGen

当传入的消息触发某个条件时,该消息将进入嵌套式聊天。该嵌套式聊天可以是双代理聊天、顺序聊天或其他任何聊天。然后,嵌套式聊天的聊天结果将发送回主对话。

在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代理将与轮廓代理启动聊天,然后与编写者代理启动聊天。

现在,上述代码的输出将如下所示:

4 Steps to Build Multi-Agent Nested Chats with AutoGen

正如我们所看到的,user_proxy首先向轮廓代理发送一条消息,说明文章的主题。这将触发工具调用,user_proxy执行该工具。根据这些结果,轮廓代理将生成提纲并将其发送给编写者代理。之后,编写者代理和审阅者代理之间的嵌套式聊天将按上述讨论继续进行。

现在,让我们打印最终结果,即关于magentic-one的文章。

<code>print(chat_results[1].chat_history[-2]['content'])</code>
登录后复制

4 Steps to Build Multi-Agent Nested Chats with AutoGen

结论

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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
开始使用Meta Llama 3.2 -Analytics Vidhya 开始使用Meta Llama 3.2 -Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

10个生成AI编码扩展,在VS代码中,您必须探索 10个生成AI编码扩展,在VS代码中,您必须探索 Apr 13, 2025 am 01:14 AM

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

向员工出售AI策略:Shopify首席执行官的宣言 向员工出售AI策略:Shopify首席执行官的宣言 Apr 10, 2025 am 11:19 AM

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

AV字节:Meta&#039; llama 3.2,Google的双子座1.5等 AV字节:Meta&#039; llama 3.2,Google的双子座1.5等 Apr 11, 2025 pm 12:01 PM

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? Apr 13, 2025 am 10:18 AM

介绍 Openai已根据备受期待的“草莓”建筑发布了其新模型。这种称为O1的创新模型增强了推理能力,使其可以通过问题进行思考

视觉语言模型(VLMS)的综合指南 视觉语言模型(VLMS)的综合指南 Apr 12, 2025 am 11:58 AM

介绍 想象一下,穿过​​美术馆,周围是生动的绘画和雕塑。现在,如果您可以向每一部分提出一个问题并获得有意义的答案,该怎么办?您可能会问:“您在讲什么故事?

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

阅读AI索引2025:AI是您的朋友,敌人还是副驾驶? 阅读AI索引2025:AI是您的朋友,敌人还是副驾驶? Apr 11, 2025 pm 12:13 PM

斯坦福大学以人为本人工智能研究所发布的《2025年人工智能指数报告》对正在进行的人工智能革命进行了很好的概述。让我们用四个简单的概念来解读它:认知(了解正在发生的事情)、欣赏(看到好处)、接纳(面对挑战)和责任(弄清我们的责任)。 认知:人工智能无处不在,并且发展迅速 我们需要敏锐地意识到人工智能发展和传播的速度有多快。人工智能系统正在不断改进,在数学和复杂思维测试中取得了优异的成绩,而就在一年前,它们还在这些测试中惨败。想象一下,人工智能解决复杂的编码问题或研究生水平的科学问题——自2023年

See all articles