Java调用AI大模型API入门:从零开始接入ChatGPT/通义千问


一、前言

Java作为企业级开发的主流语言,在AI浪潮中当然不能缺席。很多Java同学想接入AI能力,但不知道从哪里下手。本文以OpenAI GPT模型阿里通义千问为例,手把手教你在Java中调用AI大模型API。


二、准备工作

2.1 获取API Key

OpenAI(ChatGPT):

阿里通义千问:

2.2 创建Maven项目

xml 复制代码
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.14</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

三、调用OpenAI GPT(同步方式)

3.1 代码实现

java 复制代码
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.google.gson.JsonObject;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;

public class OpenAIClient {

    private static final String API_URL = "https://api.openai.com/v1/chat/completions";
    private static final String API_KEY = "你的OpenAI API Key";

    public static String chat(String userMessage) throws Exception {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost request = new HttpPost(API_URL);
        
        // 设置请求头
        request.addHeader("Content-Type", "application/json");
        request.addHeader("Authorization", "Bearer " + API_KEY);

        // 构建请求体
        JsonObject message = new JsonObject();
        message.addProperty("role", "user");
        message.addProperty("content", userMessage);

        JsonArray messages = new JsonArray();
        messages.add(message);

        JsonObject body = new JsonObject();
        body.addProperty("model", "gpt-3.5-turbo");
        body.add("messages", messages);
        body.addProperty("max_tokens", 1000);
        body.addProperty("temperature", 0.7);

        request.setEntity(new StringEntity(body.toString(), "UTF-8"));

        try (CloseableHttpResponse response = httpClient.execute(request)) {
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity);
            
            // 解析返回结果
            JsonObject jsonResult = JsonParser.parseString(result).getAsJsonObject();
            JsonArray choices = jsonResult.getAsJsonArray("choices");
            JsonObject choice = choices.get(0).getAsJsonObject();
            JsonObject assistantMessage = choice.getAsJsonObject("message");
            return assistantMessage.get("content").getAsString();
        }
    }

    public static void main(String[] args) {
        try {
            String response = chat("用Java写一个Hello World程序");
            System.out.println("AI回复:" + response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3.2 运行效果

复制代码
AI回复:当然可以!以下是一个最简单的Java Hello World程序:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

保存为HelloWorld.java后,在终端执行:
javac HelloWorld.java
java HelloWorld
即可看到输出:Hello, World!

四、调用通义千问(阿里云)

阿里通义千问API风格和OpenAI类似,但阿里云有自己的SDK,用起来更方便:

4.1 添加依赖

xml 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>1.0.5</version>
</dependency>

4.2 代码实现

java 复制代码
import com.alibaba.dashscope.aigc聊天对话.*;
import com.alibaba.dashscope.callback.CallbackWarehouse;
import com.alibaba.dashscope.common.*;

public class QwenClient {
    public static String chat(String userMessage) {
        Chat会话 chat = 聊天对话.builder()
            .apiKey("你的阿里云API Key")
            .model("qwen-turbo") // 或 qwen-plus、qwen-max
            .messages(聊天对话.messagesFromUser(userMessage))
            .build();

        聊天对话.ChatResult result = chat.call();
        return result.getOutput().getChoices().get(0).getMessage().getContent();
    }

    public static void main(String[] args) {
        String response = chat("Java中如何定义一个数组?");
        System.out.println("通义千问回复:" + response);
    }
}

五、常见问题

问题 解决方案
报错 403 Unauthorized 检查API Key是否正确,是否有余额
报错 429 Rate Limit 请求过于频繁,添加重试机制或降低频率
返回内容为空 检查model名称是否正确,或查看error字段
网络超时 公司防火墙可能屏蔽了外网API,考虑使用代理

六、下一步

学会了调用API,下一步可以学习:

  • 流式输出(Streaming):实时显示AI生成内容
  • 对话上下文:让AI记住对话历史
  • Function Calling:让AI调用外部工具

📌 关注我,后续更新Spring Boot集成AI、LangChain4j实战等系列教程!

相关推荐
xieliyu.2 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
我没胡说八道2 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟2 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love2 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇2 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明2 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc2 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技2 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本2 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
明夜之约2 小时前
Spring Boot 自动装配源码
java·spring boot·后端