diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..8bf4d45d6ed0a1d3796ca62a6a386142757ee9f5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,6 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/dictionaries b/.idea/dictionaries new file mode 100644 index 0000000000000000000000000000000000000000..7b85999b3b464c8da866d92b33e171164adcc4c1 --- /dev/null +++ b/.idea/dictionaries @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000000000000000000000000000000000..aa00ffab7828f4818589659c804ec2cfd99baed3 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..e88ef54cd4a97f8970c978ba0e9fd6e51187d345 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/1/3/1371a282431555be400a63c5fee79c61bafb1ede b/.idea/sonarlint/issuestore/1/3/1371a282431555be400a63c5fee79c61bafb1ede new file mode 100644 index 0000000000000000000000000000000000000000..c51b85248112b0de154bd8c8db1ef38d005d097a --- /dev/null +++ b/.idea/sonarlint/issuestore/1/3/1371a282431555be400a63c5fee79c61bafb1ede @@ -0,0 +1,4 @@ + +` java:S112S"FDefine and throw a dedicated exception instead of using a generic one.(҂ +L +java:S1874"6Remove this use of "CHATGLM_6B_SSE"; it is deprecated.(濍 \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/2/0/20550a4519469f3a2793d71d6bed550ad3656077 b/.idea/sonarlint/issuestore/2/0/20550a4519469f3a2793d71d6bed550ad3656077 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/2/3/23d0cc0324fa072ab34e37f664df89e409da8705 b/.idea/sonarlint/issuestore/2/3/23d0cc0324fa072ab34e37f664df89e409da8705 new file mode 100644 index 0000000000000000000000000000000000000000..f499e77565a18f88b5063ac12804d52606542bc5 --- /dev/null +++ b/.idea/sonarlint/issuestore/2/3/23d0cc0324fa072ab34e37f664df89e409da8705 @@ -0,0 +1,3 @@ + + +java:S1192"Define a constant instead of duplicating this literal "适用于对知识量、推理能力、创造力要求较高的场景" 3 times.(dz \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/4/3/43f58b3cf3c113838eb40f9fc9c0edc56c5ce3c2 b/.idea/sonarlint/issuestore/4/3/43f58b3cf3c113838eb40f9fc9c0edc56c5ce3c2 new file mode 100644 index 0000000000000000000000000000000000000000..04554c0c0c002dd3e496ca9b7db3f94577bc127f --- /dev/null +++ b/.idea/sonarlint/issuestore/4/3/43f58b3cf3c113838eb40f9fc9c0edc56c5ce3c2 @@ -0,0 +1,8 @@ + +l +java:S1104"QMake cache a static final constant or non-public and provide accessors if needed.( +F +java:S1444"+Make this "public static cache" field final( +t java:S115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.( +P +java:S1118":Add a private constructor to hide the implicit public one.(ĵ \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/4/4/442292b8a7efeabbe4cc176709b833b1792140ec b/.idea/sonarlint/issuestore/4/4/442292b8a7efeabbe4cc176709b833b1792140ec new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/9/49b2c5cc830b5396d25cf459acdc664db5ea259f b/.idea/sonarlint/issuestore/4/9/49b2c5cc830b5396d25cf459acdc664db5ea259f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/5/0/504022ed192a0dca120d8b28d6fdb8fb081ed0cd b/.idea/sonarlint/issuestore/5/0/504022ed192a0dca120d8b28d6fdb8fb081ed0cd new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/0/80065a9ed7ad9a18bdea4a3959ae77102039a220 b/.idea/sonarlint/issuestore/8/0/80065a9ed7ad9a18bdea4a3959ae77102039a220 new file mode 100644 index 0000000000000000000000000000000000000000..8f984394f98da42cd005ac65383033057abb837f --- /dev/null +++ b/.idea/sonarlint/issuestore/8/0/80065a9ed7ad9a18bdea4a3959ae77102039a220 @@ -0,0 +1,3 @@ + +[ java:S112""FDefine and throw a dedicated exception instead of using a generic one.( +Q java:S125""_Replace the synchronized class "StringBuffer" by an unsynchronized one such as "StringBuilder".( +V +java:S1128"@Remove this unused import 'java.util.concurrent.CountDownLatch'.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/e/e/eed25e69ed20d4c064c8126684dd827de075171b b/.idea/sonarlint/issuestore/e/e/eed25e69ed20d4c064c8126684dd827de075171b new file mode 100644 index 0000000000000000000000000000000000000000..30f92270b071ca4f22959261959498780f1f8816 --- /dev/null +++ b/.idea/sonarlint/issuestore/e/e/eed25e69ed20d4c064c8126684dd827de075171b @@ -0,0 +1,2 @@ + +t java:S115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ce67949ea5f693fd85fdff32d7e560b737cbf6d --- /dev/null +++ b/.idea/sonarlint/issuestore/index.pb @@ -0,0 +1,27 @@ + +9 + README.md,8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +7 +curl.sh,4/9/49b2c5cc830b5396d25cf459acdc664db5ea259f +a +1src/main/java/cn/bugstack/chatglm/IOpenAiApi.java,e/e/eed25e69ed20d4c064c8126684dd827de075171b +m +=src/main/java/cn/bugstack/chatglm/utils/BearerTokenUtils.java,4/3/43f58b3cf3c113838eb40f9fc9c0edc56c5ce3c2 +7 +pom.xml,4/4/442292b8a7efeabbe4cc176709b833b1792140ec +l + + + + + + \ No newline at end of file diff --git a/curl.sh b/curl.sh new file mode 100644 index 0000000000000000000000000000000000000000..47ec327efaacbc82a91bdfab3175565bc9be4f80 --- /dev/null +++ b/curl.sh @@ -0,0 +1,15 @@ +curl -X POST \ + -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04ifQ.eyJhcGlfa2V5IjoiNmJiNzIzOGQwMWM1MmE0Y2UzMDA1MTMzODExNjhjNGUiLCJleHAiOjE3MjU1OTk2NjUyNjAsInRpbWVzdGFtcCI6MTcyNTU5Nzg2NTI2MH0._3QMXjRy99JB-1lqfMViw_32JsopECius3UtiwL29Lk" \ + -H "Content-Type: application/json" \ + -H "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)" \ + -d '{ + "model":"glm-4-flash", + "stream": "true", + "messages": [ + { + "role": "user", + "content": "写个java冒泡排序" + } + ] + }' \ + https://open.bigmodel.cn/api/paas/v4/chat/completions \ No newline at end of file diff --git a/docs/curl/curl.sh b/docs/curl/curl.sh index 948905b7ab9de1bf66dace04c733cba9fd116eda..72b74b8e7b064c0fd42d297224f07e341c6252ae 100644 --- a/docs/curl/curl.sh +++ b/docs/curl/curl.sh @@ -1,5 +1,5 @@ curl -X POST \ - -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04ifQ.eyJhcGlfa2V5IjoiNzdkNDg2YTMyOGQ1ZGRlNTBiOTE0Y2UxMDJlNzFkNGYiLCJleHAiOjE2OTczNTU1NTgwMTQsInRpbWVzdGFtcCI6MTY5NzM1Mzc1ODAxNH0.KNOXxlwULWcvNZ9CvdxGLgYlf4pDNA0az2FoFV7DX7Q" \ + -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04ifQ.eyJhcGlfa2V5IjoiNmJiNzIzOGQwMWM1MmE0Y2UzMDA1MTMzODExNjhjNGUiLCJleHAiOjE3MDEwNjY5NjIxNzgsInRpbWVzdGFtcCI6MTcwMTA2NTE2MjE3OH0.wuefgqSSw5P6kvuOhlqvOFaejw2j1hkPjAAs1QHL6ao" \ -H "Content-Type: application/json" \ -H "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)" \ -H "Accept: text/event-stream" \ diff --git a/src/main/java/cn/bugstack/chatglm/model/Model.java b/src/main/java/cn/bugstack/chatglm/model/Model.java index 7df64e3cae373b67c9c2490eee05dc1c07c07c28..476d615f13a50479aeb37d7801ae6281d6fc16ff 100644 --- a/src/main/java/cn/bugstack/chatglm/model/Model.java +++ b/src/main/java/cn/bugstack/chatglm/model/Model.java @@ -28,6 +28,7 @@ public enum Model { /** 智谱AI 24年01月发布 */ GLM_3_5_TURBO("glm-3-turbo","适用于对知识量、推理能力、创造力要求较高的场景"), GLM_4("glm-4","适用于复杂的对话交互和深度内容创作设计的场景"), + GLM_4_FLASH("glm-4-flash","免费开放的大语言模型"), GLM_4V("glm-4v","根据输入的自然语言指令和图像信息完成任务,推荐使用 SSE 或同步调用方式请求接口"), COGVIEW_3("cogview-3","根据用户的文字描述生成图像,使用同步调用方式请求接口"), ; diff --git a/src/test/java/cn/bugstack/chatglm/test/ApiTest.java b/src/test/java/cn/bugstack/chatglm/test/ApiTest.java index 7415afdd85c08712a64aefe595674a06f3bee005..dd30389e92b895d360e13b310162af28e7d48972 100644 --- a/src/test/java/cn/bugstack/chatglm/test/ApiTest.java +++ b/src/test/java/cn/bugstack/chatglm/test/ApiTest.java @@ -9,8 +9,6 @@ import cn.bugstack.chatglm.utils.BearerTokenUtils; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.slf4j.Slf4j; -import okhttp3.Response; -import okhttp3.logging.HttpLoggingInterceptor; import okhttp3.sse.EventSource; import okhttp3.sse.EventSourceListener; import org.apache.commons.lang3.StringUtils; @@ -18,7 +16,6 @@ import org.jetbrains.annotations.Nullable; import org.junit.Before; import org.junit.Test; -import java.io.IOException; import java.util.ArrayList; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CountDownLatch; @@ -27,7 +24,7 @@ import java.util.concurrent.ExecutionException; /** * @author 小傅哥,微信:fustack * @description 在官网申请 ApiSecretKey ApiSecretKey - * @github chatglm-sdk-java + * @github https://github.com/fuzhengwei * @Copyright 公众号:bugstack虫洞栈 | 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! */ @Slf4j @@ -40,8 +37,7 @@ public class ApiTest { // 1. 配置文件 Configuration configuration = new Configuration(); configuration.setApiHost("https://open.bigmodel.cn/"); - configuration.setApiSecretKey("39580e34e175019c230fdd519817b381.*****"); - configuration.setLevel(HttpLoggingInterceptor.Level.BODY); + configuration.setApiSecretKey("6bb7238d01c52a4ce300513381168c4e.6eVqwo1tsctUgyzl"); // 2. 会话工厂 OpenAiSessionFactory factory = new DefaultOpenAiSessionFactory(configuration); // 3. 开启会话 @@ -49,206 +45,69 @@ public class ApiTest { } /** - * 流式对话; - * 1. 默认 isCompatible = true 会兼容新旧版数据格式 - * 2. GLM_3_5_TURBO、GLM_4 支持联网等插件 + * 流式对话 */ @Test public void test_completions() throws Exception { - CountDownLatch countDownLatch = new CountDownLatch(1); - // 入参;模型、请求信息 ChatCompletionRequest request = new ChatCompletionRequest(); - request.setModel(Model.GLM_3_5_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro + request.setModel(Model.CHATGLM_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro request.setIncremental(false); - request.setIsCompatible(true); // 是否对返回结果数据做兼容,24年1月发布的 GLM_3_5_TURBO、GLM_4 模型,与之前的模型在返回结果上有差异。开启 true 可以做兼容。 - // 24年1月发布的 glm-3-turbo、glm-4 支持函数、知识库、联网功能 - request.setTools(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - - { - add(ChatCompletionRequest.Tool.builder() - .type(ChatCompletionRequest.Tool.Type.web_search) - .webSearch(ChatCompletionRequest.Tool.WebSearch.builder().enable(true).searchQuery("小傅哥").build()) - .build()); - } - }); request.setPrompt(new ArrayList() { private static final long serialVersionUID = -7988151926241837899L; { add(ChatCompletionRequest.Prompt.builder() .role(Role.user.getCode()) - .content("小傅哥的是谁") + .content("1+2") .build()); - } - }); - - // 请求 - openAiSession.completions(request, new EventSourceListener() { - @Override - public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) { - ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class); - log.info("测试结果 onEvent:{}", response.getData()); - // type 消息类型,add 增量,finish 结束,error 错误,interrupted 中断 - if (EventType.finish.getCode().equals(type)) { - ChatCompletionResponse.Meta meta = JSON.parseObject(response.getMeta(), ChatCompletionResponse.Meta.class); - log.info("[输出结束] Tokens {}", JSON.toJSONString(meta)); - } - } - - @Override - public void onClosed(EventSource eventSource) { - log.info("对话完成"); - countDownLatch.countDown(); - } - - @Override - public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) { - log.info("对话异常"); - countDownLatch.countDown(); - } - }); - // 等待 - countDownLatch.await(); - } - - /** - * 流式对话; - * 1. 与 test_completions 测试类相比,只是设置 isCompatible = false 这样就是使用了新的数据结构。onEvent 处理接收数据有差异 - * 2. 不兼容旧版格式的话,仅支持 GLM_3_5_TURBO、GLM_4 其他模型会有解析错误 - */ - @Test - public void test_completions_new() throws Exception { - CountDownLatch countDownLatch = new CountDownLatch(1); - - // 入参;模型、请求信息 - ChatCompletionRequest request = new ChatCompletionRequest(); - request.setModel(Model.GLM_4V); // GLM_3_5_TURBO、GLM_4 - request.setIsCompatible(false); - // 24年1月发布的 glm-3-turbo、glm-4 支持函数、知识库、联网功能 - request.setTools(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - - { - add(ChatCompletionRequest.Tool.builder() - .type(ChatCompletionRequest.Tool.Type.web_search) - .webSearch(ChatCompletionRequest.Tool.WebSearch.builder().enable(true).searchQuery("小傅哥").build()) + /*add(ChatCompletionRequest.Prompt.builder() + .role(Role.user.getCode()) + .content("Okay") .build()); - } - }); - request.setMessages(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - { + *//* system 和 user 为一组出现。如果有参数类型为 system 则 system + user 一组一起传递。*//* add(ChatCompletionRequest.Prompt.builder() - .role(Role.user.getCode()) - .content("小傅哥的是谁") + .role(Role.system.getCode()) + .content("1+1=2") .build()); - } - }); - // 请求 - openAiSession.completions(request, new EventSourceListener() { - @Override - public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) { - if ("[DONE]".equals(data)) { - log.info("[输出结束] Tokens {}", JSON.toJSONString(data)); - return; - } - - ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class); - log.info("测试结果:{}", JSON.toJSONString(response)); - } - - @Override - public void onClosed(EventSource eventSource) { - log.info("对话完成"); - countDownLatch.countDown(); - } - - @Override - public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) { - log.error("对话失败", t); - countDownLatch.countDown(); - } - }); - - // 等待 - countDownLatch.await(); - } - - /** - * 模型编码:glm-4v - * 根据输入的自然语言指令和图像信息完成任务,推荐使用 SSE 或同步调用方式请求接口 - * https://open.bigmodel.cn/dev/api#glm-4v - */ - @Test - public void test_completions_4v() throws Exception { - CountDownLatch countDownLatch = new CountDownLatch(1); - // 入参;模型、请求信息 - ChatCompletionRequest request = new ChatCompletionRequest(); - request.setModel(Model.GLM_4V); // GLM_3_5_TURBO、GLM_4 - request.setStream(true); - request.setMessages(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - - { - // content 字符串格式 -// add(ChatCompletionRequest.Prompt.builder() -// .role(Role.user.getCode()) -// .content("这个图片写了什么") -// .build()); - - // content 对象格式 add(ChatCompletionRequest.Prompt.builder() .role(Role.user.getCode()) - .content(ChatCompletionRequest.Prompt.Content.builder() - .type(ChatCompletionRequest.Prompt.Content.Type.text.getCode()) - .text("这是什么图片") - .build()) + .content("Okay") .build()); - // content 对象格式,上传图片;图片支持url、basde64 add(ChatCompletionRequest.Prompt.builder() .role(Role.user.getCode()) - .content(ChatCompletionRequest.Prompt.Content.builder() - .type(ChatCompletionRequest.Prompt.Content.Type.image_url.getCode()) - .imageUrl(ChatCompletionRequest.Prompt.Content.ImageUrl.builder().url("https://bugstack.cn/images/article/project/chatgpt/chatgpt-extra-231011-01.png").build()) - .build()) - .build()); + .content("1+2") + .build());*/ + } }); + // 请求 openAiSession.completions(request, new EventSourceListener() { @Override public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) { - if ("[DONE]".equals(data)) { - log.info("[输出结束] Tokens {}", JSON.toJSONString(data)); - return; - } - ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class); - log.info("测试结果:{}", JSON.toJSONString(response)); + log.info("测试结果 onEvent:{}", response.getData()); + // type 消息类型,add 增量,finish 结束,error 错误,interrupted 中断 + if (EventType.finish.getCode().equals(type)) { + ChatCompletionResponse.Meta meta = JSON.parseObject(response.getMeta(), ChatCompletionResponse.Meta.class); + log.info("[输出结束] Tokens {}", JSON.toJSONString(meta)); + } } @Override public void onClosed(EventSource eventSource) { log.info("对话完成"); - countDownLatch.countDown(); } - @Override - public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) { - log.error("对话失败", t); - countDownLatch.countDown(); - } }); // 等待 - countDownLatch.await(); - + new CountDownLatch(1).await(); } /** @@ -258,14 +117,14 @@ public class ApiTest { public void test_completions_future() throws Exception { // 入参;模型、请求信息 ChatCompletionRequest request = new ChatCompletionRequest(); - request.setModel(Model.CHATGLM_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro + request.setModel(Model.CHATGLM_LITE); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro request.setPrompt(new ArrayList() { private static final long serialVersionUID = -7988151926241837899L; { add(ChatCompletionRequest.Prompt.builder() .role(Role.user.getCode()) - .content("1+1") + .content("写个java冒泡排序") .build()); } }); @@ -276,79 +135,13 @@ public class ApiTest { log.info("测试结果:{}", response); } - /** - * 同步请求 - */ - @Test - public void test_completions_sync_01() throws Exception { - // 入参;模型、请求信息 - ChatCompletionRequest request = new ChatCompletionRequest(); - request.setModel(Model.GLM_3_5_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro - request.setPrompt(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - - { - add(ChatCompletionRequest.Prompt.builder() - .role(Role.user.getCode()) - .content("小傅哥是谁") - .build()); - } - }); - - // 24年1月发布的 glm-3-turbo、glm-4 支持函数、知识库、联网功能 - request.setTools(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - - { - add(ChatCompletionRequest.Tool.builder() - .type(ChatCompletionRequest.Tool.Type.web_search) - .webSearch(ChatCompletionRequest.Tool.WebSearch.builder().enable(true).searchQuery("小傅哥").build()) - .build()); - } - }); - - ChatCompletionSyncResponse response = openAiSession.completionsSync(request); - - log.info("测试结果:{}", JSON.toJSONString(response)); - } - - @Test - public void test_completions_sync_02() throws Exception { - // 入参;模型、请求信息 - ChatCompletionRequest request = new ChatCompletionRequest(); - request.setModel(Model.GLM_3_5_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro - request.setPrompt(new ArrayList() { - private static final long serialVersionUID = -7988151926241837899L; - - { - add(ChatCompletionRequest.Prompt.builder() - .role(Role.user.getCode()) - .content("1+1") - .build()); - } - }); - - ChatCompletionSyncResponse response = openAiSession.completionsSync(request); - - log.info("测试结果:{}", JSON.toJSONString(response)); - System.out.println(response.getChoices().get(0).getMessage().getContent()); - } - - @Test - public void test_genImages() throws Exception { - ImageCompletionRequest request = new ImageCompletionRequest(); - request.setModel(Model.COGVIEW_3); - request.setPrompt("画个小狗"); - ImageCompletionResponse response = openAiSession.genImages(request); - log.info("测试结果:{}", JSON.toJSONString(response)); - } @Test public void test_curl() { // 1. 配置文件 Configuration configuration = new Configuration(); configuration.setApiHost("https://open.bigmodel.cn/"); - configuration.setApiSecretKey("39580e34e175019c230fdd519817b381.*****"); + configuration.setApiSecretKey("6bb7238d01c52a4ce300513381168c4e.6eVqwo1tsctUgyzl"); // 2. 获取Token String token = BearerTokenUtils.getToken(configuration.getApiKey(), configuration.getApiSecret());