1. 项目概述
在AI应用开发领域,让大语言模型(LLM)具备调用外部工具的能力已成为落地实践的关键需求。本文将以"气象小助手"为例,详细拆解如何从零构建一个具备工具调用能力的Agent系统。这个系统能够理解用户关于天气的查询意图,通过调用外部API获取实时数据,并生成结构化的天气报告。
提示:本文代码示例基于OpenAI API格式,但同样适用于兼容该格式的国产大模型(如文心一言、腾讯云AI等)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计
2.1 Agent系统工作流
一个完整的工具调用Agent包含以下核心环节:
- 意图识别阶段:LLM分析用户输入,判断是否需要调用工具
- 工具调用阶段:系统执行具体的工具函数获取实时数据
- 结果整合阶段:LLM将原始数据转化为自然语言回复
mermaid复制graph TD
A[用户输入] --> B(LLM意图识别)
B -->|需要工具| C[生成工具调用请求]
B -->|直接回答| D[生成最终回复]
C --> E[执行本地工具函数]
E --> F[返回工具执行结果]
F --> G(LLM整合结果)
G --> D
2.2 关键技术选型
- 大模型基础:GPT-3/4系列或兼容API的国产模型
- 开发框架:Python + OpenAI官方库
- 工具协议:JSON Schema格式的工具描述
- 通信机制:基于对话历史的上下文管理
3. 详细实现步骤
3.1 环境准备
首先确保安装必要的Python包:
bash复制pip install openai python-dotenv
建议使用环境变量管理API密钥:
python复制from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
3.2 工具函数实现
天气查询工具
python复制import json
from datetime import datetime
def get_weather(location: str) -> str:
"""模拟天气API查询功能
Args:
location: 城市名称,如"北京"
Returns:
JSON格式的天气数据
"""
# 模拟数据库
weather_db = {
"北京": {
"temp": "25°C",
"condition": "晴",
"humidity": "45%",
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M")
},
"上海": {
"temp": "28°C",
"condition": "多云",
"humidity": "65%",
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M")
}
}
result = weather_db
