AI Agent 学习计划(一)

完整、可执行、概念与实战紧密结合** 的 《Java 工程师 AI Agent 学习计划(8 天)》 ,专为 面向阿里云 + 通义千问 + 纯 Java 技术栈 的开发者设计。

不涉及模型训练

不依赖 Python

基于真实开源项目 langchain4j

每天包含:核心概念 + 动手实战 + 输出成果


📘 Java 工程师 AI Agent 学习计划(8 天 · 概念 + 实战一体化)

🎯 最终目标

构建一个 支持 ReAct 决策、RAG 检索、工具调用、多轮迭代智能测试用例生成系统,部署在本地或阿里云。


📅 详细日计划


第1天:理解 AI Agent 核心概念 + 环境搭建

🔍 核心概念
  • AI Agent 是什么? 能自主决策、调用工具、完成任务的智能程序(不是聊天机器人)。
  • ReAct 是什么? "推理(Reasoning)→ 行动(Acting)"交替的决策模式。
  • 为什么需要 RAG? LLM 不知道你的私有规则(如"用户等级只能是1~5"),需从知识库检索补充。
🛠️ 实战任务
  1. 注册 阿里云账号,进入 DashScope 控制台

  2. 获取 API Key(新用户送免费额度)

  3. Clone 项目:

    bash 复制代码
    git clone https://github.com/langchain4j/langchain4j-examples.git
    cd langchain4j-examples/dashscope-examples
  4. src/main/resources/application.properties 中添加:

    properties 复制代码
    dashscope.api-key=sk-xxxxxxxxxxxxxx
📤 输出成果
  • ✅ 可运行的 Java 开发环境
  • ✅ 概念笔记(手写或 Markdown):解释 Agent / ReAct / RAG 的区别与联系

第2天:跑通第一个 ReAct Agent

