Files
oracle-openai/script/OCI-SETUP-GUIDE.md
Wang Defa 9098c61c6c
All checks were successful
Build and Push OCI GenAI Gateway Docker Image / docker-build-push (push) Successful in 31s
新增 OCI 访问配置指南和自动化脚本
2025-12-09 15:16:18 +08:00

364 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OCI Generative AI 访问配置指南
## 📖 概述
本指南将帮助您快速配置 Oracle Cloud Infrastructure (OCI) 以使用 Generative AI 服务。
## 🚀 快速开始
### 方法一:使用自动化脚本(推荐)
#### 1. 在 Oracle Cloud Shell 中运行脚本
```bash
bash <(curl -sL https://gitea.bcde.io/wangdefa/oracle-openai/raw/branch/main/script/setup-oci-genai-access.sh)
```
#### 2. 按提示输入信息
脚本会询问您:
- **用户组名称**(默认: `GenAI-Users`
- **用户名**(默认: `genai-api-user`
- **策略名称**(默认: `GenAI-Access-Policy`
您可以直接按回车使用默认值,或输入自定义名称。
#### 3. 脚本将自动完成以下操作
✅ 检查 OCI CLI 环境
✅ 创建 IAM 用户组
✅ 创建并配置策略
✅ 创建新用户
✅ 将用户添加到组
✅ 生成配置信息文件
#### 4. 完成配置
脚本执行完成后,会生成一个配置文件(如 `oci-genai-setup-20241209-143022.txt`),其中包含:
- 所有创建的资源 OCID
- 策略语句
- 详细的后续步骤说明
### 方法二:手动配置
#### 1. 创建用户组
```bash
oci iam group create \
--compartment-id <tenancy-ocid> \
--name "GenAI-Users" \
--description "用于访问 OCI Generative AI 服务的用户组"
```
#### 2. 创建策略
```bash
oci iam policy create \
--compartment-id <tenancy-ocid> \
--name "GenAI-Access-Policy" \
--description "允许 GenAI-Users 组访问 Generative AI 服务" \
--statements '["ALLOW GROUP GenAI-Users to manage generative-ai-family IN TENANCY"]'
```
#### 3. 创建用户
```bash
oci iam user create \
--compartment-id <tenancy-ocid> \
--name "genai-api-user" \
--description "用于通过 API 访问 OCI Generative AI 服务的用户"
```
#### 4. 添加用户到组
```bash
oci iam group add-user \
--user-id <user-ocid> \
--group-id <group-ocid>
```
## 🔑 创建 API Key
### 通过 OCI 控制台
1. 登录 [OCI 控制台](https://cloud.oracle.com)
2. 导航到:**Identity & Security** → **Users** → 选择您创建的用户
3. 点击左侧 **API Keys**
4. 点击 **Add API Key** 按钮
5. 选择 **Generate API Key Pair**
6. **下载私钥文件**`oci_api_key.pem`)并妥善保管
7. **复制并保存公钥指纹**fingerprint
### 通过 OCI CLI高级用户
```bash
# 生成 API Key 对
mkdir -p ~/.oci
openssl genrsa -out ~/.oci/oci_api_key.pem 2048
chmod 600 ~/.oci/oci_api_key.pem
# 生成公钥
openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
# 上传公钥到 OCI
oci iam user api-key upload \
--user-id <user-ocid> \
--key-file ~/.oci/oci_api_key_public.pem
```
## ⚙️ 配置 OCI CLI
### 1. 创建配置文件
创建或编辑 `~/.oci/config` 文件:
```ini
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaa...
fingerprint=aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99
key_file=~/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa...
region=us-chicago-1
```
**参数说明**
- `user`: 用户的 OCID从配置文件或控制台获取
- `fingerprint`: API Key 的指纹(创建 API Key 时显示)
- `key_file`: 私钥文件路径
- `tenancy`: 租户的 OCID
- `region`: 您的 OCI 区域(如 `us-chicago-1`, `us-ashburn-1` 等)
### 2. 设置文件权限
```bash
chmod 600 ~/.oci/oci_api_key.pem
chmod 600 ~/.oci/config
```
### 3. 测试配置
```bash
# 测试 OCI CLI 配置
oci iam region list
# 测试 Generative AI 访问
oci generative-ai model list --compartment-id <tenancy-ocid>
```
如果命令执行成功并返回结果,说明配置正确。
## 🌍 支持的 OCI 区域
Generative AI 服务目前在以下区域可用:
| 区域代码 | 区域名称 | Endpoint |
|---------|----------|----------|
| `us-chicago-1` | US East (Chicago) | 推荐 |
| `us-ashburn-1` | US East (Ashburn) | 可用 |
| `uk-london-1` | UK South (London) | 可用 |
| `eu-frankfurt-1` | Germany Central (Frankfurt) | 可用 |
**注意**:请选择距离您最近或延迟最低的区域。
## 🔧 多区域配置(可选)
如果您需要访问多个区域或进行负载均衡,可以配置多个 profile
```ini
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaa...
fingerprint=aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99
key_file=~/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa...
region=us-chicago-1
[CHICAGO]
user=ocid1.user.oc1..aaaaaaaa...
fingerprint=aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99
key_file=~/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa...
region=us-chicago-1
[ASHBURN]
user=ocid1.user.oc1..aaaaaaaa...
fingerprint=aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99
key_file=~/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa...
region=us-ashburn-1
```
然后在 Gateway 的 `.env` 文件中配置:
```bash
OCI_CONFIG_PROFILE=DEFAULT,CHICAGO,ASHBURN
```
## 🐳 配置 OCI GenAI Gateway
### 1. 克隆项目
```bash
git clone <repository-url>
cd oracle-openai
```
### 2. 配置环境变量
复制并编辑环境变量文件:
```bash
cp .env.example .env
```
编辑 `.env` 文件,设置:
```bash
# API Keys
API_KEYS=["sk-oci-genai-default-key","sk-your-custom-key"]
# OCI 配置
OCI_CONFIG_FILE=~/.oci/config
OCI_CONFIG_PROFILE=DEFAULT # 或多个: DEFAULT,CHICAGO,ASHBURN
OCI_AUTH_TYPE=api_key
# 其他配置(可选)
MAX_TOKENS=4096
TEMPERATURE=0.7
ENABLE_STREAMING=true
LOG_LEVEL=INFO
```
### 3. 启动服务
**使用 Python 直接运行**
```bash
# 安装依赖
pip install -r requirements.txt
# 启动服务
cd src
python main.py
```
**使用 Docker**
```bash
docker-compose up
```
### 4. 测试服务
```bash
# 健康检查
curl http://localhost:8000/health
# 列出可用模型
curl http://localhost:8000/v1/models \
-H "Authorization: Bearer sk-oci-genai-default-key"
# 测试对话
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-oci-genai-default-key" \
-d '{
"model": "google.gemini-2.5-pro",
"messages": [{"role": "user", "content": "你好!"}]
}'
```
## ❓ 常见问题
### 1. 脚本执行失败:权限不足
**错误**
```
ServiceError: Authorization failed or requested resource not found
```
**解决方案**
- 确保您使用的账号具有管理员权限
- 或至少具有以下权限:
- `MANAGE groups IN TENANCY`
- `MANAGE users IN TENANCY`
- `MANAGE policies IN TENANCY`
### 2. 无法创建 API Key
**错误**
```
The user already has the maximum allowed number of API keys (3)
```
**解决方案**
- 删除不再使用的旧 API Key
- 或使用现有的 API Key
### 3. 策略不生效
**问题**:创建了策略但用户仍无法访问 Generative AI
**解决方案**
- 等待 1-2 分钟让策略生效
- 确认用户已添加到正确的用户组
- 检查策略语句是否正确:
```
ALLOW GROUP GenAI-Users to manage generative-ai-family IN TENANCY
```
### 4. Region 不支持 Generative AI
**错误**
```
Service generativeai is not available in region us-sanjose-1
```
**解决方案**
- 切换到支持的区域(如 `us-chicago-1`, `us-ashburn-1`
- 更新 `~/.oci/config` 中的 `region` 参数
### 5. 模型列表为空
**问题**Gateway 启动时无法获取模型列表
**解决方案**
- 确认 OCI 配置正确:`oci iam region list`
- 测试 Generative AI 访问:
```bash
oci generative-ai model list --compartment-id <tenancy-ocid>
```
- 检查区域是否支持 Generative AI
- 确认策略已生效
## 📚 相关文档
- [OCI Generative AI 官方文档](https://docs.oracle.com/en-us/iaas/Content/generative-ai/home.htm)
- [OCI CLI 配置指南](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm)
- [OCI IAM 策略参考](https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/policygetstarted.htm)
- [项目 README](README.md)
- [开发文档 CLAUDE.md](CLAUDE.md)
## 🆘 获取帮助
如果您遇到问题:
1. 查看自动生成的配置文件(`oci-genai-setup-*.txt`
2. 检查 OCI 控制台中的资源状态
3. 查看 Gateway 日志:`tail -f logs/app.log`
4. 提交 GitHub Issue
## 📄 许可证
本项目基于 UPL (Universal Permissive License) 开源。
---
**⭐ 如果这个指南对您有帮助,请给项目一个 Star**