X 上有一条帖子在调侃:花 500 美元买 AI Agent 课程的人,如今能看免费的了。原帖:https://x.com/deanwperkins/status/2116911546282733623 (作者 Dean W. Perkins,@deanwperkins)。底下讨论的共识是课程本身不稀缺,稀缺的是把课里的东西跑起来。
这句话说到点子上了。多数人卡住的地方不是听不懂 agent 循环,是第一步就动不了:示例代码用的模型 Key 没有,换了个模型协议又对不上,跑不起来也就无从验证。
这篇讲最小可跑配置,不讲 agent 理论。
最小 agent 只有三件事
抛开框架和抽象,一个能干活的 agent 就是三个组件:
- 一个能调用工具的模型
- 一组工具定义(名字、参数、说明)
- 一个循环:模型决定调什么工具,你执行,把结果给回模型,直到它说完了
课程里那些多智能体、记忆、规划,都是在这三件事上加东西。先把这三个跑通。
第一步:把 Key 准备好
大多数课程的第一个作业就是「去申请某个模型的 API Key」。这一步劝退率不低:注册、绑卡、等审核,有的还要申请额度。
用一个统一的入口就跳过这个环节。HiAPI 的 Key 一套鉴权,覆盖 Claude、GPT、Kimi、Grok、DeepSeek 等文本模型,走标准的 Chat Completions 协议。
拿到 Key 之后,先确认能通:
curl -s https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-sol",
"messages": [{"role": "user", "content": "说一句你好"}]
}'
能返回内容,Key 就没问题。
第二步:定义工具
工具定义是给模型看的说明书。它需要知道有哪些工具、每个工具要什么参数。
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的当前天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名,如 北京"}
},
"required": ["city"]
}
}
}]
要写的说明只有一句:模型靠 description 判断什么时候该用这个工具。写得越清楚,调错的概率越低。
第三步:写循环
import json, requests
API = "https://api.hiapi.ai/v1/chat/completions"
KEY = "YOUR_HIAPI_API_KEY"
HEADERS = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}
def run_weather(city):
return {"city": city, "temp": 18, "condition": "晴"} # 示例实现
messages = [{"role": "user", "content": "北京今天多少度?"}]
for _ in range(5): # 防止死循环
resp = requests.post(API, headers=HEADERS, json={
"model": "gpt-6.1-sol",
"messages": messages,
"tools": tools,
}).json()
msg = resp["choices"][0]["message"]
messages.append(msg)
if not msg.get("tool_calls"):
print(msg["content"])
break
for call in msg["tool_calls"]:
args = json.loads(call["function"]["arguments"])
result = run_weather(args["city"])
messages.append({
"role": "tool",
"tool_call_id": call["id"],
"content": json.dumps(result, ensure_ascii=False),
})
这段跑完会看到模型先决定调 get_weather,拿到结果后再组织成一句话回答。这就是完整的 agent 循环。
模型怎么选
同一个循环,换个 model 字段就能换模型。成本差得很远:
| 模型 | 输入 | 输出 | 适合 |
|---|---|---|---|
| GPT-6 Luna | $0.025 | $0.125 | 简单工具调用、分类、抽取 |
| GPT-6.1 Terra | $0.25 | $1.25 | 日常 agent、代码任务 |
| GPT-6.1 Sol | $0.50 | $2.50 | 复杂多步任务 |
| Claude Opus 5.5 | $2.02 | $10.08 | 长任务、需要深度推理 |
单次工具调用循环大概几千 token,按最便宜的 Luna 算,一次不到一厘钱。跟课程做实验,成本可以忽略。
课程里如果指定了某个模型,就按课程用;课程没指定或者你用不了,用同档位的替代不影响学习效果,因为循环逻辑是一样的。
课程里最容易卡住的三个点
工具调用返回格式不对。 不同模型厂商对 tool_calls 的字段组织有差异。用 Chat Completions 兼容协议的模型时格式统一,换模型不用改解析代码。
上下文越滚越长。 每一轮都把历史全带上,跑到第三十轮就顶到上限。课程后期会讲裁剪策略,前期先知道这个坑存在。
模型不调工具只回文字。 通常是工具描述写得太模糊,或者提示词没说清「你有工具可用」。把描述改具体,或者在系统提示里点明。
跑通之后做什么
先别急着上框架。
最小循环能跑之后,按顺序补这几样:
- 加错误处理:工具执行失败时把错误信息给回模型,让它重试或换路径
- 加用量统计:每次调用的 token 数记下来,才知道成本花在哪
- 加超时和重试:网络抖动是常态
- 再考虑框架:如果任务复杂到需要多智能体或者复杂状态机,再上框架不迟
课程教的架构通常面向生产,直接照着搭容易在第一步就卡住。先把三个组件跑起来,剩下的按需加。
常见问题
必须用某个特定模型吗?
不用。只要支持工具调用(function calling),循环逻辑就通用。课程指定的模型用不了时,同价位的替代不影响理解。
免费课程和付费课的差别在哪?
按 X 上那条讨论的说法,差别更多在结构和答疑,不在知识本身。跑通示例这件事,两边都要自己做。
工具能调真实 API 吗?
能。把 run_weather 换成真实的 HTTP 请求就行。注意把工具函数里的异常都接住,否则一次失败会让整个循环断掉。
跑一次要多少钱?
最小示例几千 token,最便宜的模型一次不到一厘钱,贵的也就几分。拿来做实验不用担心成本。
关键结论
agent 课程的卡点从来不是理论,是第一个示例跑不起来。三件事就能跑通一个完整循环:一把能用的 Key、一份工具定义、一个把结果喂回去的循环。跑通之后再补工程细节,比反过来容易十倍。
资料来源
- 话题起因:Dean W. Perkins(@deanwperkins),https://x.com/deanwperkins/status/2116911546282733623
- 该帖未附具体课程链接,本文不指向任何特定课程,只讲跑通示例的通用配置
- 代码示例与价格数据为本站整理,价格取自 HiAPI 生产环境(2026-11-02)





