From 5d1f4fef628cca4fcc28528c20facc0023785e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5?= <184172133@qq.com> Date: Tue, 10 Oct 2023 22:04:46 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BC=9A=E8=AF=9D=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=92=8C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chatglm/session/OpenAiSession.java | 18 +++++++ .../defaults/DefaultOpenAiSession.java | 51 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/main/java/cn/bugstack/chatglm/session/OpenAiSession.java create mode 100644 src/main/java/cn/bugstack/chatglm/session/defaults/DefaultOpenAiSession.java diff --git a/src/main/java/cn/bugstack/chatglm/session/OpenAiSession.java b/src/main/java/cn/bugstack/chatglm/session/OpenAiSession.java new file mode 100644 index 0000000..86cd99d --- /dev/null +++ b/src/main/java/cn/bugstack/chatglm/session/OpenAiSession.java @@ -0,0 +1,18 @@ +package cn.bugstack.chatglm.session; + +import cn.bugstack.chatglm.model.ChatCompletionRequest; +import com.fasterxml.jackson.core.JsonProcessingException; +import okhttp3.sse.EventSource; +import okhttp3.sse.EventSourceListener; + +/** + * @author 小傅哥,微信:fustack + * @description 会话服务接口 + * @github https://github.com/fuzhengwei + * @Copyright 公众号:bugstack虫洞栈 | 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! + */ +public interface OpenAiSession { + + EventSource completions(ChatCompletionRequest chatCompletionRequest, EventSourceListener eventSourceListener) throws JsonProcessingException; + +} diff --git a/src/main/java/cn/bugstack/chatglm/session/defaults/DefaultOpenAiSession.java b/src/main/java/cn/bugstack/chatglm/session/defaults/DefaultOpenAiSession.java new file mode 100644 index 0000000..97578ad --- /dev/null +++ b/src/main/java/cn/bugstack/chatglm/session/defaults/DefaultOpenAiSession.java @@ -0,0 +1,51 @@ +package cn.bugstack.chatglm.session.defaults; + +import cn.bugstack.chatglm.IOpenAiApi; +import cn.bugstack.chatglm.model.ChatCompletionRequest; +import cn.bugstack.chatglm.session.Configuration; +import cn.bugstack.chatglm.session.OpenAiSession; +import com.fasterxml.jackson.core.JsonProcessingException; +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.sse.EventSource; +import okhttp3.sse.EventSourceListener; + +/** + * @author 小傅哥,微信:fustack + * @description 会话服务 + * @github https://github.com/fuzhengwei + * @Copyright 公众号:bugstack虫洞栈 | 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! + */ +public class DefaultOpenAiSession implements OpenAiSession { + + /** + * OpenAi 接口 + */ + private final Configuration configuration; + /** + * 工厂事件 + */ + private final EventSource.Factory factory; + + private IOpenAiApi openAiApi; + + public DefaultOpenAiSession(Configuration configuration) { + this.configuration = configuration; + this.openAiApi = configuration.getOpenAiApi(); + this.factory = configuration.createRequestFactory(); + } + + @Override + public EventSource completions(ChatCompletionRequest chatCompletionRequest, EventSourceListener eventSourceListener) throws JsonProcessingException { + // 构建请求信息 + Request request = new Request.Builder() + .url(configuration.getApiHost().concat(IOpenAiApi.v3_completions).replace("{model}", chatCompletionRequest.getModel().getCode())) + .post(RequestBody.create(MediaType.parse("application/json"), chatCompletionRequest.toString())) + .build(); + + // 返回事件结果 + return factory.newEventSource(request, eventSourceListener); + } + +} -- GitLab