fix: 修复阿里生图模型的 provider 识别问题

- 在 dynamic-provider.ts 中添加 alibaba-image 类型的专门处理
- 在 chat() 返回的对象中添加 provider 属性
- 确保 route.ts 能正确识别阿里生图模型并进入独立处理分支
This commit is contained in:
Your Name 2026-01-12 13:49:40 +08:00
parent e5b3088671
commit cda7cd4d7d
3 changed files with 107 additions and 0 deletions

View File

@ -0,0 +1,101 @@
# 🎉 AI 助手更新通知 - 2026年1月
---
## 📸 新功能:3D 角度调整
### 功能介绍
我们新增了 **3D 角度调整** 功能,让您可以轻松改变图片中物体的视角角度。无论是产品展示、创意设计还是内容创作,都能获得更多样化的视觉效果。
### 主要特性
- 🎮 **直观的 3D 控制器** - 可视化调整水平角度、垂直角度和距离
- 🔄 **多种预设角度** - 提供常用角度快速选择
- 👁️ **实时预览** - 调整参数时即时查看效果
- 💾 **一键保存** - 生成的图片自动保存到相册
### 使用方式
1. **在聊天界面**:点击任意图片下方的「角度调整」按钮
2. **在图片编辑器**:工具栏中选择「角度调整」功能
3. 使用 3D 控制器调整您想要的视角
4. 点击「生成」按钮获取新角度的图片
### 角度参数说明
| 参数 | 范围 | 说明 |
|------|------|------|
| 水平角度 | -180° ~ 180° | 控制左右旋转视角 |
| 垂直角度 | -90° ~ 90° | 控制上下俯仰视角 |
| 距离 | 0.5x ~ 2.0x | 控制观察距离远近 |
---
## 🖼️ 新模型:阿里千问图片编辑
### 模型介绍
我们集成了阿里云 **千问图片编辑模型 (Qwen Image Edit Plus)**,这是一款强大的 AI 图片编辑模型,支持多种图片编辑操作。
### 主要能力
- ✏️ **智能图片编辑** - 根据文字描述修改图片内容
- 🎨 **风格转换** - 改变图片的艺术风格
- 🔀 **多图融合** - 将多张图片元素智能融合
- 📐 **多种尺寸** - 支持 1K、2K、4K 等多种输出分辨率
### 使用方式
1. 在模型选择器中选择「千问图片编辑」模型
2. 上传一张或多张图片
3. 输入您想要的编辑指令
4. 等待 AI 生成编辑后的图片
### 使用示例
```
📷 上传一张沙发图片
💬 "将沙发的颜色改成深蓝色"
```
```
📷 上传一张人物照片
💬 "将背景改成海边日落"
```
```
📷 上传两张图片(人物 + 场景)
💬 "将人物放到这个场景中"
```
### 注意事项
> ⚠️ **重要提示**:千问图片编辑模型是**图片编辑**模型,需要至少上传一张图片才能使用。如需纯文字生成图片,请使用其他生图模型。
### 参数配置
| 参数 | 说明 | 默认值 |
|------|------|--------|
| 生成数量 | 一次生成 1-6 张图片 | 1 |
| 输出尺寸 | 支持 1K/2K/4K 等 | 2K |
| 提示词扩展 | AI 自动优化提示词 | 开启 |
---
## 🔧 其他优化
- 优化了图片加载动画效果
- 改进了错误提示信息,更加友好易懂
- 提升了图片处理的稳定性
---
## 📞 反馈与支持
如果您在使用过程中遇到任何问题,或有功能建议,欢迎随时反馈!
---
*更新日期:2026年1月12日*

View File

@ -197,6 +197,11 @@ export async function getDynamicModel(
console.log("[getDynamicModel] Getting Volcano Vision chat model..."); // 调试日志
baseModel = providerInstance.chat(model.modelId);
console.log("[getDynamicModel] Volcano Vision model retrieved:", baseModel ? "success" : "failed"); // 调试日志
} else if (provider.type === "alibaba-image") {
// 阿里云千问图片生成使用 chat() 方法
console.log("[getDynamicModel] Getting Alibaba Image chat model..."); // 调试日志
baseModel = providerInstance.chat(model.modelId);
console.log("[getDynamicModel] Alibaba Image model retrieved:", baseModel ? "success" : "failed"); // 调试日志
} else {
// OpenAI-compatible providers
console.log("[getDynamicModel] Getting OpenAI-compatible model..."); // 调试日志

View File

@ -283,6 +283,7 @@ export function createAlibabaImage({ apiKey, baseURL }: AlibabaImageConfig) {
provider: "alibaba-image",
chat: (modelId: string) => ({
provider: "alibaba-image", // 🆕 让 chat() 返回的对象也包含 provider 属性,用于 route.ts 中的类型判断
doGenerate: async (options: {
messages: Array<{ role: string; content: string | Array<{ type: string; text?: string; image?: string }> }>;
imageParams?: AlibabaImageParams & { aspectRatio?: string; imageSize?: string; imageCount?: number };