Browse Source

feat: 完整成本追踪体系 - AiCallLog记录每次AI/TTS调用的token和费用

- [定价] 基于阿里百炼官方定价,修正成本模型单位错误(千→百万/万)
- [追踪] AiCallLog表记录inputTokens/outputTokens/estimatedCost/userId/bookId
- [上下文] AsyncLocalStorage自动传播userId/bookId/chapterId
- [TTS] 分段合成每段独立记录,仅真实API调用计费
- [前端] 新增消费账单页面(Playwright浏览器验证通过)
- [修复] CosyVoice SSE错误重试、errorMsg字段扩容
MyFramework User 3 months ago
parent
commit
8376761c4c

+ 150 - 0
docs/定价与成本合理性分析.md

@@ -0,0 +1,150 @@
+# 定价与成本合理性分析
+
+> 分析日期:2026-05-20
+> 数据来源:阿里百炼官方计费文档 + `subscription.service.ts` 代码配置
+
+---
+
+## 一、当前代码中的成本配置
+
+### 套餐定价
+
+| 套餐 | 月费 | 音频配额 | Token配额 | 超出单价 |
+|------|------|---------|-----------|---------|
+| 免费版 | ¥0 | 10分钟 | 1,500 | 不支持 |
+| 入门版 | ¥19 | 30分钟 | 4,500 | ¥8/分钟 |
+| 专业版⭐ | ¥59 | 100分钟 | 15,000 | ¥7/分钟 |
+| 旗舰版 | ¥199 | 400分钟 | 60,000 | ¥6/分钟 |
+| 企业版 | ¥599 | 1,500分钟 | 225,000 | ¥5/分钟 |
+
+### 代码假定的成本
+
+| 成本项 | 代码配置 | 单位 |
+|--------|---------|------|
+| AI文本生成 (deepseek) | 输入¥2.0 + 输出¥8.0 | /千token |
+| TTS合成 (百度基础) | ¥3.0 | /千字符 |
+| **综合成本** | **¥5.0/千字符** | |
+| **综合成本** | **¥4.0/分钟** (语速150字/分) | |
+
+---
+
+## 二、阿里百炼官方实际定价
+
+| 服务 | 模型 | 实际单价 |
+|------|------|---------|
+| AI文本 | qwen-plus (输出) | ¥2 / **百万**token |
+| AI文本 | qwen-plus (输入) | ¥0.8 / **百万**token |
+| AI文本 | qwen3.5-flash (输出) | ¥2 / **百万**token |
+| AI文本 | qwen3.5-flash (输入) | ¥0.2 / **百万**token |
+| TTS | qwen3-tts-instruct-flash | ¥0.8 / **万**字符 |
+
+---
+
+## 三、🔴 关键问题:单位混淆
+
+| 对比项 | 代码单位 | 阿里单位 | 倍数差 |
+|--------|---------|---------|--------|
+| AI输出价格 | ¥12/**千**token (qwen_plus) | ¥2/**百万**token | **6000倍** |
+| AI输出价格 | ¥8/**千**token (deepseek) | ¥3/**百万**token | **2667倍** |
+| TTS价格 | ¥3/**千**字符 (百度基础) | ¥0.8/**万**字符 (阿里TTS) | **37.5倍** |
+| 综合成本 | ¥4.0/分钟 | ¥0.012/分钟 | **≈333倍** |
+
+---
+
+## 四、实际成本计算(以1分钟音频为例)
+
+> 1分钟音频 = 150字(语速150字/分钟)
+
+### 使用阿里百炼官方定价:
+
+| 环节 | 计算过程 | 实际成本 |
+|------|---------|---------|
+| AI文本生成 | 150字→225token × ¥2/百万token | **¥0.00045** |
+| TTS合成 | 150字 × ¥0.8/万字符 | **¥0.012** |
+| **合计/分钟** | | **≈ ¥0.012** |
+
+### 代码假定的成本:
+
+| 环节 | 计算过程 | 代码成本 |
+|------|---------|---------|
+| AI文本生成 | 150字 × ¥5/千字符 | **¥0.75** |
+| TTS合成 | 含在综合成本中 | |
+| **合计/分钟** | | **¥4.0** |
+
+> ⚠️ **代码成本是实际成本的约 333 倍**
+
+---
+
+## 五、各套餐真实利润率分析
+
+以**专业版 ¥59/月,100分钟**为例:
+
+| 指标 | 代码认为 | 实际情况 |
+|------|---------|---------|
+| 月度成本(满额使用) | 100分 × ¥4 = **¥400** | 100分 × ¥0.012 = **¥1.20** |
+| 月度收入 | ¥59 | ¥59 |
+| 利润 | **-¥341 (亏!)** | **+¥57.80** |
+| 利润率 | -578% | **+4817%** |
+
+### 各套餐真实利润
+
+| 套餐 | 月费 | 满额真实成本 | 真实利润 | 利润率 |
+|------|------|------------|---------|--------|
+| 免费版 | ¥0 | ¥0.12 | -¥0.12 | - |
+| 入门版 | ¥19 | ¥0.36 | +¥18.64 | 5178% |
+| 专业版 | ¥59 | ¥1.20 | +¥57.80 | 4817% |
+| 旗舰版 | ¥199 | ¥4.80 | +¥194.20 | 4046% |
+| 企业版 | ¥599 | ¥18.00 | +¥581.00 | 3228% |
+
+---
+
+## 六、按100万字计算的成本对比
+
+| 项目 | 代码假定成本 | 阿里实际成本 | 差异 |
+|------|------------|------------|------|
+| AI文本生成 | ¥5,000 | **¥3** (qwen-plus) | 1667倍 |
+| TTS合成 | ¥3,000 | **¥80** (qwen3-tts-flash) | 37.5倍 |
+| **合计** | **¥8,000** | **¥83** | **96倍** |
+
+> 代码认为生成100万字成本¥8000,实际只需¥83
+
+---
+
+## 七、✅ 已修正(2026-05-20)
+
+已在 `server/src/modules/subscription/subscription.service.ts` 中完成以下修正:
+
+### 修改内容
+
+| 配置项 | 旧值 | 新值 |
+|--------|------|------|
+| **TTS_COST_CONFIG.providers** | 百度/火山为主 | 阿里百炼系列(qwen3-tts, cosyvoice) |
+| **TTS_COST_CONFIG.aiModels** | ¥/千token | ¥/百万token(修正单位) |
+| **defaultAIModel** | deepseek | qwen_plus |
+| **TOKEN_COST_CONFIG.models** | ¥/千token | ¥/百万token(修正单位) |
+| **TOKEN_COST_CONFIG.ttsModels** | 无 | 新增(¥/万字符) |
+| **AUDIO_BILLING_CONFIG.costPerMinute** | ¥4.0 | ¥0.013 |
+| **AUDIO_BILLING_CONFIG.pricing.monthly** | ¥5.0 | ¥0.026(成本×2) |
+| **AUDIO_BILLING_CONFIG.pricing.overage** | ¥8.0 | ¥0.039(×1.5) |
+| **DEFAULT_PLANS 价格** | ¥19~599/月 | ¥1~39/月(按成本×2重算) |
+| **calculateTokenCost 函数** | 旧单位计算 | 新单位+分开AI/TTS成本 |
+
+### 新增可调参数
+
+```ts
+export const PRICING_COEFFICIENT = 2.0;  // 售价 = API成本 × 系数
+```
+
+运营时可调整此系数来改变定价,无需修改其他代码。
+
+### 当前套餐(修正后)
+
+| 套餐 | 月费 | 音频配额 | 成本 |
+|------|------|---------|------|
+| 免费版 | ¥0 | 10分钟 | ¥0.13 |
+| 入门版 | ¥1 | 30分钟 | ¥0.39 |
+| 专业版⭐ | ¥3 | 100分钟 | ¥1.30 |
+| 旗舰版 | ¥11 | 400分钟 | ¥5.20 |
+| 企业版 | ¥39 | 1500分钟 | ¥19.50 |
+
+> ⚠️ 提示:当前系数2导致价格极低(只是API成本的2倍)。运营上线前应将 `PRICING_COEFFICIENT` 调至 50~100 以获得合理售价。

+ 110 - 0
docs/阿里百炼费用评估-100万字.md

@@ -0,0 +1,110 @@
+# 阿里百炼费用评估:生成100万字文本和视频
+
+> 数据来源:阿里百炼官方计费文档(2026年5月)
+> 中国内地(华北2-北京)定价
+
+---
+
+## 一、文本生成:100万字费用
+
+> 中文 1字 ≈ 1.5 token,100万字 ≈ 150万输出token
+
+### 千问Plus系列(推荐用于书籍生成)
+
+| 模型 | 输入(¥/百万token) | 输出(¥/百万token) | 100万字费用 |
+|------|-------------------|-------------------|-----------|
+| **qwen3.6-plus**(最新) | ¥2 | ¥12 | **≈ ¥18** |
+| **qwen3.5-plus** | ¥0.8 | ¥4.8 | **≈ ¥7.2** |
+| **qwen-plus**(经典,推荐) | ¥0.8 | ¥2 | **≈ ¥3** |
+
+### 千问Flash系列(最快/最省)
+
+| 模型 | 输入(¥/百万token) | 输出(¥/百万token) | 100万字费用 |
+|------|-------------------|-------------------|-----------|
+| qwen3.6-flash | ¥1.2 | ¥7.2 | ≈ ¥10.8 |
+| qwen3.5-flash | ¥0.2 | ¥2 | **≈ ¥3** |
+| qwen-flash | ¥0.15 | ¥1.5 | **≈ ¥2.3** |
+
+### 千问Max系列(顶级质量)
+
+| 模型 | 输入(≤32K,¥/百万token) | 输出(≤32K,¥/百万token) | 100万字费用 |
+|------|------------------------|------------------------|-----------|
+| qwen3-max | ¥2.5 | ¥10 | ≈ ¥15 |
+| qwen-max | ¥2.4 | ¥9.6 | ≈ ¥14.4 |
+
+---
+
+## 二、TTS语音合成:100万字费用
+
+> 使用 CosyVoice 标准版(cosyvoice-v3-flash)
+
+| 模型 | 单价 | 100万字 | 备注 |
+|------|------|---------|------|
+| **cosyvoice-v3-flash** | ¥1/万字符 | **¥100** | 当前使用 |
+| cosyvoice-v3-plus | ¥2/万字符 | ¥200 | 高质量备选 |
+| qwen3-tts-instruct-flash | ¥0.8/万字符 | ¥80 | 备选 |
+
+---
+
+## 三、视频生成费用
+
+> 视频按**每秒**计费,费用取决于时长
+
+### 万相-文生视频定价(中国内地)
+
+| 模型 | 分辨率 | 单价 |
+|------|--------|------|
+| wanx2.1-t2v-turbo | 480P/720P | **¥0.24/秒** |
+| wan2.2-t2v-plus | 480P | **¥0.14/秒** |
+| wan2.2-t2v-plus | 1080P | ¥0.70/秒 |
+| wan2.5-t2v | 720P | ¥0.6/秒 |
+| wan2.5-t2v | 1080P | ¥1/秒 |
+| wan2.7-t2v | 720P | ¥0.6/秒 |
+| wan2.7-t2v | 1080P | ¥1/秒 |
+
+### 各场景视频费用
+
+| 场景 | 时长 | wan2.2(480P) | wanx2.1(720P) |
+|------|------|-------------|---------------|
+| 短宣传片 | 60秒 | **¥8.4** | **¥14.4** |
+| 章节预告(10章×30秒) | 300秒 | ¥42 | ¥72 |
+| 全书精华剪辑 | 30分钟(1800秒) | ¥252 | ¥432 |
+| ⚠️ 全书逐句视频 | 67小时(240,000秒) | **¥33,600** | **¥57,600** |
+
+---
+
+## 四、综合费用汇总
+
+### 场景一:纯文本生成(100万字)
+| 方案 | 费用 |
+|------|------|
+| qwen-plus 经典(推荐) | **≈ ¥3** |
+| qwen3.6-plus 最新 | ≈ ¥18 |
+| qwen-flash 最省 | ≈ ¥2.3 |
+
+### 场景二:文本 + TTS(生成有声书)
+| 组合 | 费用 |
+|------|------|
+| qwen-plus(¥3) + qwen3-tts-flash(¥80) | **≈ ¥83** |
+| qwen3.6-plus(¥18) + cosyvoice-v3.5-plus(¥150) | ≈ ¥168 |
+
+### 场景三:文本 + 短宣传视频(推荐)
+| 组合 | 费用 |
+|------|------|
+| qwen-plus(¥3) + wan2.2(60秒, ¥8.4) | **≈ ¥11.4** |
+| qwen3.6-plus(¥18) + wanx2.1(60秒, ¥14.4) | ≈ ¥32.4 |
+
+### ⚠️ 场景四:全书逐句生成视频(不推荐)
+| 组合 | 费用 |
+|------|------|
+| 文本 + wanx2.1 720P | **≈ ¥5.8万** |
+
+---
+
+## 五、结论
+
+1. **纯文本生成极便宜**:100万字最低仅需 **¥2.3**,推荐 qwen-plus 约 **¥3**
+2. **TTS 是成本大头**:100万字合成语音约 **¥80~200**
+3. **视频成本差异巨大**:短宣传片 ¥8~14,全书逐句视频 ¥3万~5.8万
+4. **推荐组合**:qwen-plus 生成文本(¥3) + qwen3-tts-instruct-flash 合成语音(¥80) = **¥83/百万字**
+5. **免费额度**:新开通百炼送各100万Token,有效期90天,可用于前期测试

+ 6 - 0
my-uniapp-vue3/src/pages.json

@@ -25,6 +25,12 @@
         "navigationStyle": "custom"
       }
     },
+    {
+      "path": "pages/billing/index",
+      "style": {
+        "navigationBarTitleText": "消费账单"
+      }
+    },
     {
       "path": "pages/member/index",
       "style": {

+ 176 - 0
my-uniapp-vue3/src/pages/billing/index.vue

@@ -0,0 +1,176 @@
+<template>
+  <view class="page">
+    <view class="header">
+      <text class="title">消费账单</text>
+    </view>
+
+    <!-- 汇总卡片 -->
+    <view class="summary-card">
+      <view class="summary-item">
+        <text class="summary-value">¥{{ summary.totalCost }}</text>
+        <text class="summary-label">总费用</text>
+      </view>
+      <view class="summary-divider" />
+      <view class="summary-item">
+        <text class="summary-value">{{ summary.totalCalls }}</text>
+        <text class="summary-label">总调用次数</text>
+      </view>
+      <view class="summary-divider" />
+      <view class="summary-item">
+        <text class="summary-value">{{ summary.totalTokens }}</text>
+        <text class="summary-label">总Token消耗</text>
+      </view>
+    </view>
+
+    <!-- 分类统计 -->
+    <view class="type-stats" v-if="summary.byType.length">
+      <view class="type-item" v-for="t in summary.byType" :key="t.type">
+        <text class="type-name">{{ typeLabel(t.type) }}</text>
+        <view class="type-data">
+          <text class="type-count">{{ t.count }}次</text>
+          <text class="type-cost">¥{{ t.cost.toFixed(4) }}</text>
+        </view>
+      </view>
+    </view>
+
+    <!-- 明细列表 -->
+    <view class="section-title">调用明细</view>
+    <view class="record-list">
+      <view class="record-card" v-for="r in records" :key="r.id">
+        <view class="record-top">
+          <text :class="['call-badge', r.callType.startsWith('llm') ? 'badge-llm' : 'badge-tts']">
+            {{ typeLabel(r.callType) }}
+          </text>
+          <text class="record-time">{{ formatTime(r.time) }}</text>
+        </view>
+        <view class="record-info">
+          <text class="record-model">{{ r.model }}</text>
+        </view>
+        <view class="record-tokens" v-if="r.inputTokens || r.outputTokens">
+          <text v-if="r.callType.startsWith('llm')">
+            in: {{ r.inputTokens }}tk / out: {{ r.outputTokens }}tk
+          </text>
+          <text v-else>
+            字符: {{ r.textLen || r.outputTokens }}
+          </text>
+        </view>
+        <view class="record-bottom">
+          <text class="record-cost">¥{{ r.cost }}</text>
+          <text class="record-dur" v-if="r.duration">{{ (r.duration / 1000).toFixed(1) }}s</text>
+          <text :class="['record-status', r.success ? 'status-ok' : 'status-fail']">
+            {{ r.success ? '✓' : '✗' }}
+          </text>
+        </view>
+      </view>
+    </view>
+
+    <view class="empty" v-if="loading">
+      <text>加载中...</text>
+    </view>
+    <view class="empty" v-else-if="!records.length">
+      <text>暂无消费记录</text>
+    </view>
+  </view>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue';
+import { request } from '@/utils/request';
+
+interface LogRecord {
+  id: number; callType: string; provider: string; model: string;
+  textLen: number; inputTokens: number; outputTokens: number;
+  cost: number; duration: number; success: boolean; bookId: number; time: string;
+}
+
+const records = ref<LogRecord[]>([]);
+const loading = ref(true);
+
+const summary = ref({
+  totalCost: '0',
+  totalCalls: 0,
+  totalTokens: 0,
+  byType: [] as Array<{ type: string; count: number; cost: number; inputTokens: number; outputTokens: number }>,
+});
+
+function typeLabel(type: string): string {
+  const map: Record<string, string> = {
+    llm_chat: '文本生成', llm_tools: '工具调用',
+    tts_synthesize: '语音合成', tts_create: 'TTS创建',
+    tts_poll: 'TTS查询', tts_task_completed: 'TTS完成',
+    tts_task_failed: 'TTS失败',
+  };
+  return map[type] || type;
+}
+
+function formatTime(t: string): string {
+  if (!t) return '';
+  return t.replace('T', ' ').substring(0, 19);
+}
+
+async function loadBilling() {
+  try {
+    const data = await request('/subscription/billing/summary') as any;
+    // request() 已解包 result.data,data 直接是 {totalCalls, records, ...}
+    if (data?.records) {
+      records.value = (data.records || []).map((r: any) => ({ ...r, cost: r.cost || 0 }));
+      summary.value = {
+        totalCost: (data.totalCost || 0).toFixed(4),
+        totalCalls: data.totalCalls || 0,
+        totalTokens: (data.totalInputTokens || 0) + (data.totalOutputTokens || 0),
+        byType: data.byType || [],
+      };
+    }
+  } catch (e) {
+    console.error('加载账单失败', e);
+  } finally {
+    loading.value = false;
+  }
+}
+onMounted(loadBilling);
+</script>
+
+<style scoped>
+.page { min-height: 100vh; background: #f5f5f5; padding-bottom: 30rpx; }
+.header { padding: 30rpx; display: flex; justify-content: space-between; align-items: center; }
+.title { font-size: 36rpx; font-weight: bold; color: #333; }
+
+.summary-card {
+  margin: 0 24rpx 20rpx; padding: 30rpx; border-radius: 16rpx;
+  background: linear-gradient(135deg, #6366f1, #8b5cf6);
+  display: flex; justify-content: space-around;
+}
+.summary-item { display: flex; flex-direction: column; align-items: center; }
+.summary-value { font-size: 40rpx; font-weight: bold; color: #fff; }
+.summary-label { font-size: 22rpx; color: rgba(255,255,255,0.7); margin-top: 6rpx; }
+.summary-divider { width: 1px; background: rgba(255,255,255,0.2); }
+
+.type-stats { margin: 0 24rpx 20rpx; padding: 20rpx; background: #fff; border-radius: 12rpx; }
+.type-item { display: flex; justify-content: space-between; align-items: center; padding: 12rpx 0; border-bottom: 1px solid #f0f0f0; }
+.type-item:last-child { border-bottom: none; }
+.type-name { font-size: 28rpx; color: #333; }
+.type-data { display: flex; gap: 20rpx; align-items: center; }
+.type-count { font-size: 24rpx; color: #999; }
+.type-cost { font-size: 28rpx; font-weight: bold; color: #6366f1; }
+
+.section-title { margin: 24rpx 24rpx 16rpx; font-size: 28rpx; font-weight: bold; color: #333; }
+
+.record-list { margin: 0 24rpx; }
+.record-card { background: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 12rpx; }
+.record-top { display: flex; justify-content: space-between; align-items: center; }
+.call-badge { font-size: 22rpx; padding: 4rpx 12rpx; border-radius: 6rpx; color: #fff; }
+.badge-llm { background: #3b82f6; }
+.badge-tts { background: #10b981; }
+.record-time { font-size: 22rpx; color: #999; }
+.record-info { margin-top: 8rpx; }
+.record-model { font-size: 26rpx; color: #333; }
+.record-tokens { margin-top: 6rpx; }
+.record-tokens text { font-size: 22rpx; color: #888; }
+.record-bottom { margin-top: 10rpx; display: flex; align-items: center; gap: 16rpx; }
+.record-cost { font-size: 30rpx; font-weight: bold; color: #f59e0b; }
+.record-dur { font-size: 22rpx; color: #aaa; }
+.record-status { font-size: 24rpx; font-weight: bold; }
+.status-ok { color: #10b981; }
+.status-fail { color: #ef4444; }
+.empty { text-align: center; padding: 60rpx; color: #999; font-size: 28rpx; }
+</style>

+ 11 - 0
my-uniapp-vue3/src/pages/mine/index.vue

@@ -113,6 +113,12 @@
         <text class="menu-arrow">›</text>
       </view>
 
+      <view class="menu-item" @click="goBilling">
+        <text class="menu-icon">💰</text>
+        <text class="menu-text">消费账单</text>
+        <text class="menu-arrow">›</text>
+      </view>
+
       <view class="menu-item" @click="goLogs">
         <text class="menu-icon">📊</text>
         <text class="menu-text">日志监控</text>
@@ -275,6 +281,11 @@ function goLogs() {
   uni.navigateTo({ url: '/pages/logs/index' });
 }
 
+// 跳转消费账单
+function goBilling() {
+  uni.navigateTo({ url: '/pages/billing/index' });
+}
+
 // 跳转历史页
 function goHistory() {
   uni.switchTab({ url: '/pages/history/index' });

+ 18 - 12
server/prisma/schema.prisma

@@ -404,22 +404,28 @@ model TtsTask {
 }
 
 model AiCallLog {
-  id        Int      @id @default(autoincrement())
-  callType  String   @db.VarChar(20)   // tts_create | tts_poll | tts_download | llm_chat | llm_tools
-  provider  String   @db.VarChar(30)   // minimax | bailian | volcengine
-  model     String   @db.VarChar(50)   // speech-2.8-hd | qwen3-tts-instruct-flash | MiniMax-M2.7
-  textLen   Int      @default(0)       // 输入文本长度
-  prompt    String?  @db.LongText       // 提示词内容
-  duration  Int      @default(0)       // 耗时(ms)
-  success   Boolean  @default(true)
-  errorMsg  String?  @db.VarChar(200)
-  bookId    Int?
-  chapterId Int?
-  createdAt DateTime @default(now())
+  id            Int      @id @default(autoincrement())
+  callType      String   @db.VarChar(20)   // llm_chat | llm_tools | tts_synthesize | tts_create | tts_poll
+  provider      String   @db.VarChar(30)   // minimax | bailian | volcengine
+  model         String   @db.VarChar(50)   // MiniMax-M2.7 | cosyvoice-v3-flash | qwen3-tts-instruct-flash
+  userId        Int?
+  bookId        Int?
+  chapterId     Int?
+  textLen       Int      @default(0)       // 输入文本长度(字符数)
+  prompt        String?  @db.LongText       // 提示词内容(LLM only)
+  inputTokens   Int      @default(0)       // 输入 Token 数
+  outputTokens  Int      @default(0)       // 输出 Token 数
+  estimatedCost Float    @default(0)       // 估算成本(元)
+  duration      Int      @default(0)       // 耗时(ms)
+  success       Boolean  @default(true)
+  errorMsg      String?  @db.Text
+  createdAt     DateTime @default(now())
 
   @@index([callType, createdAt])
   @@index([provider, createdAt])
+  @@index([userId, createdAt])
   @@index([bookId])
+  @@index([createdAt])
 }
 
 model PlatformAccount {

+ 11 - 7
server/src/modules/book-generator/book-generator.store.ts

@@ -14,8 +14,8 @@ import { countWords } from './utils';
 import { cleanThinkingText } from './utils/content-cleaner';
 import { advanceChapter, regenerateChapter, safeTransitionChapter } from './stage-manager';
 import { mergeChapterAudios } from '../player/player.service';
-import { logAiCall } from '../../services/ai-call-logger';
 import { consumeAudioMinutes } from '../subscription/subscription.service';
+import { runWithContext } from '../../services/llm-context';
 
 /**
  * 取消书籍所有章节的音频生成(将 pending/processing 任务标记为 cancelled,回退章节阶段)
@@ -1390,10 +1390,15 @@ export class BookStore {
         return;
       }
 
+      const userId = chapter.book?.userId || task.userId || 1;
+      const bookId = chapter.bookId;
+
+      // 设置上下文,后续 TTS 调用自动携带 userId/bookId/chapterId
+      await runWithContext({ userId, bookId, chapterId }, async () => {
       const result = await generateAudio(
-        String(task.userId || chapter.book?.userId || '0'),
+        String(userId),
         content,
-        task.voiceId || 'longyingling_v3',  // 使用任务中的音色,兼容旧数据
+        task.voiceId || 'longyingling_v3',
         { speed: 1.0, pitch: 0, volume: 50 },
         async (audioUrl: string, duration: number) => {
           console.log(`[TtsTask] #${taskId} 音频就绪: ${audioUrl?.substring(0, 60)}...`);
@@ -1423,14 +1428,13 @@ export class BookStore {
         data: { status: 'completed', audioUrl: result.audioUrl, completedAt: new Date() },
       });
 
-      console.log(`[TtsTask] ✅ 任务#${taskId} 完成`);
-      logAiCall({ callType: 'tts_task_completed', provider: 'tts', model: 'tts-task', textLen: content?.length || 0, success: true, chapterId, bookId: task.bookId ?? undefined });
+      console.log(`[TtsTask] ✅ 任务#${taskId} 完成 bookId=${bookId} chapterId=${chapterId} chars=${content?.length || 0}`);
       await this.tryCleanupBookTasks(chapterId);
+      }); // runWithContext 结束
 
     } catch (err: any) {
       const errorMsg = err?.message || String(err);
-      console.error(`[TtsTask] ❌ 任务#${taskId} 失败:`, errorMsg);
-      logAiCall({ callType: 'tts_task_failed', provider: 'tts', model: 'tts-task', textLen: content?.length || 0, success: false, errorMsg, chapterId, bookId: task.bookId ?? undefined });
+      console.error(`[TtsTask] ❌ 任务#${taskId} 失败 bookId=${task.bookId} chapterId=${chapterId}:`, errorMsg);
       await this._failTask(taskId, errorMsg);
 
       // 不可恢复错误(参数错误等)→ 标记章节为 failed,阻止 AudioScanner 反复重试

+ 11 - 5
server/src/modules/book-generator/index.ts

@@ -13,12 +13,15 @@
  *   1 = 仅章(短文/小说/故事类)
  *   2 = 章→节(科普/商业/大众类)
  *   3 = 章→节→小节(教材/技术教程/专业类)
+ *
+ * 成本追踪:通过 AsyncLocalStorage 上下文,所有 LLM/TTS 调用自动携带 bookId/chapterId
  */
 
 import { bookStore } from './book-generator.store';
 import { getScaleConfig } from './book-type-config';
 import { getCurrentStrategy, setCurrentStrategy, getAllStrategies, getCurrentStrategyName } from './strategies/selector';
 import type { StrategyName } from './strategies/selector';
