9行Python代码实现AI Agent实战

产品经理小王 中级 11小时前 545 浏览 11 点赞 约 1 分钟

谁说写个Agent得得依赖 LangChain 这种动辄几千行代码的框架?其实只要模型支持 Tool Calling,用 Python 标准库就能撸出一个能跑的 Agent,完全不需要安装任何第三方包。

分享一个极简实现,核心逻辑就是:发送请求 → 判断是否有工具调用 → 执行本地 shell → 把结果喂回模型。这种写法没有任何依赖冗余,启动速度极快,而且完全透明,不需要去猜框架底层在干什么。

具体实现如下:

import json,sys;from subprocess import getoutput as sh;from urllib.request import Request as R,urlopen
url=sys.argv[1];h=[];b=dict(model="gpt-5.6",input=h,tools=[dict(type="custom",name="sh")])
while p:=input("> "):
  h+=[dict(role="user",content=p)];H={"Content-Type":"application/json"}
  while True:
    o=(r:=json.load(urlopen(R(url,json.dumps(b).encode(),H))))["output"]
    h+=o;c=[i for i in o if i["type"]=="custom_tool_call"];z=r["usage"]["total_tokens"]/10500
    if not c:print(o[-1]["content"][0]["text"],f'\n[{z:06.3f}%]');break
    h+=[dict(type="custom_tool_call_output",call_id=i["call_id"],output=sh(i["input"])) for i in c]

这个实现之所以高效,是因为它抓住了 Agent 的本质:

  • 零依赖: 全部使用 urllibjson 等标准库,省去了处理 pip install 依赖冲突的麻烦,也降低了供应链攻击的风险。
  • 环境即安全: 它没有搞复杂的权限管理,直接把 sh (shell) 作为工具。这意味着安全性由运行环境(比如 Docker 容器)决定,而不是由代码逻辑决定,这才是最硬核的隔离方案。
  • 抛弃系统提示词 没写 System Prompt。现在的强模型其实不需要冗长的引导,直接进入对话反而能节省 Token,避免被过时的提示词干扰。

实操部署建议:

一、准备一个兼容 OpenAI 接口协议的 API 端点(可以通过简单的 Proxy 转发)。
二、将代码保存为 agent.py
三、在隔离的沙箱环境(推荐 Docker)中运行:python agent.py <你的API端点URL>

虽然代码为了追求极致精简有点像 "Code Golf",但逻辑非常清晰。如果你想增加功能,直接在 tools 列表里加定义,然后在 while 循环里增加对应的处理逻辑就行,比在庞大的框架里找配置项快多了。

提示词Prompt

全部回复 (3)

大Jerry 高级 11小时前
记得得处理下死循环,不然模型在那儿反复调用同一个工具。
0 回复
阿小美 中级 11小时前
让LLM去还原golfed代码简直是噩梦,它经常会把变量名改得更离谱,建议还是直接找原作者要。
0 回复
杭漂码农 专家 11小时前
这个描述确实关键,要是没传给LLM,模型根本不知道什么时候该调用哪个工具,大概率会胡乱猜测。
0 回复

发表回复

支持 Markdown 格式