AgentScope
AgentScope介绍
AgentScope是一款全新的Multi-Agent框架,专为应用开发者打造,旨在提供高易用、高可靠的编程体验!
- 高易用:AgentScope支持纯Python编程,提供多种语法工具实现灵活的应用流程编排,内置丰富的API服务(Service)以及应用样例,供开发者直接使用。同时,AgentScope提供了详尽的教程,API文档和应用样例。
- 高鲁棒:确保开发便捷性和编程效率的同时,针对不同能力的大模型,AgentScope提供了全面的重试机制、定制化的容错控制和面向Agent的异常处理,以确保应用的稳定、高效运行;
- 基于Actor的分布式机制:AgentScope设计了一种新的基于Actor的分布式机制,实现了复杂分布式工作流的集中式编程和自动并行优化,即用户可以使用中心化编程的方式完成分布式应用的流程编排,同时能够零代价将本地应用迁移到分布式的运行环境中。
AgentScope安装
从github拉取源代码
git clone https://github.com/modelscope/agentscope.git
以编辑模式安装包
cd AgentScope
pip install -e .
AgentScope基础使用
准备Model Configs
AgentScope支持以下模型API服务:
- OpenAI Python APIs,包括
- OpenAI Chat, DALL-E和Embedding API
- 兼容OpenAI的Inference库,例如FastChat和vllm
- Post Request APIs,包括
- HuggingFace和ModelScope Inference API
- 自定义模型API
OpenAI API Configs
对于OpenAI API,您需要准备一个包含以下字段的模型配置字典:
{"config_name": "{配置名称}", # 用于识别配置的名称"model_type": "openai" | "openai_dall_e" | "openai_embedding","model_name": "{模型名称,例如gpt-4}", # openai API中的模型# 可选"api_key": "xxx", # OpenAI API的API密钥。如果未设置,将使用环境变量OPENAI_API_KEY。"organization": "xxx", # OpenAI API的组织。如果未设置,将使用环境变量OPENAI_ORGANIZATION。
}
DashScope API Config
对于 DashScope API,你需要准备一个包含如下字段的配置字典:
{"config_name": "{配置名称}", # 用于识别配置的名称"model_type": "dashscope_chat" | "dashscope_text_embedding" | "dashscope_image_synthesis","model_name": "{模型名称,例如 qwen-max}", # dashscope 中的模型"api_key": "xxx", # The API key for DashScope API.
}
Post Request API Config
对于post请求API,配置包含以下字段。
{"config_name": "{配置名称}", # 用于识别配置的名称"model_type": "post_api","api_url": "https://xxx", # 目标url"headers": { # 需要的头信息...},
}
为了方便开发和调试,AgentScope在scripts目录下提供了丰富的脚本以快速部署模型服务。 有关模型服务的详细使用,请参阅我们的教程和API文档。
这里我们这次实验用的model_config.json内容如下
[{"model_type": "dashscope_chat","config_name": "qwen","model_name": "qwen-max","api_key": "sk-","generate_args": {"temperature": 0.5}}
]
灵积DashScope网址:模型服务灵积 DashScope - 阿里云 (aliyun.com)
创建Agent
脚本如下:
from agentscope.agents import DialogAgent
import agentscope# 初始化了多个大模型
agentscope.init(model_configs="./model_configs.json"
)# 使用qwen大模型初始化一个对话agent
dialog_agent_qwen = DialogAgent(name="Assistant_qwen",sys_prompt="You're a helpful assistant.", # sys_prompt可以自行定义,不能为空model_config_name="qwen", # 这里的qwen和前面的model_config.json文件中的config_name要一一对应,否则Agent找不到大模型会报错
)# 简单实用 可以当作一个api
from agentscope.message import Msgmsg = Msg(name="小助手",content="你好啊,给我介绍一下阿里AgentScope")dialog_agent_qwen (msg)
运行结果
Assistant_qwen: 您好,阿里云AgentScope是一款针对分布式应用性能监控的工具,它能够深入到代码层面,提供细粒度的链路追踪和性能诊断能力。通过在应用中植入探针,AgentScope可以自动收集并上报应用的各项性能指标、数据库调用、RPC调用等信息,实现从用户请求入口到服务端内部调用的全链路监控。具体来说,阿里云AgentScope可以帮助开发者:1. 实现端到端的请求跟踪,了解每个请求在系统中的完整流转过程。
2. 快速定位性能瓶颈,发现并解决潜在问题,提高系统稳定性与响应速度。
3. 提供详细的SQL执行分析,帮助优化数据库查询性能。
4. 对服务间的依赖关系进行可视化展示,便于理解系统的整体架构和服务之间的交互情况。总之,阿里云AgentScope是提升应用性能管理(APM)效率,保障业务稳定运行的重要工具之一。
对话示例
model_config.json依旧使用前面创建的
代码脚本参考agentscope代码仓目录下的examples/conversation/conversation.py文件
# -*- coding: utf-8 -*-
"""A simple example for conversation between user and assistant agent."""
import agentscope
from agentscope.agents import DialogAgent
from agentscope.agents.user_agent import UserAgent
from agentscope.pipelines.functional import sequentialpipelinedef main() -> None:"""A conversation demo"""agentscope.init(model_configs="./model_configs.json")# Init two agentsdialog_agent = DialogAgent(name="Assistant",sys_prompt="You're a helpful assistant.",model_config_name="qwen", # replace by your model config name)user_agent = UserAgent()# start the conversation between user and assistantx = Nonewhile x is None or x.content != "exit":x = sequentialpipeline([dialog_agent, user_agent], x)if __name__ == "__main__":main()
这个示例可以实现和大模型进行交互式对话