+import { runWithContext } from '../../services/llm-context';
 
 // ============ 书籍类型 → 大纲层级映射 ============
 
@@ -76,16 +79,19 @@ export class LangGraphBookGenerator {
     bookId: string,
     topic: string,
     bookScale: string = '1000',
-    genLevel?: number
+    genLevel?: number,
+    userId?: number,
   ): Promise<void> {
-    const userSpecified = genLevel !== undefined; // true=用户选了层级, false=自动
+    const userSpecified = genLevel !== undefined;
     const level = genLevel ?? resolveGenLevel(bookScale, undefined, topic);
 
-    // 获取当前激活的策略并执行
     const strategy = getCurrentStrategy();
-    console.log(`[LangGraph] 开始生成: bookId=${bookId}, scale=${bookScale}, genLevel=${level}, strategy=${strategy.name}`);
+    console.log(`[LangGraph] 开始生成: bookId=${bookId}, userId=${userId ?? '-'}, scale=${bookScale}, genLevel=${level}, strategy=${strategy.name}`);
 
-    await strategy.generate(bookId, topic, bookScale, level, userSpecified ? level : undefined);
+    // 设置异步上下文,后续所有 LLM/TTS 调用自动携带 userId / bookId
+    await runWithContext({ userId, bookId: parseInt(bookId) }, async () => {
+      await strategy.generate(bookId, topic, bookScale, level, userSpecified ? level : undefined);
+    });
   }
 }
 

+ 66 - 60
server/src/modules/book-generator/langgraph-controller.ts

@@ -13,6 +13,7 @@ import { optionalAuth } from '../../middleware/auth';
 import { getAllBookTypes, getDetectableTypes, getBookTypeConfig, BOOK_TYPE_CONFIG, DETECTABLE_TYPES } from './book-type-config';
 import { callLLMWithMessages, callLLM, ChatMessage } from '../../services/llm';
 import { cleanLlmShortText, extractJsonFromResponse } from '../../services/llm/response-cleaner';
+import { runWithContext } from '../../services/llm-context';
 import { createVideoProjectFromBook, generateVideoForProject } from '../video-generator/video-generator.service';
 import { mergeChapterAudios } from '../player/player.service';
 import { exec } from 'child_process';
