关于java:使用-openaijavasdk-整合-ChatGPT

78次阅读

共计 4561 个字符,预计需要花费 12 分钟才能阅读完成。

举荐一套基于 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 我的项目,并增加依赖

<dependency>
<groupId>org.devlive.sdk</groupId>
<artifactId>openai-java-sdk</artifactId>
<version>1.2.0</version>
</dependency>

举荐将 1.2.0 替换为 LATEST,这样能够始终应用最新版本。

构建连贯客户端

OpenAiClient client = OpenAiClient.builder()
.apiKey(System.getProperty("openai.token"))
.build();

默认咱们只须要指定 OpenAi 提供的密钥即可。如果咱们须要应用第三方提供的 OpenAi 镜像,能够应用以下代码:

OpenAiClient client = OpenAiClient.builder()
.apiHost(System.getProperty("proxy.host"))
.apiKey(System.getProperty("proxy.token"))
.build();

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

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

构建 Completions

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

运行程序后,输出大略如下内容:

ChoiceEntity(content=git diff
git diff 恩·胜恩, index=0, logProb=null, finishReason=length)

如果咱们须要替换其余模型只须要替换 .model(CompletionModel.TEXT_DAVINCI_003.getName()) 即可。

构建 Chat Completions

通过该形式能够实现 ChatGPT 的对话模式。

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());
});

运行程序后,输出大略如下内容:

CompletionMessageEntity(role=assistant, content=Your name is "openai-java-sdk" as mentioned earlier., name=null)

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

如果咱们须要替换其余模型只须要替换 .model(CompletionModel.TEXT_DAVINCI_003.getName()) 即可。

主动开释资源

以上提供的形式无奈主动开释咱们构建的客户端等资源,这样就会导致咱们适度耗费,如果拜访过大会导致 OOM。

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,外面配置了默认的一些配置,比方超时工夫等,如果咱们须要自定义这些参数咱们须要应用以下代码

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());
});
}

当然如果咱们只是批改一些超时工夫相干问题能够参考以下代码:

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 提供的服务中,有些形式做了批改,咱们能够参考以下代码:

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 的一些根本应用形式,后续咱们会提供更多文章来具体解说更多的其余模式。

正文完
 0