Skip to content

Java SDK

SDKMAX 完全兼容 OpenAI 接口协议,Java 项目可直接使用 OpenAI 官方 Java SDK(com.openai:openai-java),通过自定义 baseUrl 接入 SDKMAX,无需单独的 SDKMAX SDK。

安装(Maven)

xml
<dependency>
  <groupId>com.openai</groupId>
  <artifactId>openai-java</artifactId>
  <version>2.6.0</version>
</dependency>

Gradle:

groovy
implementation("com.openai:openai-java:2.6.0")

版本号

以上版本号仅作示例,请以 Maven Central 上的最新版本为准。

初始化客户端

java
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;

OpenAIClient client = OpenAIOkHttpClient.builder()
    .apiKey("sk-你的密钥")
    .baseUrl("https://api.sdkmax.com/v1")
    .build();

也可以通过环境变量配置后使用无参构建:

bash
export OPENAI_API_KEY="sk-你的密钥"
export OPENAI_BASE_URL="https://api.sdkmax.com/v1"
java
OpenAIClient client = OpenAIOkHttpClient.fromEnv();

对话补全

java
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;

ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
    .model("gpt-4o")
    .addUserMessage("介绍一下 SDKMAX 的核心能力")
    .build();

ChatCompletion completion = client.chat().completions().create(params);
System.out.println(completion.choices().get(0).message().content().orElse(""));

流式输出

java
import com.openai.core.http.StreamResponse;
import com.openai.models.chat.completions.ChatCompletionChunk;

ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
    .model("gpt-4o")
    .addUserMessage("写一首关于 AI 网关的短诗")
    .build();

try (StreamResponse<ChatCompletionChunk> stream = client.chat().completions().createStreaming(params)) {
    stream.stream().forEach(chunk ->
        chunk.choices().forEach(choice ->
            choice.delta().content().ifPresent(System.out::print)
        )
    );
}

切换模型

java
for (String model : new String[] { "gpt-4o", "claude-opus-4-8", "deepseek-chat" }) {
    ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
        .model(model)
        .addUserMessage("1+1等于几?")
        .build();
    ChatCompletion completion = client.chat().completions().create(params);
    System.out.println(model + " -> " + completion.choices().get(0).message().content().orElse(""));
}

错误处理

java
import com.openai.errors.RateLimitException;
import com.openai.errors.OpenAIServiceException;

try {
    client.chat().completions().create(params);
} catch (RateLimitException e) {
    // 429:额度耗尽或触发限流,建议退避重试
} catch (OpenAIServiceException e) {
    System.err.println(e.statusCode() + " " + e.getMessage());
}

完整错误码含义见 错误码

不使用官方 SDK?

只要你的 HTTP 客户端能设置自定义请求头和 Body,也可以直接用 OkHttp / HttpClient 手动拼请求,接口协议见 API 调用方法

SDKMAX — Enterprise AI Gateway, Aggregating Global AI Resources