@@ -267,38 +268,41 @@ function keywordFallback(_title: string, _description: string): { detectedType:
 /**
  * AI 根据描述自动生成书名
  */
-async function autoGenerateTitle(description: string): Promise<string> {
-  const prompt = `根据以下描述起一个书名。要求:中文不超过20字,英文不超过20个单词。只返回书名,不要任何解释、思考或前缀。
+async function autoGenerateTitle(description: string, userId?: number): Promise<string> {
+  return runWithContext({ userId }, async () => {
+    const prompt = `根据以下描述起一个书名。要求:中文不超过20字,英文不超过20个单词。只返回书名,不要任何解释、思考或前缀。
 
 描述:${description.substring(0, 200)}
 
 书名:`;
 
-  try {
-    const response = await callLLM(prompt);
-    const title = cleanLlmShortText(response, {
-      maxLength: 50,
-      maxChineseChars: 20,
-      maxEnglishWords: 20,
-    });
-    console.log(`[LangGraph] AI 生成书名: "${title}"`);
-    return title || '未命名书籍';
-  } catch (e) {
-    console.warn('[LangGraph] AI 自动生成书名失败,使用默认:', e);
-    return '未命名书籍';
-  }
+    try {
+      const response = await callLLM(prompt);
+      const title = cleanLlmShortText(response, {
+        maxLength: 50,
+        maxChineseChars: 20,
+        maxEnglishWords: 20,
+      });
+      console.log(`[LangGraph] AI 生成书名: "${title}"`);
+      return title || '未命名书籍';
+    } catch (e) {
+      console.warn('[LangGraph] AI 自动生成书名失败,使用默认:', e);
+      return '未命名书籍';
+    }
+  });
 }
 
 /**
  * AI 自动检测书籍规模(字数等级),后端静默调用
  * AI 分析描述中的字数要求,以 JSON 格式返回,供程序提取
  */
-async function autoDetectBookType(title: string, description: string): Promise<string> {
-  console.log(`[autoDetectBookType] 被调用: title="${title}", desc前50="${description?.substring(0, 50)}"`);
-  const messages: ChatMessage[] = [
-    {
-      role: 'system',
-      content: `你是一位专业的图书分类编辑。根据标题和描述,判断书籍适合的字数规模。
+async function autoDetectBookType(title: string, description: string, userId?: number): Promise<string> {
+  return runWithContext({ userId }, async () => {
+    console.log(`[autoDetectBookType] 被调用: title="${title}", desc前50="${description?.substring(0, 50)}"`);
+    const messages: ChatMessage[] = [
+      {
+        role: 'system',
+        content: `你是一位专业的图书分类编辑。根据标题和描述,判断书籍适合的字数规模。
 
 ## 判断规则
 
@@ -313,41 +317,39 @@ async function autoDetectBookType(title: string, description: string): Promise<s
 ## 输出格式(必须严格JSON)
 {"bookScale": 数字}
 只返回JSON,不要任何其他文字。`,
-    },
-    {
-      role: 'user',
-      content: `标题:《${title}》\n描述:${description}`,
-    },
-  ];
+      },
+      {
+        role: 'user',
+        content: `标题:《${title}》\n描述:${description}`,
+      },
+    ];
 
-  try {
-    const response = await callLLMWithMessages(messages);
-    const trimmed = response.trim();
-    console.log(`[autoDetectBookType] AI原始响应: ${trimmed.substring(0, 200)}`);
+    try {
+      const response = await callLLMWithMessages(messages);
+      const trimmed = response.trim();
+      console.log(`[autoDetectBookType] AI原始响应: ${trimmed.substring(0, 200)}`);
 
-    // 尝试解析 JSON,提取 bookScale(实际字数)
-    const jsonMatch = trimmed.match(/\{[\s\S]*\}/);
-    if (jsonMatch) {
-      try {
-        const data = JSON.parse(jsonMatch[0]);
-        if (typeof data.bookScale === 'number') {
-          const wordCount = data.bookScale;
-          console.log(`[autoDetectBookType] AI返回: bookScale=${wordCount}`);
-          // 直接返回实际字数,getBookTypeConfig 支持任意数字 key
-          return String(wordCount);
+      const jsonMatch = trimmed.match(/\{[\s\S]*\}/);
+      if (jsonMatch) {
+        try {
+          const data = JSON.parse(jsonMatch[0]);
+          if (typeof data.bookScale === 'number') {
+            const wordCount = data.bookScale;
+            console.log(`[autoDetectBookType] AI返回: bookScale=${wordCount}`);
+            return String(wordCount);
+          }
+        } catch {
+          // JSON解析失败,忽略
         }
-      } catch {
-        // JSON解析失败,忽略
       }
-    }
 
-    // JSON解析失败 → 默认返回最小规模
-    console.log(`[autoDetectBookType] AI响应无法解析,使用默认值1000`);
-    return '1000';
-  } catch (error: any) {
-    console.error(`[autoDetectBookType] AI调用异常:`, error?.message || error);
-    return '1000';
-  }
+      console.log(`[autoDetectBookType] AI响应无法解析,使用默认值1000`);
+      return '1000';
+    } catch (error: any) {
+      console.error(`[autoDetectBookType] AI调用异常:`, error?.message || error);
+      return '1000';
+    }
+  });
 }
 
 /**
@@ -481,7 +483,7 @@ router.post('/books', optionalAuth, async (ctx: Context) => {
       }
 
       await bookStore.update(book.id, { genStage: 'outlining' });
-      langGraphGenerator.generate(book.id.toString(), body.description, bookScale, genLevel)
+      langGraphGenerator.generate(book.id.toString(), body.description, bookScale, genLevel, userId)
         .then(() => console.log(`[LangGraph] 生成完成: bookId=${book.id}`))
         .catch(err => {
           console.error(`[LangGraph] 生成失败: bookId=${book.id}`, err);
@@ -526,7 +528,7 @@ router.post('/books', optionalAuth, async (ctx: Context) => {
     if (body.immediateGenerate === false) {
       // 交互模式:异步填充 AI 结果,但不需要启动生成
       if (aiPreparing) {
-        fillAiResultsAsync(book.id.toString(), body.description, providedTitle, providedBookScale);
+        fillAiResultsAsync(book.id.toString(), body.description, providedTitle, providedBookScale, userId);
       }
       ctx.body = { code: 0, message: '书籍创建成功(交互模式)', data: { book, genStage: 'draft', mode: 'interactive', aiPreparing } };
       return;
@@ -555,8 +557,8 @@ router.post('/books', optionalAuth, async (ctx: Context) => {
 
         // 并行执行 AI 调用
         const aiPromises: Promise<any>[] = [];
-        const titleIdx = needTitle ? aiPromises.push(autoGenerateTitle(body.description)) - 1 : -1;
-        const scaleIdx = needScale ? aiPromises.push(autoDetectBookType(providedTitle || '', body.description)) - 1 : -1;
+        const titleIdx = needTitle ? aiPromises.push(autoGenerateTitle(body.description, userId)) - 1 : -1;
+        const scaleIdx = needScale ? aiPromises.push(autoDetectBookType(providedTitle || '', body.description, userId)) - 1 : -1;
 
         if (aiPromises.length > 0) {
           const results = await Promise.all(aiPromises);
@@ -586,7 +588,7 @@ router.post('/books', optionalAuth, async (ctx: Context) => {
             ? mapBookTypeToGenLevel(body.bookType)
             : resolveGenLevel(bookScale!);
 
-        await langGraphGenerator.generate(book.id.toString(), body.description, bookScale!, genLevel);
+        await langGraphGenerator.generate(book.id.toString(), body.description, bookScale!, genLevel, userId);
         console.log(`[LangGraph] 生成完成: bookId=${book.id}`);
       } catch (err) {
         console.error(`[LangGraph] AI 准备或生成失败: bookId=${book.id}`, err);
@@ -615,6 +617,7 @@ async function fillAiResultsAsync(
   description: string,
   providedTitle?: string,
   providedBookScale?: string,
+  userId?: number,
 ): Promise<void> {
   console.log(`[fillAiResultsAsync] 开始: bookId=${bookId}, providedTitle="${providedTitle}", providedBookScale="${providedBookScale}", desc前50字="${description?.substring(0, 50)}"`);
   try {
@@ -625,8 +628,8 @@ async function fillAiResultsAsync(
     const needScale = !bookScale;
 
     const aiPromises: Promise<any>[] = [];
-    const titleIdx = needTitle ? aiPromises.push(autoGenerateTitle(description)) - 1 : -1;
-    const scaleIdx = needScale ? aiPromises.push(autoDetectBookType(title || '', description)) - 1 : -1;
+    const titleIdx = needTitle ? aiPromises.push(autoGenerateTitle(description, userId)) - 1 : -1;
+    const scaleIdx = needScale ? aiPromises.push(autoDetectBookType(title || '', description, userId)) - 1 : -1;
 
     if (aiPromises.length > 0) {
       const results = await Promise.all(aiPromises);
@@ -881,7 +884,7 @@ router.post('/books/:id/generate', optionalAuth, async (ctx: Context) => {
       const desc = book.description || '';
       try {
         console.log(`[LangGraph Generate] AI 自动检测规模...`);
-        bookScale = await autoDetectBookType(book.title || '', desc);
+        bookScale = await autoDetectBookType(book.title || '', desc, book.userId ?? undefined);
         console.log(`[LangGraph Generate] AI 检测结果 → bookScale=${bookScale}`);
       } catch (e) {
         console.warn(`[LangGraph Generate] AI 检测失败,回退:`, e);
@@ -942,7 +945,7 @@ router.post('/books/:id/generate', optionalAuth, async (ctx: Context) => {
     // 异步生成(跳过队列,开发环境下队列不可靠)
     await bookStore.update(bookId, { genStage: 'outlining' });
 
-    langGraphGenerator.generate(bookId, book.description, bookScale, genLevel)
+    langGraphGenerator.generate(bookId, book.description, bookScale, genLevel, userId)
       .then(() => {
         console.log(`[LangGraph] 生成完成: bookId=${bookId}`);
       })
@@ -1801,6 +1804,9 @@ router.post('/books/:id/chapters/batch-regenerate', optionalAuth, async (ctx: Co
       return;
     }
 
+    // 更新书籍状态为 content_generating,让前端能正确追踪轮询
+    await bookStore.update(bookId, { genStage: 'content_generating' });
+
     // 重置并触发每个选中章节的重新生成
     for (const chapterId of chapterIds) {
       await bookStore.updateChapterById(chapterId, {

+ 65 - 1
server/src/modules/subscription/subscription.controller.ts

@@ -2,7 +2,8 @@ import Router from '@koa/router';
 import { Context } from 'koa';
 import * as SubscriptionService from './subscription.service';
 import { BadRequestError } from '../../middleware/errorHandler';
-import { authMiddleware } from '../../middleware/auth';
+import { authMiddleware, optionalAuth } from '../../middleware/auth';
+import { prisma } from '../../models';
 
 const router = new Router();
 
@@ -187,4 +188,67 @@ router.get('/audio-estimate', authMiddleware, async (ctx: Context) => {
   };
 });
 
+// ========== 用户账单(AiCallLog 消耗明细) ==========
+
+// 获取用户账单汇总
+router.get('/billing/summary', optionalAuth, async (ctx: Context) => {
+  const userId = ctx.state.user?.userId || ctx.query.userId || '1'; // 默认测试用户
+
+  const logs = await prisma.aiCallLog.findMany({
+    where: { userId: parseInt(userId as string) },
+    orderBy: { createdAt: 'desc' },
+    select: {
+      id: true, callType: true, provider: true, model: true,
+      userId: true, bookId: true,
+      textLen: true, inputTokens: true, outputTokens: true,
+      estimatedCost: true, duration: true, success: true,
+      createdAt: true,
+    },
+  });
+
+  // 按类型汇总
+  const byType: Record<string, { count: number; inputTokens: number; outputTokens: number; cost: number }> = {};
+  for (const l of logs) {
+    if (!byType[l.callType]) byType[l.callType] = { count: 0, inputTokens: 0, outputTokens: 0, cost: 0 };
+    byType[l.callType].count++;
+    byType[l.callType].inputTokens += l.inputTokens;
+    byType[l.callType].outputTokens += l.outputTokens;
+    byType[l.callType].cost += l.estimatedCost || 0;
+  }
+
+  const totalCost = logs.reduce((s, l) => s + (l.estimatedCost || 0), 0);
+
+  ctx.body = {
+    code: 0,
+    data: {
+      totalCalls: logs.length,
+      totalInputTokens: logs.reduce((s,l) => s + l.inputTokens, 0),
+      totalOutputTokens: logs.reduce((s,l) => s + l.outputTokens, 0),
+      totalCost: Math.round(totalCost * 10000) / 10000,
+      byType: Object.entries(byType).map(([type, d]) => ({
+        type,
+        count: d.count,
+        inputTokens: d.inputTokens,
+        outputTokens: d.outputTokens,
+        cost: Math.round(d.cost * 10000) / 10000,
+      })),
+      records: logs.slice(0, 50).map(l => ({
+        id: l.id,
+        callType: l.callType,
+        provider: l.provider,
+        model: l.model,
+        userId: l.userId,
+        bookId: l.bookId,
+        textLen: l.textLen,
+        inputTokens: l.inputTokens,
+        outputTokens: l.outputTokens,
+        cost: l.estimatedCost,
+        duration: l.duration,
+        success: l.success,
+        time: l.createdAt,
+      })),
+    },
+  };
+});
+
 export default router;

+ 165 - 120
server/src/modules/subscription/subscription.service.ts

@@ -2,159 +2,199 @@ import { prisma } from '../../models';
 import { MemberLevel } from '../../types';
 
 // ============================================
-// TTS服务商成本配置(2026-04-12 更新)
+// TTS服务商成本配置(2026-05-20 更新:修正为阿里百炼官方定价)
+// 原配置存在单位错误(千→应为百万/万),已全部修正
 // ============================================
 export const TTS_COST_CONFIG = {
-  // TTS服务商配置
+  // TTS服务商配置(成本:¥/万字符,基于阿里百炼官方定价)
   providers: {
-    // 免费方案(科大讯飞基础版)
+    // 免费方案
     iflytek_free: {
       name: '科大讯飞-基础版',
-      costPerThousand: 0,  // 免费
+      costPer10kChars: 0,  // 免费
       quality: 'standard',
       voiceOptions: 10,
-      freeQuota: 100000,  // 10万/月(永久)
-      novelRating: 3  // ★★★☆☆
+      freeQuota: 100000,
+      novelRating: 3
     },
-    // 性价比方案(百度基础版
-    baidu_standard: {
-      name: '百度智能云-基础版',
-      costPerThousand: 3.0,  // ¥3/千字符
+    // 阿里百炼 CosyVoice 标准版(默认,¥1/万字符
+    aliyun_cosyvoice: {
+      name: '阿里百炼 cosyvoice-v3-flash',
+      costPer10kChars: 1.0,  // ¥1/万字符(阿里官方定价)
       quality: 'standard',
-      voiceOptions: 20,
-      freeQuota: 2000000,  // 200万/月(首年)
-      novelRating: 4  // ★★★★☆
+      voiceOptions: 25,
+      freeQuota: 10000,  // 1万字符免费/90天
+      novelRating: 4
     },
-    // 高质量方案(百度精品版)
-    baidu_premium: {
-      name: '百度智能云-精品版',
-      costPerThousand: 15.0,  // ¥15/千字符
-      quality: 'premium',
-      voiceOptions: 50,
-      freeQuota: 0,
-      novelRating: 5  // ★★★★★
-    },
-    // 阿里云方案
-    aliyun_plus: {
-      name: '阿里云Qwen3-Plus',
-      costPerThousand: 12.0,  // ¥12/千字符
+    // 阿里百炼 CosyVoice Plus(高质量)
+    aliyun_cosyvoice_plus: {
+      name: '阿里百炼 cosyvoice-v3-plus',
+      costPer10kChars: 2.0,  // ¥2/万字符
       quality: 'high',
-      voiceOptions: 30,
-      freeQuota: 0,
-      novelRating: 5  // ★★★★★
-    },
-    // 企业方案(火山引擎)
-    volcano_premium: {
-      name: '火山引擎豆包-标准版',
-      costPerThousand: 50.0,  // ¥50/千字符
-      quality: 'premium',
       voiceOptions: 40,
-      freeQuota: 20000,  // 2万/应用
-      novelRating: 5  // ★★★★★
+      freeQuota: 10000,
+      novelRating: 5
+    },
+    // 阿里百炼 TTS Flash(备选)
+    aliyun_tts_flash: {
+      name: '阿里百炼 qwen3-tts-instruct-flash',
+      costPer10kChars: 0.8,  // ¥0.8/万字符
+      quality: 'standard',
+      voiceOptions: 30,
+      freeQuota: 10000,
+      novelRating: 4
     }
   },
   
-  // AI模型成本配置
+  // AI模型成本配置(¥/百万token,基于阿里百炼官方定价)
   aiModels: {
-    deepseek: {
-      name: 'DeepSeek V3.2',
-      inputCost: 2.0,   // ¥2.0/千token
-      outputCost: 8.0,  // ¥8.0/千token
+    qwen_plus: {
+      name: '通义千问 Qwen-Plus',
+      inputCostPerMToken: 0.8,   // ¥0.8/百万token(阿里官方)
+      outputCostPerMToken: 2.0,  // ¥2.0/百万token(阿里官方,非思考模式)
       quality: 'standard',
       default: true
     },
-    qwen_plus: {
-      name: '通义Qwen Plus',
-      inputCost: 4.0,   // ¥4.0/千token
-      outputCost: 12.0, // ¥12.0/千token
-      quality: 'high'
+    qwen3_flash: {
+      name: '通义千问 Qwen3.5-Flash',
+      inputCostPerMToken: 0.2,   // ¥0.2/百万token
+      outputCostPerMToken: 2.0,  // ¥2.0/百万token
+      quality: 'standard'
     },
-    doubao_pro: {
-      name: '豆包 Pro',
-      inputCost: 2.0,   // ¥2.0/千token
-      outputCost: 6.0,  // ¥6.0/千token
+    qwen3_plus: {
+      name: '通义千问 Qwen3.6-Plus',
+      inputCostPerMToken: 2.0,   // ¥2/百万token
+      outputCostPerMToken: 12.0, // ¥12/百万token
       quality: 'high'
+    },
+    deepseek_v3: {
+      name: 'DeepSeek V3.2(阿里百炼)',
+      inputCostPerMToken: 2.0,   // ¥2/百万token
+      outputCostPerMToken: 3.0,  // ¥3/百万token
+      quality: 'standard'
     }
   },
   
   // 各等级默认TTS方案
   planTTSProvider: {
-    0: 'iflytek_free',      // 免费版:科大讯飞免费
-    1: 'baidu_standard',     // 入门版:百度基础
-    2: 'baidu_premium',     // 专业版:百度精品
-    3: 'volcano_premium'     // 旗舰版:火山引擎
+    0: 'iflytek_free',           // 免费版:科大讯飞免费
+    1: 'aliyun_cosyvoice',       // 入门版:CosyVoice标准版
+    2: 'aliyun_cosyvoice',       // 专业版:CosyVoice标准版
+    3: 'aliyun_cosyvoice_plus'   // 旗舰版:CosyVoice Plus
   },
   
   // 默认AI模型
-  defaultAIModel: 'deepseek'
+  defaultAIModel: 'qwen_plus'
 };
 
+// ============================================
+// 定价系数(可运营调整)
+// ============================================
+export const PRICING_COEFFICIENT = 2.0;  // 售价 = API成本 × 系数
+
 // ============================================
 // Token成本配置(AI生成成本 + TTS成本)
+// 2026-05-20 修正:基于阿里百炼官方定价,单位修正为百万token/万字符
 // ============================================
 export const TOKEN_COST_CONFIG = {
-  // 基础Token成本(DeepSeek V3.2 + 百度基础TTS)
-  baseCostPerThousand: 5.0,  // AI: ¥2 + TTS: ¥3 = ¥5/千字符
+  // 基础成本(qwen-plus AI + cosyvoice-v3-flash TTS)
+  // AI: 1.5万token/万字符 × ¥2/百万token输出 + ¥0.8/百万token输入 = ¥0.042/万字符
+  // TTS: cosyvoice-v3-flash ¥1/万字符
+  // 合计: ¥1.042/万字符
+  baseCostPer10kChars: 1.042,
   
-  // 超额使用单价
-  extraPricePerThousand: 6.0,  // 略高于成本价
-  
-  // 模型选择
+  // AI模型(¥/百万token,阿里百炼官方定价)
   models: {
-    deepseek: {
-      name: 'DeepSeek V3.2',
-      inputCost: 2.0,      // ¥2.0/千token
-      outputCost: 8.0,     // ¥8.0/千token
+    qwen_plus: {
+      name: '通义千问 Qwen-Plus',
+      inputCostPerMToken: 0.8,    // ¥0.8/百万token(非思考模式)
+      outputCostPerMToken: 2.0,   // ¥2.0/百万token
       quality: 'standard',
       default: true
     },
-    qwen_plus: {
-      name: '通义 Qwen Plus',
-      inputCost: 4.0,      // ¥4.0/千token
-      outputCost: 12.0,    // ¥12.0/千token
-      quality: 'high',
-      extraFee: 1.5        // 每千token额外收费
+    qwen3_flash: {
+      name: '通义千问 Qwen3.5-Flash',
+      inputCostPerMToken: 0.2,    // ¥0.2/百万token
+      outputCostPerMToken: 2.0,   // ¥2.0/百万token
+      quality: 'standard'
     },
-    doubao_pro: {
-      name: '豆包 Pro',
-      inputCost: 2.0,      // ¥2.0/千token
-      outputCost: 6.0,     // ¥6.0/千token
+    qwen3_plus: {
+      name: '通义千问 Qwen3.6-Plus',
+      inputCostPerMToken: 2.0,    // ¥2/百万token
+      outputCostPerMToken: 12.0,  // ¥12/百万token
       quality: 'high'
+    },
+    deepseek_v3: {
+      name: 'DeepSeek V3.2(阿里百炼)',
+      inputCostPerMToken: 2.0,    // ¥2/百万token
+      outputCostPerMToken: 3.0,   // ¥3/百万token
+      quality: 'standard'
+    }
+  },
+  
+  // TTS成本(¥/万字符)
+  ttsModels: {
+    cosyvoice: {
+      name: 'cosyvoice-v3-flash(标准版)',
+      costPer10kChars: 1.0       // ¥1/万字符
+    },
+    cosyvoice_plus: {
+      name: 'cosyvoice-v3-plus',
+      costPer10kChars: 2.0       // ¥2/万字符
+    },
+    qwen3_tts_flash: {
+      name: 'qwen3-tts-instruct-flash',
+      costPer10kChars: 0.8       // ¥0.8/万字符
     }
   }
 };
 
-// 计算Token生成成本
-export function calculateTokenCost(textLength: number, model: string = 'deepseek'): {
-  inputCost: number;
-  outputCost: number;
+// 计算Token生成成本(基于阿里百炼实际定价)
+export function calculateTokenCost(
+  textLength: number, 
+  aiModel: string = 'qwen_plus',
+  ttsModel: string = 'cosyvoice'
+): {
+  aiInputCost: number;
+  aiOutputCost: number;
+  ttsCost: number;
   totalCost: number;
   suggestedPrice: number;
 } {
-  const modelConfig = TOKEN_COST_CONFIG.models[model] || TOKEN_COST_CONFIG.models.deepseek;
+  const modelConfig = TOKEN_COST_CONFIG.models[aiModel] || TOKEN_COST_CONFIG.models.qwen_plus;
+  const ttsConfig = TOKEN_COST_CONFIG.ttsModels[ttsModel] || TOKEN_COST_CONFIG.ttsModels.cosyvoice;
+  
+  // 估算token数:中文1字≈1.5token
+  const estimatedTokens = textLength * 1.5;
+  
+  // AI输入成本(prompt约占输出的10%)
+  const aiInputCost = (estimatedTokens * 0.1 / 1_000_000) * modelConfig.inputCostPerMToken;
   
-  // 输入成本
-  const inputTokens = textLength; // 1字 ≈ 1 token
-  const inputCost = (inputTokens / 1000) * modelConfig.inputCost;
+  // AI输出成本
+  const aiOutputCost = (estimatedTokens / 1_000_000) * modelConfig.outputCostPerMToken;
   
-  // 输出成本(音频合成)
-  const outputCost = textLength * 0.001 * modelConfig.outputCost * 0.1;
+  // TTS合成成本
+  const ttsCost = (textLength / 10_000) * ttsConfig.costPer10kChars;
   
-  // 总成本
-  const totalCost = inputCost + outputCost;
+  // 总API成本
+  const totalCost = aiInputCost + aiOutputCost + ttsCost;
   
-  // 建议售价(成本 × 1.5,保证50%利润)
-  const suggestedPrice = totalCost * 1.5;
+  // 建议售价 = 成本 × 定价系数
+  const suggestedPrice = totalCost * PRICING_COEFFICIENT;
   
   return {
-    inputCost: Math.round(inputCost * 100) / 100,
-    outputCost: Math.round(outputCost * 100) / 100,
-    totalCost: Math.round(totalCost * 100) / 100,
+    aiInputCost: Math.round(aiInputCost * 10000) / 10000,
+    aiOutputCost: Math.round(aiOutputCost * 10000) / 10000,
+    ttsCost: Math.round(ttsCost * 10000) / 10000,
+    totalCost: Math.round(totalCost * 10000) / 10000,
     suggestedPrice: Math.round(suggestedPrice * 100) / 100
   };
 }
 
-// 默认套餐配置(包月批发+按量零售,2026-04-12定稿)
+// 默认套餐配置(基于阿里百炼实际成本 × PRICING_COEFFICIENT)
+// 定价公式: priceMonthly = monthlyMinutes × AUDIO_BILLING_CONFIG.pricing.monthly
+// 成本: cosyvoice-v3-flash ¥1/万字符 + qwen-plus AI = ¥0.016/分钟, 系数: 2, 售价: ¥0.032/分钟
+// ⚠️ 实际按量计费,套餐只是包装展示
 export const DEFAULT_PLANS = [
   {
     name: '免费版',
@@ -185,14 +225,14 @@ export const DEFAULT_PLANS = [
   {
     name: '入门版',
     level: 1,
-    priceMonthly: 19,
-    priceYearly: 190,
+    priceMonthly: 1,
+    priceYearly: 10,
     description: '适合轻度使用',
     features: JSON.stringify([
       '每月30分钟音频',
       '全部音色',
       '高清音质',
-      '超出¥8/分钟'
+      '超出¥0.048/分钟'
     ]),
     isRecommended: false,
     sortOrder: 1,
@@ -207,19 +247,19 @@ export const DEFAULT_PLANS = [
     batchProcessing: false,
     teamManagement: false,
     overageEnabled: true,
-    overagePrice: 8.0
+    overagePrice: 0.048
   },
   {
     name: '专业版',
     level: 2,
-    priceMonthly: 59,
-    priceYearly: 590,
+    priceMonthly: 3,
+    priceYearly: 30,
     description: '适合内容创作者 ⭐推荐',
     features: JSON.stringify([
       '每月100分钟音频',
       '全部音色+定制音色',
       '高清音质',
-      '超出¥7/分钟'
+      '超出¥0.042/分钟'
     ]),
     isRecommended: true,
     sortOrder: 2,
@@ -234,20 +274,20 @@ export const DEFAULT_PLANS = [
     batchProcessing: false,
     teamManagement: false,
     overageEnabled: true,
-    overagePrice: 7.0
+    overagePrice: 0.042
   },
   {
     name: '旗舰版',
     level: 3,
-    priceMonthly: 199,
-    priceYearly: 1990,
+    priceMonthly: 13,
+    priceYearly: 130,
     description: '适合重度使用',
     features: JSON.stringify([
       '每月400分钟音频',
       '全部音色+定制音色',
       '高清音质',
       'VIP优先队列',
-      '超出¥6/分钟'
+      '超出¥0.036/分钟'
     ]),
     isRecommended: false,
     sortOrder: 3,
@@ -262,13 +302,13 @@ export const DEFAULT_PLANS = [
     batchProcessing: false,
     teamManagement: false,
     overageEnabled: true,
-    overagePrice: 6.0
+    overagePrice: 0.036
   },
   {
     name: '企业版',
     level: 4,
-    priceMonthly: 599,
-    priceYearly: 5990,
+    priceMonthly: 48,
+    priceYearly: 480,
     description: '适合企业用户',
     features: JSON.stringify([
       '每月1500分钟音频',
@@ -276,7 +316,7 @@ export const DEFAULT_PLANS = [
       '专属技术支持',
       '批量处理',
       '团队管理',
-      '超出¥5/分钟'
+      '超出¥0.032/分钟'
     ]),
     isRecommended: false,
     sortOrder: 4,
@@ -291,7 +331,7 @@ export const DEFAULT_PLANS = [
     batchProcessing: true,
     teamManagement: true,
     overageEnabled: true,
-    overagePrice: 5.0
+    overagePrice: 0.032
   }
 ];
 
@@ -513,17 +553,21 @@ export async function checkQuota(userId: number, requiredTokens: number) {
 }
 
 // ============================================
-// 音频时长计费系统(2026-04-12 定稿)
+// 音频时长计费系统(2026-05-20 修正:基于阿里百炼实际定价)
+// 成本 = AI文本(qwen-plus ¥2/百万token) + TTS(cosyvoice-v3-flash ¥1/万字符)
+// 每分钟(150字): AI≈¥0.0005 + TTS≈¥0.015 = ¥0.0155
+// 定价 = 成本 × PRICING_COEFFICIENT(系数可运营调整)
 // ============================================
 
 export const AUDIO_BILLING_CONFIG = {
-  // 成本配置(综合TTS+AI成本
-  costPerMinute: 4.0,  // 成本:¥4/分钟(AI文本生成+TTS合成)
+  // 实际API成本:¥0.016/分钟(qwen-plus + cosyvoice-v3-flash
+  costPerMinute: 0.016,
   
-  // 定价策略:包月=批发价,按量=零售价
+  // 定价 = 成本 × 系数(系数可调整)
+  // current: ¥0.016 × 2 = ¥0.032/分钟
   pricing: {
-    monthly: 5.0,     // 包月批发价:¥5/分钟
-    overage: 8.0      // 超额零售价:¥8/分钟
+    monthly: 0.032,     // 售价 = 成本 × 系数 = ¥0.032/分钟
+    overage: 0.048      // 超额价 = 售价 × 1.5 = ¥0.048/分钟
   },
   
   // 语速配置(字/分钟)
@@ -539,12 +583,13 @@ export const AUDIO_BILLING_CONFIG = {
   },
   
   // 各等级超出配额单价(元/分钟),null=不支持超出
+  // 均为售价的1.5倍
   overagePrice: {
     0: null,       // 免费版:不支持超出
-    1: 8.0,        // 入门版:¥8/分钟
-    2: 7.0,        // 专业版:¥7/分钟
-    3: 6.0,        // 旗舰版:¥6/分钟
-    4: 5.0         // 企业版:¥5/分钟(最低价)
+    1: 0.048,      // 入门版:¥0.048/分钟
+    2: 0.042,      // 专业版:¥0.042/分钟
+    3: 0.036,      // 旗舰版:¥0.036/分钟
+    4: 0.032       // 企业版:¥0.032/分钟
   }
 };
 

+ 12 - 4
server/src/modules/tts/aliyun.provider.ts

@@ -108,7 +108,11 @@ export class AliyunTtsProvider implements ITtsProvider {
 
         // CosyVoice: SSE 流式,边收边存,无超时
         if (isCosyVoice) {
-          return await this.synthesizeStream(requestBody, outputPath);
+          const result = await withAiLog(
+            () => this.synthesizeStream(requestBody, outputPath),
+            { callType: 'tts_synthesize', provider: this.vendor, model: activeModel, textLen: text.length }
+          );
+          return result;
         }
 
         // 千问: 同步非流式
@@ -137,9 +141,13 @@ export class AliyunTtsProvider implements ITtsProvider {
           return `cloud:${audioUrl}`;
         }
       } catch (error: any) {
-        const errorDetails = error.response?.data || error.message;
-        const isRateLimit = error.response?.status === 429 || errorDetails?.code === 'Throttling.RateQuota';
-        const isServerError = error.response?.status >= 500;
+        const errorDetails = error.response?.data || error.message || '';
+        const errorStr = typeof errorDetails === 'string' ? errorDetails : JSON.stringify(errorDetails);
+        const isRateLimit = error.response?.status === 429 || errorStr.includes('Throttling.RateQuota');
+        const isServerError = error.response?.status >= 500
+          || errorStr.includes('InternalError')      // 阿里内部错误,可重试
+          || errorStr.includes('timeout')            // 流式超时,可重试
+          || errorStr.includes('CircuitBreaker');    // 熔断器开启,切换重试
 
         console.error(`❌ [Aliyun TTS] 失败 (尝试 ${attempt}/${retries}):`, error.message);
 

+ 141 - 20
server/src/services/ai-call-logger.ts

@@ -5,55 +5,140 @@
  */
 
 import { prisma } from '../models';
+import { TOKEN_COST_CONFIG, PRICING_COEFFICIENT } from '../modules/subscription/subscription.service';
+import { getLlmContext } from './llm-context';
 
 export interface LogCallParams {
-  callType: string;    // tts_create | tts_poll | tts_download | llm_chat | llm_tools
-  provider: string;    // minimax | bailian | volcengine
-  model: string;       // speech-2.8-hd | qwen3-tts-instruct-flash | MiniMax-M2.7
-  textLen?: number;
-  prompt?: string;     // 提示词内容
-  tokenCount?: number;
-  duration?: number;
+  callType: string;     // llm_chat | llm_tools | tts_synthesize | tts_create | tts_poll
+  provider: string;     // minimax | bailian | volcengine
+  model: string;        // MiniMax-M2.7 | cosyvoice-v3-flash | qwen3-tts-instruct-flash
+  textLen?: number;     // 输入文本长度(字符)
+  prompt?: string;      // 提示词内容(LLM only)
+  inputTokens?: number; // 实际输入 Token 数
+  outputTokens?: number;// 实际输出 Token 数(LLM)或 文本长度(TTS)
+  duration?: number;    // 耗时(ms)
   success?: boolean;
   errorMsg?: string;
+  userId?: number;
   bookId?: number;
   chapterId?: number;
 }
 
+/**
+ * 根据 callType + model + token 数估算成本
+ * LLM: 按百万token单价计算
+ * TTS: 按万字符单价计算(cosyvoice ¥1/万字符)
+ */
+function estimateCost(params: LogCallParams): number {
+  const inputTokens = params.inputTokens || 0;
+  const outputTokens = params.outputTokens || 0;
+  const textLen = params.textLen || 0;
+
+  // LLM 调用:按 token 计费
+  if (params.callType.startsWith('llm_')) {
+    const modelKey = params.model.includes('qwen') ? 'qwen_plus' :
+                     params.model.includes('deepseek') ? 'deepseek_v3' : 'qwen_plus';
+    const modelConfig = TOKEN_COST_CONFIG.models[modelKey] || TOKEN_COST_CONFIG.models.qwen_plus;
+    const inputCost = (inputTokens / 1_000_000) * modelConfig.inputCostPerMToken;
+    const outputCost = (outputTokens / 1_000_000) * modelConfig.outputCostPerMToken;
+    return Math.round((inputCost + outputCost) * 10000) / 10000;
+  }
+
+  // TTS 实际合成调用:按字符数计费(cosyvoice ¥1/万字符)
+  // tts_task_completed/failed 是任务汇总日志,不计费
+  if (params.callType === 'tts_synthesize' || params.callType === 'tts_create') {
+    const chars = outputTokens || textLen;
+    return Math.round((chars / 10_000) * 1.0 * 10000) / 10000;
+  }
+
+  return 0;
+}
+
+/**
+ * 从 LangChain AIMessage 响应中提取 token 用量
+ * 支持 OpenAI-compatible API(usage.prompt_tokens / completion_tokens)
+ */
+export function extractTokenUsage(response: any): { inputTokens: number; outputTokens: number } | null {
+  try {
+    // LangChain AIMessage 包含 response_metadata
+    const metadata = response?.response_metadata || response?.lc_kwargs?.response_metadata || {};
+    const usage = metadata?.tokenUsage || metadata?.usage || metadata?.token_usage || {};
+
+    // 尝试多种可能的字段名
+    const promptTokens = usage?.prompt_tokens || usage?.promptTokens || usage?.input_tokens || usage?.inputTokens;
+    const completionTokens = usage?.completion_tokens || usage?.completionTokens || usage?.output_tokens || usage?.outputTokens || usage?.total_tokens;
+
+    if (promptTokens || completionTokens) {
+      return {
+        inputTokens: promptTokens || 0,
+        outputTokens: completionTokens || 0,
+      };
+    }
+  } catch {}
+
+  return null;
+}
+
+/**
+ * 估算 Token 数(当 API 未返回实际用量时)
+ * 中文:1 字 ≈ 1.5 token
+ */
+function estimateTokens(text: string): number {
+  return Math.ceil(text.length * 1.5);
+}
+
 /**
  * 记录一次 AI 调用(异步写入,不阻塞)
  */
 export function logAiCall(params: LogCallParams): void {
-  // Always log to console so we know it was called
-  console.log(`[AiCallLog] ${params.callType} | ${params.provider} | ${params.model} | ${params.success ? 'OK' : 'FAIL'} | ${params.textLen || 0}字`);
-  
+  // 从异步上下文自动填充 userId / bookId / chapterId(如果调用方未显式传入)
+  const ctx = getLlmContext();
+  if (ctx) {
+    if (params.userId === undefined && ctx.userId !== undefined) params.userId = ctx.userId;
+    if (params.bookId === undefined && ctx.bookId !== undefined) params.bookId = ctx.bookId;
+    if (params.chapterId === undefined && ctx.chapterId !== undefined) params.chapterId = ctx.chapterId;
+  }
+
+  const estimatedCost = estimateCost(params);
+
+  console.log(
+    `[AiCallLog] ${params.callType} | ${params.provider} | ${params.model} | ` +
+    `${params.success ? 'OK' : 'FAIL'} | ` +
+    `in:${params.inputTokens || 0}tk out:${params.outputTokens || 0}tk ` +
+    `text:${params.textLen || 0}字 | cost:¥${estimatedCost}`
+  );
+
   prisma.aiCallLog.create({
     data: {
       callType: params.callType,
       provider: params.provider,
       model: params.model,
+      userId: params.userId ?? null,
+      bookId: params.bookId ?? null,
+      chapterId: params.chapterId ?? null,
       textLen: params.textLen ?? 0,
-      prompt: params.prompt ?? null,
+      prompt: params.prompt?.substring(0, 5000) ?? null,
+      inputTokens: params.inputTokens ?? 0,
+      outputTokens: params.outputTokens ?? 0,
+      estimatedCost,
       duration: params.duration ?? 0,
       success: params.success ?? true,
-      errorMsg: params.errorMsg?.substring(0, 200) ?? null,
-      bookId: params.bookId ?? null,
-      chapterId: params.chapterId ?? null,
+      errorMsg: params.errorMsg ?? null,
     },
-  }).then(result => {
-    // Successfully written
+  }).then(() => {
+    // Success
   }).catch(err => {
     console.error('[AiCallLog] ❌ 写入数据库失败:', err.message);
   });
 }
 
 /**
- * 包装异步函数,自动计时 + 记录日志
+ * 包装异步函数,自动计时 + 记录日志 + 提取 token 用量
  *
  * 用法:
  *   const result = await withAiLog(
- *     () => axios.post(url, body),
- *     { callType: 'tts_create', provider: 'minimax', model: 'speech-2.8-hd', textLen: 1000 }
+ *     () => llm.invoke(messages),
+ *     { callType: 'llm_chat', provider: 'bailian', model: 'qwen3.6-plus', textLen: 500, prompt }
  *   );
  */
 export async function withAiLog<T>(
@@ -63,10 +148,46 @@ export async function withAiLog<T>(
   const t0 = Date.now();
   try {
     const result = await fn();
-    logAiCall({ ...params, duration: Date.now() - t0 });
+
+    // 尝试从响应中提取 token 用量
+    const tokenUsage = extractTokenUsage(result);
+    const logParams: LogCallParams = {
+      ...params,
+      duration: Date.now() - t0,
+    };
+
+    if (tokenUsage) {
+      // 有实际 token 数据
+      logParams.inputTokens = tokenUsage.inputTokens;
+      logParams.outputTokens = tokenUsage.outputTokens;
+    } else if (params.callType.startsWith('llm_')) {
+      // LLM 调用但无 token 数据:估算
+      const promptText = params.prompt || '';
+      const outputText = typeof result === 'string' ? result :
+        (result as any)?.content && typeof (result as any).content === 'string' ? (result as any).content : '';
+      logParams.inputTokens = estimateTokens(promptText);
+      logParams.outputTokens = estimateTokens(outputText);
+    } else if (params.callType.startsWith('tts_')) {
+      // TTS 调用:outputTokens = 文本长度(用于成本计算)
+      logParams.outputTokens = params.textLen || 0;
+    }
+
+    logAiCall(logParams);
     return result;
   } catch (err: any) {
     logAiCall({ ...params, duration: Date.now() - t0, success: false, errorMsg: err.message });
     throw err;
   }
 }
+
+/**
+ * 无包装直接记录(用于不需要包裹异步函数的情况)
+ */
+export function logTtsCall(params: LogCallParams): void {
+  // TTS 成本基于文本长度
+  const logParams: LogCallParams = {
+    ...params,
+    outputTokens: params.textLen || 0, // TTS 用 outputTokens 存文本长度
+  };
+  logAiCall(logParams);
+}

+ 34 - 0
server/src/services/llm-context.ts

@@ -0,0 +1,34 @@
+/**
+ * LLM/TTS 调用会话上下文
+ * 通过 AsyncLocalStorage 实现,无需修改任何 LLM 调用方签名
+ * 
+ * 用法:
+ *   import { runWithContext } from '../../services/llm-context';
+ *   await runWithContext({ bookId: 17, chapterId: 5 }, async () => {
+ *     await callLLMWithMessages(...);  // 自动携带 bookId
+ *     await ttsProvider.synthesize(...); // 自动携带 bookId
+ *   });
+ */
+
+import { AsyncLocalStorage } from 'async_hooks';
+
+export interface LlmContext {
+  userId?: number;
+  bookId?: number;
+  chapterId?: number;
+}
+
+const storage = new AsyncLocalStorage<LlmContext>();
+
+/** 获取当前异步上下文(withAiLog 内部调用) */
+export function getLlmContext(): LlmContext | undefined {
+  return storage.getStore();
+}
+
+/** 在指定上下文中执行异步函数 */
+export async function runWithContext<T>(
+  ctx: LlmContext,
+  fn: () => Promise<T>,
+): Promise<T> {
+  return storage.run(ctx, fn);
+}

+ 6739 - 0
阿里ai token计费规则.md

@@ -0,0 +1,6739 @@
+阶梯计费规则
+百炼部分模型实行阶梯计费。单价取决于单次请求的输入 Token 总量。该请求的所有 Token 均按对应阶梯的单价结算。
+
+例如,某模型设有两档计费区间:0 < Token ≤ 32K 和 32K < Token ≤ 128K。若输入 100K Token,因数值落在第二区间(32K < 100K ≤ 128K),所有 Token 均按第二档单价结算。
+
+文本生成-千问
+千问Max
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费;若模型支持上下文缓存,仅输入Token享有折扣。两者不能同时生效。
+
+中国内地全球国际欧盟
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度(注)
+
+qwen3.6-max-preview
+
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤128K
+
+9元
+
+54元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+128K<Token≤256K
+
+15元
+
+90元
+
+qwen3-max
+
+当前能力等同于qwen3-max-2026-01-23
+Batch调用半价
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤32K
+
+2.5元
+
+10元
+
+32K<Token≤128K
+
+4元
+
+16元
+
+128K<Token≤256K
+
+7元
+
+28元
+
+qwen3-max-2026-01-23
+
+非思考和思考模式
+
+0<Token≤32K
+
+2.5元
+
+10元
+
+32K<Token≤128K
+
+4元
+
+16元
+
+128K<Token≤256K
+
+7元
+
+28元
+
+qwen3-max-2025-09-23
+
+仅非思考模式
+
+0<Token≤32K
+
+6元
+
+24元
+
+32K<Token≤128K
+
+10元
+
+40元
+
+128K<Token≤256K
+
+15元
+
+60元
+
+qwen3-max-preview
+
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤32K
+
+6元
+
+24元
+
+32K<Token≤128K
+
+10元
+
+40元
+
+128K<Token≤256K
+
+15元
+
+60元
+
+更多模型
+模型名称
+
+模式
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-max
+
+当前能力等同于qwen-max-2024-09-19
+Batch调用半价
+仅非思考模式
+
+无阶梯计价
+
+2.4元
+
+9.6元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-max-latest
+
+Batch调用半价
+仅非思考模式
+
+无阶梯计价
+
+2.4元
+
+9.6元
+
+qwen-max-2025-01-25
+
+仅非思考模式
+
+无阶梯计价
+
+2.4元
+
+9.6元
+
+qwen-max-2024-09-19
+
+仅非思考模式
+
+无阶梯计价
+
+20元
+
+60元
+
+qwen-max-2024-04-28
+
+仅非思考模式
+
+无阶梯计价
+
+40元
+
+120元
+
+千问Plus
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地全球国际美国欧盟
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单次请求的输入Token范围
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+非思考模式
+
+思考模式(思维链+回答)
+
+qwen3.6-plus
+
+当前能力等同于qwen3.6-plus-2026-04-02
+0<Token≤256K
+
+2元
+
+12元
+
+12元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+256K<Token≤1M
+
+8元
+
+48元
+
+48元
+
+qwen3.6-plus-2026-04-02
+
+0<Token≤256K
+
+2元
+
+12元
+
+12元
+
+256K<Token≤1M
+
+8元
+
+48元
+
+48元
+
+qwen3.5-plus
+
+当前能力等同于qwen3.5-plus-2026-02-15
+0<Token≤128K
+
+0.8元
+
+4.8元
+
+4.8元
+
+128K<Token≤256K
+
+2元
+
+12元
+
+12元
+
+256K<Token≤1M
+
+4元
+
+24元
+
+24元
+
+qwen3.5-plus-2026-04-20
+
+0<Token≤128K
+
+0.8元
+
+4.8元
+
+4.8元
+
+128K<Token≤256K
+
+2元
+
+12元
+
+12元
+
+256K<Token≤1M
+
+4元
+
+24元
+
+24元
+
+qwen3.5-plus-2026-02-15
+
+0<Token≤128K
+
+0.8元
+
+4.8元
+
+4.8元
+
+128K<Token≤256K
+
+2元
+
+12元
+
+12元
+
+256K<Token≤1M
+
+4元
+
+24元
+
+24元
+
+qwen-plus
+
+当前能力等同于qwen-plus-2025-12-01
+Batch调用半价
+0<Token≤128K
+
+0.8元
+
+2元
+
+8元
+
+128K<Token≤256K
+
+2.4元
+
+20元
+
+24元
+
+256K<Token≤1M
+
+4.8元
+
+48元
+
+64元
+
+qwen-plus-latest
+
+Batch调用半价
+0<Token≤128K
+
+0.8元
+
+2元
+
+8元
+
+128K<Token≤256K
+
+2.4元
+
+20元
+
+24元
+
+256K<Token≤1M
+
+4.8元
+
+48元
+
+64元
+
+qwen-plus-2025-12-01
+
+0<Token≤128K
+
+0.8元
+
+2元
+
+8元
+
+128K<Token≤256K
+
+2.4元
+
+20元
+
+24元
+
+256K<Token≤1M
+
+4.8元
+
+48元
+
+64元
+
+qwen-plus-2025-09-11
+
+0<Token≤128K
+
+0.8元
+
+2元
+
+8元
+
+128K<Token≤256K
+
+2.4元
+
+20元
+
+24元
+
+256K<Token≤1M
+
+4.8元
+
+48元
+
+64元
+
+qwen-plus-2025-07-28
+
+0<Token≤128K
+
+0.8元
+
+2元
+
+8元
+
+128K<Token≤256K
+
+2.4元
+
+20元
+
+24元
+
+256K<Token≤1M
+
+4.8元
+
+48元
+
+64元
+
+qwen-plus-2025-07-14
+
+无阶梯计价
+
+0.8元
+
+2元
+
+8元
+
+qwen-plus-2025-04-28
+
+无阶梯计价
+
+0.8元
+
+2元
+
+8元
+
+更多模型
+模型名称
+
+单次请求的输入Token范围
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-plus-2025-01-25
+
+无阶梯计价
+
+0.8元
+
+2元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-plus-2025-01-12
+
+无阶梯计价
+
+0.8元
+
+2元
+
+qwen-plus-2024-12-20
+
+无阶梯计价
+
+0.8元
+
+2元
+
+千问Flash
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费;若模型支持上下文缓存,仅输入Token享有折扣。两者不能同时生效。
+
+中国内地全球国际美国欧盟
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度(注)
+
+qwen3.6-flash
+
+当前能力等同于qwen3.6-flash-2026-04-16
+Batch调用半价
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤256K
+
+1.2元
+
+7.2元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+256K<Token≤1M
+
+4.8元
+
+28.8元
+
+qwen3.6-flash-2026-04-16
+
+非思考和思考模式
+
+0<Token≤256K
+
+1.2元
+
+7.2元
+
+256K<Token≤1M
+
+4.8元
+
+28.8元
+
+qwen3.5-flash
+
+当前能力等同于qwen3.5-flash-2026-02-23
+Batch调用半价
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤128K
+
+0.2元
+
+2元
+
+128K<Token≤256K
+
+0.8元
+
+8元
+
+256K<Token≤1M
+
+1.2元
+
+12元
+
+qwen3.5-flash-2026-02-23
+
+非思考和思考模式
+
+0<Token≤128K
+
+0.2元
+
+2元
+
+128K<Token≤256K
+
+0.8元
+
+8元
+
+256K<Token≤1M
+
+1.2元
+
+12元
+
+qwen-flash
+
+当前能力等同于qwen-flash-2025-07-28
+Batch调用半价
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤128K
+
+0.15元
+
+1.5元
+
+128K<Token≤256K
+
+0.6元
+
+6元
+
+256K<Token≤1M
+
+1.2元
+
+12元
+
+qwen-flash-2025-07-28
+
+非思考和思考模式
+
+0<Token≤128K
+
+0.15元
+
+1.5元
+
+128K<Token≤256K
+
+0.6元
+
+6元
+
+256K<Token≤1M
+
+1.2元
+
+12元
+
+千问Turbo
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+非思考模式
+
+思考模式(思维链+回答)
+
+qwen-turbo
+
+当前能力等同于qwen-turbo-2025-04-28
+Batch调用半价
+非思考和思考模式
+
+0.3元
+
+0.6元
+
+3元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-turbo-latest
+
+Batch调用半价
+非思考和思考模式
+
+0.3元
+
+0.6元
+
+3元
+
+qwen-turbo-2025-07-15
+
+非思考和思考模式
+
+0.3元
+
+0.6元
+
+3元
+
+qwen-turbo-2025-04-28
+
+非思考和思考模式
+
+0.3元
+
+0.6元
+
+3元
+
+更多模型
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+有效期:百炼开通后90天内
+
+qwen-turbo-2025-02-11
+
+0.3元
+
+0.6元
+
+100万Token
+
+qwen-turbo-2024-11-01
+
+0.3元
+
+0.6元
+
+1000万Token
+
+QwQ
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwq-plus
+
+当前能力等同于qwq-plus-2025-03-05
+Batch调用半价
+仅思考模式
+
+1.6元
+
+4元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwq-plus-latest
+
+仅思考模式
+
+1.6元
+
+4元
+
+qwq-plus-2025-03-05
+
+仅思考模式
+
+1.6元
+
+4元
+
+千问Long
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-long
+
+Batch调用半价
+0.5元
+
+2元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-long-latest
+
+0.5元
+
+2元
+
+qwen-long-2025-01-25
+
+0.5元
+
+2元
+
+千问Omni
+计费规则:按输入Token和输出Token计费。不同模态的Token计算规则请参见计费与限流。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+文本/图片/视频
+
+音频
+
+文本
+
+多模态输入
+文本+音频
+
+仅音频计费
+qwen3.5-omni-plus
+
+当前能力等同于qwen3.5-omni-plus-2026-03-15
+7元
+
+53元
+
+40元
+
+213元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen3.5-omni-plus-2026-03-15
+
+7元
+
+53元
+
+40元
+
+213元
+
+qwen3.5-omni-flash
+
+当前能力等同于qwen3.5-omni-flash-2026-03-15
+2.2元
+
+18元
+
+13.3元
+
+72元
+
+qwen3.5-omni-flash-2026-03-15
+
+2.2元
+
+18元
+
+13.3元
+
+72元
+
+更多模型
+千问Omni-Realtime
+计费规则:按输入Token和输出Token计费。不同模态的Token计算规则请参见计费与限流。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+文本/图片
+
+音频
+
+文本
+
+多模态输入
+文本+音频
+
+仅音频计费
+qwen3.5-omni-plus-realtime
+
+10元
+
+80元
+
+60元
+
+300元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen3.5-omni-plus-realtime-2026-03-15
+
+10元
+
+80元
+
+60元
+
+300元
+
+qwen3.5-omni-flash-realtime
+
+3.3元
+
+27元
+
+20元
+
+107元
+
+qwen3.5-omni-flash-realtime-2026-03-15
+
+3.3元
+
+27元
+
+20元
+
+107元
+
+更多模型
+QVQ
+计费规则:按输入Token和输出Token计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qvq-max
+
+当前能力等同于qvq-max-2025-03-25
+8元
+
+32元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qvq-max-latest
+
+8元
+
+32元
+
+qvq-max-2025-05-15
+
+8元
+
+32元
+
+qvq-max-2025-03-25
+
+8元
+
+32元
+
+qvq-plus
+
+当前能力等同于qvq-plus-2025-05-15
+2元
+
+5元
+
+qvq-plus-latest
+
+2元
+
+5元
+
+qvq-plus-2025-05-15
+
+2元
+
+5元
+
+千问VL
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地全球国际美国欧盟
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度(注)
+
+qwen3-vl-plus
+
+当前能力等同于qwen3-vl-plus-2025-12-19
+Batch调用半价
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤32K
+
+1元
+
+10元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+32K<Token≤128K
+
+1.5元
+
+15元
+
+128K<Token≤256K
+
+3元
+
+30元
+
+qwen3-vl-plus-2025-12-19
+
+非思考和思考模式
+
+0<Token≤32K
+
+1元
+
+10元
+
+32K<Token≤128K
+
+1.5元
+
+15元
+
+128K<Token≤256K
+
+3元
+
+30元
+
+qwen3-vl-plus-2025-09-23
+
+非思考和思考模式
+
+0<Token≤32K
+
+1元
+
+10元
+
+32K<Token≤128K
+
+1.5元
+
+15元
+
+128K<Token≤256K
+
+3元
+
+30元
+
+qwen3-vl-flash
+
+当前能力等同于qwen3-vl-flash-2026-01-22
+Batch调用半价
+上下文缓存享有折扣
+非思考和思考模式
+
+0<Token≤32K
+
+0.15元
+
+1.5元
+
+32K<Token≤128K
+
+0.3元
+
+3元
+
+128K<Token≤256K
+
+0.6元
+
+6元
+
+qwen3-vl-flash-2026-01-22
+
+非思考和思考模式
+
+0<Token≤32K
+
+0.15元
+
+1.5元
+
+32K<Token≤128K
+
+0.3元
+
+3元
+
+128K<Token≤256K
+
+0.6元
+
+6元
+
+qwen3-vl-flash-2025-10-15
+
+非思考和思考模式
+
+0<Token≤32K
+
+0.15元
+
+1.5元
+
+32K<Token≤128K
+
+0.3元
+
+3元
+
+128K<Token≤256K
+
+0.6元
+
+6元
+
+更多模型
+模型名称
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-vl-max
+
+当前能力等同于qwen-vl-max-2025-08-13
+Batch调用半价
+上下文缓存享有折扣
+无阶梯计价
+
+1.6元
+
+4元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-vl-max-latest
+
+Batch调用半价
+无阶梯计价
+
+1.6元
+
+4元
+
+qwen-vl-max-2025-08-13
+
+无阶梯计价
+
+1.6元
+
+4元
+
+qwen-vl-max-2025-04-08
+
+无阶梯计价
+
+3元
+
+9元
+
+qwen-vl-max-2025-04-02
+
+无阶梯计价
+
+3元
+
+9元
+
+qwen-vl-max-2025-01-25
+
+无阶梯计价
+
+3元
+
+9元
+
+qwen-vl-max-2024-12-30
+
+无阶梯计价
+
+3元
+
+9元
+
+qwen-vl-max-2024-11-19
+
+无阶梯计价
+
+3元
+
+9元
+
+qwen-vl-plus
+
+当前能力等同于qwen-vl-plus-2025-08-15
+Batch调用半价
+上下文缓存享有折扣
+无阶梯计价
+
+0.8元
+
+2元
+
+qwen-vl-plus-latest
+
+Batch调用半价
+无阶梯计价
+
+0.8元
+
+2元
+
+qwen-vl-plus-2025-08-15
+
+无阶梯计价
+
+0.8元
+
+2元
+
+qwen-vl-plus-2025-07-10
+
+无阶梯计价
+
+0.15元
+
+1.5元
+
+qwen-vl-plus-2025-05-07
+
+无阶梯计价
+
+1.5元
+
+4.5元
+
+qwen-vl-plus-2025-01-25
+
+无阶梯计价
+
+1.5元
+
+4.5元
+
+qwen-vl-plus-2025-01-02
+
+无阶梯计价
+
+1.5元
+
+4.5元
+
+千问OCR
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-vl-ocr
+
+Batch调用半价
+0.3元
+
+0.5元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-vl-ocr-latest
+
+Batch调用半价
+0.3元
+
+0.5元
+
+qwen-vl-ocr-2025-11-20
+
+0.3元
+
+0.5元
+
+qwen-vl-ocr-2025-08-28
+
+5元
+
+5元
+
+qwen-vl-ocr-2025-04-13
+
+5元
+
+5元
+
+qwen-vl-ocr-2024-10-28
+
+5元
+
+5元
+
+千问Audio
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+音频Token计算规则:每一秒钟的音频对应25个Token。若音频时长不足1秒,则按25个Token计算。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-audio-turbo
+
+目前仅供免费体验。
+
+免费额度用完后不可调用,推荐使用全模态(Qwen-Omni)作为替代模型
+各10万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-audio-turbo-latest
+
+千问数学模型
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-math-plus
+
+4元
+
+12元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-math-turbo
+
+2元
+
+6元
+
+千问Coder
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持上下文缓存,仅输入Token享有折扣。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen3-coder-plus
+
+当前能力等同于qwen3-coder-plus-2025-09-23
+上下文缓存享有折扣
+0<Token≤32K
+
+4元
+
+16元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+32K<Token≤128K
+
+6元
+
+24元
+
+128K<Token≤256K
+
+10元
+
+40元
+
+256K<Token≤1M
+
+20元
+
+200元
+
+qwen3-coder-plus-2025-09-23
+
+0<Token≤32K
+
+4元
+
+16元
+
+32K<Token≤128K
+
+6元
+
+24元
+
+128K<Token≤256K
+
+10元
+
+40元
+
+256K<Token≤1M
+
+20元
+
+200元
+
+qwen3-coder-plus-2025-07-22
+
+0<Token≤32K
+
+4元
+
+16元
+
+32K<Token≤128K
+
+6元
+
+24元
+
+128K<Token≤256K
+
+10元
+
+40元
+
+256K<Token≤1M
+
+20元
+
+200元
+
+qwen3-coder-flash
+
+当前能力等同于qwen3-coder-flash-2025-07-28
+0<Token≤32K
+
+1元
+
+4元
+
+32K<Token≤128K
+
+1.5元
+
+6元
+
+128K<Token≤256K
+
+2.5元
+
+10元
+
+256K<Token≤1M
+
+5元
+
+25元
+
+qwen3-coder-flash-2025-07-28
+
+0<Token≤32K
+
+1元
+
+4元
+
+32K<Token≤128K
+
+1.5元
+
+6元
+
+128K<Token≤256K
+
+2.5元
+
+10元
+
+256K<Token≤1M
+
+5元
+
+25元
+
+更多模型
+模型名称
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-coder-plus
+
+当前能力等同于qwen-coder-plus-2024-11-06
+无阶梯计价
+
+3.5元
+
+7元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-coder-plus-latest
+
+无阶梯计价
+
+3.5元
+
+7元
+
+qwen-coder-plus-2024-11-06
+
+无阶梯计价
+
+3.5元
+
+7元
+
+qwen-coder-turbo
+
+当前能力等同于qwen-coder-turbo-2024-09-19
+无阶梯计价
+
+2元
+
+6元
+
+qwen-coder-turbo-latest
+
+无阶梯计价
+
+2元
+
+6元
+
+qwen-coder-turbo-2024-09-19
+
+无阶梯计价
+
+2元
+
+6元
+
+千问翻译模型
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球国际美国
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-mt-plus
+
+1.8元
+
+5.4元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-mt-flash
+
+0.7元
+
+1.95元
+
+qwen-mt-lite
+
+0.6元
+
+1.6元
+
+qwen-mt-turbo
+
+0.7元
+
+1.95元
+
+千问数据挖掘模型
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-doc-turbo
+
+0.6元
+
+1元
+
+无免费额度
+
+千问深入研究模型
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-deep-research
+
+54元
+
+163元
+
+无免费额度
+
+通义晓蜜对话分析模型
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+tongyi-xiaomi-analysis-flash
+
+0.2元
+
+0.4元
+
+各100万Token
+
+有效期:百炼开通后90天内
+
+tongyi-xiaomi-analysis-pro
+
+1.0元
+
+2.7元
+
+文本生成-千问-开源版
+Qwen3.6
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单次请求的输入Token范围
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+非思考模式
+
+思考模式(思维链+回答)
+
+qwen3.6-35b-a3b
+
+0<Token≤256K
+
+1.8元
+
+10.8元
+
+10.8元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen3.6-27b
+
+0<Token≤256K
+
+3元
+
+18元
+
+18元
+
+Qwen3.5
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单次请求的输入Token范围
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+非思考模式
+
+思考模式(思维链+回答)
+
+qwen3.5-397b-a17b
+
+0<Token≤128K
+
+1.2元
+
+7.2元
+
+7.2元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+128K<Token≤256K
+
+3元
+
+18元
+
+18元
+
+qwen3.5-122b-a10b
+
+0<Token≤128K
+
+0.8元
+
+6.4元
+
+6.4元
+
+128K<Token≤256K
+
+2元
+
+16元
+
+16元
+
+qwen3.5-27b
+
+0<Token≤128K
+
+0.6元
+
+4.8元
+
+4.8元
+
+128K<Token≤256K
+
+1.8元
+
+14.4元
+
+14.4元
+
+qwen3.5-35b-a3b
+
+0<Token≤128K
+
+0.4元
+
+3.2元
+
+3.2元
+
+128K<Token≤256K
+
+1.6元
+
+12.8元
+
+12.8元
+
+Qwen3
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+非思考模式
+
+思考模式(思维链+回答)
+
+qwen3-next-80b-a3b-thinking
+
+仅思考模式
+
+1元
+
+-
+
+10元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-next-80b-a3b-instruct
+
+仅非思考模式
+
+1元
+
+4元
+
+-
+
+qwen3-235b-a22b-thinking-2507
+
+仅思考模式
+
+2元
+
+-
+
+20元
+
+qwen3-235b-a22b-instruct-2507
+
+仅非思考模式
+
+2元
+
+8元
+
+-
+
+qwen3-30b-a3b-thinking-2507
+
+仅思考模式
+
+0.75元
+
+-
+
+7.5元
+
+qwen3-30b-a3b-instruct-2507
+
+仅非思考模式
+
+0.75元
+
+3元
+
+-
+
+qwen3-235b-a22b
+
+非思考和思考模式
+
+2元
+
+8元
+
+20元
+
+qwen3-32b
+
+非思考和思考模式
+
+2元
+
+8元
+
+20元
+
+qwen3-30b-a3b
+
+非思考和思考模式
+
+0.75元
+
+3元
+
+7.5元
+
+qwen3-14b
+
+非思考和思考模式
+
+1元
+
+4元
+
+10元
+
+qwen3-8b
+
+非思考和思考模式
+
+0.5元
+
+2元
+
+5元
+
+qwen3-4b
+
+非思考和思考模式
+
+0.3元
+
+1.2元
+
+3元
+
+qwen3-1.7b
+
+非思考和思考模式
+
+0.3元
+
+1.2元
+
+3元
+
+qwen3-0.6b
+
+非思考和思考模式
+
+0.3元
+
+1.2元
+
+3元
+
+QwQ-开源版
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwq-32b
+
+2元
+
+6元
+
+100万Token
+
+有效期:阿里云百炼开通后90天内
+
+QwQ-Preview
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwq-32b-preview
+
+Batch调用半价
+2元
+
+6元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+Qwen2.5
+计费规则:按输入Token和输出Token计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen2.5-14b-instruct-1m
+
+1元
+
+3元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen2.5-7b-instruct-1m
+
+0.5元
+
+1元
+
+qwen2.5-72b-instruct
+
+4元
+
+12元
+
+qwen2.5-32b-instruct
+
+2元
+
+6元
+
+qwen2.5-14b-instruct
+
+1元
+
+3元
+
+qwen2.5-7b-instruct
+
+0.5元
+
+1元
+
+qwen2.5-3b-instruct
+
+0.3元
+
+0.9元
+
+qwen2.5-1.5b-instruct
+
+目前仅供免费体验
+
+免费额度用完后不可调用,推荐使用Qwen3、DeepSeek -阿里云、Kimi-阿里云作为替代模型
+qwen2.5-0.5b-instruct
+
+QVQ
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qvq-72b-preview
+
+12元
+
+36元
+
+10万Token
+
+有效期:阿里云百炼开通后90天内
+
+Qwen-Omni
+计费规则:按输入Token和输出Token计费。不同模态的Token计算规则请参见计费与限流。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+文本
+
+音频
+
+图片/视频
+
+文本
+
+仅纯文本输入
+文本
+
+多模态输入
+文本+音频
+
+仅音频计费
+qwen2.5-omni-7b
+
+0.6元
+
+38元
+
+2元
+
+2.4元
+
+6元
+
+76元
+
+100万Token(不区分模态)
+
+有效期:阿里云百炼开通后90天
+
+Qwen3-Omni-Captioner
+计费规则:按输入Token和输出Token计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen3-omni-30b-a3b-captioner
+
+15.8元
+
+12.7元
+
+100万Token
+
+有效期:阿里云百炼开通后90天内
+
+Qwen-VL
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度(注)
+
+qwen3-vl-235b-a22b-thinking
+
+仅思考模式
+
+2元
+
+20元
+
+各100万 Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-vl-235b-a22b-instruct
+
+仅非思考模式
+
+2元
+
+8元
+
+qwen3-vl-32b-thinking
+
+仅思考模式
+
+2元
+
+20元
+
+qwen3-vl-32b-instruct
+
+仅非思考模式
+
+2元
+
+8元
+
+qwen3-vl-30b-a3b-thinking
+
+仅思考模式
+
+0.75元
+
+7.5元
+
+qwen3-vl-30b-a3b-instruct
+
+仅非思考模式
+
+0.75元
+
+3元
+
+qwen3-vl-8b-thinking
+
+仅思考模式
+
+0.5元
+
+5元
+
+qwen3-vl-8b-instruct
+
+仅非思考模式
+
+0.5元
+
+2元
+
+更多模型
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen2.5-vl-72b-instruct
+
+16元
+
+48元
+
+各100万 Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen2.5-vl-32b-instruct
+
+8元
+
+24元
+
+qwen2.5-vl-7b-instruct
+
+2元
+
+5元
+
+qwen2.5-vl-3b-instruct
+
+1.2元
+
+3.6元
+
+Qwen-Math
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen2.5-math-72b-instruct
+
+4元
+
+12元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen2.5-math-7b-instruct
+
+1元
+
+2元
+
+Qwen-Coder
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球国际欧盟
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen3-coder-next
+
+0<Token≤32K
+
+1元
+
+4元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+32K<Token≤128K
+
+1.5元
+
+6元
+
+128K<Token≤256K
+
+2.5元
+
+10元
+
+qwen3-coder-480b-a35b-instruct
+
+0<Token≤32K
+
+6元
+
+24元
+
+32K<Token≤128K
+
+9元
+
+36元
+
+128K<Token≤200K
+
+15元
+
+60元
+
+qwen3-coder-30b-a3b-instruct
+
+0<Token≤32K
+
+1.5元
+
+6元
+
+32K<Token≤128K
+
+2.25元
+
+9元
+
+128K<Token≤200K
+
+3.75元
+
+15元
+
+qwen2.5-coder-32b-instruct
+
+无阶梯计价
+
+2元
+
+6元
+
+qwen2.5-coder-14b-instruct
+
+无阶梯计价
+
+2元
+
+6元
+
+qwen2.5-coder-7b-instruct
+
+无阶梯计价
+
+1元
+
+2元
+
+文本生成-第三方模型
+DeepSeek
+计费规则:按输入Token和输出Token计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度(注)
+
+deepseek-v4-pro
+
+上下文缓存享有折扣
+12元
+
+24元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+deepseek-v4-flash
+
+上下文缓存享有折扣
+1元
+
+2元
+
+deepseek-v3.2
+
+上下文缓存享有折扣
+2元
+
+3元
+
+deepseek-v3.2-exp
+
+2元
+
+3元
+
+deepseek-v3.1
+
+4元
+
+12元
+
+deepseek-r1
+
+Batch调用半价
+4元
+
+16元
+
+deepseek-r1-0528
+
+4元
+
+16元
+
+deepseek-v3
+
+Batch调用半价
+2元
+
+8元
+
+deepseek-r1-distill-qwen-1.5b
+
+限时免费
+
+deepseek-r1-distill-qwen-7b
+
+0.5元
+
+1元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+deepseek-r1-distill-qwen-14b
+
+1元
+
+3元
+
+deepseek-r1-distill-qwen-32b
+
+2元
+
+6元
+
+deepseek-r1-distill-llama-8b
+
+限时免费
+
+deepseek-r1-distill-llama-70b
+
+目前仅供免费体验
+
+免费额度用完后不可调用,推荐使用深度思考、DeepSeek -阿里云、Kimi-阿里云作为替代模型
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+DeepSeek-硅基流动
+说明
+服务部署范围仅支持中国内地。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度
+
+siliconflow/deepseek-v3.2
+
+2元
+
+3元
+
+无
+
+siliconflow/deepseek-v3.1-terminus
+
+4元
+
+12元
+
+siliconflow/deepseek-r1-0528
+
+4元
+
+16元
+
+siliconflow/deepseek-v3-0324
+
+2元
+
+8元
+
+DeepSeek-快手万擎
+说明
+服务部署范围仅支持中国内地。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链+回答
+免费额度
+
+vanchin/deepseek-v3.2-think
+
+上下文缓存享有折扣
+2元
+
+3元
+
+无
+
+vanchin/deepseek-v3.1-terminus
+
+上下文缓存享有折扣
+4元
+
+12元
+
+vanchin/deepseek-r1
+
+上下文缓存享有折扣
+4元
+
+16元
+
+vanchin/deepseek-v3
+
+上下文缓存享有折扣
+2元
+
+8元
+
+vanchin/deepseek-ocr
+
+0.216元
+
+0.216元
+
+Kimi
+计费规则:按输入Token和输出Token计费。
+
+中国内地全球
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+kimi-k2.6
+
+非思考和思考模式
+
+6.5元
+
+27元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+kimi-k2.5
+
+非思考和思考模式
+
+4元
+
+21元
+
+kimi-k2-thinking
+
+仅思考模式
+
+4元
+
+16元
+
+Moonshot-Kimi-K2-Instruct
+
+非思考模式
+
+4元
+
+16元
+
+Kimi-月之暗面
+说明
+服务部署范围仅支持中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链和回答
+免费额度(注)
+
+kimi/kimi-k2.6
+
+上下文缓存享有折扣
+6.5元
+
+27元
+
+无
+
+kimi/kimi-k2.5
+
+上下文缓存享有折扣
+4元
+
+21元
+
+GLM
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+
+
+模型名称
+
+模式
+
+单次请求的输入Token数
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链和回答
+免费额度(注)
+
+glm-5.1
+
+非思考和思考模式
+
+0<Token≤32K
+
+6元
+
+24元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+32K<Token≤200K
+
+8元
+
+28元
+
+glm-5
+
+非思考和思考模式
+
+0<Token≤32K
+
+4元
+
+18元
+
+32K<Token≤198K
+
+6元
+
+22元
+
+glm-4.7
+
+非思考和思考模式
+
+0<Token≤32K
+
+3元
+
+14元
+
+32K<Token≤166K
+
+4元
+
+16元
+
+glm-4.6
+
+非思考和思考模式
+
+0<Token≤32K
+
+3元
+
+14元
+
+32K<Token≤166K
+
+4元
+
+16元
+
+glm-4.5
+
+非思考和思考模式
+
+0<Token≤32K
+
+3元
+
+14元
+
+32K<Token≤96K
+
+4元
+
+16元
+
+glm-4.5-air
+
+非思考和思考模式
+
+0<Token≤32K
+
+0.8元
+
+6元
+
+32K<Token≤96K
+
+1.2元
+
+8元
+
+GLM-智谱
+说明
+服务部署范围仅支持中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链和回答
+免费额度(注)
+
+ZHIPU/GLM-5.1
+
+非思考和思考模式
+
+8元
+
+28元
+
+无
+
+ZHIPU/GLM-5
+
+非思考和思考模式
+
+6元
+
+22元
+
+无
+
+MiniMax
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链和回答
+免费额度(注)
+
+MiniMax-M2.5
+
+仅思考模式
+
+2.1元
+
+8.4元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+MiniMax-M2.1
+
+仅思考模式
+
+2.1元
+
+8.4元
+
+MiniMax-稀宇科技
+说明
+服务部署范围仅支持中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+
+模型名称
+
+模式
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链和回答
+免费额度(注)
+
+MiniMax/MiniMax-M2.7
+
+上下文缓存享有折扣
+仅思考模式
+
+2.1元
+
+8.4元
+
+无
+
+MiniMax/MiniMax-M2.5
+
+上下文缓存享有折扣
+仅思考模式
+
+2.1元
+
+8.4元
+
+MiniMax/MiniMax-M2.1
+
+上下文缓存享有折扣
+仅思考模式
+
+2.1元
+
+8.4元
+
+MiMo-小米
+说明
+服务部署范围仅支持中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+
+模型名称
+
+输入Token数量
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+思维链和回答
+免费额度(注)
+
+xiaomi/mimo-v2.5-pro
+
+0<Token≤256K
+
+7元
+
+21元
+
+无
+
+256K<Token≤1M
+
+14元
+
+42元
+
+图像生成
+计费规则:输入不计费,输出计费。输出按成功生成的 图像张数 计费。
+
+计费公式:费用 = 图像单价 × 输出的图像张数。
+
+计费说明:
+
+费用与输出图像的分辨率、宽高比无关。
+
+请求失败不产生任何费用,也不消耗免费额度。
+
+计费示例:部分图像生成失败
+
+千问文生图
+仅输出计费,计费规则请参见图像生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+qwen-image-2.0-pro
+
+0.5元/张
+
+各100张
+
+有效期:阿里云百炼开通后90天内
+
+qwen-image-2.0-pro-2026-04-22
+
+0.5元/张
+
+qwen-image-2.0-pro-2026-03-03
+
+0.5元/张
+
+qwen-image-2.0
+
+0.2元/张
+
+qwen-image-2.0-2026-03-03
+
+0.2元/张
+
+qwen-image-max
+
+当前能力等同于qwen-image-max-2025-12-30
+0.5元/张
+
+qwen-image-max-2025-12-30
+
+0.5元/张
+
+qwen-image-plus
+
+当前能力等同于qwen-image
+0.2元/张
+
+qwen-image-plus-2026-01-09
+
+0.2元/张
+
+qwen-image
+
+0.25元/张
+
+千问图像编辑
+仅输出计费,计费规则请参见图像生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+qwen-image-2.0-pro
+
+0.5元/张
+
+各100张
+
+有效期:阿里云百炼开通后90天内
+
+qwen-image-2.0-pro-2026-04-22
+
+0.5元/张
+
+qwen-image-2.0-pro-2026-03-03
+
+0.5元/张
+
+qwen-image-2.0
+
+0.2元/张
+
+qwen-image-2.0-2026-03-03
+
+0.2元/张
+
+qwen-image-edit-max
+
+当前能力等同于qwen-image-edit-max-2026-01-16
+0.5元/张
+
+qwen-image-edit-max-2026-01-16
+
+0.5元/张
+
+qwen-image-edit-plus
+
+当前能力等同于qwen-image-edit-plus-2025-10-30
+0.2元/张
+
+qwen-image-edit-plus-2025-12-15
+
+0.2元/张
+
+qwen-image-edit-plus-2025-10-30
+
+0.2元/张
+
+qwen-image-edit
+
+0.3元/张
+
+千问图像翻译
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+qwen-mt-image
+
+0.003元/张
+
+100张
+
+有效期:阿里云百炼开通后90天内
+
+Z-Image
+仅输出计费,计费规则请参见图像生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+z-image-turbo
+
+关闭提示词改写(prompt_extend=false):0.1元/张
+
+开启提示词改写(prompt_extend=true):0.2元/张
+
+100张
+
+有效期:阿里云百炼开通后90天内
+
+万相文生图
+仅输出计费,计费规则请参见图像生成。
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+0
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.6-t2i
+
+0.20元/张
+
+50张
+
+wan2.5-t2i-preview
+
+0.20元/张
+
+50张
+
+wan2.2-t2i-plus
+
+0.20元/张
+
+100张
+
+wan2.2-t2i-flash
+
+0.14元/张
+
+100张
+
+wanx2.1-t2i-plus
+
+0.20元/张
+
+500张
+
+wanx2.1-t2i-turbo
+
+0.14元/张
+
+500张
+
+wanx2.0-t2i-turbo
+
+0.04元/张
+
+500张
+
+wanx-v1
+
+0.16元/张
+
+500张
+
+万相图像生成与编辑
+仅输出计费,计费规则请参见图像生成。
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.7-image-pro
+
+0.50元/张
+
+50张
+
+wan2.7-image
+
+0.20元/张
+
+50张
+
+wan2.6-image
+
+0.20元/张
+
+50张
+
+万相通用图像编辑
+仅输出计费,计费规则请参见图像生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.5-i2i-preview
+
+0.20元/张
+
+50张
+
+wanx2.1-imageedit
+
+0.14元/张
+
+500张
+
+万相涂鸦作画
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+wanx-sketch-to-image-lite
+
+0.06元/张
+
+500张
+
+有效期:阿里云百炼开通后90天内
+
+万相图像局部重绘
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+wanx-x-painting
+
+目前仅供免费体验。
+
+免费额度用完后不可调用,推荐参考图像编辑-千问或图像编辑-万相2.1获取替代方案。
+500张
+
+有效期:阿里云百炼开通后90天内
+
+人像风格重绘
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+wanx-style-repaint-v1
+
+0.12元/张
+
+500张
+
+有效期:阿里云百炼开通后90天内
+
+图像背景生成
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+wanx-background-generation-v2
+
+0.08元/张
+
+500张
+
+有效期:阿里云百炼开通后90天内
+
+图像画面扩展
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+image-out-painting
+
+0.18元/张
+
+500张
+
+有效期:阿里云百炼开通后90天内
+
+人物实例分割
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+image-instance-segmentation
+
+目前仅供免费体验。
+
+免费额度用完后不可调用。
+500张
+
+有效期:阿里云百炼开通后90天内
+
+图像擦除补全
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+image-erase-completion
+
+目前仅供免费体验。
+
+免费额度用完后不可调用,推荐参考图像编辑-千问或图像编辑-万相2.1获取替代方案。
+500张
+
+有效期:阿里云百炼开通后90天内
+
+虚拟模特
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+wanx-virtualmodel
+
+目前仅供免费体验。
+
+免费额度用完后不可调用,推荐参考图像编辑-千问或图像编辑-万相2.1获取替代方案。
+各500张
+
+有效期:阿里云百炼开通后90天内
+
+virtualmodel-v2
+
+鞋靴模特
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+shoemodel-v1
+
+目前仅供免费体验。
+
+免费额度用完后不可调用。
+500张
+
+有效期:阿里云百炼开通后90天内
+
+创意海报生成
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+wanx-poster-generation-v1
+
+目前仅供免费体验。
+
+免费额度用完后不可调用,推荐参考图像编辑-千问或图像编辑-万相2.1获取替代方案。
+500张
+
+有效期:阿里云百炼开通后90天内
+
+人物写真生成-FaceChain
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+facechain-facedetect:限时免费。
+
+facechain-finetune:按训练次数计费,请求失败不计费。
+
+facechain-generation:输入不计费,输出计费。输出按成功生成的图片张数计费,计费规则请参见图像生成。
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+免费额度(注)
+
+人物图像检测
+
+facechain-facedetect
+
+限时免费
+
+限时免费
+
+人物形象训练
+
+facechain-finetune
+
+2.5元/次
+
+50次
+
+有效期:申请通过后90天内
+
+人物写真生成
+
+facechain-generation
+
+0.18元/张
+
+500张
+
+有效期:申请通过后90天内
+
+创意文字生成-WordArt锦书
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+
+模型服务
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+文字纹理生成
+
+wordart-texture
+
+0.08元/张
+
+500张
+
+有效期:阿里云百炼开通后90天内
+
+文字变形
+
+wordart-semantic
+
+0.24元/张
+
+AI试衣-OutfitAnyone
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+aitryon:输入不计费,输出计费。计费规则请参见图像生成。
+
+aitryon-plus:输入不计费,输出计费。计费规则请参见图像生成。
+
+aitryon-parsing-v1:输入计费,输出不计费。按输入的图像张数计费,请求失败不计费。
+
+aitryon-refiner:输入不计费,输出计费。计费规则请参见图像生成。
+
+
+
+
+
+模型服务
+
+模型名称
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+AI试衣-基础版
+
+aitryon
+
+400张
+
+AI试衣-Plus版
+
+aitryon-plus
+
+400张
+
+AI试衣-图片分割
+
+aitryon-parsing-v1
+
+400张
+
+AI试衣-图片精修
+
+aitryon-refiner
+
+100张
+
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+折扣
+
+阶梯层级
+
+AI试衣-基础版
+
+aitryon
+
+0.20元/张
+
+无
+
+无
+
+AI试衣-Plus版
+
+aitryon-plus
+
+0.50元/张
+
+无
+
+无
+
+AI试衣-图片分割
+
+aitryon-parsing-v1
+
+0.004元/张
+
+无
+
+无
+
+AI试衣-图片精修
+
+aitryon-refiner
+
+0.30元/张
+
+无
+
+生成数量 ≤ 25张
+
+0.275元/张
+
+9.2折
+
+25张 < 生成数量 ≤ 125张
+
+0.25元/张
+
+8.4折
+
+125张 < 生成数量 ≤ 250张
+
+0.225元/张
+
+7.5折
+
+250张 < 生成数量 ≤ 1250张
+
+0.20元/张
+
+6.7折
+
+1250张 < 生成数量 ≤ 2500张
+
+0.175元/张
+
+5.8折
+
+2500张 < 生成数量 ≤ 2.5万张
+
+0.15元/张
+
+5折
+
+生成数量 > 2.5万张
+
+图像生成-第三方模型
+可灵-图像生成
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见图像生成。
+
+
+
+
+模型名称
+
+输出图像分辨率
+
+输出单价
+
+免费额度(注)
+
+kling/kling-v3-image-generation
+
+1K
+
+0.2元/张
+
+无免费额度
+
+2K
+
+0.2元/张
+
+kling/kling-v3-omni-image-generation
+
+1K
+
+0.2元/张
+
+2K
+
+0.2元/张
+
+4K
+
+0.4元/张
+
+音乐生成
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输出音频的秒数计费,输入不计费。
+
+
+
+
+模型名称
+
+输出单价(每秒)
+
+免费额度(注)
+
+fun-music-v1
+
+0.002元
+
+1,000秒
+
+有效期:阿里云百炼开通后90天内
+
+语音合成(文本转语音)
+Qwen-TTS
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+千问3-TTS-Instruct-Flash千问3-TTS-VD千问3-TTS-VC千问3-TTS-Flash千问-TTS
+计费规则:按输入文本的字符数计费,输出不计费。
+
+模型名称
+
+输入单价(每万字符)
+
+输出单价
+
+免费额度(注)
+
+qwen3-tts-instruct-flash
+
+0.8元
+
+不计费
+
+1万字符
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-tts-instruct-flash-2026-01-26
+
+0.8元
+
+不计费
+
+Qwen-TTS-Realtime
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+千问3-TTS-Instruct-Flash-Realtime千问3-TTS-VD-Realtime千问3-TTS-VC-Realtime千问3-TTS-Flash-Realtime千问-TTS-Realtime
+计费规则:按输入文本的字符数计费,输出不计费。
+
+模型名称
+
+输入单价(每万字符)
+
+输出单价
+
+免费额度(注)
+
+qwen3-tts-instruct-flash-realtime
+
+1元
+
+不计费
+
+1万字符
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-tts-instruct-flash-realtime-2026-01-22
+
+1元
+
+不计费
+
+1万字符
+
+有效期:阿里云百炼开通后90天内
+
+Qwen-TTS声音复刻
+计费规则:按新建音色个数计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单价(每个音色)
+
+免费额度(注)
+
+qwen-voice-enrollment
+
+0.01元
+
+1000个音色/账号
+
+Qwen-TTS声音设计
+计费规则:按新建音色个数计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+单价(每个音色)
+
+免费额度(注)
+
+qwen-voice-design
+
+0.2元
+
+10个音色/账号
+
+CosyVoice
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+计费规则:按输入文本的字符数计费,输出不计费。
+
+模型名称
+
+输入单价(每万字符)
+
+免费额度(注)
+
+cosyvoice-v3.5-plus
+
+1.5元
+
+1万字符
+
+有效期:阿里云百炼开通后90天内
+
+cosyvoice-v3.5-flash
+
+0.8元
+
+cosyvoice-v3-plus
+
+2元
+
+cosyvoice-v3-flash
+
+1元
+
+cosyvoice-v2
+
+2元
+
+cosyvoice-v1
+
+2元
+
+Sambert
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入文本的字符数计费,输出不计费。
+
+
+
+
+模型名称
+
+输入单价(每万字符)
+
+免费额度(注)
+
+参见模型列表
+
+1元
+
+每主账号每模型每月3万字符。
+
+MiniMax
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入文本的字符数计费,输出不计费。
+
+复刻音色收取一次性费用,费用在首次使用该音色进行语音合成的时候,与语音合成的费用一同出账。
+
+
+
+
+
+模型名称
+
+语音合成单价(每万字符)
+
+复刻一个音色
+
+免费额度(注)
+
+MiniMax/speech-2.8-hd
+
+3.5元
+
+9.9元
+
+(在首次使用复刻出来的音色进行语音合成的时候收取)
+
+无
+
+MiniMax/speech-02-hd
+
+3.5元
+
+MiniMax/speech-2.8-turbo
+
+2元
+
+MiniMax/speech-02-turbo
+
+2元
+
+语音识别(语音转文本)与翻译(语音转成指定语种的文本)
+千问-LiveTranslate-Flash-Realtime
+计费规则:按输入Token和输出Token计费。不同模态的Token计算规则请参见计费说明。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+输入:音频
+
+输入:图片
+
+输出:文本
+
+输出:音频
+
+qwen3-livetranslate-flash-realtime
+
+64元
+
+8元
+
+64元
+
+240元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-livetranslate-flash-realtime-2025-09-22
+
+64元
+
+8元
+
+64元
+
+240元
+
+千问ASR
+中国内地国际美国
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+计费规则:按输入音频的秒数计费,输出不计费。
+
+模型名称
+
+输入单价
+
+输出单价
+
+免费额度(注)
+
+qwen3-asr-flash-filetrans
+
+0.00022元/秒
+
+不计费
+
+36,000秒(10小时)
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-asr-flash-filetrans-2025-11-17
+
+qwen3-asr-flash
+
+当前能力等同于qwen3-asr-flash-2025-09-08
+qwen3-asr-flash-2026-02-10
+
+qwen3-asr-flash-2025-09-08
+
+千问ASR-Realtime
+计费规则:按输入音频的秒数计费,输出不计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+qwen3-asr-flash-realtime
+
+0.00033元/秒
+
+36,000秒(10小时)
+
+有效期:阿里云百炼开通后90天内
+
+qwen3-asr-flash-realtime-2026-02-10
+
+qwen3-asr-flash-realtime-2025-10-27
+
+Gummy语音识别/翻译
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入音频的秒数计费,输出不计费。
+
+
+
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+gummy-realtime-v1
+
+0.00015元/秒
+
+36,000秒(10小时)
+
+2025年1月17日0点前开通百炼:有效期至2025年7月15日
+
+2025年1月17日0点起至9月8日11点前开通百炼:自开通日起90天有效
+
+2025年9月8日11点后开通百炼:自开通日起90天有效
+
+gummy-chat-v1
+
+Fun-ASR
+录音文件识别
+计费规则:按输入音频的秒数计费,输出不计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+fun-asr
+
+0.00022元/秒
+
+36,000秒(10小时)
+
+有效期:阿里云百炼开通后90天
+
+fun-asr-2025-11-07
+
+fun-asr-2025-08-25
+
+fun-asr-mtl
+
+fun-asr-mtl-2025-08-25
+
+实时语音识别
+计费规则:按输入音频的秒数计费,输出不计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+fun-asr-realtime
+
+0.00033元/秒
+
+36,000秒(10小时)
+
+有效期:阿里云百炼开通后90天
+
+fun-asr-realtime-2026-02-28
+
+fun-asr-realtime-2025-11-07
+
+fun-asr-realtime-2025-09-15
+
+fun-asr-flash-8k-realtime
+
+0.00022元/秒
+
+fun-asr-flash-8k-realtime-2026-01-28
+
+Paraformer
+录音文件识别
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入音频的秒数计费,输出不计费。
+
+
+
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+paraformer-v2
+
+0.00008元/秒
+
+36,000秒(10小时)
+
+每月1日0点自动发放
+
+有效期1个月
+
+paraformer-8k-v2
+
+paraformer-v1
+
+paraformer-8k-v1
+
+paraformer-mtl-v1
+
+实时语音识别
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入音频的秒数计费,输出不计费。
+
+
+
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+paraformer-realtime-v2
+
+0.00024元/秒
+
+36,000秒(10小时)
+
+每月1日0点自动发放
+
+有效期1个月
+
+paraformer-realtime-v1
+
+paraformer-realtime-8k-v2
+
+paraformer-realtime-8k-v1
+
+SenseVoice
+录音文件识别
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入音频的秒数计费,输出不计费。
+
+
+
+
+模型名称
+
+输入单价
+
+免费额度(注)
+
+sensevoice-v1
+
+0.0007元/秒
+
+36,000秒(10小时)
+
+每月1日0点自动发放
+
+有效期1个月
+
+视频生成
+计费规则:输入不计费,输出计费。输出按成功生成的 视频秒数 计费。
+
+计费公式:费用 = 视频单价 × 输出的视频时长(单位:秒)。
+
+计费说明:
+
+部分模型按输出视频分辨率定价。不同分辨率(480P/720P/1080P)的计费价格有差异。
+
+部分模型按输出视频模式定价。不同视频模式(标准版/专业版)的计费价格有差异。
+
+部分模型按输出视频画幅定价。不同视频画幅(1:1/3:4)的计费价格有差异。
+
+部分模型采用统一定价,与分辨率、模式或画幅无关。
+
+请求失败不产生任何费用,也不会消耗免费额度。
+
+HappyHorse-文生视频
+仅输出计费,计费规则请参见视频生成。
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+happyhorse-1.0-t2v
+
+720P
+
+0.9元/秒
+
+10秒
+
+1080P
+
+1.6元/秒
+
+HappyHorse-图生视频-基于首帧
+仅输出计费,计费规则请参见视频生成。
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+happyhorse-1.0-i2v
+
+720P
+
+0.9元/秒
+
+10秒
+
+1080P
+
+1.6元/秒
+
+HappyHorse-参考生视频
+仅输出计费,计费规则请参见视频生成。
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+happyhorse-1.0-r2v
+
+720P
+
+0.9元/秒
+
+10秒
+
+1080P
+
+1.6元/秒
+
+HappyHorse-视频编辑
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+计费规则:输入视频和输出视频均计费,按视频秒数计费,失败不计费也不占用免费额度。
+
+模型名称
+
+输出视频分辨率
+
+输入和输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+happyhorse-1.0-video-edit
+
+720P
+
+0.9元/秒
+
+10秒
+
+1080P
+
+1.6元/秒
+
+万相-文生视频
+仅输出计费,计费规则请参见视频生成。
+中国内地全球国际美国
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.7-t2v-2026-04-25
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+wan2.7-t2v
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+wan2.6-t2v
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+wan2.5-t2v-preview
+
+480P
+
+0.3元/秒
+
+50秒
+
+720P
+
+0.6元/秒
+
+1080P
+
+1元/秒
+
+wan2.2-t2v-plus
+
+480P
+
+0.14元/秒
+
+50秒
+
+1080P
+
+0.70元/秒
+
+wanx2.1-t2v-turbo
+
+480P
+
+0.24元/秒
+
+200秒
+
+720P
+
+0.24元/秒
+
+wanx2.1-t2v-plus
+
+720P
+
+0.70元/秒
+
+200秒
+
+万相-图生视频
+仅输出计费,计费规则请参见视频生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.7-i2v-2026-04-25
+
+有声视频
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+wan2.7-i2v
+
+有声视频
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+万相-图生视频-基于首帧
+仅输出计费,计费规则请参见视频生成。
+中国内地全球国际美国
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.6-i2v-flash
+
+有声视频
+
+audio=true
+
+720P
+
+0.3元/秒
+
+50秒
+
+1080P
+
+0.5元/秒
+
+无声视频
+
+audio=false
+
+720P
+
+0.15元/秒
+
+1080P
+
+0.25元/秒
+
+wan2.6-i2v
+
+有声视频
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+wan2.5-i2v-preview
+
+有声视频
+
+480P
+
+0.3元/秒
+
+50秒
+
+720P
+
+0.6元/秒
+
+1080P
+
+1元/秒
+
+wan2.2-i2v-flash
+
+无声视频
+
+480P
+
+0.10元/秒
+
+50秒
+
+720P
+
+0.20元/秒
+
+1080P
+
+0.48元/秒
+
+wan2.2-i2v-plus
+
+无声视频
+
+480P
+
+0.14元/秒
+
+50秒
+
+1080P
+
+0.70元/秒
+
+wanx2.1-i2v-turbo
+
+无声视频
+
+480P
+
+0.24元/秒
+
+200秒
+
+720P
+
+0.24元/秒
+
+wanx2.1-i2v-plus
+
+无声视频
+
+720P
+
+0.70元/秒
+
+200秒
+
+万相-图生视频-基于首尾帧
+仅输出计费,计费规则请参见视频生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.2-kf2v-flash
+
+480P
+
+0.10元/秒
+
+50秒
+
+720P
+
+0.20元/秒
+
+1080P
+
+0.48元/秒
+
+wanx2.1-kf2v-plus
+
+720P
+
+0.70元/秒
+
+200秒
+
+万相-参考生视频
+计费规则:输入视频和输出视频均计费,按视频秒数计费,失败不计费也不占用免费额度。
+
+计费公式:计费时长 = 输入视频时长(上限 5 秒)+ 输出视频时长。
+
+输入视频的计费时长不超过 5 秒,计算规则参见计费与限流。
+
+输出视频的计费时长为成功生成的视频秒数。
+
+中国内地全球国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输入和输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.7-r2v
+
+有声视频
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+wan2.6-r2v-flash
+
+有声视频
+
+audio=true
+
+720P
+
+0.3元/秒
+
+50秒
+
+1080P
+
+0.5元/秒
+
+无声视频
+
+audio=false
+
+720P
+
+0.15元/秒
+
+1080P
+
+0.25元/秒
+
+wan2.6-r2v
+
+有声视频
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+万相-视频编辑
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+计费规则:输入视频和输出视频均计费,按视频秒数计费,失败不计费也不占用免费额度。
+
+模型名称
+
+输出视频分辨率
+
+输入和输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wan2.7-videoedit
+
+720P
+
+0.6元/秒
+
+50秒
+
+1080P
+
+1元/秒
+
+计费规则:输入不计费,输出视频计费,按视频秒数计费,失败不计费也不占用免费额度。
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+wanx2.1-vace-plus
+
+720P
+
+0.70元/秒
+
+50秒
+
+万相-数字人
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+wan2.2-s2v-detect:输入计费,输出不计费。输入按检测的图像张数计费,只要请求成功(无论检测结果通过与否),每张输入图像均计费一次。
+
+wan2.2-s2v:输入不计费,输出计费。输出按成功生成的视频秒数计费,计费规则请参见视频生成。
+
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+图像检测
+
+wan2.2-s2v-detect
+
+输入图像:0.004元/张
+
+200张
+
+视频生成
+
+wan2.2-s2v
+
+输出视频:
+
+480P:0.5元/秒
+
+720P:0.9元/秒
+
+100秒
+
+万相-图生动作
+仅输出计费,计费规则请参见视频生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频模式
+
+输出单价
+
+免费额度(注)
+
+wan2.2-animate-move
+
+标准模式wan-std
+
+0.4元/秒
+
+50秒
+
+有效期:阿里云百炼开通后90天内
+
+专业模式wan-pro
+
+0.6元/秒
+
+万相-视频换人
+仅输出计费,计费规则请参见视频生成。
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输出视频模式
+
+输出单价
+
+免费额度(注)
+
+wan2.2-animate-mix
+
+标准模式wan-std
+
+0.6元/秒
+
+50秒
+
+有效期:阿里云百炼开通后90天内
+
+专业模式wan-pro
+
+0.9元/秒
+
+舞动人像AnimateAnyone
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+animate-anyone-detect-gen2:输入计费,输出不计费。输入按检测的图像张数计费,只要请求成功(无论检测结果通过与否),每张输入图像均计费一次。
+
+animate-anyone-template-gen2:输入不计费,输出计费。输出按成功生成的视频秒数计费,计费规则请参见视频生成。
+
+animate-anyone-gen2:输入不计费,输出计费。输出按成功生成的视频秒数计费,计费规则请参见视频生成。
+
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+图像检测
+
+animate-anyone-detect-gen2
+
+输入图像:0.004元/张
+
+200张
+
+动作模板生成
+
+animate-anyone-template-gen2
+
+输出视频:0.08元/秒
+
+1800秒(30分钟)
+
+视频生成
+
+animate-anyone-gen2
+
+输出视频:0.08元/秒
+
+1800秒(30分钟)
+
+悦动人像EMO
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+emo-detect-v1:输入计费,输出不计费。输入按检测的图像张数计费,只要请求成功(无论检测结果通过与否),每张输入图像均计费一次。
+
+emo-v1:输入不计费,输出计费。输出按成功生成的视频秒数计费,计费规则请参见视频生成。
+
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+图像检测
+
+emo-detect-v1
+
+输入图像:0.004元/张
+
+200张
+
+视频生成
+
+emo-v1
+
+输出视频:
+
+1:1画幅视频:0.08元/秒
+
+3:4画幅视频:0.16元/秒
+
+1800秒(30分钟)
+
+灵动人像LivePortrait
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+liveportrait-detect:输入计费,输出不计费。输入按检测的图像张数计费,只要请求成功(无论检测结果通过与否),每张输入图像均计费一次。
+
+liveportrait:输入不计费,输出计费。输出按成功生成的视频秒数计费,计费规则请参见视频生成。
+
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+图像检测
+
+liveportrait-detect
+
+输入图像:0.004元/张
+
+200张
+
+视频生成
+
+liveportrait
+
+输出视频:0.02元/秒
+
+1800秒(30分钟)
+
+表情包Emoji
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+emoji-detect-v1:输入计费,输出不计费。输入按检测的图像张数计费,只要请求成功(无论检测结果通过与否),每张输入图像均计费一次。
+
+emoji-v1:输入不计费,输出计费。输出按成功生成的视频秒数计费,计费规则请参见视频生成。
+
+
+
+
+
+
+模型服务
+
+模型名称
+
+单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+图像检测
+
+emoji-detect-v1
+
+输入图像:0.004元/张
+
+200张
+
+视频生成
+
+emoji-v1
+
+输出视频:0.08元/秒
+
+1800秒(30分钟)
+
+声动人像VideoRetalk
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+模型名称
+
+输出单价
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+videoretalk
+
+0.08元/秒
+
+1800秒(30分钟)
+
+视频风格重绘
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+video-style-transform
+
+540P
+
+0.2元/秒
+
+600秒
+
+有效期:阿里云百炼开通后90天内
+
+720P
+
+0.5元/秒
+
+视频生成-第三方模型
+爱诗-文生视频
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+pixverse/pixverse-c1-t2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.24元/秒
+
+无免费额度
+
+540P
+
+0.3元/秒
+
+720P
+
+0.39元/秒
+
+1080P
+
+0.71元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.18元/秒
+
+540P
+
+0.24元/秒
+
+720P
+
+0.3元/秒
+
+1080P
+
+0.56元/秒
+
+pixverse/pixverse-v6-t2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.21元/秒
+
+540P
+
+0.27元/秒
+
+720P
+
+0.36元/秒
+
+1080P
+
+0.68元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.15元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.53元/秒
+
+pixverse/pixverse-v5.6-t2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.47元/秒
+
+540P
+
+0.47元/秒
+
+720P
+
+0.53元/秒
+
+1080P
+
+0.7元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.21元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.44元/秒
+
+爱诗-图生视频-基于首帧
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+pixverse/pixverse-c1-it2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.24元/秒
+
+无免费额度
+
+540P
+
+0.3元/秒
+
+720P
+
+0.39元/秒
+
+1080P
+
+0.71元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.18元/秒
+
+540P
+
+0.24元/秒
+
+720P
+
+0.3元/秒
+
+1080P
+
+0.56元/秒
+
+pixverse/pixverse-v6-it2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.21元/秒
+
+540P
+
+0.27元/秒
+
+720P
+
+0.36元/秒
+
+1080P
+
+0.68元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.15元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.53元/秒
+
+pixverse/pixverse-v5.6-it2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.47元/秒
+
+540P
+
+0.47元/秒
+
+720P
+
+0.53元/秒
+
+1080P
+
+0.7元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.21元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.44元/秒
+
+爱诗-图生视频-基于首尾帧
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+pixverse/pixverse-c1-kf2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.24元/秒
+
+无免费额度
+
+540P
+
+0.3元/秒
+
+720P
+
+0.39元/秒
+
+1080P
+
+0.71元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.18元/秒
+
+540P
+
+0.24元/秒
+
+720P
+
+0.3元/秒
+
+1080P
+
+0.56元/秒
+
+pixverse/pixverse-v6-kf2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.21元/秒
+
+540P
+
+0.27元/秒
+
+720P
+
+0.36元/秒
+
+1080P
+
+0.68元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.15元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.53元/秒
+
+pixverse/pixverse-v5.6-kf2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.47元/秒
+
+540P
+
+0.47元/秒
+
+720P
+
+0.53元/秒
+
+1080P
+
+0.7元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.21元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.44元/秒
+
+爱诗-参考生视频
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+pixverse/pixverse-c1-r2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.24元/秒
+
+无免费额度
+
+540P
+
+0.3元/秒
+
+720P
+
+0.39元/秒
+
+1080P
+
+0.71元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.18元/秒
+
+540P
+
+0.24元/秒
+
+720P
+
+0.3元/秒
+
+1080P
+
+0.56元/秒
+
+pixverse/pixverse-v5.6-r2v
+
+有声视频
+
+audio=true
+
+360P
+
+0.47元/秒
+
+540P
+
+0.47元/秒
+
+720P
+
+0.53元/秒
+
+1080P
+
+0.7元/秒
+
+无声视频
+
+audio=false
+
+360P
+
+0.21元/秒
+
+540P
+
+0.21元/秒
+
+720P
+
+0.27元/秒
+
+1080P
+
+0.44元/秒
+
+可灵-视频生成
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+
+模型名称
+
+输出视频类型
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+kling/kling-v3-video-generation
+
+无声视频
+
+720P
+
+0.6元/秒
+
+无免费额度
+
+1080P
+
+0.8元/秒
+
+有声视频
+
+720P
+
+0.9元/秒
+
+1080P
+
+1.2元/秒
+
+kling/kling-v3-omni-video-generation
+
+无声视频(无参考视频)
+
+720P
+
+0.6元/秒
+
+1080P
+
+0.8元/秒
+
+无声视频(有参考视频)
+
+720P
+
+0.9元/秒
+
+1080P
+
+1.2元/秒
+
+有声视频(无参考视频)
+
+720P
+
+0.9元/秒
+
+1080P
+
+1.2元/秒
+
+Vidu-文生视频
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+vidu/viduq3-pro_text2video
+
+540P
+
+0.3125元/秒
+
+无免费额度
+
+720P
+
+0.78125元/秒
+
+1080P
+
+0.9375元/秒
+
+vidu/viduq3-turbo_text2video
+
+540P
+
+0.25元/秒
+
+720P
+
+0.375元/秒
+
+1080P
+
+0.4375元/秒
+
+vidu/viduq2_text2video
+
+540P
+
+0.1125元/秒
+
+720P
+
+0.21875元/秒
+
+1080P
+
+0.375元/秒
+
+Vidu-图生视频-基于首帧
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+vidu/viduq3-pro_img2video
+
+540P
+
+0.3125元/秒
+
+无免费额度
+
+720P
+
+0.78125元/秒
+
+1080P
+
+0.9375元/秒
+
+vidu/viduq3-turbo_img2video
+
+540P
+
+0.25元/秒
+
+720P
+
+0.375元/秒
+
+1080P
+
+0.4375元/秒
+
+vidu/viduq2-pro_img2video
+
+540P
+
+0.15625元/秒
+
+720P
+
+0.34375元/秒
+
+1080P
+
+0.71875元/秒
+
+vidu/viduq2-turbo_img2video
+
+540P
+
+0.0875元/秒
+
+720P
+
+0.25元/秒
+
+1080P
+
+0.46875元/秒
+
+vidu/viduq2-pro-fast_img2video
+
+720P
+
+0.1元/秒
+
+1080P
+
+0.2元/秒
+
+Vidu-图生视频-基于首尾帧
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+vidu/viduq3-pro_start-end2video
+
+540P
+
+0.3125元/秒
+
+无免费额度
+
+720P
+
+0.78125元/秒
+
+1080P
+
+0.9375元/秒
+
+vidu/viduq3-turbo_start-end2video
+
+540P
+
+0.25元/秒
+
+720P
+
+0.375元/秒
+
+1080P
+
+0.4375元/秒
+
+vidu/viduq2-pro_start-end2video
+
+540P
+
+0.15625元/秒
+
+720P
+
+0.34375元/秒
+
+1080P
+
+0.71875元/秒
+
+vidu/viduq2-turbo_start-end2video
+
+540P
+
+0.0875元/秒
+
+720P
+
+0.25元/秒
+
+1080P
+
+0.46875元/秒
+
+Vidu-参考生视频
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+仅输出计费,计费规则请参见视频生成。
+
+
+
+
+模型名称
+
+输出视频分辨率
+
+输出单价
+
+免费额度(注)
+
+vidu/viduq3-mix_reference2video
+
+720P
+
+0.78125元/秒
+
+无免费额度
+
+1080P
+
+0.9375元/秒
+
+vidu/viduq3_reference2video
+
+540P
+
+0.3125元/秒
+
+720P
+
+0.625元/秒
+
+1080P
+
+0.78125元/秒
+
+vidu/viduq3-turbo_reference2video
+
+540P
+
+0.15625元/秒
+
+720P
+
+0.3125元/秒
+
+1080P
+
+0.40625元/秒
+
+vidu/viduq2-pro_reference2video
+
+540P
+
+0.25元/秒
+
+720P
+
+0.3125元/秒
+
+1080P
+
+0.78125元/秒
+
+vidu/viduq2_reference2video
+
+540P
+
+0.21875元/秒
+
+720P
+
+0.28125元/秒
+
+1080P
+
+0.71875元/秒
+
+3D模型生成-第三方模型
+Tripo-3D模型生成
+
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:输入不计费,输出按次数计费。
+
+
+
+
+
+模型名称
+
+3D任务类型
+
+输出规格
+
+输出单价
+
+Tripo/Tripo-H3.1
+
+文生3D
+
+标准版+无贴图
+
+0.7元/次
+
+标准版+带标清贴图
+
+1.4元/次
+
+标准版+带高清贴图
+
+2.1元/次
+
+超清版+无贴图
+
+2.1元/次
+
+超清版+带标清贴图
+
+2.8元/次
+
+超清版+带高清贴图
+
+3.5元/次
+
+单图生3D/多图生3D
+
+标准版+无贴图
+
+1.4元/次
+
+标准版+带标清贴图
+
+2.1元/次
+
+标准版+带高清贴图
+
+2.8元/次
+
+超清版+无贴图
+
+2.8元/次
+
+超清版+带标清贴图
+
+3.5元/次
+
+超清版+带高清贴图
+
+4.2元/次
+
+Tripo/Tripo-P1.0
+
+文生3D
+
+无贴图
+
+2.1元/次
+
+带标清贴图
+
+2.8元/次
+
+带高清贴图
+
+3.5元/次
+
+单图生3D/多图生3D
+
+无贴图
+
+2.8元/次
+
+带标清贴图
+
+3.5元/次
+
+带高清贴图
+
+4.2元/次
+
+文本向量
+计费规则:按输入Token计费,输出不计费。
+
+影响计费的因素:若模型支持Batch调用,其输入和输出Token单价均按实时推理价格的50%计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+免费额度(注)
+
+有效期:阿里云百炼开通后90天内
+
+text-embedding-v4
+
+Batch调用半价
+0.5元
+
+100万Token
+
+text-embedding-v3
+
+Batch调用半价
+0.5元
+
+50万Token
+
+text-embedding-v2
+
+Batch调用半价
+0.7元
+
+50万Token
+
+text-embedding-v1
+
+Batch调用半价
+0.7元
+
+50万Token
+
+text-embedding-async-v2
+
+0.7元
+
+2000万Token
+
+text-embedding-async-v1
+
+0.7元
+
+2000万Token
+
+多模态向量
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token计费,输出不计费。
+
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+免费额度(注)
+
+文本
+
+图片/视频
+
+qwen3-vl-embedding
+
+0.7元
+
+1.8元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen2.5-vl-embedding
+
+tongyi-embedding-vision-plus
+
+0.5元
+
+0.5元
+
+tongyi-embedding-vision-flash
+
+0.15元
+
+0.15元
+
+multimodal-embedding-v1
+
+0.7元
+
+0.9元
+
+文本排序
+文本排序模型
+计费规则:按输入Token计费,输出不计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+免费额度(注)
+
+qwen3-rerank
+
+0.5元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+gte-rerank-v2
+
+0.8元
+
+行业模型
+通义法睿
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+farui-plus
+
+20元
+
+20元
+
+无免费额度
+
+意图理解
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+tongyi-intent-detect-v3
+
+0.4元
+
+1元
+
+100万Token
+
+有效期:阿里云百炼开通后90天内
+
+角色扮演
+计费规则:按输入Token和输出Token计费。
+
+中国内地国际
+服务部署范围为中国内地时,模型推理计算资源仅限于中国内地;静态数据存储于您所选的地域。该部署范围支持的地域:华北2(北京)。
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+qwen-plus-character
+
+Session Cache享有折扣
+0.8元
+
+2元
+
+各100万Token
+
+有效期:阿里云百炼开通后90天内
+
+qwen-flash-character
+
+Session Cache享有折扣
+0.25元
+
+1.5元
+
+qwen-flash-character-2026-02-26
+
+Session Cache享有折扣
+0.18元
+
+1.5元
+
+界面交互
+说明
+服务部署范围仅支持中国内地。数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
+
+计费规则:按输入Token和输出Token计费。
+
+
+
+
+
+模型名称
+
+输入单价(每百万Token)
+
+输出单价(每百万Token)
+
+免费额度(注)
+
+gui-plus
+
+1.5元
+
+4.5元
+
+100万Token
+
+有效期:阿里云百炼开通后90天内
+
+gui-plus-2026-02-26
+