[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-105":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":29,"discoverSource":30},105,"HelloGML","Hello-Application-XH\u002FHelloGML","Hello-Application-XH","智谱清言网页版的 Cloudflare Worker 2API层，提供 OpenAI \u002F Claude \u002F Gemini 三种协议兼容接口，支持流式对话、Tools调用、AI 绘图、视频生成与多账号 Token 轮询。",null,"TypeScript",310,115,2,3,0,5,9,52,15,6.19,"MIT License",false,"main",true,[],"2026-06-12 02:00:08","# GLM-Free-API for Cloudflare Workers\nAbout\n\n智谱清言网页版的 Cloudflare Worker 2API层，提供 OpenAI \u002F Claude \u002F Gemini 三种协议兼容接口，支持流式对话、Tools调用、AI 绘图、视频生成与多账号 Token 轮询。\n\n---\n\n## 目录\n\n- [项目概述](#项目概述)\n- [核心特性](#核心特性)\n- [架构设计](#架构设计)\n- [快速开始](#快速开始)\n- [部署指南](#部署指南)\n- [Token 管理](#token-管理)\n- [API 使用指南](#api-使用指南)\n- [客户端接入](#客户端接入)\n- [高级功能](#高级功能)\n- [常见问题](#常见问题)\n\n---\n## 更新概述\n我们已经发布了预发布更新，新的更新主要面向与自动补号功能，更新可以自动获取游客token并且循环补号，真正实现无限API以及0维护，本更新已经推送至auto分支。当前更新并不稳定，可能有不确定的bug或者随机行为，因此不会发布mian主更新。需要的可以在auto更新下载部署。\n因为一些其他原因，本仓库的下一次更新时间，确定为5月19日。此前仓库不会有任何更新或者bug修复。\n## 项目概述\n\n本项目将智谱清言（chatglm.cn）网页端的私有流式 API 转换为标准的大语言模型服务接口，使任何支持 OpenAI、Claude 或 Gemini 协议的客户端都能直接调用 GLM 系列模型的能力。\n\n\n\n---\n\n## 核心特性\n\n| 特性                | 说明                                                         |\n| ------------------- | ------------------------------------------------------------ |\n| **多协议兼容**      | 同时支持 OpenAI (`\u002Fv1\u002Fchat\u002Fcompletions`)、Claude (`\u002Fv1\u002Fmessages`)、Gemini (`\u002Fv1beta\u002Fmodels\u002F...`) 三种请求格式 |\n| **流式响应**        | 完整的 SSE 流式输出，支持逐字显示与 reasoning_content（思考过程） |\n| **动态 Token 管理** | 认证与资源分离：API Key 仅用于身份验证，所有 `refresh_token` 组成统一池子按轮询策略调度 |\n| **多账号轮询**      | 支持在 Authorization Header 中以逗号分隔传入多个 api_key，自动选择可用账号 |\n| **AI 绘图**         | 对接智谱清言绘图智能体，支持文生图与多轮图生图               |\n| **视频生成**        | 支持文生视频、图生视频及风格参数控制                         |\n| **工具调用**        | 完整支持 Function Calling，兼容 OpenAI \u002F Claude 格式，适配 claude-code、open-code 等 IDE |\n| **联网搜索**        | 模型自动触发联网搜索，搜索结果通过 `reasoning_content` 字段返回 |\n| **长文档\u002F图像解析** | 支持 BASE64 图像上传与长文本上下文                           |\n\n---\n\n## 架构设计\n\n```\n┌─────────────────┐     ┌──────────────────────────┐     ┌─────────────────┐\n│   客户端应用     │────▶│  Cloudflare Worker (V8)  │────▶│  chatglm.cn     │\n│ (NextChat\u002FLobe) │     │                          │     │  私有 API       │\n└─────────────────┘     │  • KV: api_key 映射      │     └─────────────────┘\n                        │  • Cache: access_token   │\n                        │  • 签名算法              │\n                        │  • 协议适配层            │\n                        └──────────────────────────┘\n```\n\n**请求处理流程**\n\n1. 客户端以 `Authorization: Bearer \u003Capi_key>` 发起请求\n2. Worker 验证该 `api_key` 是否有效（检查 `ak:*` 记录）\n3. 从 Token 池（所有 `rt:*` 记录）中按轮询策略选择一个 `refresh_token`\n4. 若 `access_token` 未缓存或已过期，使用选中的 `refresh_token` 向智谱换取新的 `access_token`\n5. 构造带签名的请求头，调用智谱流式接口\n6. 将智谱 SSE 流实时转换为目标协议格式并返回给客户端\n\n---\n\n## 快速开始\n\n### 前置要求\n\n- [Node.js](https:\u002F\u002Fnodejs.org\u002F) 18+\n- [Cloudflare 账号](https:\u002F\u002Fdash.cloudflare.com\u002Fsign-up)（免费版即可）\n- 智谱清言账号及 `chatglm_refresh_token`\n\n### 获取 refresh_token\n\n登录 [chatglm.cn](https:\u002F\u002Fchatglm.cn) 后，打开浏览器开发者工具 → Application → Cookies，复制 `chatglm_refresh_token` 的值。\n\n### 安装与本地开发\n\n```bash\ncd cf-worker\nnpm install\n\n# 本地开发（自动模拟 KV 和 Cache）\nnpx wrangler dev --local\n```\n\n本地服务默认运行在 `http:\u002F\u002Flocalhost:8787`。\n\n---\n\n## 部署指南\n\n### 第一步：创建 KV Namespace\n\n```bash\nnpx wrangler kv:namespace create GLM_TOKENS\n```\n\n命令会输出如下内容，将 `id` 填入 `wrangler.toml`：\n\n```toml\n[[kv_namespaces]]\nbinding = \"GLM_TOKENS\"\nid = \"\u003C你的-namespace-id>\"\n```\n\n### 第二步：配置环境变量\n\n编辑 [`wrangler.toml`](wrangler.toml)：\n\n```toml\n[vars]\n# 智谱请求签名密钥（保持默认值即可，或自定义）\nSIGN_SECRET = \"8a1317a7468aa3ad86e997d08f3f31cb\"\n\n# 管理接口保护密钥，部署前务必修改为随机强密码\nADMIN_KEY = \"your-random-strong-password\"\n```\n\n> **安全提示**：`ADMIN_KEY` 用于保护 `\u002Fadmin\u002Ftoken` 接口。若留空或未设置，任何人都能修改 Token 映射，生产环境务必设置强密码。\n\n### 第三步：部署\n\n```bash\nnpx wrangler deploy\n```\n\n部署成功后，终端会输出 Worker 的访问地址。由于 `.workers.dev` 域名在中国大陆可能被拦截，建议绑定自定义域名以获得最佳访问体验。\n\n---\n\n## Token 管理\n\n本项目采用**认证与资源分离**的架构：\n\n- **API Key**：仅用于身份认证，证明调用方有权使用服务。可配置多个，效果等价。\n- **Token 池**：所有智谱 `refresh_token` 组成一个共享池，系统按**轮询（Round Robin）**策略自动调度。\n\n这种设计让你可以为不同客户端分配不同的 API Key，但它们背后共享同一组智谱账号资源，实现真正的统一系统调控。\n\n---\n\n### API Key 管理\n\n#### 添加 API Key\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fadmin\u002Fapikey \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Admin-Key: \u003Cyour-admin-key>\" \\\n  -d '{ \"api_key\": \"sk-my-personal-key\" }'\n```\n\n响应：\n\n```json\n{ \"success\": true, \"message\": \"API key added successfully\" }\n```\n\n#### 查看已配置的 API Key\n\n```bash\ncurl -X GET https:\u002F\u002F\u003Cyour-worker-domain>\u002Fadmin\u002Fapikey \\\n  -H \"X-Admin-Key: \u003Cyour-admin-key>\"\n```\n\n响应：\n\n```json\n{\n  \"keys\": [\n    { \"api_key\": \"sk-my-personal-key\" },\n    { \"api_key\": \"sk-team-shared-key\" }\n  ]\n}\n```\n\n#### 删除 API Key\n\n```bash\ncurl -X DELETE https:\u002F\u002F\u003Cyour-worker-domain>\u002Fadmin\u002Fapikey \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Admin-Key: \u003Cyour-admin-key>\" \\\n  -d '{ \"api_key\": \"sk-my-personal-key\" }'\n```\n\n---\n\n### Token 池管理\n\n#### 添加 Refresh Token 到池子\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fadmin\u002Ftoken \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Admin-Key: \u003Cyour-admin-key>\" \\\n  -d '{ \"refresh_token\": \"eyJhbGciOiJIUzI1NiIs...\" }'\n```\n\n响应：\n\n```json\n{ \"success\": true, \"message\": \"Token added to pool\", \"id\": \"tk_1234567890_abc123\" }\n```\n\n#### 查看 Token 池\n\n```bash\ncurl -X GET https:\u002F\u002F\u003Cyour-worker-domain>\u002Fadmin\u002Ftoken \\\n  -H \"X-Admin-Key: \u003Cyour-admin-key>\"\n```\n\n响应：\n\n```json\n{\n  \"tokens\": [\n    { \"id\": \"tk_1234567890_abc123\", \"token_preview\": \"eyJhbG...****...xyz\" },\n    { \"id\": \"tk_1234567891_def456\", \"token_preview\": \"eyJhbG...****...abc\" }\n  ]\n}\n```\n\n#### 从池子删除 Token\n\n```bash\ncurl -X DELETE https:\u002F\u002F\u003Cyour-worker-domain>\u002Fadmin\u002Ftoken \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Admin-Key: \u003Cyour-admin-key>\" \\\n  -d '{ \"id\": \"tk_1234567890_abc123\" }'\n```\n\n---\n\n### 多 Token 轮询\n\n系统会自动从 Token 池中按轮询策略选择可用账号。如需更高可用性，可在池子中添加多个 `refresh_token`。当某个 Token 失效时，只需在管理面板中更新池子即可，**无需修改任何客户端配置**。\n\n同时，单次请求仍支持在 Authorization Header 中以逗号分隔传入多个 api_key（容错用途）：\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer key-a,key-b,key-c\" \\\n  ...\n```\n\nWorker 会依次尝试每个 key，使用第一个通过认证的账号发起请求。\n\n---\n\n## API 使用指南\n\n### OpenAI 兼容接口\n\n#### 非流式对话\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"messages\": [\n      { \"role\": \"system\", \"content\": \"你是一个乐于助人的助手\" },\n      { \"role\": \"user\", \"content\": \"请用一句话解释量子计算\" }\n    ],\n    \"stream\": false\n  }'\n```\n\n#### 流式对话\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"messages\": [{ \"role\": \"user\", \"content\": \"写一首关于春天的短诗\" }],\n    \"stream\": true\n  }'\n```\n\n#### 携带上下文的多轮对话\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"conversation_id\": \"conv_abc123\",\n    \"messages\": [\n      { \"role\": \"user\", \"content\": \"我叫张三\" },\n      { \"role\": \"assistant\", \"content\": \"你好张三，很高兴认识你。\" },\n      { \"role\": \"user\", \"content\": \"我叫什么名字？\" }\n    ]\n  }'\n```\n\n#### 工具调用（Function Calling）\n\n支持 OpenAI 标准 `tools` \u002F `tool_choice` 参数，可对接 claude-code、open-code、Dify Agent 等依赖工具调用的客户端。\n\n**发起工具调用请求**\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"messages\": [{ \"role\": \"user\", \"content\": \"北京今天天气怎么样？\" }],\n    \"tools\": [\n      {\n        \"type\": \"function\",\n        \"function\": {\n          \"name\": \"get_weather\",\n          \"description\": \"获取指定城市的当前天气\",\n          \"parameters\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"city\": { \"type\": \"string\", \"description\": \"城市名称\" }\n            },\n            \"required\": [\"city\"]\n          }\n        }\n      }\n    ]\n  }'\n```\n\n响应示例（模型决定调用工具时）：\n\n```json\n{\n  \"choices\": [{\n    \"message\": {\n      \"role\": \"assistant\",\n      \"content\": null,\n      \"tool_calls\": [{\n        \"id\": \"call_xxx\",\n        \"type\": \"function\",\n        \"function\": {\n          \"name\": \"get_weather\",\n          \"arguments\": \"{\\\"city\\\":\\\"北京\\\"}\"\n        }\n      }]\n    }\n  }]\n}\n```\n\n**多轮对话中的工具结果反馈**\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"messages\": [\n      { \"role\": \"user\", \"content\": \"北京今天天气怎么样？\" },\n      { \"role\": \"assistant\", \"tool_calls\": [{ \"id\": \"call_xxx\", \"type\": \"function\", \"function\": { \"name\": \"get_weather\", \"arguments\": \"{\\\"city\\\":\\\"北京\\\"}\" } }] },\n      { \"role\": \"tool\", \"tool_call_id\": \"call_xxx\", \"content\": \"晴朗，25°C，微风\" },\n      { \"role\": \"user\", \"content\": \"上海呢？\" }\n    ],\n    \"tools\": [...]\n  }'\n```\n\n> **注意**：流式输出同样支持工具调用。在流式模式下，工具调用 JSON 会被智能缓冲，不会以普通文本形式泄露到 `content` 字段中。\n\n### Claude 兼容接口\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fmessages \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-API-Key: \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"messages\": [{ \"role\": \"user\", \"content\": \"你好\" }],\n    \"stream\": true,\n    \"max_tokens\": 4096\n  }'\n```\n\n#### Claude 格式的工具调用\n\nClaude 的 `tools` \u002F `tool_choice` 参数会自动转换为 OpenAI 格式后处理，返回时也会转换回 Claude 的 `tool_use` \u002F `tool_result` 格式：\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fmessages \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-API-Key: \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"messages\": [{ \"role\": \"user\", \"content\": \"查一下北京的天气\" }],\n    \"tools\": [\n      {\n        \"name\": \"get_weather\",\n        \"description\": \"获取指定城市的当前天气\",\n        \"input_schema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"city\": { \"type\": \"string\" }\n          },\n          \"required\": [\"city\"]\n        }\n      }\n    ],\n    \"stream\": false\n  }'\n```\n\n### Gemini 兼容接口\n\n```bash\ncurl -X POST \"https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1beta\u002Fmodels\u002Fgemini-1.5-pro:streamGenerateContent\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"x-goog-api-key: \u003Cyour-api-key>\" \\\n  -d '{\n    \"contents\": [{ \"role\": \"user\", \"parts\": [{ \"text\": \"你好\" }] }]\n  }'\n```\n\n### 图像生成\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fimages\u002Fgenerations \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"prompt\": \"一只穿着宇航服的猫咪在月球上散步\",\n    \"model\": \"glm-4.7\",\n    \"response_format\": \"url\"\n  }'\n```\n\n| 参数              | 类型   | 必填 | 说明                                                   |\n| ----------------- | ------ | ---- | ------------------------------------------------------ |\n| `prompt`          | string | 是   | 图像描述                                               |\n| `model`           | string | 否   | 智能体 ID（24 位以上字母数字），留空使用默认绘图智能体 |\n| `response_format` | string | 否   | `url` 或 `b64_json`，默认 `url`                        |\n\n### 视频生成\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fvideos\u002Fgenerations \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\" \\\n  -d '{\n    \"model\": \"glm-4.7\",\n    \"prompt\": \"一只金毛犬在海边奔跑\",\n    \"video_style\": \"电影感\",\n    \"emotional_atmosphere\": \"温馨和谐\",\n    \"mirror_mode\": \"推近\"\n  }'\n```\n\n| 参数                   | 类型   | 必填 | 可选值                                            |\n| ---------------------- | ------ | ---- | ------------------------------------------------- |\n| `video_style`          | string | 否   | `卡通3D` \u002F `黑白老照片` \u002F `油画` \u002F `电影感`       |\n| `emotional_atmosphere` | string | 否   | `温馨和谐` \u002F `生动活泼` \u002F `紧张刺激` \u002F `凄凉寂寞` |\n| `mirror_mode`          | string | 否   | `水平` \u002F `垂直` \u002F `推近` \u002F `拉远`                 |\n| `image_url`            | string | 否   | 图生视频时的参考图片 URL                          |\n| `audio_id`             | string | 否   | 指定音频 ID                                       |\n\n### Token 状态检查\n\n```bash\ncurl -X POST https:\u002F\u002F\u003Cyour-worker-domain>\u002Ftoken\u002Fcheck \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\"\n```\n\n响应：\n\n```json\n{ \"live\": true }\n```\n\n---\n\n## 客户端接入\n\n### OpenAI SDK (Python)\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=\"your-api-key\",\n    base_url=\"https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\"\n)\n\nresponse = client.chat.completions.create(\n    model=\"glm-4.7\",\n    messages=[{\"role\": \"user\", \"content\": \"你好\"}],\n    stream=True\n)\n\nfor chunk in response:\n    if chunk.choices[0].delta.content:\n        print(chunk.choices[0].delta.content, end=\"\")\n```\n\n### OpenAI SDK (Node.js)\n\n```javascript\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: \"your-api-key\",\n  baseUrl: \"https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\",\n});\n\nconst stream = await client.chat.completions.create({\n  model: \"glm-4.7\",\n  messages: [{ role: \"user\", content: \"你好\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0]?.delta?.content || \"\");\n}\n```\n\n### claude-code\n\n```bash\nclaude config set apiKey your-api-key\nexport CLAUDE_API_BASE_URL=https:\u002F\u002F\u003Cyour-worker-domain>\nclaude\n```\n\n### gemini-cli\n\n```bash\nexport GEMINI_API_KEY=your-api-key\nexport GEMINI_BASE_URL=https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1beta\ngemini -m glm-4.7\n```\n\n### 第三方聊天客户端\n\n| 客户端                          | 配置方式                                                     |\n| ------------------------------- | ------------------------------------------------------------ |\n| **NextChat (ChatGPT-Next-Web)** | 接口地址填 `https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1`，API Key 填你的自定义 api_key |\n| **LobeChat**                    | 添加自定义服务商，OpenAI 兼容模式，Base URL 同上             |\n| **Dify**                        | 模型供应商选择 OpenAI API Compatible，填入 base_url 和 api_key |\n\n---\n\n## 高级功能\n\n### 自定义域名绑定\n\n`.workers.dev` 域名在中国大陆访问可能被重置，建议绑定自定义域名：\n\n1. 在 Cloudflare Dashboard 进入你的域名 DNS 管理页\n2. 添加一个 CNAME 记录，如 `api.yourdomain.com` → `glm-free-api-worker.your-subdomain.workers.dev`\n3. 进入 Worker 设置 → Triggers → Custom Domains，添加 `api.yourdomain.com`\n\n### 模型列表\n\n支持通过标准接口查询可用模型：\n\n```bash\ncurl https:\u002F\u002F\u003Cyour-worker-domain>\u002Fv1\u002Fmodels \\\n  -H \"Authorization: Bearer \u003Cyour-api-key>\"\n```\n\n\n### 响应中的 reasoning_content\n\n当模型触发联网搜索或深度思考时，流式响应中会包含 `reasoning_content` 字段：\n\n```json\n{\n  \"choices\": [{\n    \"delta\": {\n      \"reasoning_content\": \"> 检索 量子计算最新进展 ...\"\n    }\n  }]\n}\n```\n\n客户端可将其渲染为灰色思考过程，与正式回答区分开。\n\n### 工具调用实现机制\n\n由于智谱清言网页版 API 暂不原生支持工具调用，本项目采用 **Prompt Engineering + 后处理解析** 的方案实现兼容：\n\n1. **注入工具描述**：请求前将可用工具的名称、描述、参数结构以结构化英文指令形式注入到 `system` 消息中，并附带 Few-shot 示例，引导模型在需要时输出标准 JSON。\n\n2. **智能流式缓冲**：在流式输出场景下，Worker 会检测输出内容是否以 `{` 开头。若是，则缓冲约 20 个字符后判断其是否为工具调用 JSON；确认后将其解析为 `tool_calls`，避免 JSON 文本泄露到普通 `content` 中。\n\n3. **鲁棒解析**：`parseToolCalls` 函数支持标准 JSON、单引号 JSON 以及无引号 key 的宽松格式；若解析失败，会尝试常见修复策略（补全括号、替换单引号等）后再次解析。\n\n4. **协议转换**：Claude 协议的 `tool_use` \u002F `tool_result` 消息会在进入智谱前被转换为 OpenAI 的 `tool_calls` \u002F `tool` 格式，返回时再转换回去，确保对上层客户端完全透明。\n\n> **已知限制**：工具调用的可靠性取决于模型对 prompt 指令的遵循程度。过于复杂的嵌套参数或含糊的工具描述可能导致解析失败。建议为工具提供清晰、准确的 `description` 和 `parameters` 定义。\n\n---\n\n\n## 技术栈\n\n- **运行时**：Cloudflare Workers (V8 Isolate)\n- **语言**：TypeScript\n- **存储**：Cloudflare KV（Token 映射）、Cache API（access_token 缓存）\n- **流式处理**：Web Streams API + 手写 SSE 解析器\n\n---\n\n## 免责声明\n\n本项目仅供学习研究交流使用，不提供任何担保。使用本服务产生的任何法律责任由使用者自行承担。请遵守智谱清言的用户协议及相关法律法规。\n\n# 链接\n\nLinux.do 社区，互联网上唯一的净土！\n","Hello-Application-XH\u002FHelloGML 是一个基于 Cloudflare Workers 的 API 层，为智谱清言网页版提供 OpenAI、Claude 和 Gemini 三种协议兼容的接口。其核心功能包括流式对话、Tools 调用、AI 绘图、视频生成以及多账号 Token 轮询。该项目使用 TypeScript 编写，支持完整的 SSE 流式输出和动态 Token 管理，能够实现资源的有效调度。适用于需要在不同客户端或应用中统一调用大语言模型服务的场景，如开发聊天机器人、智能绘图工具或视频生成应用等。通过简单的配置和部署，开发者可以快速接入并利用这些高级功能，提高开发效率和用户体验。","2026-06-11 02:30:55","CREATED_QUERY"]