引言
随着大语言模型(LLM)应用的快速发展,构建复杂、可扩展的智能体应用成为开发者的共同挑战。传统的LLM应用开发模式往往隐藏了底层细节,导致开发者难以掌控和优化应用行为。AgentScope应运而生,作为一个面向智能体编程的框架,它提供了一种透明、灵活且强劲的方式来构建和管理大语言模型应用。

核心理念
AgentScope的设计遵循几个核心原则,使其区别于其他LLM应用框架:
1. 透明性(Transparent)
“透明是我们的首要原则”。AgentScope确保所有操作(提示工程、API调用、智能体构建、工作流编排)都对开发者可见且可控,没有任何深度封装或隐式魔法。
2. 实时干预(Realtime Steering)
原生支持实时中断和自定义处理,使智能体能够无缝地响应用户输入并继续对话。
3. 更加智能(More Agentic)
支持智能体工具管理、长期记忆控制和智能RAG等功能,使智能体更加”智能”。
4. 模型无关(Model Agnostic)
“编程一次,运行于所有模型”,AgentScope不绑定特定模型,可以轻松适配各种大语言模型。
5. 积木式智能体构建(LEGO-style)
所有组件模块化且独立,开发者可以像搭积木一样构建自己的智能体应用。
6. 多智能体导向(Multi-Agent Oriented)
专为多智能体设计,强调显式消息传递和工作流编排,避免深度封装。
7. 高度可定制(Highly Customizable)
在工具、提示、智能体、工作流、第三方库和可视化等方面,AgentScope鼓励无处不在的定制化。

架构设计
AgentScope采用模块化架构,主要包含以下核心组件:
1. 模型(Model)
支持异步调用、推理模型、流式/非流式返回,可与任何大语言模型集成。
2. 工具(Tool)
支持异步/同步工具函数、流式/非流式返回、用户中断支持、后处理等功能。
3. MCP(Model Communication Protocol)
支持流式HTTP/SSE/StdIO传输,提供有状态和无状态模式,支持客户端和函数级别的细粒度控制。
4. 智能体(Agent)
支持异步执行、并行工具调用、实时干预、自动状态管理、智能体控制的长期记忆和智能体钩子。
5. 追踪(Tracing)
基于OpenTelemetry的追踪,支持连接第三方追踪平台(如Arize-Phoenix、Langfuse)。
6. 记忆(Memory)
支持长期记忆功能,为智能体提供持续学习和上下文理解能力。
7. 会话(Session)
提供会话/应用级自动状态管理,简化应用开发。
8. 评估(Evaluation)
提供分布式和并行评估功能。
9. 格式化器(Formatter)
支持多智能体提示格式化,提供基于截断的格式化策略。
10. 计划(Plan)
支持ReAct式长期规划,允许手动规划指定。

使用示例
以下是一个简单的AgentScope使用示例,展示如何创建一个ReAct智能体:
from agentscope.agent import ReActAgent, UserAgent
from agentscope.model import DashScopeChatModel
from agentscope.formatter import DashScopeChatFormatter
from agentscope.memory import InMemoryMemory
from agentscope.tool import Toolkit, execute_python_code, execute_shell_command
import os, asyncio
async def main():
# 创建工具集
toolkit = Toolkit()
toolkit.register_tool_function(execute_python_code)
toolkit.register_tool_function(execute_shell_command)
# 创建智能体
agent = ReActAgent(
name="Friday",
sys_prompt="You're a helpful assistant named Friday.",
model=DashScopeChatModel(
model_name="qwen-max",
api_key=os.environ["DASHSCOPE_API_KEY"],
stream=True,
),
memory=InMemoryMemory(),
formatter=DashScopeChatFormatter(),
toolkit=toolkit,
)
# 创建用户
user = UserAgent(name="user")
# 交互循环
msg = None
while True:
msg = await agent(msg)
msg = await user(msg)
if msg.get_text_content() == "exit":
break
asyncio.run(main())
这段代码创建了一个名为”Friday”的ReAct智能体,可以执行Python代码和Shell命令,并与用户进行交互,直到用户输入”exit”。
实时干预功能
AgentScope的一个关键特性是其原生支持的实时干预功能。开发者可以在智能体执行过程中中断其行为,并提供自定义处理逻辑:
from agentscope.mcp import HttpStatelessClient
from agentscope.tool import Toolkit
import os
async def fine_grained_mcp_control():
# 初始化MCP客户端
client = HttpStatelessClient(
name="gaode_mcp",
transport="streamable_http",
url=f"https://mcp.amap.com/mcp?key={os.environ['GAODE_API_KEY']}",
)
# 获取MCP工具作为本地可调用函数
func = await client.get_callable_function(func_name="maps_geo")
# 选项1:直接调用
await func(address="Tiananmen Square", city="Beijing")
# 选项2:传递给智能体作为工具
toolkit = Toolkit()
toolkit.register_tool_function(func)
# ...(后续使用工具)
多智能体对话
AgentScope提供MsgHub和管道来简化多智能体对话,实现高效的消息路由和信息共享:
from agentscope.pipeline import MsgHub, sequential_pipeline
from agentscope.message import Msg
import asyncio
async def multi_agent_conversation():
# 创建智能体
agent1 = ...
agent2 = ...
agent3 = ...
agent4 = ...
# 创建消息中心管理多智能体对话
async with MsgHub(
participants=[agent1, agent2, agent3],
announcement=Msg("Host", "Introduce yourselves.", "assistant")
) as hub:
# 顺序发言
await sequential_pipeline([agent1, agent2, agent3])
# 动态管理参与者
hub.add(agent4)
hub.delete(agent3)
# 广播消息
await hub.broadcast(Msg("Host", "Goodbye!", "assistant"))
asyncio.run(multi_agent_conversation())
AgentScope为大语言模型应用的开发提供了一个透明、灵活且强劲的框架。通过其积木式设计和多智能体导向,开发者可以轻松构建复杂的智能体应用,同时保持对应用行为的完全控制。随着AgentScope v1的发布和相关工具的开源,开发者目前可以更轻松地将智能体应用部署到自己的环境中。
















- 最新
- 最热
只看作者