你有没有这种感觉:ChatGPT 很能聊,但让它「帮我把这件事办了」,它就卡住了。
你问它「今天AI圈有什么大新闻」,它说「我的知识截止到2025年」。你打开联网搜索又问一次,它给你一段总结,但你要自己复制粘贴到笔记里。
这不是 AI 不够强,而是你用的只是模型,不是 Agent。
今天这篇是「AI Agent 开发实战」系列的第 01 篇。
一、一个公式讲透 Agent
Agent = Model + Harness
这个公式来自 LangChain 的 Vivek Trivedy,也是 DeepSeek 招聘时写在 JD 里的第一行。翻译成人话:
- Model(模型): 能聊天、能推理的大模型,比如 GPT、Claude、千问
- Harness(驾驭层): 模型之外的一切------提示词、工具、记忆、循环控制、安全规则
一个裸模型不是 Agent。当给模型装上 Harness,它才变成 Agent。
最直观的类比
买了最新款芯片却装了个崩溃系统,体验还不如老芯片配稳定 OS。模型再强,Harness 不行,Agent 就是废物。
二、Chatbot vs Agent
用 Chatbot,你问「分析这篇论文」,它给一段分析,你手动保存。用 Agent,你说「每天追踪 arXiv 新论文,发我邮箱」,它自己跑。
三、你的第一个 Agent
下面是一个最简单的 Agent------能联网搜索并总结资讯的「个人资讯助手」。核心逻辑三步:
- 接收用户的问题
- 判断是否需要搜索,需要则调用工具
- 结合搜索结果生成回答
完整代码
ini
# agent_demo.py - 你的第一个 AI Agent
# 依赖: pip install openai requests
import json
import requests
from openai import OpenAI
# ===== 配置 =====
client = OpenAI(
api_key="your-api-key-here",
base_url="https://api.deepseek.com/v1"
)
MODEL = "deepseek-chat"
# ===== 工具定义 =====
TOOLS = [{
"type": "function",
"function": {
"name": "web_search",
"description": "搜索互联网获取最新信息",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "搜索关键词"
}
},
"required": ["query"]
}
}
}]
# ===== 工具实现 =====
def web_search(query):
url = "https://api.bocha.cn/v1/web-search?query=" + query
resp = requests.get(url, timeout=10)
results = resp.json().get("results", [])
output = ""
for r in results[:3]:
output += r["title"] + ": " + r["snippet"] + "\n"
return output
# ===== Agent 核心循环 =====
def run_agent(user_input):
messages = [
{"role": "system", "content": "你是一个资讯助手。"
"如需最新信息请使用 web_search 工具,并注明来源。"},
{"role": "user", "content": user_input}
]
response = client.chat.completions.create(
model=MODEL, messages=messages,
tools=TOOLS, tool_choice="auto"
)
msg = response.choices[0].message
messages.append(msg)
if msg.tool_calls:
for tc in msg.tool_calls:
if tc.function.name == "web_search":
args = json.loads(tc.function.arguments)
result = web_search(args["query"])
messages.append({
"role": "tool",
"tool_call_id": tc.id,
"content": result
})
final = client.chat.completions.create(
model=MODEL, messages=messages
)
return final.choices[0].message.content
return msg.content
if __name__ == "__main__":
print(run_agent("今天AI圈有什么大新闻?"))
运行
把代码中的 API Key 换成你的(DeepSeek/千问/GPT 都行),然后:
python agent_demo.py
你会看到 Agent 自动判断需要搜索、调用工具获取资讯、生成回答------全程无人干预。
这不到 60 行包含了什么
- System Prompt --- 告诉 Agent 角色和行为规范
- 工具定义 --- 告诉模型它能用什么工具
- 工具执行 --- 模型决定调用时执行代码
- 循环 --- 模型思考 → 选工具 → 执行 → 再回答
- 结果注入 --- 把搜索结果喂回模型生成最终答案
这就是最简 Agent 的全部要素。虽然简陋,但核心骨架已经有了。
四、从这 60 行到生产级
离生产还差得远:没有重试、没有上下文管理、没有记忆......这些正是 Harness 要解决的。
接下来我们会逐步给这个骨架加装------
- 第02篇: Harness 工程入门 --- 重试、超时、步数限制
- 第03篇: 上下文工程 --- Token 成本降 80%
- 第04篇: 工具调用 --- 让 Agent 能干更多事
- 一路到第12篇完整项目实战
提示:Agent = Model + Harness,这个公式是整条知识链的起点。模型是 CPU,Harness 是操作系统,决定了 Agent 的上限。
今天你搭了第一个 Agent,核心循环已经跑通。下一篇,我们给它装上真正的操作系统。
参考: LangChain、DeepSeek、知识库 concepts/ai-agent-harness | 整理 by 码农大坚果