当前位置:   article > 正文

【DataWhale学习笔记】使用AgentScope调用qwen大模型

agentscope

AgentScope

AgentScope介绍

AgentScope是一款全新的Multi-Agent框架,专为应用开发者打造,旨在提供高易用、高可靠的编程体验!

  • 高易用:AgentScope支持纯Python编程,提供多种语法工具实现灵活的应用流程编排,内置丰富的API服务(Service)以及应用样例,供开发者直接使用。同时,AgentScope提供了详尽的教程API文档应用样例
  • 高鲁棒:确保开发便捷性和编程效率的同时,针对不同能力的大模型,AgentScope提供了全面的重试机制、定制化的容错控制和面向Agent的异常处理,以确保应用的稳定、高效运行;
  • 基于Actor的分布式机制:AgentScope设计了一种新的基于Actor的分布式机制,实现了复杂分布式工作流的集中式编程和自动并行优化,即用户可以使用中心化编程的方式完成分布式应用的流程编排,同时能够零代价将本地应用迁移到分布式的运行环境中。

AgentScope安装

github拉取源代码

  1. git clone https://github.com/modelscope/agentscope.git
  2. 以编辑模式安装包
  3. cd AgentScope
  4. pip install -e .

AgentScope基础使用

准备Model Configs

AgentScope支持以下模型API服务

  • OpenAI Python APIs,包括
    • OpenAI Chat, DALL-E和Embedding API
    • 兼容OpenAI的Inference库,例如FastChatvllm

OpenAI API Configs

对于OpenAI API,您需要准备一个包含以下字段的模型配置字典:

  1. {
  2. "config_name": "{配置名称}", # 用于识别配置的名称
  3. "model_type": "openai" | "openai_dall_e" | "openai_embedding",
  4. "model_name": "{模型名称,例如gpt-4}", # openai API中的模型
  5. # 可选
  6. "api_key": "xxx", # OpenAI API的API密钥。如果未设置,将使用环境变量OPENAI_API_KEY。
  7. "organization": "xxx", # OpenAI API的组织。如果未设置,将使用环境变量OPENAI_ORGANIZATION。
  8. }

DashScope API Config

对于 DashScope API,你需要准备一个包含如下字段的配置字典:

  1. {
  2. "config_name": "{配置名称}", # 用于识别配置的名称
  3. "model_type": "dashscope_chat" | "dashscope_text_embedding" | "dashscope_image_synthesis",
  4. "model_name": "{模型名称,例如 qwen-max}", # dashscope 中的模型
  5. "api_key": "xxx", # The API key for DashScope API.
  6. }

Post Request API Config

对于post请求API,配置包含以下字段。

  1. {
  2. "config_name": "{配置名称}", # 用于识别配置的名称
  3. "model_type": "post_api",
  4. "api_url": "https://xxx", # 目标url
  5. "headers": { # 需要的头信息
  6. ...
  7. },
  8. }

为了方便开发和调试,AgentScope在scripts目录下提供了丰富的脚本以快速部署模型服务。 有关模型服务的详细使用,请参阅我们的教程和API文档。

这里我们这次实验用的model_config.json内容如下

  1. [
  2. {
  3. "model_type": "dashscope_chat",
  4. "config_name": "qwen",
  5. "model_name": "qwen-max",
  6. "api_key": "sk-",
  7. "generate_args": {
  8. "temperature": 0.5
  9. }
  10. }
  11. ]

灵积DashScope网址:模型服务灵积 DashScope - 阿里云 (aliyun.com)

创建Agent

脚本如下:

  1. from agentscope.agents import DialogAgent
  2. import agentscope
  3. # 初始化了多个大模型
  4. agentscope.init(
  5. model_configs="./model_configs.json"
  6. )
  7. # 使用qwen大模型初始化一个对话agent
  8. dialog_agent_qwen = DialogAgent(
  9. name="Assistant_qwen",
  10. sys_prompt="You're a helpful assistant.", # sys_prompt可以自行定义,不能为空
  11. model_config_name="qwen", # 这里的qwen和前面的model_config.json文件中的config_name要一一对应,否则Agent找不到大模型会报错
  12. )
  13. # 简单实用 可以当作一个api
  14. from agentscope.message import Msg
  15. msg = Msg(name="小助手",content="你好啊,给我介绍一下阿里AgentScope")
  16. dialog_agent_qwen (msg)

运行结果

  1. Assistant_qwen: 您好,阿里云AgentScope是一款针对分布式应用性能监控的工具,它能够深入到代码层面,提供细粒度的链路追踪和性能诊断能力。通过在应用中植入探针,AgentScope可以自动收集并上报应用的各项性能指标、数据库调用、RPC调用等信息,实现从用户请求入口到服务端内部调用的全链路监控。
  2. 具体来说,阿里云AgentScope可以帮助开发者:
  3. 1. 实现端到端的请求跟踪,了解每个请求在系统中的完整流转过程。
  4. 2. 快速定位性能瓶颈,发现并解决潜在问题,提高系统稳定性与响应速度。
  5. 3. 提供详细的SQL执行分析,帮助优化数据库查询性能。
  6. 4. 对服务间的依赖关系进行可视化展示,便于理解系统的整体架构和服务之间的交互情况。
  7. 总之,阿里云AgentScope是提升应用性能管理(APM)效率,保障业务稳定运行的重要工具之一。

对话示例

model_config.json依旧使用前面创建的

代码脚本参考agentscope代码仓目录下的examples/conversation/conversation.py文件

  1. # -*- coding: utf-8 -*-
  2. """A simple example for conversation between user and assistant agent."""
  3. import agentscope
  4. from agentscope.agents import DialogAgent
  5. from agentscope.agents.user_agent import UserAgent
  6. from agentscope.pipelines.functional import sequentialpipeline
  7. def main() -> None:
  8. """A conversation demo"""
  9. agentscope.init(model_configs="./model_configs.json")
  10. # Init two agents
  11. dialog_agent = DialogAgent(
  12. name="Assistant",
  13. sys_prompt="You're a helpful assistant.",
  14. model_config_name="qwen", # replace by your model config name
  15. )
  16. user_agent = UserAgent()
  17. # start the conversation between user and assistant
  18. x = None
  19. while x is None or x.content != "exit":
  20. x = sequentialpipeline([dialog_agent, user_agent], x)
  21. if __name__ == "__main__":
  22. main()

这个示例可以实现和大模型进行交互式对话

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/454106
推荐阅读
相关标签
  

闽ICP备14008679号