乐于分享
好东西不私藏

从零手搓一个最简单 AI Agent(智能体)--系列01

从零手搓一个最简单 AI Agent(智能体)--系列01

2026 年绝对是 AI Agent(智能体) 的元年。自从 Claude Code 横空出世,AI 智能体的威力已经无法忽视。Claude Code、Codex、GitHub Copilot 成了无数开发者的标配工具,OpenClaw 和 Hermes 也在成为越来越多人的 AI 助手。就连知识工作者也开始用 Cowork 这类工具整活。

但对于大多数人来说能接触到AI Agent(智能体) 并利用Agent 解决工作和生活中的问题还是比较少,其实AI Agent(智能体) 并不神秘,如果你愿意跟着这个系列走,我们就一起 从零手写一个最基础的 AI Agent,彻底搞懂它到底是怎么工作的。为了真正看清引擎盖底下是啥,我们不搞框架、不依赖库,纯 Python 手撸。这当然不是上线的产品,但这才是 真正能学会 的方式,读万卷书不如行万里路,让我们开始吧。

🤔 什么是 AI Agent?

AI Agent 就是一个 用 AI 来自主完成目标 的程序。跟别的 Agent 一样,它能感知环境、动脑思考、上手干活。通常它会跑在一个循环里,直到目标达成。

打个比方:你跟它说「帮我查一下今天的天气怎么样」,它就去查了告诉你。但真正的 Agent 不光是聊天,它还能自己调用工具、读文件、跑命令——那是后面的事儿,咱一步一步来。

🧱 最基本的 Agent 需要啥?

就四样东西:

1. 循环 —— 让 Agent 一直活着,别聊一句就挂了

2. LLM 连接 —— 得有个聪明的 AI 模型撑腰

3. 用户输入 —— 总得有人告诉它想干啥吧

4. 上下文/记忆 —— 聊过的不能转头就忘,得记着

当然这只是最丐版,后面我们会往里加更刺激的功能。

🔨 开整

先搞个能跑的模型。我的方案是用本地的 Ollama,跑的是 llama3.1:8b — 一个只有 8B 有效参数的小模型,免费、本地、随便玩。当然你也可以配置自己和API Key, 比如:Deepseek(注册官网并生成API key即可)

代码长这样

import httpxfrom openai import OpenAI# ========================================# 配置区域 - 按需修改即可# ========================================# 云端模式:设置 API Key 后将自动使用云端模式,否则使用本地 Ollama# OPENAI_API_KEY = "sk-xxx"# API 基础地址(本地 Ollama 默认 http://localhost:11434/v1)# OPENAI_BASE_URL = "http://localhost:11434/v1"# 模型名称(本地默认 llama3.1:8b,云端默认 gpt-4o)# LLM_MODEL = "llama3.1:8b"# 温度参数(0.0 - 2.0,默认 0.7)# LLM_TEMPERATURE = 0.7# ========================================# 以下代码无需修改# ========================================def get_llm_client():    """创建并返回 LLM 客户端。"""    api_key = OPENAI_API_KEY    base_url = OPENAI_BASE_URL    if api_key:        print(f"[配置] 云端模式 - API: {base_url}")        return OpenAI(base_url=base_url, api_key=api_key)    else:        print(f"[配置] 本地模式 - Ollama: {base_url}")        http_client = httpx.Client(            timeout=60,            mounts={                "http://localhost": httpx.HTTPTransport(proxy=None),                "http://127.0.0.1": httpx.HTTPTransport(proxy=None),            },        )        return OpenAI(            base_url=base_url,            api_key="ollama",            http_client=http_client,        )def agent_loop(client):    """运行 Agent 对话循环。"""    messages = [        {"role""system""content""You are a helpful assistant."}    ]    print("\n💬 对话已开始(输入 \\exit 退出)\n")    while True:        try:            user_input = input("You: ")        except (EOFError, KeyboardInterrupt):            print("\n👋 再见!")            break        if user_input.lower() == "\\exit":            print("👋 再见!")            break        if not user_input.strip():            continue        messages.append({"role""user""content": user_input})        try:            response = client.chat.completions.create(                model=LLM_MODEL,                messages=messages,                temperature=LLM_TEMPERATURE,            )            reply = response.choices[0].message.content            print(f"Assistant: {reply}")            messages.append({"role""assistant""content": reply})        except Exception as e:            print(f"❌ 请求失败:{e}")if __name__ == "__main__":    # 读取配置:用户取消注释后,变量的值会被 globals() 读取到    api_key = globals().get("OPENAI_API_KEY"or ""    base_url = globals().get("OPENAI_BASE_URL"or "http://localhost:11434/v1"    temperature = globals().get("LLM_TEMPERATURE"or 0.7    model = globals().get("LLM_MODEL"or ("llama3.1:8b" if not api_key else "gpt-4o")    # 注入到全局供 get_llm_client 和 agent_loop 使用    globals()["OPENAI_API_KEY"] = api_key    globals()["OPENAI_BASE_URL"] = base_url    globals()["LLM_MODEL"] = model    globals()["LLM_TEMPERATURE"] = temperature    mode = "云端" if api_key else "本地(Ollama)"    print("=" * 40)    print(f"  Agent 模式:{mode}")    print(f"  模型:{model}")    print("=" * 40)    client = get_llm_client()    agent_loop(client)

🧠 这段代码在干嘛?

拆开来看:

  • get_llm_client() 搞了个通往本地 Ollama 的 LLM 连接或配置API key

  • 建了一个聊天历史数组 messages,先塞一句系统提示词当基本功

  • 拿到用户输入,塞进消息队列

  • 把完整的对话记录(包括刚说的那句)发给 AI 模型,等它回话

  • AI 的回话接着塞进消息队列

  • 循环往复,直到你说 \exit 跑路

跑起来效果是这样:

✅ 你造了个啥?

这是 理论上最简的 AI Agent(智能体) 了,但说老实话,它还很鸡肋。目前它就是个聊天机器人——模型知识库里有的它能答,没有的就抓瞎。它没法读文件、写文件、跑命令、上网搜,跟外界环境是彻底隔开的。

🔜 下一步呢?

给 Agent 装工具 🛠️。让它能在真实环境里动手干活——读文件、跑搜索、执行命令。这才是 AI Agent 真正牛起来的地方。

下一期,我们给 Agent 循环加上 工具调用(tool calling)。到时候见。

代码在 Github仓库(https://github.com/aicorp-cn/basic-agent)里可以 clone,欢迎来玩。或扫下方二维码,同时点击原文链接也可以抵达