前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 openai-java-sdk 整合 ChatGPT

使用 openai-java-sdk 整合 ChatGPT

原创
作者头像
程序猿梦工厂
发布2023-07-06 14:51:03
6901
发布2023-07-06 14:51:03
举报
文章被收录于专栏:程序猿梦工厂程序猿梦工厂

推荐一套基于 SpringBoot 开发的全平台数据 (数据库管理工具) 功能比较完善,建议下载使用: github.com/EdurtIO/datacap 目前已经支持 40+ 多种数据源。国内首个应用 ChatGPT 到数据管理系统中项目。

github 地址:https://github.com/devlive-community/openai-java-sdk

本文我们主要讲述通过 openai-java-sdk 依赖整合访问 OpenAi 提供的功能。

OpenAI Java SDK 主要 为 Java 开发人员提供方便易用的 SDK 来与 OpenAI 的 API 进行交互。

构建 maven 项目,并添加依赖

代码语言:html
复制
<dependency>
    <groupId>org.devlive.sdk</groupId>
    <artifactId>openai-java-sdk</artifactId>
    <version>1.2.0</version>
</dependency>

推荐将 1.2.0 替换为 LATEST,这样可以始终使用最新版本。

构建连接客户端

代码语言:java
复制
OpenAiClient client = OpenAiClient.builder()
        .apiKey(System.getProperty("openai.token"))
        .build();

默认我们只需要指定 OpenAi 提供的密钥即可。如果我们需要使用第三方提供的 OpenAi 镜像,可以使用以下代码:

代码语言:java
复制
OpenAiClient client = OpenAiClient.builder()
        .apiHost(System.getProperty("proxy.host"))
        .apiKey(System.getProperty("proxy.token"))
        .build();

proxy.host 第三方服务提供的主机名

proxy.token 第三方服务提供的密钥

构建 Completions

代码语言:java
复制
CompletionEntity configure = CompletionEntity.builder()
        .model(CompletionModel.TEXT_DAVINCI_003.getName())
        .prompt("测试一下")
        .temperature(2D)
        .build();
client.createCompletion(configure)
        .getChoices()
        .forEach(System.out::println);

运行程序后,输入大概如下内容:

代码语言:java
复制
ChoiceEntity(content=git diff
git diff 恩·胜恩, index=0, logProb=null, finishReason=length)

如果我们需要替换其他模型只需要替换 .model(CompletionModel.TEXT_DAVINCI_003.getName()) 即可。

构建 Chat Completions

通过该方式可以实现 ChatGPT 的对话模式。

代码语言:java
复制
List<CompletionMessageEntity> messages = Lists.newArrayList();
messages.add(CompletionMessageEntity.builder()
        .content("Hello, my name is openai-java-sdk")
        .build());

CompletionChatEntity configure = CompletionChatEntity.builder()
        .messages(messages)
        .build();

client.createChatCompletion(configure)
        .getChoices()
        .forEach(choice -> messages.add(choice.getMessage()));

messages.add(CompletionMessageEntity.builder()
        .content("What is my name?")
        .build());

client.createChatCompletion(configure)
        .getChoices()
        .forEach(choice -> {
            System.out.println(choice.getMessage());
        });

运行程序后,输入大概如下内容:

代码语言:java
复制
CompletionMessageEntity(role=assistant, content=Your name is "openai-java-sdk" as mentioned earlier., name=null)

在本地调用中我们通过传递上下文对 Ai 提供一些相关信息,方便使其记录我们要获取的内容。

如果我们需要替换其他模型只需要替换 .model(CompletionModel.TEXT_DAVINCI_003.getName()) 即可。

自动释放资源

以上提供的方式无法自动释放我们构建的客户端等资源,这样就会导致我们过度消耗,如果访问过大会导致 OOM。

