Skip to content

Latest commit

 

History

History
438 lines (366 loc) · 19.4 KB

File metadata and controls

438 lines (366 loc) · 19.4 KB

English Homepage | Tutorial | Roadmap | FAQ

AgentScope Logo

AgentScope: Agent-Oriented Programming for Building LLM Applications

arxiv pypi pypi docs workstation license

modelscope%2Fagentscope | Trendshift

✨ Why AgentScope?

浅显入门,精深致用。

AgentScope Framework

  • 对开发者透明: 透明是 AgentScope 的首要原则。无论提示工程、API调用、智能体构建还是工作流程编排,坚持对开发者可见&可控。拒绝深度封装或隐式魔法。
  • 实时介入: 原生支持实时中断和自定义中断处理。
  • 更智能化: 支持智能体工具管理智能体长期记忆控制和智能化RAG等。
  • 模型无关: 一次编程,适配所有模型。
  • “乐高式”智能体构建: 所有组件保持模块化相互独立
  • 面向多智能体:专为多智能体设计,显式的消息传递和工作流编排,拒绝深度封装。
  • 高度可定制: 工具、提示、智能体、工作流、第三方库和可视化,AgentScope 支持&鼓励开发者进行定制。

AgentScope v1.0 新功能概览:

模块 功能 文档
model 支持异步调用 Model
支持推理模型
支持流式/非流式返回
支持工具API
tool 支持异步/同步工具函数 Tool
支持工具函数流式/非流式返回
支持用户打断
支持工具函数的后处理
支持分组工具管理
支持智能体通过 Meta Tool 自主管理工具
MCP 支持 Streamable HTTP/SSE/StdIO 传输 MCP
支持有状态无状态两种模式的MCP客户端
支持客户端和函数级别的精细控制
agent 支持异步执行
支持并行工具调用
支持用户实时介入和自定义的中断处理
支持自动状态管理
允许智能体自主控制长期记忆
支持智能体钩子函数
tracing 支持基于 OpenTelemetry 的 LLM、工具、智能体和格式化器追踪 Tracing
支持连接到第三方追踪平台(如Arize-Phoenix、Langfuse)
memory 支持长期记忆 Memory
session 提供会话/应用级状态管理 Session
evaluation 提供分布式和并行评估 Evaluation
formatter 支持多Agent提示格式化与工具API Prompt Formatter
支持基于截断的格式化策略
...

📢 新闻

  • [2025-09] AgentScope Studio 现已开源!查看 GitHub 仓库
  • [2025-08] v1 版本 Tutorial 已上线!查看tutorial了解更多详情。
  • [2025-08] 🎉🎉 AgentScope v1现已发布!在完全拥抱异步执行的基础上提供许多新功能和改进。查看changelog了解详细变更。

💬 联系我们

欢迎加入我们的社区,获取最新的更新和支持!

Discord 钉钉

📑 Table of Contents

🚀 快速开始

💻 安装

AgentScope需要Python 3.10或更高版本。

🛠️ 从源码安装

# 从 GitHub 拉取源码
git clone -b main https://github.com/agentscope-ai/agentscope.git

# 以可编辑模式安装包
cd agentscope
pip install -e .

📦 从PyPi安装

pip install agentscope

📝 样例

👋 Hello AgentScope!

使用 AgentScope 显式地创建一个名为“Friday”的助手🤖,并与之对话。

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())

🎯 实时介入

ReActAgent 中原生支持实时介入功能,提供面向打断的记忆处理机制,将中断转换为智能体的可观察事件,让智能体能够无缝恢复对话。

Realtime Steering Realtime Steering

🛠️ 细粒度 MCP 控制

开发者能够以本地可调用函数的方式获得 MCP 工具,并以任意方式使用(例如直接调用、装备给智能体,或将其包装为更复杂的工具等)

from agentscope.mcp import HttpStatelessClient
from agentscope.tool import Toolkit
import os

async def fine_grained_mcp_control():
    # 以高德MCP为例,初始化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="天安门广场", city="北京")

    # 选项2:作为工具传递给智能体
    toolkit = Toolkit()
    toolkit.register_tool_function(func)
    # ...

    # 选项3:包装为更复杂的工具
    # ...

🧑‍🤝‍🧑 多智能体对话

AgentScope 提供 MsgHub 和多种 pipeline 来简化多智能体对话的构建,提供高效的消息路由和无缝信息共享

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", "请介绍一下自己。", "assistant")
    ) as hub:
        # 按顺序发言
        await sequential_pipeline([agent1, agent2, agent3])
        # 动态管理参与者
        hub.add(agent4)
        hub.delete(agent3)
        await hub.broadcast(Msg("Host", "再见!", "assistant"))

asyncio.run(multi_agent_conversation())

💻 AgentScope Studio

使用以下命令安装并启动 AgentScope Studio,以追踪和可视化基于 AgentScope 构建的智能体应用。

npm install -g @agentscope/studio

as_studio

home projects runtime friday

📖 文档

⚖️ 许可

AgentScope 基于 Apache License 2.0发布。

📚 论文

如果我们的工作对您的研究或应用有帮助,请引用我们的论文。

@article{agentscope_v1,
    author  = {
        Dawei Gao,
        Zitao Li,
        Yuexiang Xie,
        Weirui Kuang,
        Liuyi Yao,
        Bingchen Qian,
        Zhijian Ma,
        Yue Cui,
        Haohao Luo,
        Shen Li,
        Lu Yi,
        Yi Yu,
        Shiqi He,
        Zhiling Luo,
        Wenmeng Zhou,
        Zhicheng Zhang,
        Xuguang He,
        Ziqian Chen,
        Weikai Liao,
        Farruh Isakulovich Kushnazarov,
        Yaliang Li,
        Bolin Ding,
        Jingren Zhou}
    title   = {AgentScope 1.0: A Developer-Centric Framework for Building Agentic Applications},
    journal = {CoRR},
    volume  = {abs/2508.16279},
    year    = {2025},
}

@article{agentscope,
    author  = {
        Dawei Gao,
        Zitao Li,
        Xuchen Pan,
        Weirui Kuang,
        Zhijian Ma,
        Bingchen Qian,
        Fei Wei,
        Wenhao Zhang,
        Yuexiang Xie,
        Daoyuan Chen,
        Liuyi Yao,
        Hongyi Peng,
        Zeyu Zhang,
        Lin Zhu,
        Chen Cheng,
        Hongzhu Shi,
        Yaliang Li,
        Bolin Ding,
        Jingren Zhou}
    title   = {AgentScope: A Flexible yet Robust Multi-Agent Platform},
    journal = {CoRR},
    volume  = {abs/2402.14034},
    year    = {2024},
}

✨ 贡献者

感谢所有贡献者: