【AI Agent系列】【阿里AgentScope框架】实战1:利用AgentScope实现动态创建Agent和自由组织讨论

简介: 【AI Agent系列】【阿里AgentScope框架】实战1:利用AgentScope实现动态创建Agent和自由组织讨论

大家好,我是 同学小张,持续学习C++进阶知识和AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,共同学习和进步。


从实战中学习和拆解AgentScope框架的使用和知识。本文利用AgentScope框架实现的是 多智能体的自由讨论 。

代码参考:https://github.com/modelscope/agentscope/tree/main/examples/conversation_self_organizing


0. 实现效果

先上最终的实现效果,给大家一个直观的感受。本文实现的效果如下:

有多个Agent(例如案例中的 PhysicsTeacher物理老师、curious student好奇的学生、analytical student分析型学生),针对一个话题展开讨论,每个Agent轮流发言。

1. 需求拆解

要实现多智能体之间的自由讨论,需要实现以下内容:

(1)有多个对话智能体

(2)多个对话智能体之间的通信(数据流控制)

(3)本文要实现的是不固定的多智能体对话,也就是说,多智能体是动态创建的,因此有个Agent来组织讨论,例如本例中讨论的物理问题,该Agent需要根据这个物理问题创建相应的智能体(物理老师和各种学生等)

这么一看,是不是就觉得非常简单了?对话智能体(DialogAgent)和数据流控制(Pipeline)我们前面都已经深入学习过了,还不了解的可以去看我前面的AgentScope相关文章。

2. 代码实现

2.1 初始化AgentScope

AgentScope在使用前,需要先初始化配置,主要是将要使用的大模型和相关的API Key 设置一下:

import agentscope
model_configs = [
    {
        "model_type": "openai",
        "config_name": "gpt-3.5-turbo",
        "model_name": "gpt-3.5-turbo",
        # "api_key": "xxx",  # Load from env if not provided
        # "organization": "xxx",  # Load from env if not provided
        "generate_args": {
            "temperature": 0.5,
        },
    },
]
agentscope.init(model_configs=model_configs)

2.2 创建讨论的组织者

根据前面的需求分析,我们首先需要有一个Agent来根据问题动态生成讨论问题的Agent们。

这里使用一个对话智能体DialogAgent即可:

# init the self-organizing conversation
agent_builder = DialogAgent(
    name="agent_builder",
    sys_prompt="You're a helpful assistant.",
    model_config_name="gpt-3.5-turbo",
)

有了这个agent实例,可以通过传入Prompt和问题来获取参与讨论的Agents以及各Agents的设定。这里的Prompt是比较重要的,看下示例中的Prompt:

Act as a group discussion organizer. Please provide the suitable scenario for discussing this question, and list the roles of the people who need to participate in the discussion in order to answer this question, along with their system prompt to describe their characteristics.
The response must in the format of:
#scenario#: <discussion scenario>
#participants#:
* <participant1 type>: <characteristic description>
* <participant2 type>: <characteristic description>
Here are some examples.
Question: Joy can read 8 pages of a book in 20 minutes. How many hours will it take her to read 120 pages?
Answer:
#scenario#: grade school class discussion
#participants#:
* Instructor: Act as an instructor who is in a class group discussion to guide the student group discussion. Please encourage critical thinking. Encourage participants to think critically and challenge assumptions by asking thought-provoking questions or presenting different perspectives.
* broad-minded-student: Act as a student who is broad-minded and is open to trying new or different ways to solve problems. You are in a group discussion with other student under the guidance of the instructor.
* knowledgeable-student: Act as a knowledgeable student and discuss with others to retrieve more information about the topic. If you do not know the answer to a question, please do not share false information
Please give the discussion scenario and the corresponding participants for the following question:
Question: {question}
Answer:

Prompt里,要求要给出讨论的流程、讨论的参与者与讨论参与者各自的“system prompt”。

运行时,将Prompt与问题组合传给Agent:

