่ฝป้็บง OpenAI API ๅ ผๅฎนไปฃ็ๆๅก๏ผ้่ฟ Claude Code Router ๆฅๅ ฅ Z.AI๏ผๆฏๆ GLM-4.5 ็ณปๅๆจกๅ็ๅฎๆดๅ่ฝใไฝฟ็จ Deno ๅ Oak ๆกๆถ้ๅ๏ผๆไพๆดๅฅฝ็ๆง่ฝๅ็ฑปๅๅฎๅ จใ
- ๐ ๅฎๅ จๅ ผๅฎน OpenAI API - ๆ ็ผ้ๆ็ฐๆๅบ็จ
- ๐ค Claude Code ๆฏๆ - ้่ฟ Claude Code Router ๆฅๅ ฅ Claude Code (CCR ๅทฅๅ ท่ฏทๅ็บงๅฐ v1.0.47 ไปฅไธ)
- ๐ ้ซๆง่ฝๆตๅผๅๅบ - Server-Sent Events (SSE) ๆฏๆ
- ๐ ๏ธ ๅขๅผบๅทฅๅ ท่ฐ็จ - ๆน่ฟ็ Function Call ๅฎ็ฐ
- ๐ง ๆ่ๆจกๅผๆฏๆ - ๆบ่ฝๅค็ๆจกๅๆจ็่ฟ็จ
- ๐ ๆ็ดขๆจกๅ้ๆ - GLM-4.5-Search ็ฝ็ปๆ็ดข่ฝๅ
- ๐ณ Docker ้จ็ฝฒ - ไธ้ฎๅฎนๅจๅ้จ็ฝฒ
- ๐ก๏ธ ไผ่ฏ้็ฆป - ๅฟๅๆจกๅผไฟๆค้็ง
- ๐ง ็ตๆดป้ ็ฝฎ - ็ฏๅขๅ้็ตๆดป้ ็ฝฎ
- ๐ ๅคๆจกๅๆ ๅฐ - ๆบ่ฝไธๆธธๆจกๅ่ทฏ็ฑ
- โก Deno ่ฟ่กๆถ - ๅ็ TypeScript ๆฏๆ๏ผๆดๅฅฝ็ๆง่ฝ
Deno Deployๆฏไธไธชๅ จ็ๅๅธๅผ็่พน็ผ่ฎก็ฎๅนณๅฐ๏ผ้ๅธธ้ๅ้จ็ฝฒDenoๅบ็จใ
-
ๅๅคไปฃ็
- Forkๆฌไปๅบ๏ผ้กบไพฟ็นไธชๅฐๅฟๅฟ
-
็ปๅฝDeno Deploy
- ่ฎฟ้ฎ https://dash.deno.com/
- ไฝฟ็จGitHub่ดฆๅท็ปๅฝ
-
ๅๅปบๆฐ้กน็ฎ
- ็นๅป"New Project"ๆ้ฎ
- ้ๆฉไฝ ็GitHubไปๅบ
- ้ๆฉๅ
ๅซ
main.tsๆไปถ
-
้ ็ฝฎ็ฏๅขๅ้
- ๅจ้กน็ฎ่ฎพ็ฝฎไธญ๏ผๆทปๅ ็ฏๅขๅ้
- ๅ ทไฝ้ ็ฝฎ่งenv.example
- ๅจ้กน็ฎ่ฎพ็ฝฎไธญ๏ผๆทปๅ ็ฏๅขๅ้
-
้จ็ฝฒ
- ็นๅป"Deploy"ๆ้ฎ
- ็ญๅพ ้จ็ฝฒๅฎๆ
็ฏๅข่ฆๆฑ
- Deno 1.40+
- ็ฐไปฃๆต่งๅจๆ Node.js ็ฏๅข
# ๅ
้้กน็ฎ
git clone https://github.com/Luotianyi-0712/z.ai2api_deno.git
cd z.ai2api_deno
# ไฝฟ็จ Deno ่ฟ่ก
deno task start
# ๆๅผๅๆจกๅผ๏ผ่ชๅจ้่ฝฝ๏ผ
deno task devๆๅกๅฏๅจๅ่ฎฟ้ฎ๏ผhttp://localhost:8080/v1/models
import OpenAI from 'openai';
// ๅๅงๅๅฎขๆท็ซฏ
const client = new OpenAI({
baseURL: "http://localhost:8080/v1",
apiKey: "your-auth-token" // ๆฟๆขไธบไฝ ็ AUTH_TOKEN
});
// ๆฎ้ๅฏน่ฏ
const response = await client.chat.completions.create({
model: "GLM-4.5",
messages: [{ role: "user", content: "ไฝ ๅฅฝ๏ผไป็ปไธไธ TypeScript" }],
stream: false
});
console.log(response.choices[0].message.content);cd deploy
docker-compose up -d| ๆจกๅ | ไธๆธธID | ๆ่ฟฐ | ็นๆง |
|---|---|---|---|
GLM-4.5 |
0727-360B-API | ๆ ๅๆจกๅ | ้็จๅฏน่ฏ๏ผๅนณ่กกๆง่ฝ |
GLM-4.5-Thinking |
0727-360B-API | ๆ่ๆจกๅ | ๆพ็คบๆจ็่ฟ็จ๏ผ้ๆๅบฆ้ซ |
GLM-4.5-Search |
0727-360B-API | ๆ็ดขๆจกๅ | ๅฎๆถ็ฝ็ปๆ็ดข๏ผไฟกๆฏๆดๆฐ |
GLM-4.5-Air |
0727-106B-API | ่ฝป้ๆจกๅ | ๅฟซ้ๅๅบ๏ผ้ซๆๆจ็ |
GLM-4.5V |
glm-4.5v | โ ๆไธๆฏๆ |
// ๅฎไนๅทฅๅ
ท
const tools = [{
type: "function",
function: {
name: "get_weather",
description: "่ทๅๅคฉๆฐไฟกๆฏ",
parameters: {
type: "object",
properties: {
city: { type: "string", description: "ๅๅธๅ็งฐ" }
},
required: ["city"]
}
}
}];
// ไฝฟ็จๅทฅๅ
ท
const response = await client.chat.completions.create({
model: "GLM-4.5",
messages: [{ role: "user", content: "ๅไบฌๅคฉๆฐๆไนๆ ท๏ผ" }],
tools: tools,
tool_choice: "auto"
});const response = await client.chat.completions.create({
model: "GLM-4.5-Thinking",
messages: [{ role: "user", content: "่งฃ้้ๅญ่ฎก็ฎ" }],
stream: true
});
for await (const chunk of response) {
const content = chunk.choices[0].delta.content;
const reasoning = chunk.choices[0].delta.reasoning_content;
if (content) {
process.stdout.write(content);
}
if (reasoning) {
console.log(`\n๐ค ๆ่: ${reasoning}\n`);
}
}| ๅ้ๅ | ้ป่ฎคๅผ | ่ฏดๆ |
|---|---|---|
AUTH_TOKEN |
sk-your-api-key |
ๅฎขๆท็ซฏ่ฎค่ฏๅฏ้ฅ |
API_ENDPOINT |
https://chat.z.ai/api/chat/completions |
ไธๆธธ API ๅฐๅ |
LISTEN_PORT |
8080 |
ๆๅก็ๅฌ็ซฏๅฃ |
PRIMARY_MODEL |
GLM-4.5 |
ไธป่ฆๆจกๅๅ็งฐ |
THINKING_MODEL |
GLM-4.5-Thinking |
ๆ่ๆจกๅๅ็งฐ |
SEARCH_MODEL |
GLM-4.5-Search |
ๆ็ดขๆจกๅๅ็งฐ |
AIR_MODEL |
GLM-4.5-Air |
Air ๆจกๅๅ็งฐ |
DEBUG_LOGGING |
true |
่ฐ่ฏๆฅๅฟๅผๅ ณ |
THINKING_PROCESSING |
think |
ๆ่ๅ ๅฎนๅค็็ญ็ฅ |
ANONYMOUS_MODE |
true |
ๅฟๅๆจกๅผๅผๅ ณ |
TOOL_SUPPORT |
true |
Function Call ๅ่ฝๅผๅ ณ |
SKIP_AUTH_TOKEN |
false |
่ทณ่ฟ่ฎค่ฏไปค็้ช่ฏ |
SCAN_LIMIT |
200000 |
ๆซๆ้ๅถ |
BACKUP_TOKEN |
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9... |
Z.ai ๅบๅฎ่ฎฟ้ฎไปค็ |
think- ่ฝฌๆขไธบ<thinking>ๆ ็ญพ๏ผOpenAI ๅ ผๅฎน๏ผstrip- ็งป้คๆ่ๅ ๅฎนraw- ไฟ็ๅๅงๆ ผๅผ
// ้ๆๅฐ็ฐๆๅบ็จ
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: "http://localhost:8080/v1",
apiKey: "your-token"
});
// ๆบ่ฝๅฎขๆ
async function chatWithAI(message: string): Promise<string> {
const response = await client.chat.completions.create({
model: "GLM-4.5",
messages: [{ role: "user", content: message }]
});
return response.choices[0].message.content || "";
}const models = ["GLM-4.5", "GLM-4.5-Thinking", "GLM-4.5-Search", "GLM-4.5-Air"];
for (const model of models) {
const response = await client.chat.completions.create({
model: model,
messages: [{ role: "user", content: "ไปไนๆฏๆบๅจๅญฆไน ๏ผ" }]
});
console.log(`\n=== ${model} ===`);
console.log(response.choices[0].message.content);
}// ็ปๅๅค้จ API
async function callExternalAPI(toolName: string, arguments: any): Promise<any> {
// ๆง่กๅฎ้
ๅทฅๅ
ท่ฐ็จ
return result;
}
// ๅค็ๅทฅๅ
ท่ฐ็จ
if (response.choices[0].message.tool_calls) {
for (const toolCall of response.choices[0].message.tool_calls) {
const result = await callExternalAPI(
toolCall.function.name,
JSON.parse(toolCall.function.arguments)
);
// ๅฐ็ปๆ่ฟๅ็ปๆจกๅ็ปง็ปญๅฏน่ฏ
}
}Q: ๅฆไฝ่ทๅ AUTH_TOKEN๏ผ
A: AUTH_TOKEN ไธบ่ชๅทฑ่ชๅฎไน็api key๏ผๅจ็ฏๅขๅ้ไธญ้
็ฝฎ๏ผ้่ฆไฟ่ฏๅฎขๆท็ซฏไธๆๅก็ซฏไธ่ดใ
Q: ๅฆไฝ้่ฟ Claude Code ไฝฟ็จๆฌๆๅก๏ผ
A: ๅๅปบ zai.js ่ฟไธชccrๆไปถๆพๅจ./.claude-code-router/plugins็ฎๅฝไธ๏ผ้
็ฝฎ ./.claude-code-router/config.json ๆๅๆฌๆๅกๅฐๅ๏ผไฝฟ็จ AUTH_TOKEN ่ฟ่ก่ฎค่ฏใ
็คบไพ้ ็ฝฎ๏ผ
{
"LOG": false,
"LOG_LEVEL": "debug",
"CLAUDE_PATH": "",
"HOST": "127.0.0.1",
"PORT": 3456,
"APIKEY": "",
"API_TIMEOUT_MS": "600000",
"PROXY_URL": "",
"transformers": [
{
"name": "zai",
"path": "C:\\Users\\Administrator\\.claude-code-router\\plugins\\zai.js",
"options": {}
}
],
"Providers": [
{
"name": "GLM",
"api_base_url": "http://127.0.0.1:8080/v1/chat/completions",
"api_key": "sk-your-api-key",
"models": [
"GLM-4.5",
"GLM-4.5-Air"
],
"transformers": {
"use": [
"zai"
]
}
}
],
"StatusLine": {
"enabled": false,
"currentStyle": "default",
"default": {
"modules": []
},
"powerline": {
"modules": []
}
},
"Router": {
"default": "GLM,GLM-4.5",
"background": "GLM,GLM-4.5",
"think": "GLM,GLM-4.5",
"longContext": "GLM,GLM-4.5",
"longContextThreshold": 60000,
"webSearch": "GLM,GLM-4.5",
"image": "GLM,GLM-4.5"
},
"CUSTOM_ROUTER_PATH": ""
}Q: ๅฟๅๆจกๅผๆฏไปไน๏ผ A: ๅฟๅๆจกๅผไฝฟ็จไธดๆถ token๏ผ้ฟๅ ๅฏน่ฏๅๅฒๅ ฑไบซ๏ผไฟๆค้็งใ
Q: Function Call ๅฆไฝๅทฅไฝ๏ผ A: ้่ฟๆบ่ฝๆ็คบๆณจๅ ฅๅฎ็ฐ๏ผๅฐๅทฅๅ ทๅฎไน่ฝฌๆขไธบ็ณป็ปๆ็คบใ
Q: ๆฏๆๅชไบ OpenAI ๅ่ฝ๏ผ A: ๆฏๆ่ๅคฉๅฎๆใๆจกๅๅ่กจใๆตๅผๅๅบใๅทฅๅ ท่ฐ็จ็ญๆ ธๅฟๅ่ฝใ
Q: Function Call ๅฆไฝไผๅ๏ผ A: ๆน่ฟไบๅทฅๅ ท่ฐ็จ็่ฏทๆฑๅๅบ็ปๆ๏ผๆฏๆๆดๅคๆ็ๅทฅๅ ท้พ่ฐ็จๅๅนถ่กๆง่กใ
Q: ๅฆไฝ้ๆฉๅ้็ๆจกๅ๏ผ A:
- GLM-4.5: ้็จๅบๆฏ๏ผๆง่ฝๅๆๆๅนณ่กก
- GLM-4.5-Thinking: ้่ฆไบ่งฃๆจ็่ฟ็จ็ๅบๆฏ
- GLM-4.5-Search: ้่ฆๅฎๆถไฟกๆฏ็ๅบๆฏ
- GLM-4.5-Air: ้ซๅนถๅใไฝๅปถ่ฟ่ฆๆฑ็ๅบๆฏ
Q: ๅฆไฝ่ชๅฎไน้
็ฝฎ๏ผ
A: ้่ฟ็ฏๅขๅ้้
็ฝฎ๏ผๆจ่ไฝฟ็จ .env ๆไปถใ
่ฆไฝฟ็จๅฎๆด็ๅคๆจกๆๅ่ฝ๏ผ้่ฆ่ทๅๆญฃๅผ็ Z.ai API Token๏ผ
- ่ฎฟ้ฎ Z.ai ๅฎ็ฝ
- ๆณจๅ่ดฆๆทๅนถ็ปๅฝ๏ผ่ฟๅ ฅ Z.ai API Keys ่ฎพ็ฝฎ้กต้ข๏ผๅจ่ฏฅ้กต้ข่ฎพ็ฝฎ ไธชไบบ API Token
- ๅฐ Token ๆพ็ฝฎๅจ
BACKUP_TOKEN็ฏๅขๅ้ไธญ
- ๆๅผ Z.ai ่ๅคฉ็้ข
- ๆ F12 ๆๅผๅผๅ่ ๅทฅๅ ท
- ๅๆขๅฐ "Application" ๆ "ๅญๅจ" ๆ ็ญพ
- ๆฅ็ Local Storage ไธญ็่ฎค่ฏ token
- ๅคๅถ token ๅผ่ฎพ็ฝฎไธบ็ฏๅขๅ้
โ ๏ธ ๆณจๆ: ๆนๅผ 2 ่ทๅ็ token ๅฏ่ฝๆๆถๆๆง๏ผๅปบ่ฎฎไฝฟ็จๆนๅผ 1 ่ทๅ้ฟๆๆๆ็ API Tokenใ โ ้่ฆๆ็คบ: ๅคๆจกๆๆจกๅ้่ฆๅฎๆน Z.ai API ้ๅฟๅ Token๏ผๅฟๅ token ไธๆฏๆๅคๅชไฝๅค็ใ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ OpenAI โ โ โ โ โ
โ Client โโโโโโถโ Oak Server (Deno) โโโโโโถโ Z.AI API โ
โโโโโโโโโโโโโโโโ โ โ โ โ
โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโ โ
โ Claude Code โ โ โ /v1/chat/completionsโ โ โ โ0727-360B-APIโ โ
โ Router โโโโโโถโ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโ โ
โ โ /v1/models โ โโโโโโถโ โ0727-106B-APIโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ Enhanced Tools โ โ โโโโโโโโโโโโโโโโโโโ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
OpenAI Compatible API
z.ai2api-deno/
โโโ app/
โ โโโ core/
โ โ โโโ config.ts # ้
็ฝฎ็ฎก็
โ โ โโโ openai.ts # OpenAI API ๅฎ็ฐ
โ โ โโโ response_handlers.ts # ๅๅบๅค็ๅจ
โ โโโ models/
โ โ โโโ schemas.ts # Zod ๆจกๅๅฎไน
โ โโโ utils/
โ โ โโโ helpers.ts # ่พ
ๅฉๅฝๆฐ
โ โ โโโ tools.ts # ๅขๅผบๅทฅๅ
ท่ฐ็จๅค็
โ โ โโโ sse_parser.ts # SSE ๆตๅผ่งฃๆๅจ
โโโ deploy/ # Docker ้จ็ฝฒ้
็ฝฎ
โโโ main.ts # Oak ๅบ็จๅ
ฅๅฃ
โโโ deno.json # Deno ้กน็ฎ้
็ฝฎ
โโโ README.md # ้กน็ฎๆๆกฃ
| ็นๆง | Python ็ๆฌ | Deno ็ๆฌ |
|---|---|---|
| ่ฟ่กๆถ | Python 3.8+ | Deno 1.40+ |
| ๆกๆถ | FastAPI | Oak |
| ็ฑปๅ็ณป็ป | Pydantic | Zod |
| ๅ ็ฎก็ | pip/uv | ๅ ็ฝฎ |
| ๅฏๅจ้ๅบฆ | ่พๆ ข | ๆดๅฟซ |
| ๅ ๅญๅ ็จ | ่พ้ซ | ่พไฝ |
| ็ฑปๅๅฎๅ จ | ่ฟ่กๆถ้ช่ฏ | ็ผ่ฏๆถๆฃๆฅ |
| ้จ็ฝฒๅคงๅฐ | ่พๅคง | ๆดๅฐ |
ๆไปฌๆฌข่ฟๆๆๅฝขๅผ็่ดก็ฎ๏ผ ่ฏท็กฎไฟไปฃ็ ็ฌฆๅ Deno ๆ ๅ๏ผๅนถๆดๆฐ็ธๅ ณๆๆกฃใ
ๆฌ้กน็ฎ้็จ MIT ่ฎธๅฏ่ฏ - ๆฅ็ LICENSE ๆไปถไบ่งฃ่ฏฆๆ ใ
- ๆฌ้กน็ฎไธ Z.AI ๅฎๆนๆ ๅ ณ
- ไฝฟ็จๅ่ฏท็กฎไฟ้ตๅฎ Z.AI ๆๅกๆกๆฌพ
- ่ฏทๅฟ็จไบๅไธ็จ้ๆ่ฟๅไฝฟ็จๆกๆฌพ็ๅบๆฏ
- ้กน็ฎไป ไพๅญฆไน ๅ็ ็ฉถไฝฟ็จ