207 lines
4.2 KiB
Markdown
207 lines
4.2 KiB
Markdown
# OpenAI兼容接口到阿里云百炼平台智能体应用转发服务使用指南
|
||
|
||
本文档介绍了如何使用Python编写的转发服务,将OpenAI兼容的API请求转换为阿里云百炼平台智能体应用的请求。
|
||
|
||
## 工作原理
|
||
|
||
该转发服务作为一个代理服务器运行,接收OpenAI兼容的API请求,并将其转换为阿里云百炼平台智能体应用的请求格式,然后将响应转换回OpenAI格式返回给客户端。
|
||
|
||
```
|
||
客户端 -> OpenAI兼容请求 -> 转发服务 -> 阿里云百炼平台 -> 转发服务 -> OpenAI兼容响应 -> 客户端
|
||
```
|
||
|
||
## 配置要求
|
||
|
||
### 环境变量设置
|
||
|
||
需要设置以下环境变量:
|
||
|
||
1. `DASHSCOPE_API_KEY` - 阿里云百炼平台的API Key
|
||
2. `DASHSCOPE_APP_ID` - 智能体应用的APP ID
|
||
3. `PROXY_PORT` (可选) - 转发服务监听的端口,默认为8000
|
||
|
||
您可以在项目目录下的 [.env](file://c:\Steam\steamapps\common\RimWorld\Mods\3516260226\MCP\.env) 文件中配置这些变量:
|
||
|
||
```env
|
||
DASHSCOPE_API_KEY="sk-xxxxxxxx"
|
||
DASHSCOPE_APP_ID="app-xxxxxxxx"
|
||
PROXY_PORT=8000
|
||
```
|
||
|
||
在Windows系统中设置环境变量的示例:
|
||
```cmd
|
||
set DASHSCOPE_API_KEY=your_api_key_here
|
||
set DASHSCOPE_APP_ID=your_app_id_here
|
||
set PROXY_PORT=8000
|
||
```
|
||
|
||
在Linux/macOS系统中设置环境变量的示例:
|
||
```bash
|
||
export DASHSCOPE_API_KEY=your_api_key_here
|
||
export DASHSCOPE_APP_ID=your_app_id_here
|
||
export PROXY_PORT=8000
|
||
```
|
||
|
||
## 启动服务
|
||
|
||
运行转发服务:
|
||
|
||
```bash
|
||
python openai_to_dashscope_proxy.py
|
||
```
|
||
|
||
服务启动后,将显示以下信息:
|
||
```
|
||
OpenAI到阿里云百炼平台转发服务启动,监听端口 8000
|
||
Base URL: http://localhost:8000/v1
|
||
模型名称: dashscope-app
|
||
```
|
||
|
||
## 在Kilo Code中配置
|
||
|
||
在Kilo Code中按以下步骤配置:
|
||
|
||
1. 打开Kilo Code设置面板
|
||
2. 选择"API Provider"为"OpenAI Compatible"
|
||
3. 设置Base URL为: `http://localhost:8000/v1` (如果使用默认端口)
|
||
4. API Key可以任意填写(服务不会验证)
|
||
5. 模型名称填写: `dashscope-app`
|
||
|
||
## 支持的功能
|
||
|
||
### 1. 基本文本对话
|
||
|
||
发送聊天完成请求:
|
||
```json
|
||
{
|
||
"model": "dashscope-app",
|
||
"messages": [
|
||
{
|
||
"role": "user",
|
||
"content": "你好,你是谁?"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2. 流式输出
|
||
|
||
启用流式输出:
|
||
```json
|
||
{
|
||
"model": "dashscope-app",
|
||
"messages": [
|
||
{
|
||
"role": "user",
|
||
"content": "讲一个有趣的故事"
|
||
}
|
||
],
|
||
"stream": true
|
||
}
|
||
```
|
||
|
||
## 技术细节
|
||
|
||
### 请求转换
|
||
|
||
OpenAI兼容请求格式:
|
||
```json
|
||
{
|
||
"model": "dashscope-app",
|
||
"messages": [
|
||
{"role": "user", "content": "提示词"}
|
||
]
|
||
}
|
||
```
|
||
|
||
转换为阿里云百炼平台请求格式:
|
||
```json
|
||
{
|
||
"input": {
|
||
"prompt": "提示词"
|
||
},
|
||
"parameters": {},
|
||
"debug": {}
|
||
}
|
||
```
|
||
|
||
### 响应转换
|
||
|
||
阿里云百炼平台响应格式:
|
||
```json
|
||
{
|
||
"output": {
|
||
"text": "响应内容",
|
||
"finish_reason": "stop"
|
||
}
|
||
}
|
||
```
|
||
|
||
转换为OpenAI兼容响应格式:
|
||
```json
|
||
{
|
||
"id": "chatcmpl-request_id",
|
||
"object": "chat.completion",
|
||
"created": 1234567890,
|
||
"model": "dashscope-app",
|
||
"choices": [
|
||
{
|
||
"index": 0,
|
||
"message": {
|
||
"role": "assistant",
|
||
"content": "响应内容"
|
||
},
|
||
"finish_reason": "stop"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
### 1. 环境变量未设置
|
||
|
||
错误信息:
|
||
```
|
||
ValueError: 请设置环境变量 DASHSCOPE_API_KEY
|
||
```
|
||
|
||
解决方案:
|
||
确保已正确设置环境变量 `DASHSCOPE_API_KEY` 和 `DASHSCOPE_APP_ID`。
|
||
|
||
### 2. 网络连接问题
|
||
|
||
错误信息:
|
||
```
|
||
requests.exceptions.ConnectionError
|
||
```
|
||
|
||
解决方案:
|
||
检查网络连接,确保可以访问阿里云百炼平台。
|
||
|
||
### 3. API Key或APP ID错误
|
||
|
||
错误信息:
|
||
```
|
||
401 Unauthorized
|
||
```
|
||
|
||
解决方案:
|
||
检查API Key和APP ID是否正确。
|
||
|
||
### 4. 端口被占用
|
||
|
||
错误信息:
|
||
```
|
||
OSError: [Errno 98] Address already in use
|
||
```
|
||
|
||
解决方案:
|
||
更改端口号,通过设置 `PROXY_PORT` 环境变量或修改代码中的默认端口。
|
||
|
||
## 最佳实践
|
||
|
||
1. **安全性**:在生产环境中,建议将转发服务部署在安全的网络环境中
|
||
2. **监控**:启用日志记录以便监控服务运行状态
|
||
3. **错误处理**:确保正确处理各种错误情况
|
||
4. **性能**:对于高并发场景,考虑使用异步框架如FastAPI替代内置的HTTP服务器 |