庆霄云计算庆霄云计算
首页
产品介绍
  • 快速入门
  • 计费说明
常见问题
API 参考
首页
产品介绍
  • 快速入门
  • 计费说明
常见问题
API 参考
  • 使用指南

    • 产品介绍
    • 快速入门
    • 计费说明
    • 最佳实践

最佳实践

本文档总结了使用庆霄云计算 API Key 分发服务的最佳实践,帮助您更高效、安全地使用服务。

架构设计最佳实践

1. 多环境隔离

为不同环境使用独立的 API Key:

开发环境 → API Key (dev-xxx)
测试环境 → API Key (test-xxx)  
生产环境 → API Key (prod-xxx)

优势:

  • 避免开发测试影响生产环境
  • 独立的调用统计和监控
  • 独立的限额控制
  • 降低密钥泄露风险

2. 服务端代理模式

推荐使用服务端代理模式,而非客户端直连:

客户端 → 您的服务端 → 庆霄云计算 API

实现方式:

// 您的服务端代理接口
app.post('/api/chat', async (req, res) => {
  const response = await fetch('https://ai.qingxiaoyun.net/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.QINGXIAO_API_KEY}`
    },
    body: JSON.stringify(req.body)
  });
  
  const data = await response.json();
  res.json(data);
});

优势:

  • API Key 不暴露给客户端
  • 可添加自定义的业务逻辑
  • 统一的错误处理和日志记录
  • 更好的安全性

3. 负载均衡

对于高并发场景,建议实现负载均衡:

// 使用多个 API Key 实现负载均衡
const apiKeys = [
  process.env.QINGXIAO_API_KEY_1,
  process.env.QINGXIAO_API_KEY_2,
  process.env.QINGXIAO_API_KEY_3
];

function getRandomKey() {
  return apiKeys[Math.floor(Math.random() * apiKeys.length)];
}

性能优化最佳实践

1. 请求合并

对于多个小请求,考虑合并为一个大请求:

不推荐:

// 多次请求
for (const text of texts) {
  await client.chat.completions.create({
    model: 'glm-5',
    messages: [{ role: 'user', content: text }]
  });
}

推荐:

// 批量请求
const combinedText = texts.join('\n---\n');
await client.chat.completions.create({
  model: 'glm-5',
  messages: [{ role: 'user', content: combinedText }]
});

2. 缓存策略

对于重复的请求,实现缓存机制:

const cache = new Map();

async function getCachedResponse(prompt) {
  const cacheKey = `chat_${prompt}`;
  
  // 检查缓存
  if (cache.has(cacheKey)) {
    return cache.get(cacheKey);
  }
  
  // 调用 API
  const response = await client.chat.completions.create({
    model: 'glm-5',
    messages: [{ role: 'user', content: prompt }]
  });
  
  // 存入缓存(有效期 1 小时)
  cache.set(cacheKey, response);
  setTimeout(() => cache.delete(cacheKey), 3600000);
  
  return response;
}

3. 流式响应

对于长文本生成,使用流式响应提升用户体验:

const stream = await client.chat.completions.create({
  model: 'glm-5',
  messages: [{ role: 'user', content: '写一篇长文章' }],
  stream: true
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content || '';
  process.stdout.write(content);
}

错误处理最佳实践

1. 重试机制

实现智能重试机制:

async function callWithRetry(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      // 不重试的错误
      if (error.status === 401 || error.status === 403) {
        throw error;
      }
      
      // 最后一次重试失败
      if (i === maxRetries - 1) {
        throw error;
      }
      
      // 指数退避
      const delay = Math.pow(2, i) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
    }
  }
}

2. 错误分类处理

根据错误类型采取不同策略:

try {
  const response = await client.chat.completions.create({...});
} catch (error) {
  switch (error.status) {
    case 401:
      console.error('API Key 无效或已过期');
      break;
    case 429:
      console.warn('请求频率超限,等待重试');
      await sleep(60000);
      break;
    case 500:
    case 502:
    case 503:
      console.error('服务暂时不可用,请稍后重试');
      break;
    default:
      console.error('未知错误:', error.message);
  }
}

监控与日志最佳实践

1. 结构化日志

记录结构化的调用日志,便于分析和排查问题。

2. 性能监控

监控 API 调用性能,及时发现异常。

3. 用量统计

实时统计用量,避免超限。

成本优化最佳实践

1. 选择合适的模型

根据任务复杂度选择合适的模型:

使用场景推荐模型说明
代码生成glm-5, kimi-k2.6代码能力强
代码审查glm-5.1专业代码分析
文档编写MiniMax-M2.7长文本处理
日常对话doubao-seed-2.0-pro, deepseek-v3.2综合能力强

2. 控制输出长度

限制输出长度,避免不必要的 Token 消耗:

const response = await client.chat.completions.create({
  model: 'glm-5',
  messages: [{ role: 'user', content: prompt }],
  max_tokens: 500  // 限制输出长度
});

3. 使用套餐

对于稳定业务,购买套餐更划算,可节省 20%-60% 的成本。

下一步

  • 查看 计费说明
  • 浏览 API 参考文档
  • 如有疑问,查看 常见问题
Prev
计费说明