Java开发者接入大模型API实战:从0到聊天机器人

前言

最近在研究AI副业,发现一个有意思的事:很多开发者想接入大模型,但不知道从哪下手。网上教程大多是 Python 的,Java 的很少。

作为一个 Java 后端,我花了一个周末把 Spring Boot + 大模型 API 的完整链路跑通了,顺便写了个能跑的聊天机器人。今天把过程分享出来,希望能帮到同样用 Java 的朋友。

技术选型

  • 后端框架: Spring Boot 3.x
  • HTTP 客户端: OkHttp
  • 大模型 API: 以 OpenAI 兼容格式为例
  • 前端: 简单的 HTML + JS

第一步:获取 API Key

国内开发者推荐:

第二步:核心代码

配置类

java 复制代码
@Data
@Component
@ConfigurationProperties(prefix = "ai")
public class AiConfig {
    private String apiKey;
    private String baseUrl = "https://api.openai.com/v1";
    private String model = "gpt-3.5-turbo";
}

聊天服务

java 复制代码
@Service
public class ChatService {
    @Autowired
    private AiConfig aiConfig;

    public String chat(String userMessage) {
        JSONObject body = new JSONObject();
        body.put("model", aiConfig.getModel());
        body.put("messages", JSONArray.of(
            JSONObject.of("role", "user", "content", userMessage)
        ));

        Request request = new Request.Builder()
            .url(aiConfig.getBaseUrl() + "/chat/completions")
            .addHeader("Authorization", "Bearer " + aiConfig.getApiKey())
            .post(RequestBody.create(body.toJSONString(), MediaType.parse("application/json")))
            .build();

        try (Response response = client.newCall(request).execute()) {
            JSONObject json = JSON.parseObject(response.body().string());
            return json.getJSONArray("choices")
                .getJSONObject(0).getJSONObject("message").getString("content");
        }
    }
}

踩坑记录

  1. 超时问题 --- 大模型响应慢,readTimeout 建议 120 秒以上
  2. Token 计算 --- 中文大概 1 字 = 1-2 token,注意控制 context 长度
  3. 流式输出编码 --- SSE 返回 UTF-8,确保响应头编码正确

总结

  1. Java 接入大模型 API 不难,核心就是 HTTP 调用
  2. 注意超时、token、流式输出几个坑
  3. 跑通基础链路后,接入各平台只是套壳
  4. 这个技能可以直接变现

如果你也在用 Java 做 AI 相关的项目,欢迎评论区交流。

相关推荐
JAVA面经实录9178 小时前
Java 多线程完整版学习文档(无遗漏终版)
java·面试
考虑考虑8 小时前
JDK26中的LazyConstant
java·后端·java ee
Devin~Y8 小时前
互联网大厂 Java 面试实录:JVM、Spring Boot、MyBatis、Redis、Kafka、Spring AI、K8s 全链路追问小Y
java·jvm·spring boot·redis·kafka·mybatis·spring security
摇滚侠8 小时前
SpringCloud 面试题 真正的 offer 偏方 Java 基础 Java 高级
java·spring·spring cloud
tongluowan0078 小时前
Java 内存模型(JMM)- happens-before 与内存屏障
java·内存模型·happens-before
plainGeekDev8 小时前
Android Framework 面试题:Binder都说不清楚,简历别写精通了
android·java
Gauss松鼠会8 小时前
【GaussDB】基于SpringBoot实现操作GaussDB(DWS)的项目实战
java·数据库·经验分享·spring boot·后端·sql·gaussdb
Gauss松鼠会8 小时前
【GaussDB】GaussDB 常见问题及解决方案汇总
java·数据库·算法·性能优化·gaussdb·经验总结
xiaogg36788 小时前
k8s 部署yaml文件和Dockerfile文件配置
java·docker·kubernetes