query = "假设你眼睛的瞳孔直径为5毫米,你有一台孔径为50厘米的望远镜。望远镜能比你的眼睛多收集多少光?"
x = load_txt(
"D:\\GitHub\\LEARN_LLM\\agentscope\\start_0\\conversation_self_organizing\\agent_builder_instruct.txt",
).format(
    question=query,
)
x = Msg("user", x, role="user")
settings = agent_builder(x)

看下这个Agent的运行结果:

文字版运行结果:

tools:extract_scenario_and_participants:82 - {'Scenario': 'Physics class discussion on optics', 'Participants': {'PhysicsTeacher': 'Act as a physics teacher who is leading the discussion on optics. Your role is to facilitate the conversation, provide explanations, and ensure that the discussion stays focused on the topic of light collection and optics.', 'curious-student': 'Act as a student who is curious and eager to learn more about optics and light collection. You ask insightful questions and actively participate in the discussion to deepen your understanding.', 'analytical-student': 'Act as a student who is analytical and enjoys solving problems related to optics. You approach the question methodically and use logical reasoning to arrive at solutions.'}}

输出结果给出了 Scenario 以及该问题的 Participants参与者,参与者有 PhysicsTeacher、curious-student 和 analytical-student。并给出了这几个参与者的角色设定。

之后通过一个解析函数,将里面的角色和设定解析出来就可以用来动态创建这些Agent了。

def extract_scenario_and_participants(content: str) -> dict:
    result = {}
    # define regular expression
    scenario_pattern = r"#scenario#:\s*(.*)"
    participants_pattern = r"\*\s*([^:\n]+):\s*([^\n]+)"
    # search and extract scenario
    scenario_match = re.search(scenario_pattern, content)
    if scenario_match:
        result["Scenario"] = scenario_match.group(1).strip()
    # search and extract participants
    participants_matches = re.finditer(participants_pattern, content)
    participants_dict = {}
    for match in participants_matches:
        participant_type, characteristic = match.groups()
        participants_dict[
            participant_type.strip().replace(" ", "_")
        ] = characteristic.strip()
    result["Participants"] = participants_dict
    
    logger.info(result)
    return result
scenario_participants = extract_scenario_and_participants(settings["content"])

2.3 动态创建讨论者

有了参与者及其描述,直接用循环语句创建这些Agent:

# set the agents that participant the discussion
agents = [
    DialogAgent(
        name=key,
        sys_prompt=val,
        model_config_name="gpt-3.5-turbo",
    )
    for key, val in scenario_participants["Participants"].items()
]

2.4 开始讨论

这里用了 sequentialpipeline 顺序发言:

max_round = 2
msg = Msg("user", f"let's discuss to solve the question with chinese: {query}", role="user")
for i in range(max_round):
    msg = sequentialpipeline(agents, msg)

运行结果见文章刚开始的实现效果,实现讨论。

3. 总结

本文主要拆解了一个利用AgentScope框架实现的多智能体自由讨论案例,先由一个Agent根据问题生成讨论流程和讨论者,然后根据讨论者动态创建Agent。

主要的亮点在于:

(1)有一个Agent把控全局,生成流程和各参与者的描述

(2)动态创建讨论者Agent,这让这个系统有了更好的通用性,根据不同的问题有不同类型和不同数量的Agent会被创建。

值得借鉴。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是 同学小张,持续学习C++进阶知识AI大模型应用实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

