小米的网站设计南京企业网站设计公司
2026/2/17 11:28:09 网站建设 项目流程
小米的网站设计,南京企业网站设计公司,沈阳网站建设服务电话,中企动力制作的网站从零开始使用Qwen2.5-7B#xff5c;构建支持工具调用的AI代理 一、学习目标与技术背景 随着大语言模型#xff08;LLM#xff09;在自然语言理解与生成能力上的持续突破#xff0c;AI代理#xff08;Agent#xff09; 正成为连接模型能力与真实世界应用的关键桥梁。一个…从零开始使用Qwen2.5-7B构建支持工具调用的AI代理一、学习目标与技术背景随着大语言模型LLM在自然语言理解与生成能力上的持续突破AI代理Agent正成为连接模型能力与真实世界应用的关键桥梁。一个具备工具调用Tool Usage能力的AI代理不仅能回答问题还能主动执行操作——如查询天气、运行代码、访问数据库等从而真正实现“智能体”的闭环交互。本文将带你从零开始搭建一个基于 Qwen2.5-7B-Instruct 模型的支持工具调用的AI代理系统使用阿里开源框架Qwen-Agent实现完整的本地部署与功能扩展。你将掌握如何部署 Qwen2.5-7B 模型并提供 OpenAI 兼容 API 接口如何安装和配置 Qwen-Agent 框架如何定义自定义工具并让模型自动调用工具调用过程中的数据流解析与调试技巧✅最终成果你可以向AI提问“今天广州天气如何”它会自动调用你编写的get_current_weather函数返回实时信息并以自然语言组织回复。二、前置准备环境与资源清单2.1 硬件与软件要求类别要求GPU 显存至少 24GB推荐 3090/4090 或 A10G7B 模型需量化加载时可降低至 16GB显卡数量单卡即可运行FP16精度CUDA 版本≥ 12.1Python 版本3.10操作系统LinuxCentOS 7 / Ubuntu 20.042.2 所需组件概览组件作用Qwen2.5-7B-Instruct主语言模型负责推理与决策vLLM或llama.cpp提供高性能推理服务暴露/v1/chat/completions接口Qwen-AgentAI代理框架支持工具注册、规划、记忆等功能Gradio可选快速构建Web界面三、部署Qwen2.5-7B模型服务要让 Qwen-Agent 调用模型首先需要启动一个本地的模型推理服务。我们推荐使用vLLM因其对 Qwen 系列支持良好且性能优异。3.1 安装 vLLMpip install vLLM注意确保你的 PyTorch 和 CUDA 驱动版本兼容。建议使用torch2.1.2cu121。3.2 启动模型服务假设你已通过 ModelScope 或 Hugging Face 下载了模型权重到/models/Qwen2.5-7B-Instruct目录python -m vllm.entrypoints.openai.api_server \ --model /models/Qwen2.5-7B-Instruct \ --host 0.0.0.0 \ --port 9000 \ --tensor-parallel-size 1 \ --dtype auto \ --max-model-len 131072 \ --enable-auto-tool-choice \ --tool-call-parser hermes 参数说明 ---enable-auto-tool-choice启用自动工具选择功能 ---tool-call-parser hermes使用 Hermes 解析器处理 JSON 结构化输出适配 Qwen 的 tool call 格式服务启动后默认监听http://localhost:9000/v1完全兼容 OpenAI API 协议。四、安装与配置 Qwen-Agent 框架4.1 创建虚拟环境并安装依赖conda create -n qwen-agent python3.10 conda activate qwen-agent # 安装完整功能包含GUI、RAG、代码解释器 pip install -U qwen-agent[gui,rag,code_interpreter,python_executor] pip install python-dateutil 若仅需核心功能可用最小安装bash pip install -U qwen-agent4.2 验证安装运行以下命令查看是否成功导入from qwen_agent.agents import Assistant print(Qwen-Agent installed successfully!)无报错即表示安装成功。五、编写支持工具调用的AI代理程序我们将分三步构建一个能调用“获取天气”功能的AI助手。5.1 步骤一定义自定义工具创建文件weather_tool.py注册一个名为get_current_weather的工具# -*- coding: utf-8 -*- from qwen_agent.tools.base import BaseTool, register_tool import json5 register_tool(get_current_weather) class GetCurrentWeather(BaseTool): description 获取指定城市的当前天气情况 parameters [ { name: location, type: string, description: 城市名称例如北京、上海、广州, required: True } ] def call(self, params: str, **kwargs) - str: # 解析 LLM 生成的参数 try: args json5.loads(params) location args.get(location, ).strip() except Exception as e: return f参数解析失败: {str(e)} # 模拟不同城市的天气响应 weather_data { 广州: 目前我市多云间晴局部有阵雨气温29~32℃吹轻微的东南风。, 北京: 今日晴转多云空气质量良气温18~25℃适宜户外活动。, 上海: 阴天偶有小雨气温22~27℃出行请带伞。, 深圳: 雷阵雨气温28~33℃伴有短时强降水请注意防范。 } return weather_data.get(location, f抱歉暂未获取{location}的天气数据。)⚠️ 注意事项 -register_tool装饰器必须存在用于被框架识别 -parameters字段需符合 OpenAPI 规范否则无法正确生成函数调用请求 - 返回值应为字符串格式的结果便于后续模型整合5.2 步骤二配置LLM连接参数在主程序中设置模型服务地址llm_cfg { model: /models/Qwen2.5-7B-Instruct, # 模型标识符任意命名 model_server: http://localhost:9000/v1, # vLLM 提供的服务端点 api_key: EMPTY, # vLLM 不需要密钥 generate_cfg: { top_p: 0.8, temperature: 0.7, max_tokens: 8192 } }5.3 步骤三构建AI代理并运行对话完整脚本如下保存为agent_with_weather.py# -*- coding: utf-8 -*- import sys from qwen_agent.agents import Assistant from weather_tool import GetCurrentWeather # 导入自定义工具类 # LLM 配置同上 llm_cfg { model: /models/Qwen2.5-7B-Instruct, model_server: http://localhost:9000/v1, api_key: EMPTY, generate_cfg: {top_p: 0.8} } # 初始化助手代理 system_instruction 你是一个乐于助人的AI助手擅长使用工具获取实时信息。 tools [get_current_weather, code_interpreter] # 注册工具名 assistant Assistant( llmllm_cfg, system_messagesystem_instruction, function_listtools ) if __name__ __main__: # 用户输入 query 今天广州天气怎么样出门需要带伞吗 messages [{role: user, content: query}] print(AI 正在思考...\n) full_response for res in assistant.run(messagesmessages): if len(res) 3: content res[2][content] full_response content print(content, end, flushTrue) print(\n\n✅ 回答完成。)六、运行结果与调用流程分析执行命令python agent_with_weather.py输出示例AI 正在思考... params: {location: 广州} 今天广州的天气是多云间晴局部有阵雨气温在29到32摄氏度之间吹的是轻微的东南风。记得出门携带雨具哦 ✅ 回答完成。6.1 工具调用全过程拆解整个交互过程分为三个阶段对应三条消息流转阶段1模型决定调用工具{ role: assistant, content: , function_call: { name: get_current_weather, arguments: {\location\: \广州\} } } Qwen2.5-7B 判断用户问题是关于天气的且需要外部数据于是触发工具调用。阶段2执行本地函数并返回结果{ role: function, name: get_current_weather, content: 目前我市多云间晴局部有阵雨气温29~32℃吹轻微的东南风。 } Qwen-Agent 自动调用GetCurrentWeather.call()方法并将结果注入上下文。阶段3模型整合信息生成最终回复{ role: assistant, content: 今天广州的天气是多云间晴局部有阵雨……记得出门携带雨具哦 }✅ 模型结合原始问题与工具返回内容生成人性化、有建议性的回答。七、常见问题与解决方案问题原因解决方案报错ModuleNotFoundError: No module named qwen_agent环境未激活或安装失败确认 conda 环境激活重新安装模型不调用工具直接猜测答案工具描述不清或参数格式错误检查description和parameters是否清晰规范vLLM 启动失败显存不足FP16 加载仍超限使用--quantization awq或gptq量化加载工具调用后无响应函数抛出异常未捕获在call()中添加 try-except 并返回友好提示中文乱码或编码错误文件未声明 UTF-8 编码添加# -*- coding: utf-8 -*-头部声明八、进阶技巧与最佳实践8.1 支持更多工具类型你可以轻松扩展其他工具例如search_internet: 调用 SerpAPI 搜索网页execute_sql: 连接数据库执行查询send_email: 发送邮件通知translate_text: 多语言翻译服务只需继承BaseTool并注册即可。8.2 启用代码解释器Code InterpreterQwen-Agent 内置了安全沙箱化的代码执行能力可用于数学计算、数据分析等场景tools [code_interpreter] messages [ {role: user, content: 画一个正弦函数图像x范围是0到4π} ]自动生成 Python 代码并渲染图表无需额外开发8.3 构建 Web 界面Gradio GUI添加 GUI 支持非常简单from qwen_agent.gui import WebUI WebUI(assistant).run(server_port7860)访问http://localhost:7860即可进入图形化聊天界面。九、总结与下一步建议✅ 本文核心收获成功部署了Qwen2.5-7B-Instruct vLLM的高性能推理服务使用Qwen-Agent框架构建了一个支持工具调用的 AI 代理实现了自定义工具注册、调用与结果融合的完整链路掌握了工具调用的数据结构与调试方法 下一步学习路径建议方向推荐动作多工具协同让模型同时调用天气 地图 API 推荐出行路线RAG 增强接入本地知识库提升专业领域问答准确率Agent 规划能力尝试Planner类型代理实现复杂任务分解生产级部署使用 FastAPI Docker 封装成微服务性能优化对模型进行 AWQ/GPTQ 量化降低显存占用十、参考资料Qwen 官方 GitHubhttps://github.com/QwenLMQwen-Agent 文档https://qwen.readthedocs.io/zh/latest/qwen-agent.htmlvLLM 文档https://docs.vllm.ai/ModelScope 模型下载https://www.modelscope.cn/models/qwen/Qwen2.5-7B-Instruct 原文参考开源模型应用落地-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent初体验一现在你已经拥有了打造专属AI助手的能力。下一步不妨尝试接入真实的天气API或数据库让你的Agent真正“活”起来

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询