# chatgpt-java **Repository Path**: knag/chatgpt-java ## Basic Information - **Project Name**: chatgpt-java - **Description**: No description available - **Primary Language**: Java - **License**: MIT - **Default Branch**: 1.0.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-11-30 - **Last Updated**: 2024-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README it’s an “unofficial" or "community-maintained” library. 这是一个非官方的社区维护的库。 --- #### 已经支持OpenAI官方的全部api,有bug欢迎朋友们指出,互相学习。 注意:由于这个接口: https://platform.openai.com/docs/api-reference/files/retrieve-content **免费用户无法使用,所以并未经过测试!!!**(哪位朋友有收费版keys也可以提供下) # 工程简介 **ChatGPT的Java客户端** OpenAI官方Api的Java SDK 目前支持api-keys的方式调用,获取api-keys可以百度或者csdn查一下。 **api-keys的方式调用目前不用梯子即可访问。** OpenAi官方文档地址:https://platform.openai.com/docs/api-reference **已完成接口列表:** - [x] Models - [x] Completions - [x] Images - [x] Embeddings - [x] Files - [x] Fine-tune - [x] Moderations - [x] Engines # 快速开始 ## 方式一 导入pom依赖 ``` com.unfbx chatgpt-java 1.0.0 ``` 使用示例: ``` package com.unfbx.eventTest.test; import com.unfbx.chatgpt.OpenAiClient; import com.unfbx.chatgpt.entity.completions.CompletionResponse; import java.util.Arrays; public class TestB { public static void main(String[] args) { //配置api keys OpenAiClient openAiClient = new OpenAiClient("sk-—***************api keys ****************"); CompletionResponse completions = openAiClient.completions("三体人是什么?"); Arrays.stream(completions.getChoices()).forEach(System.out::println); } } ``` 输出: ``` Choice(text= 三体人是一种虚构的外星生物,出现在中国作家刘慈欣的科幻小说《三体》中。它们是一种三节身体的外星生物,每个节身体都有自己的大脑,它们可以通过超越光速的思维来沟通。, index=0, logprobs=null, finishReason=stop) ``` ## 方式二(下载源码直接运行) ### **OpenAI全部接口支持调用** 创建客户端配置api-key 完整测试案例参考:com.unfbx.chatgpt.OpenAiClientTest ``` public class OpenAiClientTest { private OpenAiClient v2; @Before public void before() { v2 = new OpenAiClient("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"); } @Test public void models() { List models = v2.models(); System.out.println(models.toString()); } @Test public void model() { Model model = v2.model("code-davinci-002"); System.out.println(model.toString()); } @Test public void completions() { CompletionResponse completions = v2.completions("Java Stream list to map"); Arrays.stream(completions.getChoices()).forEach(System.out::println); } @Test public void completionsv2() { Completion q = Completion.builder() .prompt("三体人是什么?") .build(); CompletionResponse completions = v2.completions(q); System.out.println(completions); } } ``` ### 问答接口第二种调用方式 **目前ChatGPTClient只支持Completions相关api** 创建客户端配置api-key ``` public class ChatGPTTest { public static void main(String[] args) { //输入官方申请的api-keys ChatGPTClient client = new ChatGPTClient("sk-****************"); //输入问题描述 String body = client.askQuestion("简单描述下三体这本书"); System.out.println(body); } } ``` 输出: ``` 《三体》是中国作家刘慈欣创作的科幻小说,书中描写了一个存在于三体星系的中心神秘文明——「三体文明」的兴衰历程,叙述了它与地球文明之间的碰撞历史。 ``` Completions接口的model目前官方支持的三种模型,参考代码 ``` enum Model { DAVINCI_003("text-davinci-003"), DAVINCI_002("text-davinci-002"), DAVINCI("davinci"), ; private String name; } ```