[控场AI]
· 8 分钟阅读· 4,143 字

分币不掏学AI Agent开发:从零搭建最小对话智能体

分币不掏学AI Agent开发:从零搭建最小对话智能体

免费课程用26个案例拆解智能体开发,首节手写Java最小对话智能体。

本文介绍B站UP主小福哥在1024程序员节推出的免费智能体开发课程,将知识点拆为五个递进阶段:LLM调用与ReAct工具、规划与RAG、多智能体、工程化能力及综合实战,并提供Java、Python、TypeScript、Go等多语言版本,强调手写代码而非AI生成。文章重点梳理第一节内容:不引入框架,直接用JDK 17的HttpClient对接OpenAI chat completions协议,通过ChatModel接口与Message record抽象对话操作,完成请求构建、状态码判断与choices[0].message.content解析,最终用ChatAgent跑通最小对话闭环,验证链路可用。

AI Agent开发听起来门槛很高,但B站UP主小福哥在1024程序员节推出了一套“分币不掏”的免费课程,把完整的智能体开发拆解成26个小案例,用玩具项目的方式带新手手把手实现。本文基于该课程第一节内容,梳理从整体路线到最小MVP对话智能体的工程搭建过程,适合想转行智能体开发或刚入门的新人参考。

课程全景:五阶段拆解智能体开发

这套课程把智能体开发所需的知识点拆成五个递进阶段,每个阶段都对应可运行的代码案例。

第一阶段打地基:学习如何调用LLM大模型、对接curl请求、建立chat对话连接,然后实现ReAct(思考与行动循环)、工具调用和对话记忆。第二阶段进入规划与知识库,包括任务规划、RAG检索增强以及MCP Skills技能。第三阶段开发多智能体,涉及子代理和A2A协议。第四阶段补充澄清、审批、沙箱、钩子、CLI、定时任务等工程化能力。第五阶段做综合实战。整套内容覆盖一个核心完整智能体开发所需的主要知识点。

UP主提供了Java、Python、TypeScript、Go和纯JS多语言版本,方便对照学习。但课程强调“古法编程”——不用AI自动生成代码,而是手动敲一遍,避免开发者忘记如何写代码,同时深入理解智能体的实现原理。

这个是比较固定的东西

最小MVP:直接对接OpenAI协议

第一节的目标是跑通一个最小对话智能体。在引入LangChain、AgentScope等框架之前,先理解底层HTTP对接方式,这是后续所有开发的基础。

UP主建议先阅读OpenAI官方API文档,了解请求体结构。常见的协议包括OpenAI早期的chat completions、后来的responses,以及Claude的messages协议。不同模型或中转站支持的协议不同,本地网关可以用于协议转换。课程演示中,请求体包含base URL、端点路径(如/v1/chat/completions)、API Key、model、messages和temperature等参数。响应体中的choices数组、message.content、reasoning_content以及token消耗数据,都是后续开发需要解析的字段。

为了降低门槛,UP主还提供了瓦力API等渠道的免费模型,学习者可以直接用免费模型测试对话,无需付费。

Chat Completions 协议是 OpenAI 于 2023 年推出的对话补全接口(端点 /v1/chat/completions),其请求体以 messages 数组为核心,每条消息含 role(system/user/assistant)与 content 字段,模型按对话历史生成下一条 assistant 回复。它之所以成为事实标准,是因为大量国内外模型与中转服务都兼容这一结构,开发者只需改 baseUrl 和 model 即可切换后端。后来 OpenAI 推出的 Responses 协议(端点 /v1/responses)在其基础上整合了工具调用、内置状态管理和多模态输入,但兼容性尚不及 chat completions。Anthropic 的 Messages 协议(/v1/messages)字段命名略有差异(如 system 独立成参数、max_tokens 必填)。不同协议之间可通过本地网关做格式转换,这也是课程强调「先理解一套协议」的原因。

工程搭建:轻量Java项目与核心接口

课程使用JDK 17创建基础工程,不引入Spring Boot等重型框架,保持代码轻量。核心是定义一个ChatModel接口,代表与大模型的一次对话操作:接收消息列表,返回String结果。

消息对象使用Java record定义,包含role和content两个字段,并提供system、user、assistant三种静态工厂方法。这种不可变对象的设计类似DDD中的值对象,保证消息在传递过程中不被意外修改。

