这是「8天Java后端工程师转AI Agent」系列的第一篇。
这里的「8 天」指的是累计 8 天的实操量,按每周 1 天的节奏更新(每周 3-5 小时实际投入)。所以系列会持续 8 周左右,但纯动手时间是 8 天。

我是一个工作8年的Java工程师,之前所有的工作都在 JVM、分布式、服务治理、中间件这一层。
这个系列记录我从零开始、把 AI Agent 从概念学到能跑出一个自己用得上的小工具的全过程。


一、为什么写这个系列(初衷)

先把动机说清楚,省得读者误会方向。

1. 不是为了"追风口"

我已经过了「看到新东西就要学」的年纪。会去学 Agent,是因为它真的解决我自己的问题——不是工作上的问题,是生活上的:我做了不少投资决策,却经常被情绪牵着走。在跌的时候恐慌、在涨的时候上头、读财报读不完、读完就忘、做过的判断半年后回看完全想不起当时为什么那么想。

LLM 在「消化非结构化文本、提炼要点、强迫你看见反方」这件事上是真的强。它不预测涨跌——那条路从架构上就不靠谱——但它能做一个研究副驾 + 纪律工具:帮我读财报、记录决策理由、在我准备买之前先把空头逻辑摆到我面前。

这个副驾恰好就是绝佳的 Agent 练习题。一举两得。

2. 给自己一个不退的承诺

公开写、按周更新,是逼自己别半途而废的最好方式。我承认我之前也屯过课、囤过书、收藏夹里躺过一堆 paper——结果一个都没动手。这次换一个玩法:每周必须有一个能跑的东西,哪怕很丑很小。跑通比完美重要一百倍。

3. 给同样路径的人留个真实参照

后端Java工程师转 AI 这条路,网上的资料要么过浅(“30 天精通大模型”),要么过深(直接扔 paper),中间真正合适的不多。我把自己学的过程一字不漏写下来,包括踩坑、走弯路、改方向,希望对走同样路径的同行有用。


二、这 8 天做什么、不做什么

做: 把 AI Agent 当成一个值得认真上手的工程主题。一天一个能跑的小东西,叠加成型:

Day 0  环境 + 第一次 API 调通          ← 本篇
Day 1  手写 ReAct 单 Agent(挂一个工具)
Day 2  多工具与筛选
Day 3  跨会话记忆(关注列表 + 笔记)
Day 4  RAG 基础(喂财报,让它基于文档回答)
Day 5  RAG 生产化(查询分解 + 重排 + 引用)
Day 6  上下文工程(引入 LangGraph)
Day 7  评测与可观测性
Day 8  多 Agent 研究委员会(含强制唱反调)

不做: 让 Agent 预测涨跌、自动下单、生成"必赚"信号。这条路对散户基本是「用更复杂的方式亏钱」。LLM 在精确数值推理和时间序列预测上从架构上就弱,论文里报告的「超额收益」多半是前视偏差 + 过拟合,不能当真。

这条线我会一直守住。 越到后面越要守住。


三、技术选型(一句话说清)

  • 语言: Python。生态最大、例子最多、岗位池最大。Java 不丢,留作差异化。
  • Day 1–5 不上框架。 直接用模型 SDK 手写 ReAct 循环——你会真正看懂循环里发生了什么。
  • Day 6 起引入 LangGraph。 图 + 共享状态 + 检查点,正对后端工程师做状态机/编排的脑子。
  • 向量库本地起步: PGVector / Chroma。
  • 数据: A 股用 Tushare/AkShare,美股用 yfinance/Alpha Vantage。

四、Day 0:把链路打通

目标: 消除一切环境摩擦。能成功调通一次 API、打印返回。
预算: 半天。

听起来很弱对吧——为什么要花一篇文章写这个?

因为「环境调通」这一步是最容易被低估、又最容易在后面把人卡死的一步。Python 版本不对、venv 没建好、API key 没设、模型名搞错、代理网络问题⋯⋯这些破事如果留到后面写业务代码时才暴露,会让你怀疑「学 Agent 是不是不适合我」。先把这层污染干净,后面的每一周才能聚焦在真正的概念上。

4.1 环境准备

# 1. Python 3.10+(我用的 3.11;3.7 太旧,新的 SDK 不支持)
python3.11 --version

# 2. 工程目录 + 干净的虚拟环境
mkdir ailearn && cd ailearn
python3.11 -m venv .venv
source .venv/bin/activate

# 3. 装一个 SDK,先用 openai 这个(OpenAI 兼容协议覆盖最广)
pip install openai

4.2 配置 API key(关键:不要硬编码进代码)

# macOS / Linux:写进 shell 配置或当前会话临时设
export OPENAI_API_KEY="你的key"
export OPENAI_BASE_URL="https://api.openai.com/v1"   # 用代理就改成代理地址

我自己用的是公司内部的代理 endpoint,对应模型名也不同。如果你用的是 OpenAI 官方,模型名直接用 gpt-4o-mini 这种就行。

4.3 第一段代码:hello_agent.py

