综合介绍
Qwen-Agent 是一个基于 Qwen 2.0 及以上版本开发的智能代理应用框架,具备指令跟随、工具使用、规划和记忆等能力。该框架提供了多种示例应用,如浏览器助手、代码解释器和自定义助手,帮助开发者快速构建和部署智能代理应用。Qwen-Agent 支持多种功能模块,包括函数调用、代码解释、RAG(检索增强生成)和 Chrome 扩展,适用于各种复杂的应用场景。
基于浏览器的智能体扩展BrowserQwen
功能列表
- 函数调用:支持通过函数调用实现复杂任务的自动化处理。
- 代码解释器:提供代码解释功能,帮助用户理解和执行代码。
- RAG(检索增强生成):支持大规模文档的检索和生成,适用于长文档的问答任务。
- Chrome 扩展:提供浏览器扩展功能,增强用户的浏览体验。
- 自定义工具:允许用户添加自定义工具,扩展框架的功能。
使用帮助
安装流程
- 从 PyPI 安装稳定版本:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"
或者安装最小依赖版本:
pip install -U qwen-agent
可选依赖包括:
[gui]
:支持基于 Gradio 的 GUI[rag]
:支持 RAG[code_interpreter]
:支持代码解释器[python_executor]
:支持 Qwen2.5-Math 的工具集成推理
- 从源码安装最新开发版本:
git clone https://github.com/QwenLM/Qwen-Agent.git cd Qwen-Agent pip install -e ./[gui,rag,code_interpreter,python_executor]
或者安装最小依赖版本:
pip install -e ./
功能操作流程
- 配置模型服务:
- 使用阿里云 DashScope 提供的模型服务,设置环境变量
DASHSCOPE_API_KEY
为您的 DashScope API 密钥。 - 或者,部署并使用您自己的模型服务,按照 Qwen2 的 README 中的说明进行部署。
- 使用阿里云 DashScope 提供的模型服务,设置环境变量
- 开发自定义代理:
Qwen-Agent 提供了基础组件,如继承自BaseChatModel
的 LLM 和继承自BaseTool
的工具,以及高层组件如继承自Agent
的代理。以下是创建一个能够读取 PDF 文件并使用工具的代理示例:from qwen_agent.agents import Assistant from qwen_agent.tools.base import BaseTool, register_tool @register_tool('my_image_gen') class MyImageGen(BaseTool): description = 'AI 绘画服务,输入文本描述,返回基于文本信息绘制的图像 URL。' parameters = [{'name': 'prompt', 'type': 'string', 'description': '所需图像内容的详细描述', 'required': True}] def call(self, params: str, **kwargs) -> str: prompt = json5.loads(params)['prompt'] prompt = urllib.parse.quote(prompt) return json5.dumps({'image_url': f'https://image.pollinations.ai/prompt/{prompt}'}, ensure_ascii=False) llm_cfg = { 'model': 'qwen-max', 'model_server': 'dashscope', 'generate_cfg': {'top_p': 0.8} } tools = ['my_image_gen', 'code_interpreter'] files = ['./examples/resource/doc.pdf'] bot = Assistant(llm=llm_cfg, system_message='You are a helpful assistant.', function_list=tools, files=files) messages = [] while True: query = input('user query: ') messages.append({'role': 'user', 'content': query}) response = bot.run(messages=messages) for res in response: print('bot response:', res) messages.extend(res)
- 快速启动 Gradio Demo:
from qwen_agent.gui import WebUI WebUI(bot).run()