public record Message(String role, String content) {
    public static Message system(String content) { return new Message("system", content); }
    public static Message user(String content) { return new Message("user", content); }
    public static Message assistant(String content) { return new Message("assistant", content); }
}

ChatModel接口则定义对话契约:

public interface ChatModel {
    String chat(List<Message> messages);
}

随后实现OpenAIChatModel,内部使用JDK自带的HttpClient发送POST请求。构造函数接收baseUrl、apiKey、model三个字段,并做URL规范化处理——比如通过正则去掉或补全末尾斜杠,避免因配置差异导致请求失败。

是说我都保留

Java record 是 JDK 16 正式引入、JDK 17 中广泛使用的语言特性,用于声明不可变的数据载体类。编译器会自动为其生成构造器、equals、hashCode、toString 以及访问器方法(如 role() 而非 getRole()),字段默认 private final,因此一经创建便无法修改。相比传统 POJO,record 大幅减少了样板代码,语义上也更贴近 DDD 中的值对象——两个 record 实例只要字段相同即视为相等。在智能体开发中,消息、工具调用结果、配置项等都适合用 record 表达,既能保证线程安全,也能避免消息在多层传递中被意外篡改,这与课程中 Message 的设计意图一致。

HTTP请求与响应解析细节

发送请求时,需要构建HttpRequest:设置URI(baseUrl + 端点路径)、请求头(Content-Type: application/json、Authorization: Bearer {apiKey})、超时时间,并以POST方式发送JSON body。body中可以放入model、messages数组和temperature(示例设为0.7)。

响应处理先判断状态码是否为200。失败时返回HTTP错误码和截取后的响应体(避免日志过长),方便排查问题;成功时解析JSON,逐层取出choices[0].message.content。代码中使用了轻量JSON工具包,没有引入Fastjson等重型依赖,保持项目精简。

UP主特别提到,这套代码虽然固定,但目的是让学习者理解“数据如何从请求到响应流转”。掌握一套协议后,切换到其他语言或框架都会很快。

就是这个东西为空

JDK 自带的 HttpClient(java.net.http.HttpClient)是 Java 11 引入的现代 HTTP 客户端,替代了老旧的 HttpURLConnection。它支持同步与异步(sendAsync 返回 CompletableFuture)两种调用方式,提供链式构建的 HttpRequest(可设置 URI、请求头、超时、请求方法及 body),并原生支持 HTTP/2。相比引入 OkHttp、Apache HttpClient 等第三方库,使用内置 HttpClient 可以让示例工程零外部依赖,降低新手的环境配置负担。其局限在于连接池配置和重试策略需自行实现,生产环境往往仍会选择成熟客户端,但用于理解「一次 HTTP 请求如何往返」已完全够用。

智能体接口与第一个案例

在模型对接之上,课程定义了Agent接口,包含场景名称、chat方法、轨迹记录和清空记忆等方法。第一个实现是ChatAgent,内部持有ChatModel,chat方法把用户输入包装成Message列表交给模型,返回结果。

配置通过properties文件读取,包含baseUrl、apiKey、model三项,由工具类加载。主函数中构建OpenAIChatModel,注入ChatAgent,输入“一句话介绍你自己”即可完成首次对话测试。UP主还演示了切换到免费模型运行,验证整个链路可用。

输入进来的input

多语言对照与学习建议

课程仓库中包含Go、TypeScript、Python等语言版本。UP主对比了Go和TypeScript的实现,核心逻辑完全一致:定义ChatModel接口、实现OpenAI协议、构造HTTP请求、解析响应。语言只是载体,架构思路相通。掌握一套后,其他语言可以快速迁移。

对于“AI时代是否还需要手写代码”的疑问,UP主的观点很明确:公司复杂项目不会允许黑盒交付,开发者必须能读懂自己提交的代码,否则测试和线上事故都会带来麻烦。手动实现一遍,是为了建立对业务流程的清晰认知。

这套课程完全免费,第一节完成了最小对话智能体的闭环。后续将从提示词工程开始,逐步加入工具调用、记忆、规划等能力,适合跟着节奏一步步实践。

#AI Agent开发#智能体开发教程#OpenAI API对接#Java智能体#ChatModel接口#免费AI课程#最小MVP智能体
分享:

相关推荐