04-Day 2:给智能体装上“手”——Tool 工具开发
Day 2:给智能体装上“手”——Tool 工具开发
目标:学会定义和调用工具函数
技能:编写 Tool、理解函数即能力
体验:绕过复杂的 Agent 机制,直接用 手动方式 + 模型提示 来模拟“AI 决定是否使用工具”的过程
✅ 不依赖
initialize_agent/create_tool_calling_agent
✅ 只用你已有的qwen_agent.py结构
✅ 手动实现“如果问时间/天气,就调用函数”
✅ 100% 能运行,无版本兼容问题
环境准备
mkdir day2-tools; cd day2-tools
python3 -m venv tools
在当前目录下创建一个名为myenv的虚拟环境
# 激活你的虚拟环境(如果之前创建了)
source tools/bin/activate
# 升级 pip(避免安装失败)
pip install --upgrade pip
pip install langchain-core langchain-community dashscope python-dotenv -i https://pypi.org/simple/
echo "DASHSCOPE_API_KEY=你的api-token" > .env
🛠️ 步骤 1:创建两个工具函数(保存为 tools.py)
tee tools.py <<'EOF'
from datetime import datetime
def get_current_time():
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def get_weather(city: str):
# 模拟数据(实际可用 API 替换)
weather_data = {
"北京": "晴,15°C",
"上海": "多云,22°C",
"成都": "小雨,18°C"
}
return f"{city}今天{weather_data.get(city, '天气未知')}"
EOF
🛠️ 步骤 2:创建简化版主程序 simple_tool_demo.py
tee simple_tool_demo.py <<'EOF'
from dotenv import load_dotenv
import os
from langchain_community.chat_models import ChatTongyi
from langchain_core.prompts import ChatPromptTemplate
from tools import get_current_time, get_weather
# 加载 API Key
load_dotenv()
os.environ["DASHSCOPE_API_KEY"] = os.getenv("DASHSCOPE_API_KEY")
# 初始化模型
llm = ChatTongyi(model="qwen-max", temperature=0)
# 用户输入(可改)
user_input = "现在几点?成都天气如何?"
# 简单规则:如果问题包含关键词,就调用工具
context = ""
if "时间" in user_input or "几点" in user_input or "当前" in user_input:
context += f"[当前时间: {get_current_time()}] "
if "天气" in user_input:
# 简单提取城市(只支持固定几个)
city = "成都" # 默认
for c in ["北京", "上海", "成都"]:
if c in user_input:
city = c
break
context += f"[天气信息: {get_weather(city)}] "
# 构造带上下文的提示
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个智能助手,会根据提供的工具信息回答问题。"),
("human", f"{context}\n用户问题:{user_input}")
])
chain = prompt | llm
response = chain.invoke({})
print(response.content)
EOF
▶️ 运行测试
python simple_tool_demo.py
输出示例:
当前时间为 2026-01-24 11:30:45,成都今天小雨,18°C。
🔁 后续升级路径
这个方案阐述了 “工具增强 AI”** 的核心思想:
AI 本身不知道实时数据 → 但可以借助外部函数获取 → 再基于真实数据回答
这正是 LLM + Tools 的本质!
下一步尝试官方 Agent。 🎉
浙公网安备 33010602011771号