From 3e1d2f5fcd8763d0a16c2ecd6849a0dca1b24214 Mon Sep 17 00:00:00 2001 From: Yanyutin753 <3254822118@qq.com> Date: Fri, 16 Feb 2024 00:52:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9gpt-copilot-native?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.json | 6 + .../copilot/controller/chatController.java | 181 +++++++++++++++--- .../com/gpt4/copilot/copilotApplication.java | 5 +- .../com/gpt4/copilot/pojo/systemSetting.java | 34 ++++ src/main/resources/application.properties | 2 +- target/classes/application.properties | 2 +- .../copilot/controller/chatController$1.class | Bin 1530 -> 1530 bytes .../copilot/controller/chatController.class | Bin 35377 -> 38683 bytes .../com/gpt4/copilot/copilotApplication.class | Bin 2323 -> 2406 bytes .../com/gpt4/copilot/pojo/systemSetting.class | Bin 0 -> 3538 bytes 10 files changed, 195 insertions(+), 35 deletions(-) create mode 100644 config.json create mode 100644 src/main/java/com/gpt4/copilot/pojo/systemSetting.java create mode 100644 target/classes/com/gpt4/copilot/pojo/systemSetting.class diff --git a/config.json b/config.json new file mode 100644 index 0000000..c458563 --- /dev/null +++ b/config.json @@ -0,0 +1,6 @@ +{ + "gpt3_sleepTime": 0, + "password": "abc", + "get_token_url": "https:\/\/api.cocopilot.org\/copilot_internal\/v2\/token", + "gpt4_sleepTime": 110 +} \ No newline at end of file diff --git a/src/main/java/com/gpt4/copilot/controller/chatController.java b/src/main/java/com/gpt4/copilot/controller/chatController.java index a5822a7..e94a498 100644 --- a/src/main/java/com/gpt4/copilot/controller/chatController.java +++ b/src/main/java/com/gpt4/copilot/controller/chatController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.gpt4.copilot.pojo.Result; +import com.gpt4.copilot.pojo.systemSetting; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -11,7 +12,6 @@ import okhttp3.*; import org.apache.commons.lang.StringUtils; import org.json.JSONException; import org.json.JSONObject; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -21,6 +21,9 @@ import org.springframework.web.bind.annotation.RestController; import java.io.*; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashMap; @@ -56,16 +59,39 @@ public class chatController { private static final String machineId; private final static String get_cocopilotToken_url = "https://api.cocopilot.org/copilot_internal/v2/token"; + /** + * gpt4单字符睡眠时间 + */ + private static Integer gpt4_sleepTime; + + /** + * gpt3单字符睡眠时间 + */ + private static Integer gpt3_sleepTime; + + /** + * 修改睡眠时间密码 + */ + private static String password; + /** + * 自定义获取token_url + */ + private static String get_token_url; + static { selfTokenList = new HashMap<>(); copilotTokenList = new HashMap<>(); coCopilotTokenList = new HashMap<>(); machineId = generateMachineId(); + systemSetting systemSetting = selectSetting(); + setGpt4_sleepTime(systemSetting.getGpt4_sleepTime()); + setGpt3_sleepTime(systemSetting.getGpt3_sleepTime()); + setPassword(systemSetting.getPassword()); + setGet_token_url(systemSetting.getGet_token_url()); log.info("初始化接口成功!"); } private final OkHttpClient client = new OkHttpClient.Builder().connectTimeout(3, TimeUnit.MINUTES).readTimeout(5, TimeUnit.MINUTES).writeTimeout(5, TimeUnit.MINUTES).build(); - private final ThreadFactory threadFactory = new ThreadFactory() { private final AtomicInteger counter = new AtomicInteger(0); @@ -74,30 +100,109 @@ public class chatController { return new Thread(r, "chatThreadPool-" + counter.getAndIncrement()); } }; - private final ExecutorService executor = new ThreadPoolExecutor(0, 300, 60L, TimeUnit.SECONDS, new SynchronousQueue<>(), threadFactory); - private final String github_get_token_url = "https://api.github.com/copilot_internal/v2/token"; private final String github_chat = "https://api.githubcopilot.com/chat/completions"; private final String github_embaddings = "https://api.githubcopilot.com/embeddings"; private final String vscode_version = "vscode/1.85.2"; + + public static String selectFile() { + String projectRoot = System.getProperty("user.dir"); + String parent = projectRoot + File.separator + "config.json"; + File jsonFile = new File(parent); + Path jsonFilePath = Paths.get(parent); + // 如果 JSON 文件不存在,创建一个新的 JSON 对象 + if (!jsonFile.exists()) { + try { + // 创建文件config.json + Files.createFile(jsonFilePath); + // 往 config.json 文件中添加一个空数组,防止重启报错 + Files.writeString(jsonFilePath, "{}"); + System.out.println("空数组添加完成"); + } catch (IOException e) { + throw new RuntimeException(e); + } + System.out.println("config.json创建完成: " + jsonFilePath); + } + return parent; + } + + + public static void setGpt4_sleepTime(Integer gpt4_sleepTime) { + chatController.gpt4_sleepTime = gpt4_sleepTime; + } + + + public static void setGpt3_sleepTime(Integer gpt3_sleepTime) { + chatController.gpt3_sleepTime = gpt3_sleepTime; + } + + + public static void setGet_token_url(String get_token_url) { + chatController.get_token_url = get_token_url; + } + /** - * gpt4单字符睡眠时间 + * 查询config.json里的系统值 + * + * @return systemSettings类 */ - @Value("${gpt4_sleepTime}") - private Integer gpt4_sleepTime; - /** - * gpt3单字符睡眠时间 - */ - @Value("${gpt3_sleepTime}") - private Integer gpt3_sleepTime; - /** - * 修改睡眠时间密码 - */ - @Value("${password}") - private String password; - @Value("${get_token_url}") - private String get_token_url; + public static systemSetting selectSetting() { + boolean exist = true; + String parent = selectFile(); + try { + // 读取 JSON 文件内容 + String jsonContent = new String(Files.readAllBytes(Paths.get(parent))); + // 将 JSON 字符串解析为 JSONObject + JSONObject jsonObject = new JSONObject(jsonContent); + try { + jsonObject.getInt("gpt4_sleepTime"); + } catch (JSONException e) { + jsonObject.put("gpt4_sleepTime", "100"); + log.info("config.json没有新增gpt4_sleepTime参数,现已增加!"); + exist = false; + } + try { + jsonObject.getString("gpt3_sleepTime"); + } catch (JSONException e) { + jsonObject.put("gpt3_sleepTime", "0"); + log.info("config.json没有新增gpt3_sleepTime参数,现已增加!"); + exist = false; + } + try { + jsonObject.getString("password"); + } catch (JSONException e) { + jsonObject.put("password", UUID.randomUUID().toString()); + log.info("config.json没有新增password参数,现已增加!"); + exist = false; + } + + try { + jsonObject.getString("get_token_url"); + } catch (JSONException e) { + jsonObject.put("get_token_url", "https://api.cocopilot.org/copilot_internal/v2/token"); + log.info("config.json没有新增get_token_url参数,现已增加!"); + exist = false; + } + + // 将 JSONObject 转换为 Config 类的实例 + systemSetting config = new systemSetting(); + config.setGpt4_sleepTime(jsonObject.optInt("gpt4_sleepTime")); + config.setGpt3_sleepTime(jsonObject.optInt("gpt3_sleepTime")); + config.setPassword(jsonObject.optString("password")); + config.setGet_token_url(jsonObject.optString("get_token_url")); + + if (exist == false) { + // 将修改后的 JSONObject 转换为格式化的 JSON 字符串 + String updatedJson = jsonObject.toString(2); + Files.write(Paths.get(parent), updatedJson.getBytes()); + } + return config; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } private static String generateMachineId() { try { @@ -118,33 +223,39 @@ public class chatController { } } - public void setGpt4_sleepTime(Integer gpt4_sleepTime) { - this.gpt4_sleepTime = gpt4_sleepTime; - } - - public void setGpt3_sleepTime(Integer gpt3_sleepTime) { - this.gpt3_sleepTime = gpt3_sleepTime; - } - - public String getPassword() { - return password; + public static void setPassword(String password) { + chatController.password = password; } /** * 修改sleep时间 */ - @GetMapping(value = "changeSleepTime") + @GetMapping(value = "/changeSettings") private Result changeSleepTime(@RequestParam("gpt3_sleepTime") Integer gpt3_sleepTime, @RequestParam("gpt4_sleepTime") Integer gpt4_sleepTime, + @RequestParam("get_token_url") String get_token_url, @RequestParam("password") String password) { try { - if (password.equals(getPassword())) { + if (password.equals(selectSetting().getPassword())) { + String parent = selectFile(); + // 读取 JSON 文件内容 + String jsonContent = new String(Files.readAllBytes(Paths.get(parent))); + JSONObject jsonObject = new JSONObject(jsonContent); if (gpt3_sleepTime != null && gpt4_sleepTime >= 0 && gpt4_sleepTime <= 150) { setGpt3_sleepTime(gpt3_sleepTime); + jsonObject.put("gpt3_sleepTime", gpt3_sleepTime); } if (gpt4_sleepTime != null && gpt4_sleepTime >= 0 && gpt4_sleepTime <= 150) { setGpt4_sleepTime(gpt4_sleepTime); + jsonObject.put("gpt4_sleepTime", gpt4_sleepTime); } + if (get_token_url != null && get_token_url.startsWith("http")) { + setGet_token_url(get_token_url); + jsonObject.put("get_token_url", get_token_url); + } + // 将修改后的 JSONObject 转换为格式化的 JSON 字符串 + String updatedJson = jsonObject.toString(2); + Files.write(Paths.get(parent), updatedJson.getBytes()); return Result.success("修改成功!"); } else { return Result.error("管理员密码不对,请重新再试!"); @@ -298,6 +409,7 @@ public class chatController { future.cancel(true); responseEntity = new ResponseEntity<>(Result.error("The task timed out"), HttpStatus.REQUEST_TIMEOUT); } catch (Exception ex) { + log.error(ex.getMessage()); responseEntity = new ResponseEntity<>(Result.error("An error occurred"), HttpStatus.INTERNAL_SERVER_ERROR); } return responseEntity; @@ -384,6 +496,7 @@ public class chatController { future.cancel(true); responseEntity = new ResponseEntity<>(Result.error("The chat timed out"), HttpStatus.REQUEST_TIMEOUT); } catch (Exception ex) { + log.error(ex.getMessage()); responseEntity = new ResponseEntity<>(Result.error("An error occurred"), HttpStatus.INTERNAL_SERVER_ERROR); } return responseEntity; @@ -456,6 +569,7 @@ public class chatController { future.cancel(true); responseEntity = new ResponseEntity<>(Result.error("The chat timed out"), HttpStatus.REQUEST_TIMEOUT); } catch (Exception ex) { + log.error(ex.getMessage()); responseEntity = new ResponseEntity<>(Result.error("An error occurred"), HttpStatus.INTERNAL_SERVER_ERROR); } return responseEntity; @@ -577,6 +691,7 @@ public class chatController { future.cancel(true); responseEntity = new ResponseEntity<>(Result.error("The chat timed out"), HttpStatus.REQUEST_TIMEOUT); } catch (Exception ex) { + log.error(ex.getMessage()); responseEntity = new ResponseEntity<>(Result.error("An error occurred"), HttpStatus.INTERNAL_SERVER_ERROR); } return responseEntity; @@ -662,6 +777,7 @@ public class chatController { future.cancel(true); responseEntity = new ResponseEntity<>(Result.error("The chat timed out"), HttpStatus.REQUEST_TIMEOUT); } catch (Exception ex) { + log.error(ex.getMessage()); responseEntity = new ResponseEntity<>(Result.error("An error occurred"), HttpStatus.INTERNAL_SERVER_ERROR); } return responseEntity; @@ -746,6 +862,7 @@ public class chatController { future.cancel(true); responseEntity = new ResponseEntity<>(Result.error("The chat timed out"), HttpStatus.REQUEST_TIMEOUT); } catch (Exception ex) { + log.error(ex.getMessage()); responseEntity = new ResponseEntity<>(Result.error("An error occurred"), HttpStatus.INTERNAL_SERVER_ERROR); } return responseEntity; @@ -831,6 +948,7 @@ public class chatController { throw new RuntimeException(e); } } + /** * 用于self——ccu 拿到token * @@ -857,6 +975,7 @@ public class chatController { throw new RuntimeException(e); } } + /** * copilot的模型 * diff --git a/src/main/java/com/gpt4/copilot/copilotApplication.java b/src/main/java/com/gpt4/copilot/copilotApplication.java index d018abc..3d57233 100644 --- a/src/main/java/com/gpt4/copilot/copilotApplication.java +++ b/src/main/java/com/gpt4/copilot/copilotApplication.java @@ -34,9 +34,10 @@ public class copilotApplication { @PostConstruct public void initialize() { System.out.println("------------------------------------------------------"); - System.out.println("----------原神gpt4-copilot-java v0.0.3启动成功------------"); - System.out.println("* 优化打字机输出"); + System.out.println("----------原神gpt4-copilot-java-native v0.0.4启动成功------------"); + System.out.println("* 采用graalvm打包,运行内存大幅度减小"); System.out.println("* 增加自定义获取token渠道"); + System.out.println("* 增加自定义/self/*接口"); System.out.println("* 增加反代/copilot_internal/v2/token接口"); System.out.println("URL地址:http://0.0.0.0:" + serverPort + contextPath +""); System.out.println("------------------------------------------------------"); diff --git a/src/main/java/com/gpt4/copilot/pojo/systemSetting.java b/src/main/java/com/gpt4/copilot/pojo/systemSetting.java new file mode 100644 index 0000000..441eafe --- /dev/null +++ b/src/main/java/com/gpt4/copilot/pojo/systemSetting.java @@ -0,0 +1,34 @@ +package com.gpt4.copilot.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Yangyang + * @create 2024-02-16 0:14 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class systemSetting { + /** + * gpt4 sleep time + */ + private Integer gpt4_sleepTime; + + /** + * gpt3 sleep time + */ + private Integer gpt3_sleepTime; + + /** + * changeSleepTime's password + */ + private String password; + + /** + * self-define get_token_url + */ + private String get_token_url; +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7864d93..a41c724 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,6 +1,6 @@ management.endpoints.web.exposure.include=metrics,health,info,prometheus # server.port -server.port=8081 +server.port=8080 # SpringBoot 2.* prefix server.servlet.context-path=/ # gpt4 sleep time diff --git a/target/classes/application.properties b/target/classes/application.properties index 7864d93..a41c724 100644 --- a/target/classes/application.properties +++ b/target/classes/application.properties @@ -1,6 +1,6 @@ management.endpoints.web.exposure.include=metrics,health,info,prometheus # server.port -server.port=8081 +server.port=8080 # SpringBoot 2.* prefix server.servlet.context-path=/ # gpt4 sleep time diff --git a/target/classes/com/gpt4/copilot/controller/chatController$1.class b/target/classes/com/gpt4/copilot/controller/chatController$1.class index 16f5efdede1c105d9a5066afab768f4914d47581..9543e24b5110003b4b9fb360c40fae23b818d936 100644 GIT binary patch delta 23 ecmeyx{fm2p7AtE!11CemWPR2|#+1nuSu+7xOa|5f delta 23 ecmeyx{fm2p7AvbO11E#qWPR2|Mz6^eSu+7uCI*NA diff --git a/target/classes/com/gpt4/copilot/controller/chatController.class b/target/classes/com/gpt4/copilot/controller/chatController.class index b0b010de779b16f8a2dfe3bd985136b621cf78d4..66d12ddc205c971bdae6cc01d925292ef7042bbf 100644 GIT binary patch literal 38683 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 VME@tYsK;@gW|SI-8i!NP{{u8o3?cvk literal 35377 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 MmCPZWz)3Xy0aq)D5dZ)H delta 602 zcmZWlOG{K?7=FGp&N;_3M}s4c7jPPdF+HPmX-YHGrX0;{-m1~kB1CAViw1EKxD>_R z2h}2ff(uhj1`~o-;!^wt&EPL^6Nt}uk`!7z@BMw=OVN>zb$FgX0MLoITh>n@((*{u z8R5l5ED=k|Kccp((hdLK|58~0R9uyX&CkWJ`O^bgSjo#FtwnBVDZRnQZ8XXgts&&v zh@w#-FuO3Hn_J3_zRSIL$lhWjhPbTpWdljvF_5xx7x&~x-?-jp<38HAk9{Lr`M8A% zJU8${mA{lp{g;@OXL_>awLnD9=n>t(j6jHHNal>-GCRqxsi6>fKs!L)K|K7xlQgy1 z|A{V?FzAO)`G`GnYC-LHze8+!glS5Z27-7@Y5y(26LixnMFu@&pH|(iG*qGK815cQ zvsVNbGr%nv2wx*H(Tk^y_YrG|gLP4L*-9Bj?O$#NB~HQy$I0E-Js_hI5np zYDhgy`NOPU?tshPqSppxF1J;0QMU|Gn;86ecAYne*Eq%=65D81qyp*7a-f2L8ltCR e*!!)z=NbJGVw5mhJw{|Pg)+dR`3lo`gX#;z%vj<8 diff --git a/target/classes/com/gpt4/copilot/pojo/systemSetting.class b/target/classes/com/gpt4/copilot/pojo/systemSetting.class new file mode 100644 index 0000000000000000000000000000000000000000..a30d8a1db4c170e85ebaebb11bbd71eb645f593a GIT binary patch literal 3538 zcma)9-*XdH6#j0qn@!Sfn-*F~sFg~qZQ2qAL`f(jl^@l%R9ZnmDcf{uL(^YKCHI^!Q5pP1`sLZ@{c zMNZ(rwy|Z-T9u+b z9Sn1If|jHfOncK>UovXOwrQI+?&Hb(vc_CdXDe5M!t%Uzl*yg_DH0G?u$H|t6i_XD z)2#8hNase|57B;SwS(OR2aIch1MF@`bL&X;xH?;mes}Aj!TY?OgWT?A+bC`=7*#JN z>e7|Dh4XZ8j=8Ow^_{XU(A#0J!wDFb7;Wv}Gs==~onlt8ZMo4DSO`m)uk1p~^~JTx zJSUf}om$bnP;#m)(8G?(v&>33XIXaLt{GLgBM3$z6zFNJY?cy33IsbP=A@G9WUl0tKQ~_9tGn0;j`OYI{{F6Vz0h za8%CV40rCZGPzfkGS^L&@;M;zPPodRy{eRD(^Q#qRPvU0trTBy>|#tFO=f?Dsyv+h z6Or$sMjuZ8fylyC_A&aLDT#r_DSqH;e zqW=N9(`q{A1C8W0f=2T3v?f7u52U5zKG0Y`LC{z}nNCPh(gP*Z$p%PyNUNhAd9S+O zH1qxlXYnrGAHWYd#{&>y34V=P@}hiOe1-Q&DY%F&oF}DX0VXbxilNN$A}I|u>bOKI zj&FEQ=SU^+Ee_#*Qb~M3J5Hiki~oZj4UuOU)R5s{Ts*@;mrT5XY*gb}CPk4CJg;<4 z(O_BNs?3J;^F{ToHvLrTo%GYI?{iL?`FJ9W#VEd{3XO`YslsVx#!2Q-s<6pa##56I zpiMu<_-)A_&MR^ut#~VOnP7KmB(FM4%&j97Ppgfkv3$%~iZz#*aY_w^C+U)Fi)VZk z+n8tI<*D4lBB=<&dIy*3P?V3!1uT(LcnXf;LsBZPvjJWq6?20B6XMUwP#An67;p&j zoPw=6+0R)3Y6H-~C_$D7i}_$JWINXbYe8@eAF@CZ`ncTefoJKHY~6!09WwO%jqo@2 z1XDnJQ*_&!+sg;N$O%Sdh0&7jrp!_0n92Tz*PX_go!W(#o!&(