技术架构与接口说明

更新时间:
复制为 MD 格式

本文介绍 Tair AI Gateway 的内部请求处理流程,以及两种语义缓存模式的完整接口规范、配置参数和错误码。

请求处理流程

image

Tair 全托管模式

全托管模式处理一次请求的完整链路:

  1. 请求接入 — 接收 OpenAI 兼容格式的请求。

  2. Key 提取 — 通过 GJSON PATH 表达式从请求 JSON 中提取缓存 Key(默认提取最后一条 user message)。

  3. 精确匹配 — 在 Tair 中查找完全一致的缓存。命中则直接返回(延迟约 1~2 ms)。

  4. Embedding — 精确未命中时,调用 Embedding 模型将文本向量化。

  5. 语义检索 — 在 Tair Vector 中执行 KNN 近似搜索。

  6. 相似度判定 — 最相似结果达到阈值则返回缓存(延迟约 5~20 ms)。

  7. LLM 回退 — 均未命中,请求透传至百炼平台获取推理结果。

  8. 缓存写入 — LLM 结果自动写入 Tair,后续相同/相似请求可复用。

LangCache 兼容模式

LangCache 模式仅提供缓存的增删查能力,不代理 LLM 调用。开发者通过 API 主动管理缓存条目,自行决定何时查询缓存、何时调用 LLM、何时写入缓存。

Tair 全托管模式 API

全托管模式兼容 OpenAI 协议,无需额外学习新 API。将现有代码中的Base URLAPI Key指向替换成 AI 网关实例中的服务地址和API Key即可。

Chat Completions API

何时使用:标准多轮对话场景,兼容所有 OpenAI Chat 格式的请求。

POST /compatible-mode/v1/chat/completions

示例:

curl -X POST http://<Base URL>/compatible-mode/v1/chat/completions \
  -H "Authorization: Bearer <API Key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.6-plus",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "什么是语义缓存?"}
    ]
  }'

Responses API

何时使用:简单单轮问答,无需维护 messages 数组。

POST /compatible-mode/v1/responses

示例:

curl -X POST http://<Base URL>/compatible-mode/v1/responses \
  -H "Authorization: Bearer <API Key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.6-plus",
    "input": "简要介绍下语义缓存的工作原理"
  }'

百炼 DashScope API

何时使用:已使用百炼 SDK 的应用,不想切换到 OpenAI 格式。

POST /api/v1/services/aigc/text-generation/generation

示例:

curl -X POST http://<Base URL>/api/v1/services/aigc/text-generation/generation \
  -H "Authorization: Bearer <API Key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.6-plus",
    "input": {
      "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "什么是向量检索?"}
      ]
    },
    "parameters": {"result_format": "message"}
  }'

SDK 接入

支持通过以下 SDK 接入,安装方式参见安装SDK

  • OpenAI Python SDK / OpenAI Node.js SDK

  • DashScope Python SDK / DashScope Java SDK

说明

公测期间,model选择仅支持qwen3.6-plus

核心配置参数

参数

类型

说明

默认值

cache_strategy

String

缓存策略:exactexact_and_semantic

exact_and_semantic

cache_key_from

String

GJSON PATH,从请求 JSON 提取缓存 Key

messages.#.content(最后一条)

cache_value_from

String

GJSON PATH,从响应 JSON 提取要缓存的内容

choices.0.message.content

similarity_threshold

Float

语义匹配相似度阈值(0~1)

0.85

index_from

Array

GJSON PATH 列表,提取向量索引名。不同索引的缓存数据相互隔离

-

cache.ttl

Integer

精确缓存过期时间(秒),0 = 永不过期

0

vector.ttl

Integer

向量索引过期时间(秒),0 = 永不过期

0

LangCache 兼容模式 API

所有接口基路径为 /v1/caches/{cacheId},其中 cacheId 为绑定的 Tair 实例 ID。

语义搜索

何时使用:查询缓存中是否存在与当前请求语义相似的已有回答。这是 LangCache 模式的核心操作——先搜索,命中则使用缓存,未命中则自行调用 LLM。

POST /v1/caches/{cacheId}/entries/search

请求参数

参数

类型

必填

说明

prompt

String

搜索文本,将被 Embedding 后进行匹配

similarityThreshold

Float

本次搜索的相似度阈值,覆盖全局配置

attributes

Object

元数据过滤条件(如按语言、主题过滤)

searchStrategies

Array

搜索策略,如 ["exact", "semantic"]

响应示例

{
  "data": [
    {
      "id": "5b84acef3ce360988d1b35adbaaaccb1",
      "prompt": "Tell me how semantic caching works",
      "response": "Semantic caching stores and retrieves data based on meaning rather than exact string matching.",
      "attributes": {"language": "en", "topic": "cache"},
      "similarity": 0.95,
      "searchStrategy": "semantic"
    }
  ]
}

如果无命中结果,data 为空数组。

插入缓存

何时使用:调用 LLM 获得回答后,将问答对存入缓存供后续复用。

POST /v1/caches/{cacheId}/entries

请求参数

参数

类型

必填

说明

prompt

String

缓存 Key(原始问题文本)

response

String

缓存 Value(LLM 回答)

attributes

Object

元数据标签,可用于后续搜索过滤

ttlMillis

Integer

过期时间(毫秒),覆盖全局 TTL 配置

响应

{
  "entryId": "a1b2c3d4e5f6..."
}

删除缓存条目

何时使用:某条缓存内容过时或错误,需要单独移除。

DELETE /v1/caches/{cacheId}/entries/{entryId}

成功返回 HTTP 204(无响应体)。

清空缓存

何时使用:需要重建整个缓存(如模型升级后旧答案不再适用)。

POST /v1/caches/{cacheId}/flush

成功返回 HTTP 204。

警告

此操作不可逆,将清除该实例下所有缓存数据。

核心配置参数

参数

类型

说明

默认值

ttl_millis

Integer

全局缓存过期时间(毫秒),0 = 永不过期

0

similarity_threshold

Float

全局相似度阈值

0.85

search_strategies

Array

默认搜索策略,如 ["exact","semantic"](先精确后语义)

["exact","semantic"]

SDK 接入

SDK

语言

安装

LangCache SDK for Python

Python

pip install langcache(PyPI)

LangCache SDK for Javascript

JavaScript

npm install @redis-ai/langcache(npm)

错误码

状态码

说明

解决方案

400

Invalid Request,请求参数错误

客户端侧修正请求格式

403

Incorrect API key provided,apikey 错误

客户端侧修正请求中使用的 API Key

404

Not Found,缓存实例或条目不存在

客户端侧修正请求 path 或 path 中的 cache id 字段

500

Internal Server Error,服务端内部错误

百炼或 Tair 请求失败,可以重试

错误响应统一格式:

{
  "title": "错误标题",
  "status": 400,
  "detail": "具体错误描述",
  "instance": "/v1/caches/xxx/entries/search",
  "type": "/errors/invalid-data"
}