智能体开发实战01|Agent是什么

你有没有这种感觉: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------能联网搜索并总结资讯的「个人资讯助手」。核心逻辑三步:

  1. 接收用户的问题
  2. 判断是否需要搜索,需要则调用工具
  3. 结合搜索结果生成回答

完整代码

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 码农大坚果

相关推荐
码农大坚果3 小时前
智能体开发实战03|上下文工程降本80%
agent
摘笑3 小时前
我花了3天让AI Agent学会查数据库,才发现MCP这玩意是真的香
agent·ai编程·mcp
阿里云云原生3 小时前
重磅发布!AgentScope Java 2.0:为企业级分布式智能体提供原生工程底座
agent
canonical_entropy4 小时前
制品生命周期与收敛拓扑:CodeStable 与 AGE 的模式差异
aigc·agent·ai编程
canonical_entropy4 小时前
控制层和方向层的分野:OpenProse、Natural-Language Agent Harnesses 与 AGE的比对分析
aigc·agent·ai编程
guyoung7 小时前
BoxAgnts 运行时(5)——MCP 只是开始,运行时才是关键
agent·ai编程·mcp
初旭save7 小时前
Agent Skill 不是写 Prompt,是给 LLM 做存储分层
llm·agent·claude
STRUGGLE_xlf9 小时前
Agent 基础
人工智能·agent