相关文章
|
5天前
|
人工智能 开发框架 决策智能
谷歌开源多智能体开发框架 Agent Development Kit:百行代码构建复杂AI代理,覆盖整个开发周期!
谷歌开源的Agent Development Kit(ADK)是首个代码优先的Python工具包,通过多智能体架构和灵活编排系统,支持开发者在百行代码内构建复杂AI代理,提供预置工具库与动态工作流定义能力。
94 3
谷歌开源多智能体开发框架 Agent Development Kit:百行代码构建复杂AI代理,覆盖整个开发周期!
|
23天前
|
人工智能 搜索推荐 Java
Spring AI与DeepSeek实战三:打造企业知识库
本文基于Spring AI与RAG技术结合,通过构建实时知识库增强大语言模型能力,实现企业级智能搜索场景与个性化推荐,攻克LLM知识滞后与生成幻觉两大核心痛点。
218 7
|
9天前
|
存储 人工智能 Java
Spring AI与DeepSeek实战四:系统API调用
在AI应用开发中,工具调用是增强大模型能力的核心技术,通过让模型与外部API或工具交互,可实现实时信息检索(如天气查询、新闻获取)、系统操作(如创建任务、发送邮件)等功能;本文结合Spring AI与大模型,演示如何通过Tool Calling实现系统API调用,同时处理多轮对话中的会话记忆。
206 57
|
5天前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
89 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
4天前
|
机器学习/深度学习 人工智能 测试技术
让AI学会"看屏幕操作"!豆包1.5·UI-TARS:字节跳动推出 GUI Agent 黑科技,办公效率暴增300%
字节跳动推出的豆包1.5·UI-TARS是首个整合视觉理解、逻辑推理与界面操作的GUI Agent模型,无需预定义规则即可完成复杂图形界面交互任务,已在火山方舟平台提供服务。
106 2
让AI学会"看屏幕操作"!豆包1.5·UI-TARS:字节跳动推出 GUI Agent 黑科技,办公效率暴增300%
|
7天前
|
人工智能 Cloud Native Serverless
从理论到落地:MCP 实战解锁 AI 应用架构新范式 | 免费领取 78 页完整 PPT
本文旨在从 MCP 的技术原理、降低 MCP Server 构建复杂度、提升 Server 运行稳定性等方面出发,分享我们的一些实践心得。
185 35
|
24天前
|
机器学习/深度学习 人工智能 算法
模型即产品:万字详解RL驱动的AI Agent模型如何巨震AI行业范式
未来 AI 智能体的发展方向还得是模型本身,而不是工作流(Work Flow)。像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体,短期或许表现不错,但长期必然遇到瓶颈。这种「提示驱动」的方式无法扩展,也无法真正处理那些需要长期规划、多步骤推理的复杂任务。下一代真正的LLM智能体,则是通过「强化学习(RL)与推理(Reasoning)的结合」来实现的。
98 10
模型即产品:万字详解RL驱动的AI Agent模型如何巨震AI行业范式
|
23天前
|
人工智能 JavaScript 前端开发
一个支持阿里云百炼平台DeepSeek R1大模型(智能体)的Wordpress插件,AI Agent or Chatbot.
这是一个将阿里云DeepSeek AI服务集成到WordPress的聊天机器人插件,支持多轮对话、上下文记忆和自定义界面等功能。用户可通过短代码轻松添加到页面,并支持多种配置选项以满足不同需求。项目采用MIT协议授权,代码仓位于GitHub与Gitee。开发者Chi Leung为长期境外工作,代码注释以英文为主。适合需要在WordPress网站中快速部署AI助手的用户使用。
|
13天前
|
人工智能 自然语言处理 搜索推荐
科技云报到:鏖战企业级市场,AI Agent如何重塑智能商业未来?
Agent“黄金时代”已至,RPA如何搭上这班车?
77 13
|
14天前
|
数据采集 SQL 人工智能
长文详解|DataWorks Data+AI一体化开发实战图谱
DataWorks是一站式智能大数据开发治理平台,内置阿里巴巴15年大数据建设方法论,深度适配阿里云MaxCompute、EMR、Hologres、Flink、PAI 等数十种大数据和AI计算服务,为数仓、数据湖、OpenLake湖仓一体数据架构提供智能化ETL开发、数据分析与主动式数据资产治理服务,助力“Data+AI”全生命周期的数据管理。

热门文章

最新文章