diff --git a/deploy/codex.md b/deploy/codex.md index 3b4e318..9f3bbba 100644 --- a/deploy/codex.md +++ b/deploy/codex.md @@ -36,8 +36,8 @@ CodeX 是基于 GPT-5 架构的智能编程助手,为开发者提供卓越的 1. 打开 CC-Switch 应用程序 2. 点击顶部的「Codex」标签页 3. 点击右上角橙色「+」按钮添加新配置 - -![CC-Switch Codex 标签页](https://minio.oneinai.com/oneinai/images/docs/codex/codex01.png) +g +![CC-Switch Codex 标签页](https://minio.oneinai.com/oneinai/images/docs/codex/codex01.pn) **2. 填写 CodeX 提供商配置** diff --git a/deploy/nano-banana.md b/deploy/nano-banana.md index 447a75d..7ef1bf5 100644 --- a/deploy/nano-banana.md +++ b/deploy/nano-banana.md @@ -1,437 +1,293 @@ -# ![NanoBanana](https://minio.oneinai.com/oneinai/images/docs/nano-banana/nano-banana01.png) NanoBanana 图像生成部署指南 +# ![NanoBanana](https://minio.oneinai.com/oneinai/images/docs/nano-banana/nano-banana01.png) NanoBanana 图像生成部署指南 -**通过 OneinAI 调用 Gemini 原生图像生成 API** +**通过 oneinai 调用 Gemini 原生图像生成 API** -资源| 地址 ----|--- -OneinAI 平台| [api.ikuncode.cc]() - -📋 简介 +| 资源 | 地址 | +| --- | --- | +| oneinai 平台 | | +| oneinai 控制台 | | -NanoBanana 是 OneinAI 提供的 Gemini 图像生成模型系列。通过 OneinAI 的 API Key 即可直接调用,无需科学上网,无需谷歌账号。 +## 📋 简介 -## 🎯 模型介绍 +NanoBanana 是 oneinai 提供的 Gemini 图像生成模型系列。通过 oneinai 的 API Key 即可直接调用,无需科学上网,无需谷歌账号。 -OneinAI 提供两个 NanoBanana 模型: +## 🎯 模型介绍 -模型| 模型 ID| 特点| 适用场景 ----|---|---|--- -**NanoBananaPro**| `gemini-3-pro-image-preview`| 效果最佳,支持高清输出| 高质量海报、商业素材、精细创作 -**NanoBanana2**| `gemini-3.1-flash-image-preview`| 速度快、价格低| 快速预览、批量生成、日常使用 - -💡 如何选择 +oneinai 提供两个 NanoBanana 模型: - * 追求**画质** :选 NanoBananaPro(Pro 版) - * 追求**速度和性价比** :选 NanoBanana2(Flash 版) +| 模型 | 模型 ID | 特点 | 适用场景 | +| --- | --- | --- | --- | +| **NanoBananaPro** | `gemini-3-pro-image-preview` | 效果最佳,支持高清输出 | 高质量海报、商业素材、精细创作 | +| **NanoBanana2** | `gemini-3.1-flash-image-preview` | 速度快、价格低 | 快速预览、批量生成、日常使用 | -## 📐 支持的宽高比 +> 💡 **如何选择** +> - 追求**画质**:选 NanoBananaPro(Pro 版) +> - 追求**速度和性价比**:选 NanoBanana2(Flash 版) -两个模型均支持以下 **10 种宽高比** : +## 📐 支持的宽高比 -宽高比| 说明| 宽高比| 说明 ----|---|---|--- -**1:1**| 正方形图片| **3:2**| 相机常用比例(横) -**16:9**| 横屏标准比例| **2:3**| 相机常用比例(竖) -**9:16**| 竖屏标准比例| **21:9**| 超宽屏比例 -**4:3**| 传统横屏比例| **5:4**| 显示器比例(横) -**3:4**| 传统竖屏比例| **4:5**| 显示器比例(竖) - -## 📏 支持的分辨率 +两个模型均支持以下 **10 种宽高比**: -每种宽高比支持三种分辨率等级: +| 宽高比 | 说明 | 宽高比 | 说明 | +| --- | --- | --- | --- | +| **1:1** | 正方形图片 | **3:2** | 相机常用比例(横) | +| **16:9** | 横屏标准比例 | **2:3** | 相机常用比例(竖) | +| **9:16** | 竖屏标准比例 | **21:9** | 超宽屏比例 | +| **4:3** | 传统横屏比例 | **5:4** | 显示器比例(横) | +| **3:4** | 传统竖屏比例 | **4:5** | 显示器比例(竖) | -### 1K 分辨率(快速预览) +## 📏 支持的分辨率 -宽高比| 分辨率| 宽高比| 分辨率 ----|---|---|--- -1:1| 1024×1024| 3:2| 1232×816 -16:9| 1376×768| 2:3| 816×1232 -9:16| 768×1376| 21:9| 1584×672 -4:3| 1200×896| 5:4| 1136×896 -3:4| 896×1200| 4:5| 896×1136 - -### 2K 分辨率(推荐使用) +每种宽高比支持三种分辨率等级。 -宽高比| 分辨率| 宽高比| 分辨率 ----|---|---|--- -1:1| 2048×2048| 3:2| 2464×1632 -16:9| 2752×1536| 2:3| 1632×2464 -9:16| 1536×2752| 21:9| 3168×1344 -4:3| 2400×1792| 5:4| 2272×1792 -3:4| 1792×2400| 4:5| 1792×2272 - -### 4K 分辨率(超高清) +### 1K 分辨率(快速预览) -宽高比| 分辨率| 宽高比| 分辨率 ----|---|---|--- -1:1| 4096×4096| 3:2| 4928×3264 -16:9| 5504×3072| 2:3| 3264×4928 -9:16| 3072×5504| 21:9| 6336×2688 -4:3| 4800×3584| 5:4| 4544×3584 -3:4| 3584×4800| 4:5| 3584×4544 - -## 🔧 API 请求格式 +| 宽高比 | 分辨率 | 宽高比 | 分辨率 | +| --- | --- | --- | --- | +| 1:1 | 1024×1024 | 3:2 | 1232×816 | +| 16:9 | 1376×768 | 2:3 | 816×1232 | +| 9:16 | 768×1376 | 21:9 | 1584×672 | +| 4:3 | 1200×896 | 5:4 | 1136×896 | +| 3:4 | 896×1200 | 4:5 | 896×1136 | + +### 2K 分辨率(推荐使用) + +| 宽高比 | 分辨率 | 宽高比 | 分辨率 | +| --- | --- | --- | --- | +| 1:1 | 2048×2048 | 3:2 | 2464×1632 | +| 16:9 | 2752×1536 | 2:3 | 1632×2464 | +| 9:16 | 1536×2752 | 21:9 | 3168×1344 | +| 4:3 | 2400×1792 | 5:4 | 2272×1792 | +| 3:4 | 1792×2400 | 4:5 | 1792×2272 | + +### 4K 分辨率(超高清) + +| 宽高比 | 分辨率 | 宽高比 | 分辨率 | +| --- | --- | --- | --- | +| 1:1 | 4096×4096 | 3:2 | 4928×3264 | +| 16:9 | 5504×3072 | 2:3 | 3264×4928 | +| 9:16 | 3072×5504 | 21:9 | 6336×2688 | +| 4:3 | 4800×3584 | 5:4 | 4544×3584 | +| 3:4 | 3584×4800 | 4:5 | 3584×4544 | + +## 🔧 API 请求格式 NanoBanana 使用**谷歌原生格式** API,与 OpenAI 格式不同。 -### 基本请求结构 +### 基本请求结构 -json - - - { - "contents": [{ - "parts": [ - { "text": "您的图片描述" } - ] - }], - "generationConfig": { - "responseModalities": ["IMAGE"], - "imageConfig": { - "aspectRatio": "16:9", - "image_size": "2K" - } +```json +{ + "contents": [{ + "parts": [ + { "text": "你的图片描述" } + ] + }], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "16:9", + "image_size": "2K" + } + } +} +``` + +### 参数说明 + +| 参数 | 说明 | 可选值 | +| --- | --- | --- | +| `responseModalities` | 响应类型,必须设为图片 | `["IMAGE"]` | +| `aspectRatio` | 宽高比 | `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3`、`21:9`、`5:4`、`4:5` | +| `image_size` | 分辨率等级 | `1K`、`2K`、`4K` | + +### API 端点 + +``` +POST https://api.oneinai.com/v1beta/models/{模型ID}:generateContent +``` + +- NanoBananaPro:`gemini-3-pro-image-preview` +- NanoBanana2:`gemini-3.1-flash-image-preview` + +## 📝 示例代码 + +### cURL 示例 + +```bash +curl -X POST "https://api.oneinai.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \ + -H "Authorization: Bearer sk-你的oneinai密钥" \ + -H "Content-Type: application/json" \ + -d '{ + "contents": [{ + "parts": [ + {"text": "一只可爱的小猫咪坐在花园里,油画风格,高清,细节丰富"} + ] + }], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "16:9", + "image_size": "2K" } } + }' +``` -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 +### Python 示例 -### 参数说明 +```python +import requests +import base64 -参数| 说明| 可选值 ----|---|--- -`responseModalities`| 响应类型,必须设为图片| `["IMAGE"]` -`aspectRatio`| 宽高比| `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3`、`21:9`、`5:4`、`4:5` -`image_size`| 分辨率等级| `1K`、`2K`、`4K` - -### API 端点 - - - POST https://api.oneinai.com/v1beta/models/{模型ID}:generateContent +API_KEY = "sk-你的oneinai密钥" +API_URL = "https://api.oneinai.com/v1beta/models/gemini-3-pro-image-preview:generateContent" -1 - - * NanoBananaPro:`gemini-3-pro-image-preview` - * NanoBanana2:`gemini-3.1-flash-image-preview` - -## 📝 示例代码 - -### cURL 示例 - -bash - - - curl -X POST "https://api.oneinai.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \\ - -H "Authorization: Bearer sk-你的OneinAI密钥" \\ - -H "Content-Type: application/json" \\ - -d '{ - "contents": [{ - "parts": [ +payload = { + "contents": [{ + "parts": [ {"text": "一只可爱的小猫咪坐在花园里,油画风格,高清,细节丰富"} - ] - }], - "generationConfig": { - "responseModalities": ["IMAGE"], - "imageConfig": { + ] + }], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { "aspectRatio": "16:9", "image_size": "2K" - } - } - }' - -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 - -### Python 示例 - -python - - - import requests - import base64 - - API_KEY = "sk-你的OneinAI密钥" - API_URL = "https://api.oneinai.com/v1beta/models/gemini-3-pro-image-preview:generateContent" - - payload = { - "contents": [{ - "parts": [ - {"text": "一只可爱的小猫咪坐在花园里,油画风格,高清,细节丰富"} - ] - }], - "generationConfig": { - "responseModalities": ["IMAGE"], - "imageConfig": { - "aspectRatio": "16:9", - "image_size": "2K" - } } } - - headers = { - "Authorization": f"Bearer {API_KEY}", - "Content-Type": "application/json" - } - - response = requests.post(API_URL, headers=headers, json=payload, timeout=600) - - if response.status_code == 200: - data = response.json() - image_base64 = data["candidates"][0]["content"]["parts"][0]["inlineData"]["data"] - - # 保存图片 - with open("output.png", "wb") as f: - f.write(base64.b64decode(image_base64)) - print("图片已保存为 output.png") - else: - print(f"请求失败: {response.status_code}") - print(response.text) +} -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 +headers = { + "Authorization": f"Bearer {API_KEY}", + "Content-Type": "application/json" +} -### Node.js 示例 +response = requests.post(API_URL, headers=headers, json=payload, timeout=600) -javascript - - - const fs = require('fs'); - - const API_KEY = 'sk-你的OneinAI密钥'; - const API_URL = 'https://api.oneinai.com/v1beta/models/gemini-3-pro-image-preview:generateContent'; - - async function generateImage() { - const response = await fetch(API_URL, { - method: 'POST', - headers: { - 'Authorization': \`Bearer \${API_KEY}\`, - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - contents: [{ - parts: [ - { text: '一只可爱的小猫咪坐在花园里,油画风格,高清,细节丰富' } - ] - }], - generationConfig: { - responseModalities: ['IMAGE'], - imageConfig: { - aspectRatio: '16:9', - image_size: '2K' - } - } - }) - }); - - const data = await response.json(); - const imageBase64 = data.candidates[0].content.parts[0].inlineData.data; - - fs.writeFileSync('output.png', Buffer.from(imageBase64, 'base64')); - console.log('图片已保存为 output.png'); - } - - generateImage().catch(console.error); +if response.status_code == 200: + data = response.json() + image_base64 = data["candidates"][0]["content"]["parts"][0]["inlineData"]["data"] -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 + with open("output.png", "wb") as f: + f.write(base64.b64decode(image_base64)) + print("图片已保存为 output.png") +else: + print(f"请求失败: {response.status_code}") + print(response.text) +``` -## 🖼️ 图生图编辑 +### Node.js 示例 -NanoBananaPro 还支持**图生图** 功能,上传一张图片并描述编辑指令,即可对图片进行修改。 +```javascript +const fs = require('fs'); -json - - - { - "contents": [{ - "parts": [ - { - "inlineData": { - "mimeType": "image/png", - "data": "图片的Base64编码字符串" - } - }, - { "text": "将背景改为星空,保持人物不变" } +const API_KEY = 'sk-你的oneinai密钥'; +const API_URL = 'https://api.oneinai.com/v1beta/models/gemini-3-pro-image-preview:generateContent'; + +async function generateImage() { + const response = await fetch(API_URL, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${API_KEY}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + contents: [{ + parts: [ + { text: '一只可爱的小猫咪坐在花园里,油画风格,高清,细节丰富' } ] }], - "generationConfig": { - "responseModalities": ["IMAGE"], - "imageConfig": { - "aspectRatio": "16:9", - "image_size": "2K" + generationConfig: { + responseModalities: ['IMAGE'], + imageConfig: { + aspectRatio: '16:9', + image_size: '2K' } } + }) + }); + + const data = await response.json(); + const imageBase64 = data.candidates[0].content.parts[0].inlineData.data; + + fs.writeFileSync('output.png', Buffer.from(imageBase64, 'base64')); + console.log('图片已保存为 output.png'); +} + +generateImage().catch(console.error); +``` + +## 🖼️ 图生图编辑 + +NanoBananaPro 还支持**图生图**功能,上传一张图片并描述编辑指令,即可对图片进行修改。 + +```json +{ + "contents": [{ + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "图片的Base64编码字符串" + } + }, + { "text": "将背景改为星空,保持人物不变" } + ] + }], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "16:9", + "image_size": "2K" } + } +} +``` -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 +> 💡 **图生图使用技巧** +> - 编辑指令要**具体明确**,说清楚保留什么、修改什么 +> - 支持换背景、改风格、加元素、去水印等操作 +> - 图片需要转为 Base64 编码后放入 `inlineData.data` 字段 -💡 图生图使用技巧 +## 🤖 在 Claude Code 中使用 - * 编辑指令要**具体明确** ,说清楚保留什么、修改什么 - * 支持换背景、改风格、加元素、去水印等操作 - * 图片需要转为 Base64 编码后放入 `inlineData.data` 字段 +如果你已安装 [oneimage Skill](/skills/oneimage),可以在 Claude Code 对话中直接使用自然语言生成图片,无需手动调用 API。 -## 🤖 在 Claude Code 中使用 +``` +> 用 oneinai 画一张赛博朋克风格的城市夜景,16:9 比例,2K 分辨率 -如果您已安装 [ikunimage Skill](),可以在 Claude Code 对话中直接使用自然语言生成图片,无需手动调用 API。 - - - > 用 ikun 画一张赛博朋克风格的城市夜景,16:9 比例,2K 分辨率 - - > ikun 生成一张水墨风格的山水画,竖屏 9:16 - - > 用 ikun 编辑这张图片 /path/to/image.png,把背景换成海边日落 +> oneinai 生成一张水墨风格的山水画,竖屏 9:16 -1 -2 -3 -4 -5 +> 用 oneinai 编辑这张图片 /path/to/image.png,把背景换成海边日落 +``` -详细安装和使用说明请参考:[ikunimage AI 生图]() +详细安装和使用说明请参考:[oneimage AI 生图](/skills/oneimage) -## ⏱️ 性能建议 +## ⏱️ 性能建议 -### 推荐超时时间 +### 推荐超时时间 不同分辨率的处理时间差异较大,建议设置合理的超时: -分辨率| 推荐超时| 适用场景 ----|---|--- -**1K**| 360 秒(6 分钟)| 快速预览、测试效果 -**2K**| 600 秒(10 分钟)| 日常使用(推荐) -**4K**| 1200 秒(20 分钟)| 超高清输出、商业用途 - -### 带宽注意 +| 分辨率 | 推荐超时 | 适用场景 | +| --- | --- | --- | +| **1K** | 360 秒(6 分钟) | 快速预览、测试效果 | +| **2K** | 600 秒(10 分钟) | 日常使用(推荐) | +| **4K** | 1200 秒(20 分钟) | 超高清输出、商业用途 | + +### 带宽注意 图片数据使用 Base64 编码传输,数据量较大: - * 建议使用**稳定高速的网络连接** - * 4K 图片的 Base64 数据可能超过 **10MB** - * 避免在网络高峰时段生成 4K 图片 +- 建议使用**稳定高速的网络连接** +- 4K 图片的 Base64 数据可能超过 **10MB** +- 避免在网络高峰时段生成 4K 图片 -## ⚠️ 注意事项 +## ⚠️ 注意事项 - 1. **API Key** :需从 [OneinAI 平台]() 创建支持图像模型的令牌 - 2. **API 格式** :NanoBanana 使用**谷歌原生格式** ,不是 OpenAI 兼容格式,请注意区分 - 3. **分辨率与耗时** :分辨率越高,生成时间越长,请根据实际需求选择 - 4. **文字渲染** :支持在图片中渲染中文文字(如招牌、海报文案),在 prompt 中直接写明即可 - 5. **价格差异** :不同模型和分辨率价格不同,详见 OneinAI 平台定价页面 +1. **API Key**:需从 [oneinai 平台](https://api.oneinai.com) 创建支持图像模型的令牌 +2. **API 格式**:NanoBanana 使用**谷歌原生格式**,不是 OpenAI 兼容格式,请注意区分 +3. **分辨率与耗时**:分辨率越高,生成时间越长,请根据实际需求选择 +4. **文字渲染**:支持在图片中渲染中文文字(如招牌、海报文案),在 prompt 中直接写明即可 +5. **价格差异**:不同模型和分辨率价格不同,详见 oneinai 平台定价页面 diff --git a/skills/ikuncode-aimcp.md b/skills/oneinai-aimcp.md similarity index 100% rename from skills/ikuncode-aimcp.md rename to skills/oneinai-aimcp.md diff --git a/skills/ikunimage.md b/skills/oneinaiimage.md similarity index 100% rename from skills/ikunimage.md rename to skills/oneinaiimage.md diff --git a/tools/cc-switch.md b/tools/cc-switch.md index e0df041..5ba3138 100644 --- a/tools/cc-switch.md +++ b/tools/cc-switch.md @@ -17,7 +17,7 @@ CC-Switch 是一款跨平台桌面应用程序,统一管理 Claude Code、Code • 一键切换不同 AI 工具的提供商配置 • API 端点速度测试与质量指示器 • 多预设系统提示管理 • MCP 服务器统一架构管理 • Claude Skills 发现与安装系统 • 配置备份/恢复(自动保留最近10个) • 深度链接协议支持(`ccswitch://`) • 环境变量冲突检测 -![CC-Switch 软件界面](https://docs.ikuncode.cc/images/tu6.png) +![CC-Switch 软件界面](https://minio.oneinai.com/oneinai/images/docs/cc-switch/cc-switch01.png) ## 📦 安装方法