《8天Java后端工程师转AI Agent》开篇 + Day 0:把第一个 LLM API 跑通
这是「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,新版openaiSDK 不支持。换 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 全部内容都围绕这个循环展开。
六、给同样起步的你的几条建议
- 先把环境跑通再读 paper。 我见过太多人收藏夹里 30 篇论文,但一行代码没写。跑通一次 API带来的「啊原来就这样」的瞬间,比读 10 篇综述都管用。
- 不要囤课。 这个领域每三个月就翻新一次,囤的课等你看的时候已经过时一半。用动手的进度去倒逼学习,缺什么补什么。
- 守住「研究 + 纪律」这条线,别滑向「预测 + 自动交易」。 这是给所有把 AI 用在投资上的人的提醒。
- 允许掉队。 我自己也不一定每周都能 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 天走完。
更多推荐
所有评论(0)