在 CNB 平台上运行本地大模型,并通过 OpenAI 兼容的 API 接口提供服务。支持流式传输、CORS 跨域、健康检查等功能。
/v1/chat/completions API 接口Fork 本仓库到自己的组织下云原生开发 启动远程开发环境5~9 秒后进入远程开发命令行export CNB_TOKEN="your_token_here"
可选环境变量:
export CNB_API_ENDPOINT="https://api.cnb.cool" # 默认值
export CNB_REPO_SLUG="holmesian/hmz" # 默认值
export PORT="8888" # 代理服务端口,默认 8888
export DEBUG="true" # 启用调试模式
./start-proxy.sh
服务启动成功后:
http://localhost:8888/v1/chat/completionshttp://localhost:8888/health/tmp/cnb-proxy.logcurl -X POST http://localhost:8888/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{"role": "user", "content": "你好,请介绍一下自己"}
]
}'
curl -X POST http://localhost:8888/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{"role": "user", "content": "写一首关于春天的诗"}
],
"stream": true
}'
Python 示例:
from openai import OpenAI
client = OpenAI(
api_key="dummy",
base_url="http://localhost:8888/v1"
)
response = client.chat.completions.create(
model="auto",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)
tail -f /tmp/cnb-proxy.log
pkill -x cnb-proxy
pkill -x cnb-proxy && ./start-proxy.sh
curl http://localhost:8888/health
启用调试模式可查看详细的请求和响应日志:
export DEBUG=true
./start-proxy.sh
调试日志包含:
本仓库内置了多个 Qwen3.5 模型,可通过 Ollama 运行:
./start-ollama.sh
ollama run qwen3.5:35b
./start-llama.sh
在 CNB 控制台的 PORTS 配置中添加 8888 端口,即可将代理服务暴露到公网。
项目提供了测试脚本用于验证 API 接口:
# 测试 CNB API 直接调用
./call-ai-api.sh "测试消息"
# 测试 GLM 模型
./test-glm-api.sh "测试消息"
代理服务会将 CNB API 的错误信息转换为 OpenAI 兼容格式:
{
"error": {
"message": "错误详情",
"type": "CNB API Error",
"code": 401,
"details": {}
}
}
常见错误:
credentials expired: CNB_TOKEN 已过期,请更新invalid token: CNB_TOKEN 无效rate limit exceeded: 调用频率超限workspace/ ├── main.go # Go 代理服务主程序 ├── start-proxy.sh # 代理服务启动脚本 ├── call-ai-api.sh # CNB API 调用测试脚本 ├── test-glm-api.sh # GLM 模型测试脚本 ├── start-ollama.sh # Ollama 启动脚本 ├── start-llama.sh # llama-server 启动脚本 ├── models/ # 本地模型文件 ├── bin/ # llama-server 可执行文件 └── unsloth/ # GGUF 模型文件
代理服务在 main.go 中实现:
/v1/chat/completions 接口${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai/chat/completionsMIT