目前主流模型厂商的 SDK 并没有很好的支持 JAVA 环境,主流还是使用的 Python ,如果希望将 AI 功能集成到业务中来,则需要找找有没有一些现成的开源项目,但是这种项目一般需要谨慎使用,以防有偷取 app_key 等风险问题
前言
虽然之前有写过 SpringBoot3.x 整合 Spring AI ,但是笔者后来发现,如果要添加免费的谷歌 Gemini 模型,那简直就是灾难。
首先,我们需要安装 Google 的 sdk,就是我们需要使用到 gcloud 这个 shell 来配置我们的账号信息。
其次,我们还需要配置很多认证相关的内容,有些可能也不知道从哪里找到的配置项。
最最重要的是,如果我们希望使用多账号的时候,真不知道要怎么处理,这明显不是我们想要的 SDK 应用。
于是,笔者通过官方提供的 REST API ,自己实现了一套 SDK,主要使用 okhttp3 对 API 进行了封装,支持多轮对话(历史记录)、多模态(图片识别)和流式对话等。
Gemini
使用客户端 client 方式,满足多用户的使用场景,每个客户端需要提供账号信息。
核心代码,为 REST API 构建所需链接和参数,并对返回信息进行保存处理,实现多轮对话。
流式对话中,通过监听数据流的返回,使用自定义 Listener 接口将所需内容带回到调用者。
OpenAi
对于 OpenAi 的 sdk 也进行了一层 REST API 的封装,因为像国内很多的大模型厂商的 API 接口基本兼容,基本上只需要更换接口域名即可直接使用。
以下为 Kimi 的 REST API 接口
curl https://api.moonshot.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MOONSHOT_API_KEY" \
-d '{
"model": "moonshot-v1-8k",
"messages": [
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}
],
"temperature": 0.3
}'
所以在使用时只需要设置 baseUrl 为 "https://api.moonshot.cn" 即可
OpenAiAccount account = OpenAiAccount.builder().apiKey(apiKey).baseUrl("https://api.moonshot.cn").build();
OpenAiGenerationConfig generationConfig = OpenAiGenerationConfig.builder().temperature(0.3).build();
OpenAiClient client = new OpenAiClient(account);
OpenAiTextResponse textResponse = client.chat("你是谁", generationConfig);
System.out.println(textResponse);
项目仓库
目前项目已发布到 Maven 中央仓库,只需要在项目 pom 文件中引入即可,目前最新版本为 0.1.0
<dependency>
<groupId>org.liurb.ai.sdk</groupId>
<artifactId>java-ai-sdk</artifactId>
<version>${version}</version>
</dependency>
GitHub - lrbmike/java-ai-sdk: AI APIs SDK for JAVA. Provide an easy way to improve development. Support Google Gemini, OpenAi