代码语言:java
复制
try (OpenAiClient client = OpenAiClient.builder()
        .apiKey(System.getProperty("openai.token"))
        .build()) {
    List<CompletionMessageEntity> messages = Lists.newArrayList();
    messages.add(CompletionMessageEntity.builder()
            .content("Hello, my name is openai-java-sdk")
            .build());

    CompletionChatEntity configure = CompletionChatEntity.builder()
            .messages(messages)
            .build();

    client.createChatCompletion(configure)
            .getChoices()
            .forEach(choice -> messages.add(choice.getMessage()));

    messages.add(CompletionMessageEntity.builder()
            .content("What is my name?")
            .build());

    client.createChatCompletion(configure)
            .getChoices()
            .forEach(choice -> {
                System.out.println(choice.getMessage());
            });
}

自定义 OkHttpClient

默认会提供一个 OkHttpClient,里面配置了默认的一些配置,比如超时时间等,如果我们需要自定义这些参数我们需要使用以下代码

代码语言:java
复制
try (OpenAiClient client = OpenAiClient.builder()
        .apiKey(System.getProperty("openai.token"))
        .client(okHttpClient)
        .build()) {
    List<CompletionMessageEntity> messages = Lists.newArrayList();
    messages.add(CompletionMessageEntity.builder()
            .content("Hello, my name is openai-java-sdk")
            .build());

    CompletionChatEntity configure = CompletionChatEntity.builder()
            .messages(messages)
            .build();

    client.createChatCompletion(configure)
            .getChoices()
            .forEach(choice -> messages.add(choice.getMessage()));

    messages.add(CompletionMessageEntity.builder()
            .content("What is my name?")
            .build());

    client.createChatCompletion(configure)
            .getChoices()
            .forEach(choice -> {
                System.out.println(choice.getMessage());
            });
}

当然如果我们只是修改一些超时时间相关问题可以参考以下代码:

代码语言:java
复制
try (OpenAiClient client = OpenAiClient.builder()
    .apiKey(System.getProperty("openai.token"))
    .timeout(10)
    .unit(TimeUnit.SECONDS)
    .build()) {
List<CompletionMessageEntity> messages = Lists.newArrayList();
messages.add(CompletionMessageEntity.builder()
        .content("Hello, my name is openai-java-sdk")
        .build());

CompletionChatEntity configure = CompletionChatEntity.builder()
        .messages(messages)
        .build();

client.createChatCompletion(configure)
        .getChoices()
        .forEach(choice -> messages.add(choice.getMessage()));

messages.add(CompletionMessageEntity.builder()
        .content("What is my name?")
        .build());

client.createChatCompletion(configure)
        .getChoices()
        .forEach(choice -> {
            System.out.println(choice.getMessage());
        });
}

我们通过指定 .timeout(10) 配置时长,通过 .unit(TimeUnit.SECONDS) 时长单位,示例中我们配置的是 10秒

使用 Azure 提供的 OpenAi

Azure 提供的服务中,有些方式做了修改,我们可以参考以下代码:

代码语言:java
复制
try(OpenAiClient client=OpenAiClient.builder()
        .apiHost("https://eus-chatgpt.openai.azure.com")
        .apiKey(System.getProperty("azure.token"))
        .provider(ProviderModel.azure)
        .model("text-davinci-002")
        .version("2022-12-01")
        .build())
{
    client.createCompletion(configure).getChoices();
}

以上就是我们使用 openai-java-sdk 的一些基本使用方式,后续我们会提供更多文章来详细讲解更多的其他模式。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 构建 maven 项目,并添加依赖
  • 构建连接客户端
  • 构建 Completions
  • 构建 Chat Completions
  • 自动释放资源
  • 自定义 OkHttpClient
  • 使用 Azure 提供的 OpenAi
相关产品与服务
数据库智能管家 DBbrain
数据库智能管家(TencentDB for DBbrain,DBbrain)是腾讯云推出的一款为用户提供数据库性能、安全、管理等功能的数据库自治云服务。DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档