模型接口

接口概述

模型接口用于获取和管理 ZGI 提供的各种 AI 模型信息,包括模型列表、模型能力和使用限制等。

基本信息

  • 接口路径:GET /v1/models
  • 需要认证:是
  • 请求方式:GET
  • 数据格式:JSON

可用模型

对话模型

模型名称 描述 最大 Token 特点
zgi-1 通用对话模型 4096 支持中英文,擅长对话和内容生成
zgi-1-turbo 轻量对话模型 2048 响应速度快,成本低
zgi-1-pro 专业对话模型 8192 更强的理解能力,支持复杂任务

向量模型

模型名称 描述 向量维度 特点
zgi-embedding-1 通用向量模型 1024 适用于大多数场景
zgi-embedding-1-light 轻量向量模型 512 更快的处理速度
zgi-embedding-1-pro 专业向量模型 2048 更高的精确度

API 接口

获取模型列表

请求

GET /v1/models
Authorization: Bearer your-api-key

响应

{
    "data": [
        {
            "id": "zgi-1",
            "object": "model",
            "created": 1677649963,
            "owned_by": "zgi",
            "permission": [],
            "root": "zgi-1",
            "parent": null,
            "capabilities": {
                "chat": true,
                "stream": true,
                "functions": true
            }
        },
        {
            "id": "zgi-embedding-1",
            "object": "model",
            "created": 1677649963,
            "owned_by": "zgi",
            "permission": [],
            "root": "zgi-embedding-1",
            "parent": null,
            "capabilities": {
                "embeddings": true
            }
        }
    ],
    "object": "list"
}

获取模型详情

请求

GET /v1/models/{model_id}
Authorization: Bearer your-api-key

响应

{
    "id": "zgi-1",
    "object": "model",
    "created": 1677649963,
    "owned_by": "zgi",
    "permission": [],
    "root": "zgi-1",
    "parent": null,
    "capabilities": {
        "chat": true,
        "stream": true,
        "functions": true
    },
    "limits": {
        "max_tokens": 4096,
        "max_requests_per_min": 60,
        "max_concurrent_requests": 5
    },
    "pricing": {
        "prompt_tokens": 0.002,
        "completion_tokens": 0.002
    }
}

代码示例

获取模型列表

const models = await client.models.list();
console.log('可用模型:', models.data);

获取模型详情

const model = await client.models.retrieve('zgi-1');
console.log('模型详情:', model);

模型选择

async function selectModel(task, requirements) {
    const models = await client.models.list();
    
    // 根据任务类型选择模型
    if (task === 'chat') {
        if (requirements.speed === 'fast') {
            return 'zgi-1-turbo';
        } else if (requirements.quality === 'high') {
            return 'zgi-1-pro';
        } else {
            return 'zgi-1';
        }
    }
    
    // 向量模型选择
    if (task === 'embedding') {
        if (requirements.speed === 'fast') {
            return 'zgi-embedding-1-light';
        } else if (requirements.accuracy === 'high') {
            return 'zgi-embedding-1-pro';
        } else {
            return 'zgi-embedding-1';
        }
    }
}

错误处理

常见错误码

错误码 说明 解决方案
404 模型不存在 检查模型ID是否正确
401 未授权 检查 API 密钥是否有效
403 无权访问 检查模型访问权限

错误处理示例

try {
    const model = await client.models.retrieve('invalid-model');
} catch (error) {
    if (error.response?.status === 404) {
        console.error('模型不存在');
    } else {
        console.error('获取模型失败:', error.message);
    }
}

最佳实践

1. 模型选择策略

function chooseModel(params) {
    const {
        taskType,
        inputLength,
        qualityRequirement,
        speedRequirement,
        costSensitive
    } = params;
    
    // 根据输入长度选择模型
    if (inputLength > 4000) {
        return 'zgi-1-pro';
    }
    
    // 根据性能要求选择模型
    if (speedRequirement === 'high') {
        return 'zgi-1-turbo';
    }
    
    // 根据质量要求选择模型
    if (qualityRequirement === 'high') {
        return 'zgi-1-pro';
    }
    
    // 默认选择
    return 'zgi-1';
}

2. 模型能力检查

async function checkModelCapability(modelId, capability) {
    const model = await client.models.retrieve(modelId);
    return model.capabilities[capability] === true;
}

// 使用示例
if (await checkModelCapability('zgi-1', 'stream')) {
    // 使用流式响应
    const stream = await client.chat.create({
        model: 'zgi-1',
        messages: [...],
        stream: true
    });
}

3. 成本优化

async function optimizeModelUsage(text) {
    const length = text.length;
    
    // 根据文本长度选择合适的模型
    if (length < 1000) {
        return 'zgi-1-turbo';  // 使用轻量模型
    } else if (length < 4000) {
        return 'zgi-1';        // 使用标准模型
    } else {
        return 'zgi-1-pro';    // 使用专业模型
    }
}

限制说明

1. 请求限制

  • 每个模型有不同的 QPS 限制
  • 并发请求数有上限
  • 单次请求的 token 数有限制

2. 内容限制

  • 输入文本长度限制
  • 某些类型的内容可能被过滤
  • 特定场景可能需要审核

3. 费用限制

  • 不同模型收费标准不同
  • 按 token 数计费
  • 可能有最低使用费用

计费说明

1. 计费方式

  • 按使用量计费(token数)
  • 不同模型费率不同
  • 支持批量请求优惠

2. 费用优化

  • 选择合适的模型
  • 优化输入长度
  • 使用缓存机制
  • 批量处理请求

更新日志

v1.1.0 (2024-02-01)

  • 新增专业版模型
  • 优化模型性能
  • 增加新的模型能力

v1.0.0 (2024-01-01)

  • 基础模型发布
  • 支持对话和向量能力
  • 提供模型管理接口