"""
Day 0: First LLM API call. Just verify the wiring.
"""
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url=os.environ.get("OPENAI_BASE_URL"),  # optional, defaults to OpenAI
)

response = client.chat.completions.create(
    model="gpt-4o-mini",   # 或者你 endpoint 支持的模型名
    messages=[
        {"role": "user", "content": "Say hi in one short sentence."}
    ],
    temperature=0.2,
)

print(response.choices[0].message.content)
print("\n--- usage ---")
print(response.usage)

跑:

python hello_agent.py

期望输出(具体文字会变,关键看不报错 + 有 usage 数据):

Hi there! How can I help you today?

--- usage ---
CompletionUsage(completion_tokens=10, prompt_tokens=14, total_tokens=24)

那一刻起,整个 8 天的链路就活了。

4.4 我自己踩到的坑(如实记录)

  • Python 3.7 太旧:默认装好的 python3 是 3.7.6,新版 openai SDK 不支持。换 3.11 后秒过。
  • 模型名不对会报 500:用代理时模型名要对得上代理那边的清单,不能照搬 OpenAI 文档里的。我一开始用了一个错的模型名,代理返回的错误码还不是 400,是 500,看着像服务挂了,其实是模型名问题。遇到 500 先别慌,换个稳的模型名再试一次。
  • temperature 默认是 1.0,不是 0:很多人以为不传就是 0,实际上 OpenAI / Anthropic SDK 默认都是 1.0,输出会比较「放飞」。Agent 场景几乎都该显式设到 0.2 左右。

五、Day 0 关键词速查

新人看到这些词最容易心虚。这里每个只用一两句话讲清楚,够你判断「什么能交给它、它会在哪翻车」即可,不碰数学。

Token

模型看到的不是字符,是 token。中文 1 token ≈ 1–2 个汉字,英文 1 token ≈ 0.75 个单词。API 按 token 计费、上下文窗口按 token 算response.usage 里就能看到这次花了多少。

上下文窗口(context window)

模型每次推理只能看到窗口内的内容。窗口 = system prompt + 对话历史 + 工具结果 + 你的问题。超出窗口的内容它完全看不见——不是「记得模糊」,是不存在。

类比:CPU 的 L1 cache。快,但极其有限。这是 Day 3(记忆)和 Day 6(上下文工程)要解决的核心问题。

Temperature

控制输出随机度。

行为 适合场景
0.0–0.2 几乎确定性 代码生成、结构化提取、Agent 工具选择
0.5–0.7 平衡 通用对话
0.8+ 高创意 头脑风暴

默认是 1.0,偏高。 进生产几乎都该显式设。

幻觉(hallucination)

模型本质是在预测「下一个最可能的 token」,不是在「查事实」。它没有数据库,它有的是压缩进权重里的模式。所以问具体数字、问最近发生的事、问稀疏领域——它会编一个看起来合理的答案。

这正是为什么要给它挂工具。 让它通过工具拿真实数据,而不是靠记忆。这是整个 Agent 计划的核心动机。

Function calling / tool use

你把工具的「名字、用途、参数」用 JSON Schema 描述给模型,模型决定要不要调、传什么参数。对后端工程师来说就是接口定义,只不过描述用自然语言、调用方是模型。

下一篇(Day 1)就要手写。

ReAct(Reasoning + Acting)

Agent 最核心的循环:推理 → 行动(调工具)→ 观察结果 → 再推理,直到给出最终答案。Day 1 全部内容都围绕这个循环展开。


六、给同样起步的你的几条建议

  1. 先把环境跑通再读 paper。 我见过太多人收藏夹里 30 篇论文,但一行代码没写。跑通一次 API带来的「啊原来就这样」的瞬间,比读 10 篇综述都管用。
  2. 不要囤课。 这个领域每三个月就翻新一次,囤的课等你看的时候已经过时一半。用动手的进度去倒逼学习,缺什么补什么。
  3. 守住「研究 + 纪律」这条线,别滑向「预测 + 自动交易」。 这是给所有把 AI 用在投资上的人的提醒。
  4. 允许掉队。 我自己也不一定每周都能 3-5 小时跑出东西。这是脚手架,不是考卷。 某周只跑通一半也算往前走了。

七、下篇预告:Day 1 - 手写第一个 ReAct 单 Agent

下一篇做的事:写一个能调工具的 Agent,挂一个 get_quote(ticker),问它「某只标的现在估值和近一年表现如何」,它会去调工具拿数据再回答,而不是凭记忆瞎编一个数字

不上任何框架,直接用 SDK 手写循环。几十行代码——你会真正看懂 Agent 的心脏怎么跳。


配套阅读(按 Day 更新,先标 ⭐ 的两篇够了)

  • ⭐ Lilian Weng,《LLM Powered Autonomous Agents》
    https://lilianweng.github.io/posts/2023-06-23-agent/
  • ⭐ Anthropic,《Building Effective Agents》
    https://www.anthropic.com/research/building-effective-agents

系列后续更新于:https://blog.csdn.net/ASIA_kobe?type=blog
欢迎同样在转 AI 路上的同行点关注,我们一起把这 8 天走完。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