代码拉取完成,页面将自动刷新
⚠️OpenAI 已弃用所有基于Engine的 API.
基于OpenAI 的 rest api 开发的Java 库, 目前支持 GPT-3(支持函数回调及16K上下文)、ChatGPT 和 GPT-4。
该库包含以下组件:
api
: GPT API 的请求/响应 POJO。client
: 采用retrofit库的api模块客户端service
: 创建和调用客户端的基本服务类。以及使用该服务的示例项目。
<dependency>
<groupId>cn.ai-connect</groupId>
<artifactId>openai-java-sdk</artifactId>
<version>1.0.0</version>
</dependency>
final List<ChatMessage> messagesByStream = new ArrayList<>();
final ChatMessage systemMessage = new ChatMessage(ChatMessageRole.SYSTEM.value(), "你是一个助手.");
messagesByStream.add(systemMessage);
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest
.builder()
.model("gpt-3.5-turbo-16k")
.messages(messagesByStream)
.n(1)
.maxTokens(50)
.logitBias(new HashMap<>())
.build();
service.streamChatCompletion(chatCompletionRequest)
.doOnError(Throwable::printStackTrace)
.blockingForEach(System.out::println);
service.shutdownExecutor();
final List<ChatMessage> messagesByCallback = new ArrayList<>();
final ChatMessage userMessage = new ChatMessage(ChatMessageRole.USER.value(), "What is the weather like in Boston?");
messagesByCallback.add(userMessage);
final List<CallbackFunction> functions = new LinkedList<>();
String parmJson = "{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and state, e.g. San Francisco, CA\"},\"unit\":{\"type\":\"string\",\"enum\":[\"celsius\",\"fahrenheit\"]}},\"required\":[\"location\"]}";
final CallbackFunction callbackFunction = new CallbackFunction("get_current_weather", "Get the current weather in a given location", parmJson);
functions.add(callbackFunction);
ChatCompletionRequest chatCompletionRequestByCallback = ChatCompletionRequest
.builder()
.model("gpt-3.5-turbo-16k")
.functions(functions)
.messages(messagesByCallback)
.n(1)
.maxTokens(50)
.logitBias(new HashMap<>())
.build();
service.createChatCompletion(chatCompletionRequestByCallback).getChoices().forEach(System.out::println);
要使用代理,请修改 OkHttp 客户端,如下所示:
ObjectMapper mapper = defaultObjectMapper();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
OkHttpClient client = defaultClient(token, timeout)
.newBuilder()
.proxy(proxy)
.build();
Retrofit retrofit = defaultRetrofit(client, mapper);
OpenAiApi api = retrofit.create(OpenAiApi.class);
OpenAiService service = new OpenAiService(api);
如果您想在流式传输响应后立即关闭进程, 请调用 OpenAiService.shutdown()
.
对于非流式调用,则不用。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。