Z AI Web Dev SDK 的 Go 语言实现版本,提供完整的 API 覆盖和高性能的分布式代理能力。
net/http,无额外运行时依赖go get cnb.cool/S.o/z-ai-sdk-go
# 编译安装
go install cnb.cool/S.o/z-ai-sdk-go/cmd/cli@latest
# 或下载预编译二进制
SDK 从 .z-ai-config 文件加载配置,按以下顺序查找:
./.z-ai-config)~/.z-ai-config)/etc/.z-ai-config)配置文件格式(JSON):
{
"baseUrl": "https://api.example.com/v1",
"apiKey": "your-api-key",
"chatId": "optional-chat-id",
"userId": "optional-user-id"
}
注意:
baseUrl应包含/v1前缀
package main
import (
"context"
"fmt"
"log"
"cnb.cool/S.o/z-ai-sdk-go/client"
"cnb.cool/S.o/z-ai-sdk-go/types"
)
func main() {
// 从配置文件创建客户端
zai, err := client.Create()
if err != nil {
log.Fatal(err)
}
// 聊天补全
resp, err := zai.CreateChatCompletion(context.Background(), &types.CreateChatCompletionRequest{
Messages: []types.ChatMessage{
{Role: "user", Content: "你好!"},
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}
# 聊天对话
z-ai chat -p "什么是人工智能?"
# 视觉分析
z-ai vision -p "描述这张图片" -i "./photo.jpg"
# 文本转语音
z-ai tts -i "你好,世界" -o ./hello.wav
# 图片生成
z-ai image -p "一只可爱的小猫" -o ./cat.png
# 视频生成(自动轮询)
z-ai video -p "A beautiful sunset" --poll
# 函数调用
z-ai function -n web_search -a '{"query": "Go语言", "num": 5}'
# 启动 HTTP API 服务(后台运行)
z-ai daemon start
# 指定监听地址
z-ai daemon start -a :9090
# 查看服务状态
z-ai daemon status
# 查看服务日志
z-ai daemon logs -f
# 停止服务
z-ai daemon stop
HTTP API 端点:
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/v1/chat/completions | 聊天补全 |
| POST | /api/v1/chat/completions/vision | 视觉聊天 |
| POST | /api/v1/audio/tts | 文字转语音 |
| POST | /api/v1/audio/asr | 语音转文字 |
| POST | /api/v1/images/generate | 图片生成 |
| POST | /api/v1/video/generate | 视频生成 |
| GET | /api/v1/async/result | 异步结果查询 |
| POST | /api/v1/functions/invoke | 函数调用 |
# 启动 Gateway
PROXY_API_KEY=your-secret-key proxy-gateway
# 无认证模式(开发环境)
PROXY_API_KEY= proxy-gateway
Gateway 端点:
| 路径 | 说明 |
|---|---|
| /tunnel | WebSocket 隧道(客户端接入) |
| / | HTTP 代理转发 |
| /stats | Pool 级统计 |
| /sessions | Session 列表 |
| /sessions/{id} | Session 详情 + 活跃 Streams |
# 启动代理客户端
PROXY_GATEWAY_URL=wss://gateway.example.com/tunnel \
PROXY_API_KEY=your-secret-key \
PROXY_NODE_ID=node-001 \
proxy-client
# 通过守护进程管理
z-ai daemon proxy start \
--gateway-url wss://gateway.example.com/tunnel \
--api-key your-secret-key
z-ai chat [options]
选项:
-p, --prompt string 用户消息内容(必需)
-s, --system string 系统提示词
-t, --thinking 启用思维链
-o, --output string 输出文件路径(JSON格式)
--stream 流式输出
z-ai vision [options]
选项:
-p, --prompt string 用户消息内容(必需)
-i, --image strings 图片URL或本地文件路径(可多次使用)
-t, --thinking 启用思维链
-o, --output string 输出文件路径(JSON格式)
--stream 流式输出
z-ai tts [options]
选项:
-i, --input string 要转换的文本(必需)
-o, --output string 输出音频文件路径(必需)
-v, --voice string 声音类型(默认: tongtong)
-s, --speed float 语速(0.5-2.0,默认: 1.0)
-f, --format string 输出格式(wav/mp3/pcm,默认: wav)
--stream 流式输出
z-ai asr [options]
选项:
-f, --file string 音频文件路径
-b, --base64 string 音频文件的base64编码
-o, --output string 输出文件路径(JSON格式)
--stream 流式输出
z-ai image [options]
选项:
-p, --prompt string 图片描述文本(必需)
-o, --output string 输出图片文件路径(必需,png格式)
-s, --size string 图片尺寸(默认: 1024x1024)
支持的尺寸: 1024x1024, 768x1344, 864x1152, 1344x768, 1152x864, 1440x720, 720x1440
z-ai video [options]
选项:
-p, --prompt string 视频的文本描述
-i, --image-url string 图片URL(首尾帧用逗号分隔)
-q, --quality string 输出模式(speed/quality,默认: speed)
--with-audio 是否生成AI音效
-s, --size string 视频分辨率
--fps int 视频帧率(30/60,默认: 30)
-d, --duration int 视频时长(秒,默认: 5)
--poll 自动轮询直到任务完成
--poll-interval int 轮询间隔(秒,默认: 5)
--max-polls int 最大轮询次数(默认: 60)
-o, --output string 输出结果文件路径(JSON格式)
z-ai async-result [options]
选项:
-i, --id string 任务ID(必需)
--poll 自动轮询直到任务完成
--poll-interval int 轮询间隔(秒,默认: 5)
--max-polls int 最大轮询次数(默认: 60)
-o, --output string 输出文件路径(JSON格式)
z-ai function [options]
选项:
-n, --name string 函数名称(必需)
web_search: 网页搜索
page_reader: 网页阅读器
-a, --args string 函数参数(JSON格式,必需)
-o, --output string 输出文件路径(JSON格式)
z-ai daemon <command> [options]
命令:
start 启动 HTTP API 服务(后台运行)
stop 停止服务
restart 重启服务
status 查看服务状态
logs 查看服务日志
start 选项:
-a, --addr string 监听地址(默认: :8080)
-d, --daemon 以守护进程模式运行(默认: true)
-w, --watch 启用进程监控(默认: true)
err := zai.ProcessChatStream(ctx, req, func(chunk *client.StreamChunk) error {
for _, choice := range chunk.Choices {
fmt.Print(choice.Delta.Content)
}
return nil
})
resp, err := zai.CreateChatCompletionVision(ctx, &types.CreateChatCompletionVisionRequest{
Messages: []types.VisionMessage{
{
Role: "user",
Items: []types.VisionMultimodalContentItem{
{Type: "text", Text: "描述这张图片"},
{Type: "image_url", ImageURL: &types.MediaURL{URL: "https://example.com/image.jpg"}},
{Type: "video_url", VideoURL: &types.MediaURL{URL: "https://example.com/video.mp4"}},
{Type: "file_url", FileURL: &types.MediaURL{URL: "https://example.com/document.pdf"}},
},
},
},
})
// 创建任务
task, err := zai.CreateVideoGeneration(ctx, &types.CreateVideoGenerationRequest{
Prompt: "A cat playing with a ball",
})
// 轮询结果
for {
result, err := zai.QueryAsyncResult(ctx, task.ID)
if err != nil {
break
}
if result.TaskStatus != "PROCESSING" {
if result.TaskStatus == "SUCCESS" {
fmt.Println("Video URL:", result.VideoResult[0].URL)
}
break
}
time.Sleep(5 * time.Second)
}
client/ # 核心客户端实现
config/ # 配置加载
server/ # HTTP 服务器
types/ # 类型定义
pkg/proxy/ # 分布式代理协议
cmd/
cli/ # CLI 工具入口
daemon/ # 守护进程入口
proxy-gateway/ # 分布式代理网关
proxy-client/ # 分布式代理客户端
worktree/ # 子模块
docs/ # 文档目录
ISC