前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最懂chatGPT Openai的开发库,没有之一,SpringBoot3也能直接用

最懂chatGPT Openai的开发库,没有之一,SpringBoot3也能直接用

原创
作者头像
非喵鱼
发布2023-03-22 08:45:29
1.9K0
发布2023-03-22 08:45:29
举报
文章被收录于专栏:Java技术记号Java技术记号

导读|时隔1个月chatGPT4、文心一言的发布,AIGC又一次惊艳的出现在大家的视线。按照这个趋势,到年底AIGC将会有一个普遍的持续发展,真希望这一天早到来,为此勇哥也爆肝为该事业做一点微不足道的贡献,发布如下API,帮助开发者们相对遍历的开发和对接openai。因此阅读本文你会了解到最好用的java api、以及官方API的一些弊端是什么,进而少走弯路?以及SpringBoot如何快速对接OpenAi?

1.官方API的问题

Openai官方推荐的JavaApi库是openai-java,该库缺失一些封装的经验,因此使用起来会有一些不便之处:

  • 不能便捷的调整连接超时、读取超时等参数;(这点很重要,因为国内访问网速本身很慢,默认值绝对不够用)
  • 不支持本机代理;(这点也很重要,国内开发者本机按照V**,但是这个库不能直接使用本机V**,导致开发者非常痛苦)
  • API设计略有提升之处,比如接口可以默认值,方便开发时重复写一些模型名称;
  • 该库不能直接在SpringBoot中使用;

由于以上原因,勇哥自己重新封装了一下,支持以下功能,希望大家多多Star支持一下:

  • 支持本机代理和代理脚本多种模式,程序自动识别;大大方便开发者使用VPN开发;
  • 支持连接超时、读取超时、代理等参数的灵活设置;
  • 支持固定接口中的参数默认值,方法重复编写;
  • 支持在springboot3 starter自动装配;

2.介绍 openai使用

快速调用OpenAi官方 GPT-3 Api的Java库,更适合国内开发者,因为你懂的。Java libraries for using OpenAI's GPT-3 api.

Git地址 : https://gitee.com/miukoo/openai

提供APIs Supported APIs

更多的功能后续会持续提供

特色Feature

  • 底层使用OkHttp封装并启用连接池,请求效率高
  • 底层超时参数可以动态调整
  • 自动识别本机的常用代理设置

导入 Importing

代码语言:javascript
复制
<dependency>
    <groupId>cn.gjsm</groupId>
  	<artifactId>openai</artifactId>
  	<version>0.1.3</version>       
</dependency>

使用 Use

基本使用 Basic

代码语言:javascript
复制
// 实例化请求客户端 Instance the OpenAiClient
OpenAiClient openAiClient = OpenAiClientFactory.createClient(OPENAPI_TOKEN);

// 实例化发送的消息 Instance the message
ChatMessage chatMessage = new ChatMessage();
chatMessage.setRole("user");
chatMessage.setContent("今天天气怎么样?");

// 实例化发送的请求 Instance the request
ChatCompletionRequest request = ChatCompletionRequest.builder()
    .messages(Arrays.asList(chatMessage))
    .model("gpt-3.5-turbo")
    .build();

// 执行请求 Execute request
Call<ChatCompletionResponse> chatCompletion = openAiClient.callChatCompletion(request);
Response<ChatCompletionResponse> response = chatCompletion.execute();

// 解析结果 Analysis results
if(response.isSuccessful()){
    System.out.println(JSON.toJSONString(response.body()));
}

自定义参数 Custom Parameter

代码语言:javascript
复制
OpenAiClient openAiClient =  OpenAiClientFactory.builder()
                .readTimeout(Duration.ofMillis(openAiProperties.getTimeout()))
                .connectTimeout(Duration.ofMillis(openAiProperties.getTimeout()))
                .build()
                .createClient(openAiProperties.getToken());

代理客户端 Proxy Client

代码语言:javascript
复制
OpenAiClient openAiClient =  OpenAiClientFactory.getInstance()
                .createHttpProxyClient(openAiProperties.getToken(),"代理IP","代理端口");

动态刷新Token Refresh Token

框架是直接从环境变量中获取TOKEN,获取的变量名是OPENAPI_TOKEN。

代码语言:javascript
复制
OpenAiClientFactory.refreshToken("您的新TOKEN");

高级 Advanced

在程序启动命令中增加一下参数,可更好的支持本机代理 Add the following parameters to the program startup command to better support the native agent

代码语言:javascript
复制
-Djava.net.useSystemProxies=true

3.介绍 openai-spring-boot-starter使用

本项目是基于SpringBoot3.0封装的OpenAi快速开发类,支持49种场景调用。

Git地址:https://gitee.com/miukoo/openai-spring

注意:该项目还未提交到中央仓库,因此你需要下载源码到本地安装。

使用步骤

1、导入依赖
代码语言:javascript
复制
<dependency>
    <groupId>cn.gjsm</groupId>
    <artifactId>openai-spring-boot-starter</artifactId>
    <version>1.0</version>
</dependency>
2、配置秘钥

在application.yml中配置如下参数:

代码语言:javascript
复制
openai:
  token: 你的秘钥
  timeout: 5000 // 超时时间
3、注入使用
代码语言:javascript
复制
@Autowired
OpenAiClient openAiClient;

@Test
public void test(){
   // 实例化发送的消息 Instance the message
    ChatMessage chatMessage = new ChatMessage();
    chatMessage.setRole("user");
    chatMessage.setContent("今天天气怎么样?");

    // 实例化发送的请求 Instance the request
    ChatCompletionRequest request = ChatCompletionRequest.builder()
        .messages(Arrays.asList(chatMessage))
        .model("gpt-3.5-turbo")
        .build();

    // 执行请求 Execute request
    Call<ChatCompletionResponse> chatCompletion = openAiClient.callChatCompletion(request);
    Response<ChatCompletionResponse> response = chatCompletion.execute();

    // 解析结果 Analysis results
    if(response.isSuccessful()){
        System.out.println(JSON.toJSONString(response.body()));
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.官方API的问题
  • 2.介绍 openai使用
    • 提供APIs Supported APIs
      • 特色Feature
        • 导入 Importing
          • 使用 Use
            • 基本使用 Basic
            • 自定义参数 Custom Parameter
            • 代理客户端 Proxy Client
            • 动态刷新Token Refresh Token
          • 高级 Advanced
            • 使用步骤
        • 3.介绍 openai-spring-boot-starter使用
        相关产品与服务
        VPN 连接
        VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档