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。 🎉

✅ 实验任务


posted @ 2026-01-25 20:20  船山薪火  阅读(47)  评论(0)    收藏  举报
![image](https://img2024.cnblogs.com/blog/3174785/202601/3174785-20260125205854513-941832118.jpg)