🔍 核心概念
  • ReAct 循环三要素
    • Thought:LLM 的推理("我需要查时间")
    • Action :调用哪个工具(get_current_time
    • Observation:工具返回结果("2024-06-15 10:00")
🛠️ 实战任务
  1. 运行 DashScopeReActExample.java
  2. 修改问题为:"现在几点?北京天气如何?"(需提前添加天气工具)
  3. 观察控制台输出,识别 Thought/Action/Observation
  4. 阅读源码:ReActAgent.javaGitHub 链接
📤 输出成果
  • ✅ 成功运行的日志截图
  • ✅ 手绘 ReAct 流程图(标注数据流向)

第3天:自定义工具(Tool Use)

🔍 核心概念
  • 工具(Tool):Agent 的"手脚",用于执行具体操作
  • @Tool 注解:声明方法可被 LLM 调用
  • Protocol(协议):工具的输入/输出必须结构化(JSON Schema)
🛠️ 实战任务
  1. 创建新类 TestRuleTool.java

    java 复制代码
    public class TestRuleTool {
        @Tool("查询字段的测试规则,例如手机号必须为11位数字")
        public String queryRule(@P("field") String field) {
            if ("mobile".equals(field)) {
                return "手机号必须为11位数字,不能包含字母";
            }
            return "无特殊规则";
        }
    }
  2. DashScopeReActExample.java 中注册该工具:

    java 复制代码
    ReActAgent agent = ReActAgent.builder()
        .chatLanguageModel(chatModel)
        .tools(new DateTimeTool(), new TestRuleTool()) // ← 注册
        .build();
  3. 测试提问:"如何测试 mobile 字段?"

📤 输出成果
  • ✅ 自定义 Tool 类
  • ✅ 工具被成功调用的日志

第4天:集成 RAG(本地向量检索)

🔍 核心概念
  • RAG = Retrieve + Augment + Generate
  • Embedding :将文本转为向量(使用 text-embedding-v2
  • 向量检索:计算相似度,返回最相关知识
🛠️ 实战任务
  1. 添加 Chroma 依赖到 pom.xml

    xml 复制代码
    <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-chroma-spring-boot-starter</artifactId>
        <version>0.30.0</version>
    </dependency>
  2. 准备知识文件 test_knowledge.txt

    复制代码
    手机号测试:11位数字,不能为空
    用户名测试:长度3-20,不能含特殊字符
  3. 编写 RagIngestor.java,将文本存入 Chroma

  4. 创建 RagTool.java

    java 复制代码
    @Tool("从历史知识库中检索相关测试规范")
    public String searchKnowledge(@P("query") String query) {
        List<TextSegment> results = chromaStore.findRelevant(query, 2);
        return results.stream().map(TextSegment::text).collect(Collectors.joining("\n"));
    }
📤 输出成果
  • ✅ 本地 Chroma 向量库
  • /rag-search 接口(可独立测试)

第5天:构建测试用例生成原型

🔍 核心概念
  • 任务导向:Agent 的目标是生成高质量测试用例
  • Prompt 工程:如何引导 LLM 输出结构化 YAML
🛠️ 实战任务
  1. 定义输入格式(JSON):

    json 复制代码
    { "fields": { "username": { "type": "string", "required": true } } }
  2. 创建 TestCaseGeneratorTool.java

    java 复制代码
    @Tool("根据字段定义和规则生成测试用例(YAML格式)")
    public String generateTestCases(
        @P("fieldSpec") String fieldSpec,
        @P("rules") String rules
    ) {
        // 调用 Qwen,Prompt 包含 fieldSpec + rules
        // 要求输出:- input: {username: ""}, expected: "400"
    }
  3. 组装完整流程:

    • 用户输入接口定义
    • Agent 调用 RagTool 获取规则
    • Agent 调用 TestCaseGeneratorTool 生成用例
📤 输出成果
  • ✅ 输入 JSON → 输出 YAML 测试用例

  • ✅ 示例:

    yaml 复制代码
    - input: { username: "" }
      expected: "用户名不能为空"

第6天:多轮迭代与质量检查

🔍 核心概念
  • 覆盖度驱动迭代:未覆盖场景 → 继续生成
  • 终止条件:覆盖率达阈值 或 超过最大轮数
🛠️ 实战任务
  1. 创建 CoverageCheckerTool.java

    java 复制代码
    public double calculateCoverage(String generatedCases, String interfaceSpec) {
        // 解析已生成用例,统计覆盖的字段组合比例
        return 0.75; // 示例
    }
  2. 修改主流程为循环:

    java 复制代码
    int iterations = 0;
    while (iterations < 5 && coverage < 0.9) {
        // ReAct 生成一批用例
        // 调用 CoverageChecker
        iterations++;
    }
  3. 添加 DedupTool:用 Set 去重相似用例

📤 输出成果
  • ✅ 支持多轮生成的 Agent
  • ✅ 覆盖率报告(如 "共生成 12 条,覆盖 92%")

第7天:工程化抽象(MCP 思想落地)

🔍 核心概念
  • MCP 架构
    • Model:LLM 调用封装
    • Context:任务状态管理
    • Protocol:工具接口规范
🛠️ 实战任务
  1. 抽象 LlmClient 接口,实现 DashScopeClient

  2. 创建 AgentContext 类:

    java 复制代码
    public class AgentContext {
        private String inputSpec;
        private List<TestCase> generatedCases;
        private double coverage;
        // getters/setters
    }
  3. 工具统一注册到 ToolRegistry

  4. 配置外部化(application.yml

📤 输出成果
  • ✅ 清晰的包结构:

    复制代码
    com.example.agent
    ├── model/      # LLM 封装
    ├── context/    # 状态管理
    ├── tool/       # 工具实现
    └── service/    # ReAct 引擎

第8天:整合 & 扩展

🔍 核心概念
  • 端到端闭环:从输入到输出,可被团队使用
  • 可扩展性:新增工具无需改核心逻辑
🛠️ 实战任务
  1. 提供 REST API:

    java 复制代码
    @PostMapping("/generate-test-cases")
    public ResponseEntity<List<TestCase>> generate(@RequestBody InterfaceSpec spec) {
        return agent.run(spec);
    }
  2. (可选)部署到阿里云 ECS 或函数计算

  3. 编写 README.md,说明如何使用

📤 输出成果
  • ✅ 可运行的 Spring Boot 服务
  • ✅ 完整项目代码(GitHub 仓库)
  • ✅ 演示视频或截图(输入 → 输出)

📦 附:技术栈清单

功能 技术
LLM 调用 阿里云 DashScope SDK (langchain4j-dashscope)
向量库 Chroma(本地) / 阿里云 OpenSearch(生产)
Web 框架 Spring Boot
构建工具 Maven
代码规范 Java 17+, Lombok(可选)

✅ 下一步行动

  1. 今天就执行第1天任务:获取 API Key + clone 项目
  2. 加入 langchain4j 社区GitHub Discussions
  3. 遇到问题? 我可提供:
    • 完整代码模板
    • 阿里云部署指南
    • 测试用例生成 Prompt 示例

祝你学习顺利,8 天后你将拥有自己的 Java 版 AI Agent!🚀

相关推荐
不会打球的摄影师不是好程序员2 小时前
dify实战-个人知识库搭建
人工智能
xixixi777772 小时前
对 两种不同AI范式——Transformer 和 LSTM 进行解剖和对比
人工智能·深度学习·大模型·lstm·transformer·智能·前沿
lfPCB2 小时前
聚焦机器人算力散热:PCB液冷集成的工程化现实阻碍
人工智能·机器人
sunxunyong2 小时前
CC-Ralph实测
人工智能·自然语言处理
IT_陈寒2 小时前
Vite 5分钟性能优化实战:从3秒到300ms的冷启动提速技巧(附可复用配置)
前端·人工智能·后端
十六年开源服务商2 小时前
WordPress集成GoogleAnalytics最佳实践指南
前端·人工智能·机器学习
市象2 小时前
石头把科技摔掉了
人工智能
子午2 小时前
【2026原创】水稻植物病害识别系统~Python+深度学习+人工智能+resnet50算法+TensorFlow+图像识别
人工智能·python·深度学习
式5162 小时前
大模型学习基础(八)提示词(Prompt)工程
学习·prompt