Java 手搓 AI Agent:让代码自己 Debug,可以专心摸鱼!

大家好,我是你们的 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 需要:

  1. 能调用 DeepSeek API(让它自己思考)
  2. 能记住对话历史(不然每次都是“金鱼记忆”)
  3. 能自主决策(比如判断该写代码还是该查资料)
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,关键技术点:

  1. 调用 DeepSeek API 让 AI 自己思考
  2. 记忆对话历史,让 AI 有上下文
  3. 自主决策,判断该写代码还是拒绝需求

好了,快去试试吧!让 AI 帮你写 debug,自己专心摸鱼! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五行星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值