共计 2273 个字符,预计需要花费 6 分钟才能阅读完成。
为什么需要 Agent LLM?
传统的自动化脚本就像一台老式收音机——只能按预设的按钮播放固定内容。当遇到以下情况时就会崩溃:

- 用户用方言问 ” 明儿个天气咋样 ”(非结构化输入)
- 需要同时查询空气质量并建议是否带口罩(多步骤决策)
- 服务器返回 ”502 Bad Gateway”(异常处理)
Agent LLM 相当于给收音机装上了大脑和记事本:
- 理解意图:把 ” 明儿个 ” 自动转换为具体日期
- 分步执行:先查天气,再调用空气质量 API
- 记住上下文:上次用户说对花粉过敏,这次主动提示防护
核心概念三明治
用快递小哥来理解这些术语:
- Agent = 接单员 + 配送员,负责接收需求(” 送蛋糕给妈妈 ”)并拆解动作(取货→导航→敲门)
- LLM = 小哥脑中的城市地图,知道 ” 人民广场 3 号口 ” 比 ” 那个喷泉旁边 ” 更精确
- 工作记忆 = 随身携带的便签条,记录着 ” 客户说放门口垫子下别按门铃 ”
环境准备(含避坑提示)
先准备数字工具箱:
# 创建虚拟环境(防止包冲突)python -m venv agent_env
source agent_env/bin/activate # Linux/Mac
agent_env\Scripts\activate # Windows
新建requirements.txt:
openai>=1.12.0
requests>=2.31.0
tenacity>=8.2.3 # 重试利器
pytest>=7.4.0 # 测试必备
安装时常见问题:
- 如果报错 ”Could not find a version…”,先运行
pip install --upgrade pip - 国内用户建议加上
-i https://pypi.tuna.tsinghua.edu.cn/simple加速
实战:天气查询 Agent
任务分解流程图
graph TD
A[用户输入] --> B(提取地点和时间)
B --> C{是否需要澄清?}
C -->| 是 | D[追问具体城市]
C -->| 否 | E[调用天气 API]
E --> F[格式化输出]
F --> G[记录对话历史]
核心代码实现
import openai
from tenacity import retry, stop_after_attempt, wait_exponential
class WeatherAgent:
def __init__(self):
self.memory = [] # 对话记忆
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def call_weather_api(self, location):
# 模拟真实 API 调用
if "上海" in location:
return {"temp": 28, "condition": "晴"}
raise ValueError("暂不支持该地区")
def parse_input(self, user_query):
# 实际项目应该用 LLM 做意图识别
if "明天" in user_query:
return "上海", "2024-05-20"
return "上海", None
def run(self, user_input):
location, date = self.parse_input(user_input)
try:
weather = self.call_weather_api(location)
response = f"{location}天气:{weather['condition']} {weather['temp']}℃"
self.memory.append((user_input, response)) # 记住对话
return response
except Exception as e:
return f"查询失败:{str(e)},请换种方式提问"
单元测试样例
新建test_agent.py:
import pytest
from weather_agent import WeatherAgent
@pytest.fixture
def agent():
return WeatherAgent()
def test_shanghai_weather(agent):
assert "28" in agent.run("明天上海天气怎么样")
def test_error_handling(agent):
assert "失败" in agent.run("火星天气如何")
运行测试:
pytest -v test_agent.py
三大部署陷阱与逃生梯
- 冷启动响应慢
- 症状:第一次请求要 5 秒以上
-
处方:预先发送 ” 热身 ” 请求(如空文本),或使用容器保持常驻
-
上下文爆炸
- 症状:聊到第 10 轮就开始胡言乱语
-
处方:采用
滑动窗口策略,只保留最近 3 组 QA,关键信息用摘要压缩 -
账单惊吓
- 症状:月初收到天价账单
- 处方:
- 设置
max_tokens=500硬限制 - 用
tiktoken库提前计算 token 消耗 - 对免费用户关闭
gpt-4选项
- 设置
毕业设计:尝试改造这些场景
- 餐饮推荐 Agent
- 输入:” 我想吃清淡的日本料理,预算 200 以内 ”
-
扩展:
- 调用地图 API 获取周边店铺
- 结合用户历史评价过滤
- 询问是否需要预订
-
故障排查 Agent
- 输入:” 打印机显示缺纸但装了纸还是报错 ”
- 扩展:
- 引导用户拍摄故障灯照片
- 比对常见错误代码库
- 生成售后预约链接
延伸学习资料
写完这个天气 Agent 后,我突然收到朋友消息:” 你那机器人能问台风路径吗?” 这才意识到真实场景永远比教程复杂。不过没关系,Agent 的好处就是——它现在虽然只会查温度,但只要不断教它新技能,总有一天能成为你的万能助手。
正文完
