• JAVA SDK 整合 AI 大语言模型


    目前主流模型厂商的 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 接口 

    1. curl https://api.moonshot.cn/v1/chat/completions \
    2. -H "Content-Type: application/json" \
    3. -H "Authorization: Bearer $MOONSHOT_API_KEY" \
    4. -d '{
    5. "model": "moonshot-v1-8k",
    6. "messages": [
    7. {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
    8. {"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}
    9. ],
    10. "temperature": 0.3
    11. }'

    所以在使用时只需要设置 baseUrl 为 "https://api.moonshot.cn" 即可

    1. OpenAiAccount account = OpenAiAccount.builder().apiKey(apiKey).baseUrl("https://api.moonshot.cn").build();
    2. OpenAiGenerationConfig generationConfig = OpenAiGenerationConfig.builder().temperature(0.3).build();
    3. OpenAiClient client = new OpenAiClient(account);
    4. OpenAiTextResponse textResponse = client.chat("你是谁", generationConfig);
    5. System.out.println(textResponse);

    项目仓库

    目前项目已发布到 Maven 中央仓库,只需要在项目 pom 文件中引入即可,目前最新版本为 0.1.0

    1. <dependency>
    2. <groupId>org.liurb.ai.sdkgroupId>
    3. <artifactId>java-ai-sdkartifactId>
    4. <version>${version}version>
    5. dependency>

    GitHub - lrbmike/java-ai-sdk: AI APIs SDK for JAVA. Provide an easy way to improve development. Support Google Gemini, OpenAi

     

  • 相关阅读:
    SpringMVC(第一个项目HelloWorld))
    云服务的划分IaaS,PaaS,SaaS 的区别
    App测试中iOS和Android的差异
    14:00面试,14:06就出来了,问的问题过于变态了。。。
    Cadence 设计快速入门
    不同的测试技术区分
    正点原子linux阿尔法开发板使用——IIC驱动
    嵌入式学习笔记(63)指针到底是什么
    大型电商网站详情页是如何支撑亿级流量访问的?
    华为云云耀云服务器L实例评测|2核2G跑mysql性能测试
  • 原文地址:https://blog.csdn.net/lrb0677/article/details/139921038