Qwen2.5-7B工具集成指南:让大模型学会调用天气API,小白也能懂
Qwen2.5-7B工具集成指南让大模型学会调用天气API小白也能懂1. 引言为什么需要工具集成想象一下你正在和一个智能助手聊天问它广州天气怎么样。如果它只能回答我不知道我没有天气数据那该多扫兴啊这就是为什么我们需要让大语言模型学会使用外部工具。Qwen2.5-7B作为阿里开源的大语言模型通过工具集成功能可以像人类一样调用各种API来获取实时信息。本文将手把手教你如何让Qwen2.5-7B学会查询天气即使你是编程小白也能轻松上手。2. 准备工作2.1 环境准备在开始之前你需要准备好以下环境一台配备NVIDIA GPU的电脑推荐显存16GB以上已安装Python 3.10基本的Python编程环境2.2 安装必要软件包打开终端执行以下命令安装所需软件包conda create --name qwen python3.10 conda activate qwen pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple2.3 下载模型你可以从以下两个平台下载Qwen2.5-7B-Instruct模型Hugging Facehttps://huggingface.co/Qwen/Qwen2.5-7B-Instruct/tree/mainModelScopegit clone https://www.modelscope.cn/qwen/Qwen2.5-7B-Instruct.git3. 核心概念解析3.1 什么是工具调用工具调用(Tool Calling)是大语言模型与外部世界交互的一种方式。简单来说就是让模型能够识别用户需求然后调用相应的API或函数来获取信息或执行任务。3.2 Qwen2.5的工具调用能力Qwen2.5-7B特别适合工具调用场景因为它支持结构化输出特别是JSON格式对指令遵循能力强能够理解复杂的用户需求可以处理长达128K tokens的上下文4. 实战让Qwen2.5查询天气4.1 创建天气查询函数首先我们需要创建一个模拟天气API的函数def get_current_weather(city: str): 获取指定城市的当前天气情况 return (f目前{city}多云到晴气温28~31℃吹轻微的偏北风。)这个函数模拟了一个真实的天气API接收城市名称作为参数返回天气信息。4.2 定义工具描述接下来我们需要告诉Qwen2.5这个工具的功能和使用方法tools [{ type: function, function: { name: get_current_weather, description: 获取指定位置的当前天气, parameters: { type: object, properties: { city: { type: string, description: 查询当前天气的城市例如深圳 } }, required: [city] } } }]这段JSON格式的描述告诉模型工具名称get_current_weather功能描述获取天气需要什么参数城市名称参数类型字符串4.3 初始化模型并提问现在我们可以初始化模型并向它提问了from vllm import LLM from vllm.sampling_params import SamplingParams # 加载模型 model_path /path/to/your/model # 替换为你的模型路径 llm LLM(modelmodel_path, dtypefloat16) # 设置采样参数 sampling_params SamplingParams(temperature0.45, top_p0.9, max_tokens8192) # 用户提问 messages [{ role: user, content: 广州天气情况如何 }] # 获取模型回复 output llm.chat(messages, sampling_paramssampling_params, toolstools) print(output[0].outputs[0].text)4.4 解析模型输出并调用工具模型会返回一个JSON格式的响应我们需要解析它并调用相应的函数import json # 解析模型输出 output_text output[0].outputs[0].text if tool_call in output_text: output_text output_text.replace(tool_call, ).replace(/tool_call, ) tool_calls json.loads(output_text) print(tool_calls) # 输出{name: get_current_weather, arguments: {city: 广州}} # 调用天气函数 weather_info get_current_weather(**tool_calls[arguments]) print(weather_info) # 输出目前广州多云到晴气温28~31℃吹轻微的偏北风。4.5 完整对话流程为了让对话更自然我们可以实现一个完整的对话流程def chat(llm, sampling_params, messages, tools): outputs llm.chat(messages, sampling_paramssampling_params, toolstools) return outputs[0].outputs[0].text.strip() # 第一次提问 messages [{role: user, content: 广州天气情况如何}] output chat(llm, sampling_params, messages, tools) # 解析并执行工具调用 tool_calls json.loads(output.replace(tool_call, ).replace(/tool_call, )) weather_info get_current_weather(**tool_calls[arguments]) # 将工具结果返回给模型 messages.append({role: assistant, content: output}) messages.append({ role: tool, content: weather_info, tool_call_id: weather_123 # 随机ID }) # 获取最终回复 final_output chat(llm, sampling_params, messages, tools) print(final_output) # 输出目前广州的天气情况是多云到晴气温在28到31℃之间吹着轻微的偏北风。5. 常见问题解决5.1 工具调用不工作怎么办如果遇到TypeError: LLM.chat() got an unexpected keyword argument tools错误说明你的vllm版本太低。解决方法pip install --upgrade vllm5.2 如何扩展更多工具你可以按照同样的模式添加更多工具。例如添加一个股票查询工具def get_stock_price(stock: str): return f{stock}当前价格为100元 tools.append({ type: function, function: { name: get_stock_price, description: 获取指定股票的当前价格, parameters: { type: object, properties: { stock: { type: string, description: 股票代码例如AAPL } }, required: [stock] } } })6. 总结与展望通过本文你已经学会了如何让Qwen2.5-7B调用外部工具来查询天气。这种方法可以扩展到各种场景查询实时股票信息获取新闻资讯预订机票酒店控制智能家居设备工具调用大大扩展了大语言模型的能力边界让它不再只是一个知识库而是一个真正的智能助手。随着Qwen2.5等模型的不断进化我们可以期待更多创新的应用场景。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。