mirror of
https://github.com/alibaba/higress.git
synced 2026-05-24 20:57:31 +08:00
feat(ai-proxy): add auto protocol compatibility for OpenAI and Claude APIs (#2810)
This commit is contained in:
@@ -9,10 +9,21 @@ description: AI 代理插件配置参考
|
||||
`AI 代理`插件实现了基于 OpenAI API 契约的 AI 代理功能。目前支持 OpenAI、Azure OpenAI、月之暗面(Moonshot)和通义千问等 AI
|
||||
服务提供商。
|
||||
|
||||
> **注意:**
|
||||
**🚀 自动协议兼容 (Auto Protocol Compatibility)**
|
||||
|
||||
插件现在支持**自动协议检测**,无需配置即可同时兼容 OpenAI 和 Claude 两种协议格式:
|
||||
|
||||
- **OpenAI 协议**: 请求路径 `/v1/chat/completions`,使用标准的 OpenAI Messages API 格式
|
||||
- **Claude 协议**: 请求路径 `/v1/messages`,使用 Anthropic Claude Messages API 格式
|
||||
- **智能转换**: 自动检测请求协议,如果目标供应商不原生支持该协议,则自动进行协议转换
|
||||
- **零配置**: 用户无需设置 `protocol` 字段,插件自动处理
|
||||
|
||||
> **协议支持说明:**
|
||||
|
||||
> 请求路径后缀匹配 `/v1/chat/completions` 时,对应文生文场景,会用 OpenAI 的文生文协议解析请求 Body,再转换为对应 LLM 厂商的文生文协议
|
||||
|
||||
> 请求路径后缀匹配 `/v1/messages` 时,对应 Claude 文生文场景,会自动检测供应商能力:如果支持原生 Claude 协议则直接转发,否则先转换为 OpenAI 协议再转发给供应商
|
||||
|
||||
> 请求路径后缀匹配 `/v1/embeddings` 时,对应文本向量场景,会用 OpenAI 的文本向量协议解析请求 Body,再转换为对应 LLM 厂商的文本向量协议
|
||||
|
||||
## 运行属性
|
||||
@@ -937,19 +948,40 @@ provider:
|
||||
}
|
||||
```
|
||||
|
||||
### 使用 OpenAI 协议代理 Claude 服务
|
||||
### 使用自动协议兼容功能
|
||||
|
||||
插件现在支持自动协议检测,可以同时处理 OpenAI 和 Claude 两种协议格式的请求。
|
||||
|
||||
**配置信息**
|
||||
|
||||
```yaml
|
||||
provider:
|
||||
type: claude
|
||||
type: claude # 原生支持 Claude 协议的供应商
|
||||
apiTokens:
|
||||
- 'YOUR_CLAUDE_API_TOKEN'
|
||||
version: '2023-06-01'
|
||||
```
|
||||
|
||||
**请求示例**
|
||||
**OpenAI 协议请求示例**
|
||||
|
||||
URL: `http://your-domain/v1/chat/completions`
|
||||
|
||||
```json
|
||||
{
|
||||
"model": "claude-3-opus-20240229",
|
||||
"max_tokens": 1024,
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "你好,你是谁?"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Claude 协议请求示例**
|
||||
|
||||
URL: `http://your-domain/v1/messages`
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -966,6 +998,8 @@ provider:
|
||||
|
||||
**响应示例**
|
||||
|
||||
两种协议格式的请求都会返回相应格式的响应:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "msg_01Jt3GzyjuzymnxmZERJguLK",
|
||||
@@ -990,6 +1024,39 @@ provider:
|
||||
}
|
||||
```
|
||||
|
||||
### 使用智能协议转换
|
||||
|
||||
当目标供应商不原生支持 Claude 协议时,插件会自动进行协议转换:
|
||||
|
||||
**配置信息**
|
||||
|
||||
```yaml
|
||||
provider:
|
||||
type: qwen # 不原生支持 Claude 协议,会自动转换
|
||||
apiTokens:
|
||||
- 'YOUR_QWEN_API_TOKEN'
|
||||
modelMapping:
|
||||
'claude-3-opus-20240229': 'qwen-max'
|
||||
'*': 'qwen-turbo'
|
||||
```
|
||||
|
||||
**Claude 协议请求**
|
||||
|
||||
URL: `http://your-domain/v1/messages` (自动转换为 OpenAI 协议调用供应商)
|
||||
|
||||
```json
|
||||
{
|
||||
"model": "claude-3-opus-20240229",
|
||||
"max_tokens": 1024,
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "你好,你是谁?"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 使用 OpenAI 协议代理混元服务
|
||||
|
||||
**配置信息**
|
||||
|
||||
Reference in New Issue
Block a user