大家好,我是你们的 Java 老司机,今天咱们不聊 CRUD,来搞点刺激的——用 Java 手搓一个 AI Agent!
什么是 AI Agent?简单来说,就是一个能自主决策、执行任务、甚至自己 Debug 的智能程序。比如:
- 自动写代码(然后自己 Review,发现全是 Bug)
- 自动回复消息(比如产品经理提需求时,自动回复“这个做不了”)
- 自动调 API(让 AI 自己调用自己,形成永动机)
今天,我们就用 Java + DeepSeek API 搞一个能自主思考的 AI Agent,让它帮你干活(或者制造 Bug)。
1. 先搞个 Maven 项目(不会的自行面壁)
<dependencies>
<!-- HTTP 客户端(让 AI 自己调 API) -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.3</version>
</dependency>
<!-- JSON 解析(让 AI 读懂 API 返回) -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<!-- Lombok(减少 getter/setter 代码) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. 定义 AI Agent 的“大脑”
我们的 AI Agent 需要:
- 能调用 DeepSeek API(让它自己思考)
- 能记住对话历史(不然每次都是“金鱼记忆”)
- 能自主决策(比如判断该写代码还是该查资料)
import lombok.Data;
import okhttp3.*;
import java.util.*;
@Data
public class AIAgent {
private String apiKey; // DeepSeek API Key
private List<String> memory = new ArrayList<>(); // 记忆对话历史
private static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
private final OkHttpClient httpClient = new OkHttpClient();
// 让 AI 自己思考
public String think(String prompt) throws Exception {
// 1. 把历史对话也传给 AI(让它有上下文)
String fullPrompt = String.join("\n", memory) + "\n" + prompt;
// 2. 调用 DeepSeek API
String jsonBody = String.format("{\"prompt\":\"%s\",\"max_tokens\":200}", fullPrompt);
RequestBody body = RequestBody.create(jsonBody, JSON);
Request request = new Request.Builder()
.url("https://api.deepseek.com/v1/chat/completions")
.post(body)
.addHeader("Authorization", "Bearer " + apiKey)
.build();
// 3. 解析 AI 的回复
try (Response response = httpClient.newCall(request).execute()) {
if (!response.isSuccessful()) {
throw new RuntimeException("AI 罢工了:" + response.code());
}
String aiResponse = response.body().string();
memory.add("User: " + prompt); // 记住用户的问题
memory.add("AI: " + aiResponse); // 记住 AI 的回答
return aiResponse;
}
}
}
3. 让 AI Agent 自己写代码
现在,我们让 AI Agent 自己写一个 Java 计算器,然后自己执行(理论上可以,但别真让它跑,怕它写个 rm -rf /
😂)。
public class Main {
public static void main(String[] args) throws Exception {
AIAgent agent = new AIAgent();
agent.setApiKey("your-deepseek-api-key"); // 换成你的 API Key
// 让 AI 写一个 Java 计算器
String code = agent.think("用 Java 写一个简单的控制台计算器,支持加减乘除");
System.out.println("AI 生成的代码:\n" + code);
// 理论上,这里可以用反射动态执行 AI 写的代码(但别真执行,怕它搞事情)
// executeAICode(code);
}
// (危险操作!仅供娱乐,别在生产环境用!)
private static void executeAICode(String code) {
System.out.println("⚠️ AI 即将执行自己写的代码,祈祷吧...");
// 可以用 Java Compiler API 或者 Groovy 动态执行
// 但真的不建议,除非你想让 AI 接管你的服务器
}
}
运行结果示例:
// AI 生成的代码:
public class Calculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入第一个数字: ");
double a = sc.nextDouble();
System.out.print("输入运算符 (+, -, *, /): ");
char op = sc.next().charAt(0);
System.out.print("输入第二个数字: ");
double b = sc.nextDouble();
switch (op) {
case '+': System.out.println(a + b); break;
case '-': System.out.println(a - b); break;
case '*': System.out.println(a * b); break;
case '/': System.out.println(a / b); break;
default: System.out.println("无效运算符");
}
}
}
AI 真的自己写了个计算器!(虽然没处理除零错误,但已经很不错了)
4. 进阶玩法:让 AI Agent 自主决策
我们可以让 AI 自己决定该做什么,比如:
- 如果用户问“写代码”,就调用代码生成逻辑
- 如果用户问“查资料”,就调用搜索 API
- 如果用户问“这个需求能做吗”,就自动回复“做不了”
public String autonomousAgent(String userInput) throws Exception {
// 让 AI 自己判断该做什么
String decisionPrompt = "用户说: " + userInput + "\n" +
"你应该做什么?选项:\n" +
"1. 写代码\n" +
"2. 查资料\n" +
"3. 拒绝需求\n" +
"直接回复数字即可";
String decision = think(decisionPrompt);
switch (decision.trim()) {
case "1": return think("用 Java 实现: " + userInput);
case "2": return think("搜索最新资料: " + userInput);
case "3": return "这个需求做不了(自动回复)";
default: return "我不知道该做什么,摆烂了!";
}
}
测试:
System.out.println(agent.autonomousAgent("写个快速排序"));
// 输出:AI 生成的快速排序代码
System.out.println(agent.autonomousAgent("SpringBoot 最新版本是多少?"));
// 输出:SpringBoot 目前最新版本是 3.1.0...
System.out.println(agent.autonomousAgent("这个需求明天能上线吗?"));
// 输出:这个需求做不了(自动回复)
成功了!AI 已经学会自动拒绝需求了! 🎉
5. 可能遇到的坑(翻车指南)
🚨 AI 写的代码有 Bug? → 让它自己 Debug:
String buggyCode = "public class Test { public static void main(String[] args) { int x = 1 / 0; } }";
String fixedCode = agent.think("这段代码有 Bug,请修复: " + buggyCode);
(AI 可能回复:应该加个 try-catch 处理除零错误
)
🚨 AI 拒绝干活? → 试试加钱(换个更强的 API 模型)
🚨 AI 试图接管你的电脑? → 赶紧拔网线(或者 kill -9
)
6. 总结
今天我们用 Java 实现了一个 能自主决策、写代码、甚至拒绝需求 的 AI Agent,关键技术点:
- 调用 DeepSeek API 让 AI 自己思考
- 记忆对话历史,让 AI 有上下文
- 自主决策,判断该写代码还是拒绝需求
好了,快去试试吧!让 AI 帮你写 debug,自己专心摸鱼! 🚀