FQHT AI Gateway

AI 能力中台

Edge Ready
POST

/api/chat

gemini · openai · openrouter

statusonline
POST

/api/image

gemini image

statusonline
POST

/api/video

contract reserved

status501

接入约定

Base URL
https://ai.chuchuang.site
认证
Authorization: Bearer $GATEWAY_SECRET
产品标识
`productTag` 用于日志、配额和后续产品级路由;当前建议传 `role`、`luma` 或 `site`。

迁移目标

`role`:把本地 `/api/chat` 的 OpenRouter 调用迁到中台。

`luma`:把内容生成、标题生成等 OpenAI/OpenRouter 调用迁到中台。

`site`:把落地页生成、AI 内容生成调用迁到中台。

Chat

POST /api/chat

统一聊天入口。当前可先用 OpenRouter:model=openrouter,modelName 使用 OpenRouter 模型名。stream=true 时返回 SSE。

Request

POST /api/chat
Authorization: Bearer $GATEWAY_SECRET
Content-Type: application/json

{
  "productTag": "role",
  "model": "openrouter",
  "modelName": "openai/gpt-4o-mini",
  "stream": false,
  "temperature": 0.7,
  "maxTokens": 1024,
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "Say hello in Chinese." }
  ]
}

Response

{
  "code": 200,
  "message": "success",
  "data": { "content": "你好!" },
  "meta": {
    "requestId": "a1b2c3",
    "timestamp": "2026-06-01T12:00:00.000Z"
  }
}

Chat Stream

POST /api/chat

流式响应逐段返回 JSON payload,最后以 [DONE] 结束;客户端按 text/event-stream 解析。

Request

把 /api/chat 请求体里的 "stream" 设置为 true。

Response

data: {"content":"你","requestId":"a1b2c3"}

data: {"content":"好","requestId":"a1b2c3"}

data: [DONE]

Image

POST /api/image

图像生成入口。当前保留 Gemini 图像能力,imageBase64 可省略;带图时 Base64 清洗后限制约 1MB。

Request

POST /api/image
Authorization: Bearer $GATEWAY_SECRET

{
  "productTag": "site",
  "model": "gemini",
  "prompt": "Generate a clean SaaS hero image",
  "imageBase64": "data:image/jpeg;base64,..."
}

Response

{
  "code": 200,
  "message": "success",
  "data": {
    "image": "data:image/png;base64,..."
  }
}

Video

POST /api/video

视频生成契约已预留,目前返回 501,后续接入视频模型后保持同一认证和响应格式。

Request

{
  "productTag": "site",
  "model": "gemini",
  "prompt": "A product demo video"
}

Response

{
  "code": 501,
  "message": "视频生成功能暂未上线"
}

Next.js 调用示例

Server Route / Server Action

下游项目不要把网关密钥暴露给浏览器;在服务端 API、Server Action 或后台任务里调用。

Request

await fetch(process.env.AI_GATEWAY_URL + '/api/chat', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.AI_GATEWAY_SECRET}`,
  },
  body: JSON.stringify({
    productTag: 'luma',
    model: 'openrouter',
    modelName: 'openai/gpt-4o-mini',
    messages,
  }),
});

Response

下游接口只返回本产品需要的数据结构,中台响应中的 meta.requestId 建议写入业务日志。