|
328 | 328 | </el-select> |
329 | 329 | <div style="font-size:11px;color:#909399;margin-top:4px">技能在 系统设置 → Skill 管理 中维护;执行时按「技能名 + 内容」拼入系统提示词。</div> |
330 | 330 | </div> |
| 331 | + <div class="prop-item"> |
| 332 | + <label>模型参数</label> |
| 333 | + <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px"> |
| 334 | + <span style="width:64px;font-size:12px;color:#666;flex-shrink:0">深度思考</span> |
| 335 | + <el-switch v-model="selectedNode.aiConfig.enableThinking" size="small" /> |
| 336 | + <span style="font-size:11px;color:#909399">推理模型(deepseek-reasoner / Qwen 思考模式)生效</span> |
| 337 | + </div> |
| 338 | + <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px"> |
| 339 | + <span style="width:64px;font-size:12px;color:#666;flex-shrink:0">温度</span> |
| 340 | + <el-slider v-model="aiTempModel" size="small" style="flex:1" :min="0" :max="2" :step="0.1" :format-tooltip="aiTempFormat" /> |
| 341 | + <span style="width:36px;font-size:12px;color:#666;text-align:right;flex-shrink:0">{{ aiTempModel.toFixed(1) }}</span> |
| 342 | + </div> |
| 343 | + <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px"> |
| 344 | + <span style="width:64px;font-size:12px;color:#666;flex-shrink:0">最大输出</span> |
| 345 | + <el-input-number v-model="aiMaxTokensModel" size="small" style="flex:1" :min="0" :step="100" controls-position="right" /> |
| 346 | + <span style="font-size:11px;color:#909399;flex-shrink:0">0=不限制</span> |
| 347 | + </div> |
| 348 | + <div style="display:flex;align-items:center;gap:8px"> |
| 349 | + <span style="width:64px;font-size:12px;color:#666;flex-shrink:0">随机种子</span> |
| 350 | + <el-input-number v-model="aiSeedModel" size="small" style="flex:1" :min="0" :step="1" controls-position="right" /> |
| 351 | + <span style="font-size:11px;color:#909399;flex-shrink:0">0=随机</span> |
| 352 | + </div> |
| 353 | + </div> |
331 | 354 | <div class="prop-item"> |
332 | 355 | <label>输出目标</label> |
333 | 356 | <div style="display:flex;gap:4px"> |
@@ -1980,6 +2003,21 @@ const skillIdsModel = computed({ |
1980 | 2003 | } |
1981 | 2004 | }) |
1982 | 2005 |
|
| 2006 | +// AI 节点模型参数:温度(默认 0.7)/ 最大输出字数(0=不限)/ 随机种子(0=随机) |
| 2007 | +const aiTempModel = computed<number>({ |
| 2008 | + get: () => selectedNode.value?.aiConfig?.temperature ?? 0.7, |
| 2009 | + set: (v: number) => { if (selectedNode.value?.aiConfig) selectedNode.value.aiConfig.temperature = v } |
| 2010 | +}) |
| 2011 | +const aiMaxTokensModel = computed<number>({ |
| 2012 | + get: () => selectedNode.value?.aiConfig?.maxTokens || 0, |
| 2013 | + set: (v: number) => { if (selectedNode.value?.aiConfig) selectedNode.value.aiConfig.maxTokens = v > 0 ? v : null } |
| 2014 | +}) |
| 2015 | +const aiSeedModel = computed<number>({ |
| 2016 | + get: () => selectedNode.value?.aiConfig?.seed || 0, |
| 2017 | + set: (v: number) => { if (selectedNode.value?.aiConfig) selectedNode.value.aiConfig.seed = v > 0 ? v : null } |
| 2018 | +}) |
| 2019 | +function aiTempFormat(v: number) { return v.toFixed(1) } |
| 2020 | +
|
1983 | 2021 | // 按所选供应商的"支持的能力"过滤技能列表(供应商配置了 skills 时只显示其支持的) |
1984 | 2022 | const aiNodeSkillOptions = computed(() => { |
1985 | 2023 | const provider = aiProviders.value.find((p: any) => p.id === (selectedNode.value?.aiConfig?.providerId || 0)) |
@@ -2211,6 +2249,11 @@ env_delay_ms = env_retry_count * 1000 + 500` }, |
2211 | 2249 | 输入变量: 作为用户消息发送给模型(可选流程入参/中间变量/出参) |
2212 | 2250 | 图片输入: 多选图片变量(data URL),配置后走视觉模型识别(多模态) |
2213 | 2251 | 系统提示词: 人设与任务说明(如"你是文案专家,输出简洁有力的文案") |
| 2252 | +模型参数: |
| 2253 | + 深度思考: 开启后发送 enable_thinking 参数(推理模型如 deepseek-reasoner / Qwen 思考模式生效) |
| 2254 | + 温度: 0-2 随机性(越大越发散),默认 0.7 |
| 2255 | + 最大输出: 最大输出字数(0=不限制) |
| 2256 | + 随机种子: 固定后同输入输出更稳定(0=随机) |
2214 | 2257 | 输出目标: 变量 / 出参 / 入参 + 对应参数选择(模型回复写入)` }, |
2215 | 2258 | { title: '三、使用 demo', code: `// 场景:流程中生成商品推荐文案 |
2216 | 2259 | 前置 ASSIGN 节点: env_product_name = "智能手表" |
@@ -3327,7 +3370,7 @@ function addNode(type: string) { |
3327 | 3370 | targetType: 'VARIABLE', targetCode: '', template: '' |
3328 | 3371 | } |
3329 | 3372 | if (type === 'AI') bNode.aiConfig = { |
3330 | | - input: '', systemPrompt: '', output: '' |
| 3373 | + input: '', systemPrompt: '', output: '', enableThinking: false, temperature: 0.7 |
3331 | 3374 | } |
3332 | 3375 | if (type === 'FILE_PARSE') bNode.fileParseConfig = { |
3333 | 3376 | input: '', fileType: 'auto', output: '' |
|
0 commit comments