mirror of
https://github.com/YuWanTingbb/unofficial-gpt4.git
synced 2025-10-14 22:27:21 +00:00
适配最新的UI Open Webui 里的/v1/embeddings接口
This commit is contained in:
@@ -12,7 +12,7 @@ ENV TZ=Asia/Shanghai
|
|||||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
# 复制JAR文件到容器的/app目录下
|
# 复制JAR文件到容器的/app目录下
|
||||||
COPY /target/gpt-4-copilot-0.2.5.jar app.jar
|
COPY /target/gpt-4-copilot-0.2.6.jar app.jar
|
||||||
|
|
||||||
# 声明服务运行在8081端口
|
# 声明服务运行在8081端口
|
||||||
EXPOSE 8081
|
EXPOSE 8081
|
||||||
|
2
pom.xml
2
pom.xml
@@ -10,7 +10,7 @@
|
|||||||
</parent>
|
</parent>
|
||||||
<groupId>com.gpt4.copilot</groupId>
|
<groupId>com.gpt4.copilot</groupId>
|
||||||
<artifactId>gpt-4-copilot</artifactId>
|
<artifactId>gpt-4-copilot</artifactId>
|
||||||
<version>0.2.5</version>
|
<version>0.2.6</version>
|
||||||
<name>native</name>
|
<name>native</name>
|
||||||
<description>Demo project for Spring Boot with GraalVM Native Image</description>
|
<description>Demo project for Spring Boot with GraalVM Native Image</description>
|
||||||
<properties>
|
<properties>
|
||||||
|
@@ -8,10 +8,7 @@ import com.alibaba.fastjson2.TypeReference;
|
|||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.gpt4.copilot.copilotApplication;
|
import com.gpt4.copilot.copilotApplication;
|
||||||
import com.gpt4.copilot.pojo.Conversation;
|
import com.gpt4.copilot.pojo.*;
|
||||||
import com.gpt4.copilot.pojo.Result;
|
|
||||||
import com.gpt4.copilot.pojo.SystemSetting;
|
|
||||||
import com.gpt4.copilot.pojo.streamResponse;
|
|
||||||
import com.unfbx.chatgpt.entity.chat.Message;
|
import com.unfbx.chatgpt.entity.chat.Message;
|
||||||
import com.unfbx.chatgpt.utils.TikTokensUtil;
|
import com.unfbx.chatgpt.utils.TikTokensUtil;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@@ -886,9 +883,15 @@ public class ChatController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Request getEmdPrompt(Object conversation,
|
private Request getEmdPrompt(Embeddings conversation,
|
||||||
Map<String, String> headersMap) {
|
Map<String, String> headersMap) {
|
||||||
try {
|
try {
|
||||||
|
Object input = conversation.getInput();
|
||||||
|
if (input instanceof String) {
|
||||||
|
List<String> resInput = new ArrayList<>();
|
||||||
|
resInput.add((String) input);
|
||||||
|
conversation.setInput(resInput);
|
||||||
|
}
|
||||||
String json = com.alibaba.fastjson2.JSON.toJSONString(conversation);
|
String json = com.alibaba.fastjson2.JSON.toJSONString(conversation);
|
||||||
RequestBody requestBody = RequestBody.create(json, JSON);
|
RequestBody requestBody = RequestBody.create(json, JSON);
|
||||||
Request.Builder requestBuilder = new Request.Builder().url(github_embaddings).post(requestBody);
|
Request.Builder requestBuilder = new Request.Builder().url(github_embaddings).post(requestBody);
|
||||||
@@ -917,7 +920,7 @@ public class ChatController {
|
|||||||
@PostMapping(value = "/v1/embeddings")
|
@PostMapping(value = "/v1/embeddings")
|
||||||
public ResponseEntity<Object> coPilotEmbeddings(HttpServletResponse response,
|
public ResponseEntity<Object> coPilotEmbeddings(HttpServletResponse response,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
@org.springframework.web.bind.annotation.RequestBody Object conversation) {
|
@org.springframework.web.bind.annotation.RequestBody Embeddings conversation) {
|
||||||
String header = request.getHeader("Authorization");
|
String header = request.getHeader("Authorization");
|
||||||
String authorizationHeader = (header != null && !header.trim().isEmpty()) ? header.trim() : null;
|
String authorizationHeader = (header != null && !header.trim().isEmpty()) ? header.trim() : null;
|
||||||
// 异步处理
|
// 异步处理
|
||||||
@@ -1010,7 +1013,7 @@ public class ChatController {
|
|||||||
@PostMapping(value = "/cocopilot/v1/embeddings")
|
@PostMapping(value = "/cocopilot/v1/embeddings")
|
||||||
public ResponseEntity<Object> coCoPilotEmbeddings(HttpServletResponse response,
|
public ResponseEntity<Object> coCoPilotEmbeddings(HttpServletResponse response,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
@org.springframework.web.bind.annotation.RequestBody Object conversation) {
|
@org.springframework.web.bind.annotation.RequestBody Embeddings conversation) {
|
||||||
String header = request.getHeader("Authorization");
|
String header = request.getHeader("Authorization");
|
||||||
String authorizationHeader = (header != null && !header.trim().isEmpty()) ? header.trim() : null;
|
String authorizationHeader = (header != null && !header.trim().isEmpty()) ? header.trim() : null;
|
||||||
// 异步处理
|
// 异步处理
|
||||||
@@ -1033,7 +1036,7 @@ public class ChatController {
|
|||||||
return new ResponseEntity<>(Result.error("current requests is " + requestNum + " rate limit exceeded"), HttpStatus.TOO_MANY_REQUESTS);
|
return new ResponseEntity<>(Result.error("current requests is " + requestNum + " rate limit exceeded"), HttpStatus.TOO_MANY_REQUESTS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 创建OkHttpClient请求 请求https://api.githubcopilot.com/embeddings
|
// 创建OkHttpClient请求 请求https://api.githubcopilot.com/Embeddings
|
||||||
String chat_token = coCopilotTokenList.get(apiKey);
|
String chat_token = coCopilotTokenList.get(apiKey);
|
||||||
Map<String, String> headersMap = new HashMap<>();
|
Map<String, String> headersMap = new HashMap<>();
|
||||||
//添加头部
|
//添加头部
|
||||||
@@ -1088,7 +1091,7 @@ public class ChatController {
|
|||||||
@PostMapping(value = "/self/v1/embeddings")
|
@PostMapping(value = "/self/v1/embeddings")
|
||||||
public ResponseEntity<Object> selfEmbeddings(HttpServletResponse response,
|
public ResponseEntity<Object> selfEmbeddings(HttpServletResponse response,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
@org.springframework.web.bind.annotation.RequestBody Object conversation) {
|
@org.springframework.web.bind.annotation.RequestBody Embeddings conversation) {
|
||||||
String header = request.getHeader("Authorization");
|
String header = request.getHeader("Authorization");
|
||||||
String authorizationHeader = (header != null && !header.trim().isEmpty()) ? header.trim() : null;
|
String authorizationHeader = (header != null && !header.trim().isEmpty()) ? header.trim() : null;
|
||||||
// 异步处理
|
// 异步处理
|
||||||
@@ -1413,8 +1416,8 @@ public class ChatController {
|
|||||||
String chat_message_id = resJson.getString("id");
|
String chat_message_id = resJson.getString("id");
|
||||||
long timestamp = resJson.getLong("created");
|
long timestamp = resJson.getLong("created");
|
||||||
// 使用stream形式适应List
|
// 使用stream形式适应List
|
||||||
List<streamResponse.Choice> choices = Stream.of(new streamResponse.Choice(0, new streamResponse.Delta(content), null)).collect(Collectors.toList());
|
List<StreamResponse.Choice> choices = Stream.of(new StreamResponse.Choice(0, new StreamResponse.Delta(content), null)).collect(Collectors.toList());
|
||||||
streamResponse streamResponse = new streamResponse(chat_message_id, model, "chat.completion.chunk", choices, timestamp);
|
StreamResponse streamResponse = new StreamResponse(chat_message_id, model, "chat.completion.chunk", choices, timestamp);
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
stringBuilder.append("data: ");
|
stringBuilder.append("data: ");
|
||||||
stringBuilder.append(com.alibaba.fastjson.JSONObject.toJSONString(streamResponse));
|
stringBuilder.append(com.alibaba.fastjson.JSONObject.toJSONString(streamResponse));
|
||||||
|
@@ -25,7 +25,7 @@ public class CustomErrorController implements ErrorController {
|
|||||||
" <title>Document</title>\n" +
|
" <title>Document</title>\n" +
|
||||||
"</head>\n" +
|
"</head>\n" +
|
||||||
"<body>\n" +
|
"<body>\n" +
|
||||||
" <p>Thanks you use gpt4-copilot-java-0.2.5</p>\n" +
|
" <p>Thanks you use gpt4-copilot-java-0.2.6</p>\n" +
|
||||||
" <p><a href=\"https://apifox.com/apidoc/shared-4301e565-a8df-48a0-85a5-bda2c4c3965a\">详细使用文档</a></p>\n" +
|
" <p><a href=\"https://apifox.com/apidoc/shared-4301e565-a8df-48a0-85a5-bda2c4c3965a\">详细使用文档</a></p>\n" +
|
||||||
" <p><a href=\"https://github.com/Yanyutin753/unofficial-gpt4-api\">项目地址</a></p>\n" +
|
" <p><a href=\"https://github.com/Yanyutin753/unofficial-gpt4-api\">项目地址</a></p>\n" +
|
||||||
"</body>\n" +
|
"</body>\n" +
|
||||||
|
@@ -298,9 +298,10 @@ public class copilotApplication {
|
|||||||
System.out.println("one_selfCopilot_limit:" + ChatController.getSystemSetting().getOne_selfCopilot_limit());
|
System.out.println("one_selfCopilot_limit:" + ChatController.getSystemSetting().getOne_selfCopilot_limit());
|
||||||
System.out.println("gpt4-copilot-java 初始化接口成功!");
|
System.out.println("gpt4-copilot-java 初始化接口成功!");
|
||||||
System.out.println("======================================================");
|
System.out.println("======================================================");
|
||||||
System.out.println("******原神gpt4-copilot-java v0.2.5启动成功******");
|
System.out.println("******原神gpt4-copilot-java v0.2.6启动成功******");
|
||||||
System.out.println("* 由于本人略菜,graalvm依赖问题无法解决,之后代码将只通过jar和docker的形式运行");
|
System.out.println("* 由于本人略菜,graalvm依赖问题无法解决,之后代码将只通过jar和docker的形式运行");
|
||||||
System.out.println("* 适配最新的ui Open Webui");
|
System.out.println("* 适配最新的ui Open Webui");
|
||||||
|
System.out.println("* 同时适配最新的UI Open Webui 里的/v1/embeddings接口");
|
||||||
System.out.println("URL地址:http://0.0.0.0:" + config.getServerPort() + config.getPrefix() + "");
|
System.out.println("URL地址:http://0.0.0.0:" + config.getServerPort() + config.getPrefix() + "");
|
||||||
System.out.println("======================================================");
|
System.out.println("======================================================");
|
||||||
}
|
}
|
||||||
|
20
src/main/java/com/gpt4/copilot/pojo/Embeddings.java
Normal file
20
src/main/java/com/gpt4/copilot/pojo/Embeddings.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package com.gpt4.copilot.pojo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Yangyang
|
||||||
|
* @create 2024-04-26 14:15
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Slf4j
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class Embeddings {
|
||||||
|
private Object input;
|
||||||
|
private String model;
|
||||||
|
}
|
@@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@JSONType(orders={"id","model","object","choices","created"})
|
@JSONType(orders={"id","model","object","choices","created"})
|
||||||
public class streamResponse {
|
public class StreamResponse {
|
||||||
private String id;
|
private String id;
|
||||||
private String model;
|
private String model;
|
||||||
private String object;
|
private String object;
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
target/classes/com/gpt4/copilot/pojo/Embeddings.class
Normal file
BIN
target/classes/com/gpt4/copilot/pojo/Embeddings.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
target/gpt-4-copilot-0.2.6.jar.original
Normal file
BIN
target/gpt-4-copilot-0.2.6.jar.original
Normal file
Binary file not shown.
@@ -1,3 +1,3 @@
|
|||||||
artifactId=gpt-4-copilot
|
artifactId=gpt-4-copilot
|
||||||
groupId=com.gpt4.copilot
|
groupId=com.gpt4.copilot
|
||||||
version=0.2.5
|
version=0.2.6
|
||||||
|
@@ -1,15 +1,16 @@
|
|||||||
com\gpt4\copilot\controller\ChatController.class
|
com\gpt4\copilot\controller\ChatController.class
|
||||||
com\gpt4\copilot\config\CorsConfig.class
|
com\gpt4\copilot\config\CorsConfig.class
|
||||||
|
com\gpt4\copilot\pojo\StreamResponse.class
|
||||||
com\gpt4\copilot\pojo\Conversation$ConversationBuilderImpl.class
|
com\gpt4\copilot\pojo\Conversation$ConversationBuilderImpl.class
|
||||||
com\gpt4\copilot\pojo\streamResponse.class
|
|
||||||
com\gpt4\copilot\copilotApplication.class
|
com\gpt4\copilot\copilotApplication.class
|
||||||
com\gpt4\copilot\pojo\streamResponse$Delta.class
|
|
||||||
com\gpt4\copilot\controller\ChatController$1.class
|
com\gpt4\copilot\controller\ChatController$1.class
|
||||||
com\gpt4\copilot\pojo\Conversation$ConversationBuilder.class
|
com\gpt4\copilot\pojo\Conversation$ConversationBuilder.class
|
||||||
com\gpt4\copilot\config\WebConfig.class
|
com\gpt4\copilot\config\WebConfig.class
|
||||||
com\gpt4\copilot\controller\CustomErrorController.class
|
com\gpt4\copilot\controller\CustomErrorController.class
|
||||||
com\gpt4\copilot\pojo\Conversation.class
|
com\gpt4\copilot\pojo\Conversation.class
|
||||||
com\gpt4\copilot\pojo\streamResponse$Choice.class
|
com\gpt4\copilot\pojo\StreamResponse$Choice.class
|
||||||
com\gpt4\copilot\pojo\SystemSetting.class
|
com\gpt4\copilot\pojo\SystemSetting.class
|
||||||
com\gpt4\copilot\pojo\Result.class
|
com\gpt4\copilot\pojo\Result.class
|
||||||
|
com\gpt4\copilot\pojo\StreamResponse$Delta.class
|
||||||
|
com\gpt4\copilot\pojo\Embeddings.class
|
||||||
com\gpt4\copilot\controller\ChatController$2.class
|
com\gpt4\copilot\controller\ChatController$2.class
|
||||||
|
@@ -4,6 +4,7 @@ F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\
|
|||||||
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\Conversation.java
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\Conversation.java
|
||||||
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\SystemSetting.java
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\SystemSetting.java
|
||||||
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\controller\ChatController.java
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\controller\ChatController.java
|
||||||
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\streamResponse.java
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\StreamResponse.java
|
||||||
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\config\WebConfig.java
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\config\WebConfig.java
|
||||||
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\copilotApplication.java
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\copilotApplication.java
|
||||||
|
F:\vue\fakeApiTool\graalvm-demos\spring-native-image\GPT4-Copilot\src\main\java\com\gpt4\copilot\pojo\Embeddings.java
|
||||||
|
Reference in New Issue
Block a user