Skip to content

ojefose/zai-deno

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

106 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Z.AI OpenAI API ไปฃ็†ๆœๅŠก (Deno็‰ˆ)

License: MIT Deno: 1.40+ Oak Version: 1.2.0

่ฝป้‡็บง 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 Deployๆ˜ฏไธ€ไธชๅ…จ็ƒๅˆ†ๅธƒๅผ็š„่พน็ผ˜่ฎก็ฎ—ๅนณๅฐ๏ผŒ้žๅธธ้€‚ๅˆ้ƒจ็ฝฒDenoๅบ”็”จใ€‚

ๆญฅ้ชค๏ผš

  1. ๅ‡†ๅค‡ไปฃ็ 

    • Forkๆœฌไป“ๅบ“๏ผŒ้กบไพฟ็‚นไธชๅฐๅฟƒๅฟƒ
  2. ็™ปๅฝ•Deno Deploy

  3. ๅˆ›ๅปบๆ–ฐ้กน็›ฎ

    • ็‚นๅ‡ป"New Project"ๆŒ‰้’ฎ
    • ้€‰ๆ‹ฉไฝ ็š„GitHubไป“ๅบ“
    • ้€‰ๆ‹ฉๅŒ…ๅซmain.tsๆ–‡ไปถ
  4. ้…็ฝฎ็Žฏๅขƒๅ˜้‡

    • ๅœจ้กน็›ฎ่ฎพ็ฝฎไธญ๏ผŒๆทปๅŠ ็Žฏๅขƒๅ˜้‡
      • ๅ…ทไฝ“้…็ฝฎ่งenv.example
  5. ้ƒจ็ฝฒ

    • ็‚นๅ‡ป"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

ๅŸบ็ก€ไฝฟ็”จ

OpenAI API ๅฎขๆˆท็ซฏ

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);

Docker ้ƒจ็ฝฒ

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 โŒ ๆš‚ไธๆ”ฏๆŒ

Function Call ๅŠŸ่ƒฝ

// ๅฎšไน‰ๅทฅๅ…ท
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 - ไฟ็•™ๅŽŸๅง‹ๆ ผๅผ

๐ŸŽฏ ไฝฟ็”จๅœบๆ™ฏ

1. AI ๅบ”็”จๅผ€ๅ‘

// ้›†ๆˆๅˆฐ็Žฐๆœ‰ๅบ”็”จ
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 || "";
}

2. ๅคšๆจกๅž‹ๅฏนๆฏ”ๆต‹่ฏ•

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);
}

3. ๅทฅๅ…ท่ฐƒ็”จ้›†ๆˆ

// ็ป“ๅˆๅค–้ƒจ 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 API Token๏ผš

ๆ–นๅผ 1: ้€š่ฟ‡ Z.ai ็ฝ‘็ซ™

  1. ่ฎฟ้—ฎ Z.ai ๅฎ˜็ฝ‘
  2. ๆณจๅ†Œ่ดฆๆˆทๅนถ็™ปๅฝ•๏ผŒ่ฟ›ๅ…ฅ Z.ai API Keys ่ฎพ็ฝฎ้กต้ข๏ผŒๅœจ่ฏฅ้กต้ข่ฎพ็ฝฎ ไธชไบบ API Token
  3. ๅฐ† Token ๆ”พ็ฝฎๅœจ BACKUP_TOKEN ็Žฏๅขƒๅ˜้‡ไธญ

ๆ–นๅผ 2: ๆต่งˆๅ™จๅผ€ๅ‘่€…ๅทฅๅ…ท๏ผˆไธดๆ—ถๆ–นๆกˆ๏ผ‰

  1. ๆ‰“ๅผ€ Z.ai ่Šๅคฉ็•Œ้ข
  2. ๆŒ‰ F12 ๆ‰“ๅผ€ๅผ€ๅ‘่€…ๅทฅๅ…ท
  3. ๅˆ‡ๆขๅˆฐ "Application" ๆˆ– "ๅญ˜ๅ‚จ" ๆ ‡็ญพ
  4. ๆŸฅ็œ‹ Local Storage ไธญ็š„่ฎค่ฏ token
  5. ๅคๅˆถ 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                      # ้กน็›ฎๆ–‡ๆกฃ

๐Ÿ†š Deno vs Python ็‰ˆๆœฌๅฏนๆฏ”

็‰นๆ€ง Python ็‰ˆๆœฌ Deno ็‰ˆๆœฌ
่ฟ่กŒๆ—ถ Python 3.8+ Deno 1.40+
ๆก†ๆžถ FastAPI Oak
็ฑปๅž‹็ณป็ปŸ Pydantic Zod
ๅŒ…็ฎก็† pip/uv ๅ†…็ฝฎ
ๅฏๅŠจ้€Ÿๅบฆ ่พƒๆ…ข ๆ›ดๅฟซ
ๅ†…ๅญ˜ๅ ็”จ ่พƒ้ซ˜ ่พƒไฝŽ
็ฑปๅž‹ๅฎ‰ๅ…จ ่ฟ่กŒๆ—ถ้ชŒ่ฏ ็ผ–่ฏ‘ๆ—ถๆฃ€ๆŸฅ
้ƒจ็ฝฒๅคงๅฐ ่พƒๅคง ๆ›ดๅฐ

๐Ÿค ่ดก็ŒฎๆŒ‡ๅ—

ๆˆ‘ไปฌๆฌข่ฟŽๆ‰€ๆœ‰ๅฝขๅผ็š„่ดก็Œฎ๏ผ ่ฏท็กฎไฟไปฃ็ ็ฌฆๅˆ Deno ๆ ‡ๅ‡†๏ผŒๅนถๆ›ดๆ–ฐ็›ธๅ…ณๆ–‡ๆกฃใ€‚

๐Ÿ“„ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT ่ฎธๅฏ่ฏ - ๆŸฅ็œ‹ LICENSE ๆ–‡ไปถไบ†่งฃ่ฏฆๆƒ…ใ€‚

โš ๏ธ ๅ…่ดฃๅฃฐๆ˜Ž

  • ๆœฌ้กน็›ฎไธŽ Z.AI ๅฎ˜ๆ–นๆ— ๅ…ณ
  • ไฝฟ็”จๅ‰่ฏท็กฎไฟ้ตๅฎˆ Z.AI ๆœๅŠกๆกๆฌพ
  • ่ฏทๅ‹ฟ็”จไบŽๅ•†ไธš็”จ้€”ๆˆ–่ฟๅไฝฟ็”จๆกๆฌพ็š„ๅœบๆ™ฏ
  • ้กน็›ฎไป…ไพ›ๅญฆไน ๅ’Œ็ ”็ฉถไฝฟ็”จ

Made with โค๏ธ by the Linux.do community fork

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors