{"id":20912541,"url":"https://github.com/fuzhengwei/chatglm-sdk-java","last_synced_at":"2025-09-12T18:14:58.743Z","repository":{"id":199504091,"uuid":"703047329","full_name":"fuzhengwei/chatglm-sdk-java","owner":"fuzhengwei","description":"智谱AI大模型开放SDK - By 小傅哥版本","archived":false,"fork":false,"pushed_at":"2024-11-01T00:11:55.000Z","size":196,"stargazers_count":95,"open_issues_count":7,"forks_count":21,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-19T03:04:27.745Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bugstack.cn/md/project/chatgpt/chatgpt.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fuzhengwei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-10T13:49:59.000Z","updated_at":"2025-04-27T08:25:09.000Z","dependencies_parsed_at":"2023-10-10T16:59:35.492Z","dependency_job_id":"1bf6a8f5-4ef2-4f54-a94a-da9fb7d6405d","html_url":"https://github.com/fuzhengwei/chatglm-sdk-java","commit_stats":null,"previous_names":["fuzhengwei/chatglm-sdk-java"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fuzhengwei/chatglm-sdk-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuzhengwei%2Fchatglm-sdk-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuzhengwei%2Fchatglm-sdk-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuzhengwei%2Fchatglm-sdk-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuzhengwei%2Fchatglm-sdk-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fuzhengwei","download_url":"https://codeload.github.com/fuzhengwei/chatglm-sdk-java/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuzhengwei%2Fchatglm-sdk-java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274852209,"owners_count":25361756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T14:32:02.881Z","updated_at":"2025-09-12T18:14:58.677Z","avatar_url":"https://github.com/fuzhengwei.png","language":"Java","funding_links":[],"categories":["人工智能"],"sub_categories":["Spring Cloud框架"],"readme":"# 智谱Ai大模型开放SDK - By 小傅哥版本\n\n为了让研发伙伴更快，更方便的接入使用智谱Ai大模型。从而开发的 chatglm-sdk-java 也欢迎👏🏻大家基于智谱API接口补充需要的功能。\n\n此SDK设计，以 Session 会话模型，提供工厂🏭创建服务。代码非常清晰，易于扩展、易于维护。你的PR/ISSUE贡献💐会让AI更加璀璨，[感谢智谱AI团队](https://www.zhipuai.cn/)。\n\n---\n\n\u003e**作者**：小傅哥 - 个人博客 [**bugstack.cn**](https://bugstack.cn/)，互联网大厂架构师，《重学Java设计模式》、《手写MyBatis：渐进式源码实践》图书作者。`欢迎百度搜索：小傅哥bugstack`\n\n## 👣目录\n\n1. 组件配置\n2. 功能测试\n   1. 代码执行 - `使用：代码的方式主要用于程序接入`\n   2. 脚本测试 - `测试：生成Token，直接通过HTTP访问Ai服务`\n3. 程序接入\n\n## 1. 组件配置\n\n- 申请ApiKey：[https://open.bigmodel.cn/usercenter/apikeys](https://open.bigmodel.cn/usercenter/apikeys) - 注册申请开通，即可获得 ApiKey\n- 运行环境：JDK 1.8+\n- 支持模型：chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro、chatglm_turbo、glm-3-turbo、glm-4、glm-4v、cogview-3\n- maven pom - `已发布到Maven仓库`\n\n```pom\n\u003cdependency\u003e\n    \u003cgroupId\u003ecn.bugstack\u003c/groupId\u003e\n    \u003cartifactId\u003echatglm-sdk-java\u003c/artifactId\u003e\n    \u003cversion\u003e2.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n- 源码(Github)：[https://github.com/fuzhengwei/chatglm-sdk-java](https://github.com/fuzhengwei/chatglm-sdk-java)\n- 源码(Gitee)：[https://gitee.com/fustack/chatglm-sdk-java](https://gitee.com/fustack/chatglm-sdk-java)\n- 源码(Gitcode)：[https://gitcode.net/KnowledgePlanet/road-map/chatglm-sdk-java](https://gitcode.net/KnowledgePlanet/road-map/chatglm-sdk-java)\n\n## 2. 功能测试\n\n### 2.1 代码执行\n\n```java\nprivate OpenAiSession openAiSession;\n\n@Before\npublic void test_OpenAiSessionFactory() {\n    // 1. 配置文件\n    Configuration configuration = new Configuration();\n    configuration.setApiHost(\"https://open.bigmodel.cn/\");\n    configuration.setApiSecretKey(\"62ddec38b1d0b9a7b0fddaf271e6ed90.HpD0SUBUlvqd05ey\");\n    configuration.setLevel(HttpLoggingInterceptor.Level.BODY);\n    // 2. 会话工厂\n    OpenAiSessionFactory factory = new DefaultOpenAiSessionFactory(configuration);\n    // 3. 开启会话\n    this.openAiSession = factory.openSession();\n}\n```\n\n- 测试前申请你的 ApiKey 填写到 setApiSecretKey 中使用。\n\n#### 2.1.1 流式对话 - 兼容旧版模式运行\n\n```java\n/**\n * 流式对话；\n * 1. 默认 isCompatible = true 会兼容新旧版数据格式\n * 2. GLM_3_5_TURBO、GLM_4 支持联网等插件\n */\n@Test\npublic void test_completions() throws Exception {\n    CountDownLatch countDownLatch = new CountDownLatch(1);\n    // 入参；模型、请求信息\n    ChatCompletionRequest request = new ChatCompletionRequest();\n    request.setModel(Model.GLM_3_5_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro\n    request.setIncremental(false);\n    request.setIsCompatible(true); // 是否对返回结果数据做兼容，24年1月发布的 GLM_3_5_TURBO、GLM_4 模型，与之前的模型在返回结果上有差异。开启 true 可以做兼容。\n    // 24年1月发布的 glm-3-turbo、glm-4 支持函数、知识库、联网功能\n    request.setTools(new ArrayList\u003cChatCompletionRequest.Tool\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Tool.builder()\n                    .type(ChatCompletionRequest.Tool.Type.web_search)\n                    .webSearch(ChatCompletionRequest.Tool.WebSearch.builder().enable(true).searchQuery(\"小傅哥\").build())\n                    .build());\n        }\n    });\n    request.setPrompt(new ArrayList\u003cChatCompletionRequest.Prompt\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(\"小傅哥的是谁\")\n                    .build());\n        }\n    });\n    // 请求\n    openAiSession.completions(request, new EventSourceListener() {\n        @Override\n        public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) {\n            ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class);\n            log.info(\"测试结果 onEvent：{}\", response.getData());\n            // type 消息类型，add 增量，finish 结束，error 错误，interrupted 中断\n            if (EventType.finish.getCode().equals(type)) {\n                ChatCompletionResponse.Meta meta = JSON.parseObject(response.getMeta(), ChatCompletionResponse.Meta.class);\n                log.info(\"[输出结束] Tokens {}\", JSON.toJSONString(meta));\n            }\n        }\n        @Override\n        public void onClosed(EventSource eventSource) {\n            log.info(\"对话完成\");\n            countDownLatch.countDown();\n        }\n        @Override\n        public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) {\n            log.info(\"对话异常\");\n            countDownLatch.countDown();\n        }\n    });\n    // 等待\n    countDownLatch.await();\n}\n```\n\n#### 2.1.2 流式对话 - 新版调用\n\n\u003cdetails\u003e\u003csummary\u003e\u003ca\u003e👉查看代码\u003c/a\u003e\u003c/summary\u003e\u003c/br\u003e\n\n```java\n/**\n * 流式对话；\n * 1. 与 test_completions 测试类相比，只是设置 isCompatible = false 这样就是使用了新的数据结构。onEvent 处理接收数据有差异\n * 2. 不兼容旧版格式的话，仅支持 GLM_3_5_TURBO、GLM_4 其他模型会有解析错误\n */\n@Test\npublic void test_completions_new() throws Exception {\n    CountDownLatch countDownLatch = new CountDownLatch(1);\n    // 入参；模型、请求信息\n    ChatCompletionRequest request = new ChatCompletionRequest();\n    request.setModel(Model.GLM_3_5_TURBO); // GLM_3_5_TURBO、GLM_4\n    request.setIsCompatible(false);\n    // 24年1月发布的 glm-3-turbo、glm-4 支持函数、知识库、联网功能\n    request.setTools(new ArrayList\u003cChatCompletionRequest.Tool\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Tool.builder()\n                    .type(ChatCompletionRequest.Tool.Type.web_search)\n                    .webSearch(ChatCompletionRequest.Tool.WebSearch.builder().enable(true).searchQuery(\"小傅哥\").build())\n                    .build());\n        }\n    });\n    request.setMessages(new ArrayList\u003cChatCompletionRequest.Prompt\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(\"小傅哥的是谁\")\n                    .build());\n        }\n    });\n    // 请求\n    openAiSession.completions(request, new EventSourceListener() {\n        @Override\n        public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) {\n            if (\"[DONE]\".equals(data)) {\n                log.info(\"[输出结束] Tokens {}\", JSON.toJSONString(data));\n                return;\n            }\n            ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class);\n            log.info(\"测试结果：{}\", JSON.toJSONString(response));\n        }\n        @Override\n        public void onClosed(EventSource eventSource) {\n            log.info(\"对话完成\");\n            countDownLatch.countDown();\n        }\n        @Override\n        public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) {\n            log.error(\"对话失败\", t);\n            countDownLatch.countDown();\n        }\n    });\n    // 等待\n    countDownLatch.await();\n}\n```\n\n\u003c/details\u003e\n\n#### 2.1.3 流式对话 - 多模态图片识别 4v（vision）\n\n\u003cdetails\u003e\u003csummary\u003e\u003ca\u003e👉查看代码\u003c/a\u003e\u003c/summary\u003e\u003c/br\u003e\n\n```java\n@Test\npublic void test_completions_4v() throws Exception {\n    CountDownLatch countDownLatch = new CountDownLatch(1);\n    // 入参；模型、请求信息\n    ChatCompletionRequest request = new ChatCompletionRequest();\n    request.setModel(Model.GLM_4V); // GLM_3_5_TURBO、GLM_4\n    request.setStream(true);\n    request.setMessages(new ArrayList\u003cChatCompletionRequest.Prompt\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            // content 字符串格式\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(\"这个图片写了什么\")\n                    .build());\n            // content 对象格式\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(ChatCompletionRequest.Prompt.Content.builder()\n                            .type(ChatCompletionRequest.Prompt.Content.Type.text.getCode())\n                            .text(\"这是什么图片\")\n                            .build())\n                    .build());\n            // content 对象格式，上传图片；图片支持url、basde64\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(ChatCompletionRequest.Prompt.Content.builder()\n                            .type(ChatCompletionRequest.Prompt.Content.Type.image_url.getCode())\n                            .imageUrl(ChatCompletionRequest.Prompt.Content.ImageUrl.builder().url(\"https://bugstack.cn/images/article/project/chatgpt/chatgpt-extra-231011-01.png\").build())\n                            .build())\n                    .build());\n        }\n    });\n    openAiSession.completions(request, new EventSourceListener() {\n        @Override\n        public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) {\n            if (\"[DONE]\".equals(data)) {\n                log.info(\"[输出结束] Tokens {}\", JSON.toJSONString(data));\n                return;\n            }\n            ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class);\n            log.info(\"测试结果：{}\", JSON.toJSONString(response));\n        }\n        @Override\n        public void onClosed(EventSource eventSource) {\n            log.info(\"对话完成\");\n            countDownLatch.countDown();\n        }\n        @Override\n        public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) {\n            log.error(\"对话失败\", t);\n            countDownLatch.countDown();\n        }\n    });\n    // 等待\n    countDownLatch.await();\n}\n```\n\n\u003c/details\u003e\n\n#### 2.1.4 同步请求 - future 模式\n\n\u003cdetails\u003e\u003csummary\u003e\u003ca\u003e👉查看代码\u003c/a\u003e\u003c/summary\u003e\u003c/br\u003e\n\n```java\n@Test\npublic void test_completions_future() throws Exception {\n    // 入参；模型、请求信息\n    ChatCompletionRequest request = new ChatCompletionRequest();\n    request.setModel(Model.CHATGLM_TURBO); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro\n    request.setPrompt(new ArrayList\u003cChatCompletionRequest.Prompt\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(\"1+1\")\n                    .build());\n        }\n    });\n    CompletableFuture\u003cString\u003e future = openAiSession.completions(request);\n    String response = future.get();\n    log.info(\"测试结果：{}\", response);\n}\n```\n\n\u003c/details\u003e\n\n\n#### 2.1.5 同步请求 - 普通模式\n\n\u003cdetails\u003e\u003csummary\u003e\u003ca\u003e👉查看代码\u003c/a\u003e\u003c/summary\u003e\u003c/br\u003e\n\n```java\n@Test\npublic void test_completions_sync() throws Exception {\n    // 入参；模型、请求信息\n    ChatCompletionRequest request = new ChatCompletionRequest();\n    request.setModel(Model.GLM_4V); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro\n    request.setPrompt(new ArrayList\u003cChatCompletionRequest.Prompt\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Prompt.builder()\n                    .role(Role.user.getCode())\n                    .content(\"小傅哥是谁\")\n                    .build());\n        }\n    });\n    // 24年1月发布的 glm-3-turbo、glm-4 支持函数、知识库、联网功能\n    request.setTools(new ArrayList\u003cChatCompletionRequest.Tool\u003e() {\n        private static final long serialVersionUID = -7988151926241837899L;\n        {\n            add(ChatCompletionRequest.Tool.builder()\n                    .type(ChatCompletionRequest.Tool.Type.web_search)\n                    .webSearch(ChatCompletionRequest.Tool.WebSearch.builder().enable(true).searchQuery(\"小傅哥\").build())\n                    .build());\n        }\n    });\n    ChatCompletionSyncResponse response = openAiSession.completionsSync(request);\n    log.info(\"测试结果：{}\", JSON.toJSONString(response));\n}\n```\n\n\u003c/details\u003e\n\n#### 2.1.6 文生图\n\n\u003cdetails\u003e\u003csummary\u003e\u003ca\u003e👉查看代码\u003c/a\u003e\u003c/summary\u003e\u003c/br\u003e\n\n```java\n@Test\npublic void test_genImages() throws Exception {\n    ImageCompletionRequest request = new ImageCompletionRequest();\n    request.setModel(Model.COGVIEW_3);\n    request.setPrompt(\"画个小狗\");\n    ImageCompletionResponse response = openAiSession.genImages(request);\n    log.info(\"测试结果：{}\", JSON.toJSONString(response));\n}\n```\n\n\u003c/details\u003e\n\n\n### 2.2 脚本测试\n\n```java\n@Test\npublic void test_curl() {\n    // 1. 配置文件\n    Configuration configuration = new Configuration();\n    configuration.setApiHost(\"https://open.bigmodel.cn/\");\n    configuration.setApiSecretKey(\"4e087e4135306ef4a676f0cce3cee560.sgP2D****\");\n    // 2. 获取Token\n    String token = BearerTokenUtils.getToken(configuration.getApiKey(), configuration.getApiSecret());\n    log.info(\"1. 在智谱Ai官网，申请 ApiSeretKey 配置到此测试类中，替换 setApiSecretKey 值。 https://open.bigmodel.cn/usercenter/apikeys\");\n    log.info(\"2. 运行 test_curl 获取 token：{}\", token);\n    log.info(\"3. 将获得的 token 值，复制到 curl.sh 中，填写到 Authorization: Bearer 后面\");\n    log.info(\"4. 执行完步骤3以后，可以复制直接运行 curl.sh 文件，或者复制 curl.sh 文件内容到控制台/终端/ApiPost中运行\");\n}\n```\n\n```java\ncurl -X POST \\\n        -H \"Authorization: Bearer \u003c把获得的Token填写这，并去掉两个尖括号\u003e\" \\\n        -H \"Content-Type: application/json\" \\\n        -H \"User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)\" \\\n        -H \"Accept: text/event-stream\" \\\n        -d '{\n        \"top_p\": 0.7,\n        \"sseFormat\": \"data\",\n        \"temperature\": 0.9,\n        \"incremental\": true,\n        \"request_id\": \"xfg-1696992276607\",\n        \"prompt\": [\n        {\n        \"role\": \"user\",\n        \"content\": \"写个java冒泡排序\"\n        }\n        ]\n        }' \\\n  http://open.bigmodel.cn/api/paas/v3/model-api/chatglm_lite/sse-invoke\n```\n\n- 运行后你会获得一个 Token 信息，之后在 curl.sh 中替换  Authorization: Bearer 后面的值。就可以执行测试了。\n- [curl.sh](https://github.com/fuzhengwei/chatglm-sdk-java/blob/master/docs/curl/curl.sh) | [curl-cogview-3.sh](https://github.com/fuzhengwei/chatglm-sdk-java/blob/master/docs/curl/curl-cogview-3.sh) | [curl-glm-3-turbo.sh](https://github.com/fuzhengwei/chatglm-sdk-java/blob/master/docs/curl/curl-glm-3-turbo.sh) | [curl-glm-4.sh](https://github.com/fuzhengwei/chatglm-sdk-java/blob/master/docs/curl/curl-glm-4.sh) | [curl-glm-4v.sh](https://github.com/fuzhengwei/chatglm-sdk-java/blob/master/docs/curl/curl-glm-4v.sh)\n\n## 3. 程序接入\n\nSpringBoot 配置类\n\n```java\n@Configuration\n@EnableConfigurationProperties(ChatGLMSDKConfigProperties.class)\npublic class ChatGLMSDKConfig {\n\n    @Bean\n    @ConditionalOnProperty(value = \"chatglm.sdk.config.enabled\", havingValue = \"true\", matchIfMissing = false)\n    public OpenAiSession openAiSession(ChatGLMSDKConfigProperties properties) {\n        // 1. 配置文件\n        cn.bugstack.chatglm.session.Configuration configuration = new cn.bugstack.chatglm.session.Configuration();\n        configuration.setApiHost(properties.getApiHost());\n        configuration.setApiSecretKey(properties.getApiSecretKey());\n\n        // 2. 会话工厂\n        OpenAiSessionFactory factory = new DefaultOpenAiSessionFactory(configuration);\n\n        // 3. 开启会话\n        return factory.openSession();\n    }\n\n}\n\n@Data\n@ConfigurationProperties(prefix = \"chatglm.sdk.config\", ignoreInvalidFields = true)\npublic class ChatGLMSDKConfigProperties {\n\n    /** 状态；open = 开启、close 关闭 */\n    private boolean enable;\n    /** 转发地址 */\n    private String apiHost;\n    /** 可以申请 sk-*** */\n    private String apiSecretKey;\n\n}\n```\n\n```java\n@Autowired(required = false)\nprivate OpenAiSession openAiSession;\n```\n\n- 注意：如果你在服务中配置了关闭启动 ChatGLM SDK 那么注入 openAiSession 为 null\n\nyml 配置\n\n```pom\n# ChatGLM SDK Config\nchatglm:\n  sdk:\n    config:\n      # 状态；true = 开启、false 关闭\n      enable: false\n      # 官网地址 \n      api-host: https://open.bigmodel.cn/\n      # 官网申请 https://open.bigmodel.cn/usercenter/apikeys\n      api-secret-key: 4e087e4135306ef4a676f0cce3cee560.sgP2DUs*****\n```\n\n---\n\n**对接案例**：[https://bugstack.cn/md/road-map/mock.html](https://bugstack.cn/md/road-map/mock.html)\n\n---\n\n- 👨‍💻 成长：[关于我，从小白到架构师的成长经历](https://www.bilibili.com/video/BV1FF41137q5)\n- 🚌 作品：[`CodeGuide | 程序员编码指南`](https://github.com/fuzhengwei/CodeGuide) | [`RoadMap 编程路书`](https://github.com/fuzhengwei/RoadMap) | [`Java 数据结构和算法`](https://github.com/fuzhengwei/java-algorithms) | [`IM 仿微信`](https://github.com/fuzhengwei/NaiveChat) | [`Java 面经手册`](https://github.com/fuzhengwei/interview) | [`IntelliJ IDEA 插件开发`](https://github.com/fuzhengwei/guide-idea-plugin) | [`Lottery 抽奖系统 - 基于领域驱动设计的四层架构实践`](https://github.com/fuzhengwei/Lottery) | [`API网关`](https://github.com/fuzhengwei/api-gateway) | [`手写MyBatis`](https://github.com/fuzhengwei/small-mybatis) | [`重学Java设计模式`](https://github.com/fuzhengwei/itstack-demo-design) | [`Netty 实战案例`](https://github.com/fuzhengwei/itstack-demo-netty) | [`字节码编程`](https://github.com/fuzhengwei/itstack-demo-bytecode) | [`ChatGPT AI 问答助手`](https://github.com/fuzhengwei/chatbot-api) | [更多搜索...](https://github.com/fuzhengwei?tab=repositories)\n- 🌱 干货：[公众号『 bugstack虫洞栈 』](https://bugstack.cn/images/personal/qrcode.png)\n- 📝 博客：[bugstack.cn](https://bugstack.cn/) - 足够硬核，内容老狠了！\n- 📺 视频：[B站 小傅哥の码场](https://space.bilibili.com/15637440)\n- 💌 微信：[fustack](https://bugstack.cn/images/personal/fustack.png) - 备注来意\n- 🐾 我的编程知识星球：[实战生产级项目、手写框架级源码，可以向我 1对1 提问，解答技术/职场/规划问题](https://bugstack.cn/md/zsxq/introduce.html)\n\n---\n\n```shell\nmd5 chatglm-sdk-java-2.2.pom \u003e chatglm-sdk-java-2.2.pom.md5\nshasum chatglm-sdk-java-2.2.pom \u003e chatglm-sdk-java-2.2.pom.sha1\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuzhengwei%2Fchatglm-sdk-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuzhengwei%2Fchatglm-sdk-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuzhengwei%2Fchatglm-sdk-java/lists"}