Java 集成 ChatGPT API 全流程:从环境搭建到错误监控

作者:API传播员 · 2025-11-04 · 阅读时间:5分钟
本文详细介绍了如何使用Java调用ChatGPT API,包括注册OpenAI账户、获取API密钥、编写Java代码实现HTTP请求和响应处理,以及异常处理。通过分步指南和完整示例代码,帮助开发者快速集成ChatGPT API到Java项目中,提升应用程序的智能交互能力。

一、前置准备

  1. JDK 17+ 已安装
  2. Maven 或 Gradle 构建工具
  3. OpenAI 账号 + API Key(注册

💡 AI 助攻
想自动生成带注释的 pom.xml?用「代码生成」提示词,30 秒即可拿到模板,再交给「代码优化」砍掉冗余依赖,编译速度提升 20%!


二、项目骨架(Maven)

<dependencies>
    <!-- 仅依赖 JDK 自带 HttpURLConnection -->
</dependencies>

零第三方依赖,JDK 原生即可完成调用。


三、核心代码:一键调用 ChatGPT

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class ChatGPTAPIExample {
    public static String chatGPT(String prompt) {
        String url        = "https://api.openai.com/v1/chat/completions";
        String apiKey     = "YOUR_API_KEY_HERE";
        String model      = "gpt-3.5-turbo";

        try {
            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Authorization", "Bearer " + apiKey);
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setDoOutput(true);

            // 构建请求体
            String body = "{\"model\":\"" + model + "\",\"messages\":[{\"role\":\"user\",\"content\":\"" + prompt + "\"}]}";
            try (OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream())) {
                writer.write(body);
                writer.flush();
            }

            // 读取响应
            StringBuilder response = new StringBuilder();
            try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
                String line;
                while ((line = br.readLine()) != null) response.append(line);
            }
            return extractMessageFromJSONResponse(response.toString());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static String extractMessageFromJSONResponse(String response) {
        int start = response.indexOf("content") + 11;
        int end   = response.indexOf("\"", start);
        return response.substring(start, end);
    }

    public static void main(String[] args) {
        System.out.println(chatGPT("你好吗?你能告诉我什么是斐波那契数吗?"));
    }
}

四、运行结果

你好!我是AI(人工智能)... 斐波那契数列是一系列数字...

五、生产级增强

① 错误监控(Rollbar 示例)

<dependency>
  <groupId>com.rollbar</groupId>
  <artifactId>rollbar-java</artifactId>
  <version>1.10.0</version>
</dependency>
import com.rollbar.notifier.Rollbar;
import com.rollbar.notifier.config.Config;
import com.rollbar.notifier.config.ConfigBuilder;

public class ChatGPTAPIExample {
    private static final Rollbar rollbar = Rollbar.init(
        ConfigBuilder.withAccessToken("YOUR_ROLLBAR_TOKEN")
                     .environment("production")
                     .build()
    );

    public static void main(String[] args) {
        try {
            System.out.println(chatGPT("Hello"));
        } catch (Exception e) {
            rollbar.error(e);
            throw e;
        }
    }
}

🔍 AI 审查
把「JSON 解析脆弱性」提交评审?「代码审查助手」可自动检查空指针、边界溢出,提前发现 80% 潜在 Bug!


六、生产 checklist

维度 优秀实践 快速验证
速率限制 免费 tier 3 RPM,付费 3 500 RPM 看响应头 x-ratelimit-limit
重试策略 指数退避 + 熔断器 模拟 429/5xx 触发
JSON 解析 使用 Jackson/Gson 替代手写 单元测试覆盖边界
密钥管理 环境变量 / Vault 不在代码库硬编码
监控告警 Rollbar + Grafana 异常>1% 触发告警

七、常见 FAQ

  1. 429 速率限制?
    → 升级付费 tier 或实施指数退避重试。

  2. 响应格式变化?
    → 使用 Jackson 解析 choices[0].message.content,避免手写 substring。

  3. 网络超时?
    → 设置 conn.setConnectTimeout(5000)setReadTimeout(5000)

  4. 密钥泄露?
    → 使用 System.getenv("OPENAI_API_KEY"),禁止提交到 Git。

  5. Java 版本要求?
    → JDK 11+ 推荐,内置 HttpClient 更简洁(见下文进阶)。


八、进阶:JDK 11+ HttpClient 示例

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create(url))
        .header("Authorization", "Bearer " + apiKey)
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(body))
        .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
return extractMessageFromJSONResponse(response.body());

九、下一步行动清单

  1. 注册 OpenAI → 拿到 API Key
  2. 跑通上方代码 → 验证返回 JSON
  3. 引入 Jackson → 解析 choices[0].message.content
  4. 接入 Rollbar → 线上异常实时告警
  5. 用 Resilience4j → 熔断+重试,生产级健壮

今晚就 push,明天即可向团队展示「零第三方依赖」的 Java ChatGPT 集成!🚀


原文链接: https://rollbar.com/blog/how-to-use-chatgpt-api-with-java/