feat: add bailian-advisor-recommend skill

This commit is contained in:
故璃
2026-05-29 14:29:16 +08:00
parent 81a4876338
commit c82efc8a17
5 changed files with 296 additions and 0 deletions
+109
View File
@@ -0,0 +1,109 @@
---
name: bailian-advisor-recommend
description: >-
阿里云百炼模型推荐。用户描述 AI 场景或功能需求时激活,无需明确说"推荐模型"。
触发词:做一个XX、实现XX功能、用什么模型、图片生成、语音合成、视频生成、
图像理解、RAG、Agent、翻译、摘要等。依赖 bailian-docs-llm-wiki skill。
compatibility: 需要已安装 bailian-docs-llm-wiki skill(提供 models/ 数据目录)
metadata:
author: gujieye
version: "1.0"
---
# 百炼模型推荐
从阿里云百炼平台模型库中,根据用户场景推荐最合适的模型并提供调用示例代码。
## 前置检查
执行推荐前确认依赖的 `bailian-docs-llm-wiki` skill 已安装且数据可用。
**检测逻辑:**
1. 检查 `bailian-docs-llm-wiki` skill 是否已安装(通过查找已安装 skill 目录中是否存在 `bailian-docs-llm-wiki/models/models.jsonl`)
2. 如果未安装,执行安装:`npx skills add modelstudioai/skills --skill bailian-docs-llm-wiki -y`
安装失败则告知用户并中止。**禁止在没有数据的情况下凭记忆推荐模型。**
## 适用场景
**显式选型:**
- "推荐一个模型"、"选哪个模型"、"用什么模型好"
- "帮我对比一下XX和XX模型"
**隐式选型(用户描述想做的事,隐含需要选模型):**
- "我想做一个XX"(客服机器人、翻译工具、代码助手...)
- "帮我实现XX功能"(图片生成、语音合成、文本摘要...)
- "怎么用 AI 来做XX"、"大模型能做XX吗"
- "XX场景有什么方案"、"我想接入XX能力"
**技术选型:**
- "XX和XX哪个更适合做YY"
- "低成本/高并发/高精度 场景怎么选"
**不适用:**
- 用户已确定模型,只问怎么调用 → 直接给调用代码
- 纯粹查询模型参数/价格 → 使用 bailian-docs-llm-wiki skill
## 推荐流程
### 第一步:理解需求(Agent 直接完成,不输出给用户)
从用户描述中快速提取结构化需求信息。JSON 结构定义见 [references/requirement-schema.md](references/requirement-schema.md),推断规则见 [references/capability-codes.md](references/capability-codes.md)。
**要快:** 简单字段映射,不做复杂推理。如果需求不清晰,直接追问具体场景,不输出中间分析。
### 第二步:筛选候选
从 `models/models.jsonl` 中筛选匹配的模型(10~50 个):
1. 去除历史快照版本(如 `model-2025-04-28`),只保留主版本
2. 按模态过滤(输入/输出模态必须兼容)
3. 按能力、特性、上下文窗口、质量定位评分排序
4. 同一家族最多保留少量模型,避免同质化
5. 候选不足时放宽过滤条件
数据源字段说明见 [references/data-source.md](references/data-source.md)。
### 第三步:精选推荐
从候选列表中选出 3 个推荐:
| 位置 | 策略 |
| --- | --- |
| 推荐 #1(最佳推荐) | 最符合用户预算和质量偏好的最佳模型 |
| 推荐 #2(次优选择) | 另一个档次的模型,说明与 #1 的 tradeoff |
| 推荐 #3(备选参考) | 不同视角的选择,说明场景差异 |
**排序逻辑:**
- 用户要省钱 → #1 必须是性价比最高的,不是旗舰
- 用户要最好 → #1 必须是能力最强的旗舰
- 用户无倾向 → #1 选综合匹配度最高的
- 推荐最适合场景的,不是最强的;偏好从用户表达中推断,不预设倾向
**约束:**
- 理由必须关联用户具体需求(禁止"性能强大"等空话),三条理由角度不同
- 有定价信息时结合预算权衡,帮用户做成本决策
- 避免推荐同家族多个模型,优先稳定版本
- 提供多档次选择和 tradeoff 说明,由用户自己决定
**pipeline 场景:** 相邻步骤的模型模态必须兼容,不兼容时添加提示。
### 第四步:输出推荐结果
对每个推荐模型,读取对应的 group JSON 文件(`models/groups/<slug>.json`)获取 `samples` 字段中的调用示例代码。示例代码获取方式和输出格式见 [references/samples-format.md](references/samples-format.md)。
用自然语言直接输出推荐(如"根据你的需求,我推荐以下模型..."),每个模型包含:
1. **模型名称和 ID**
2. **推荐理由** — 关联用户具体需求,附 tradeoff 对比
3. **亮点** — 关键优势标签
4. **规格信息** — 上下文窗口、最大输出、定价(如有)
5. **调用示例代码** — 从 group 文件的 samples 字段获取(优先 openai.python,同时提供 curl)
**输出约束:**
- 不暴露内部流程术语(禁止出现"Stage"、"意图画像"、"候选召回"、"精排"等词汇)
- 所有推荐基于 `bailian-docs-llm-wiki` 的实际数据,不凭记忆推荐
@@ -0,0 +1,51 @@
# 能力代码与偏好推断
## 能力代码表
模型的 `capabilities[]` 字段使用以下代码:
| 代码 | 含义 |
| --- | --- |
| TG | 文本生成 |
| Reasoning | 推理 |
| VU | 视觉理解 |
| IG | 图像生成 |
| VG | 视频生成 |
| TTS | 语音合成 |
| ASR | 语音识别 |
| Realtime-ASR | 实时语音识别 |
| Realtime-Text-to-Speech | 实时语音合成 |
| Realtime-Audio-Translate | 实时音频翻译 |
| Realtime-Omni | 实时全模态 |
| Multimodal-Omni | 全模态 |
| ME | 多模态嵌入 |
| TR | 翻译 |
| 3D-generation | 3D 生成 |
## 需求提取字段
从用户描述中提取以下结构化信息:
| 字段 | 说明 |
| --- | --- |
| inputModality | 输入模态:Text / Image / Video / Audio |
| outputModality | 输出模态 |
| requiredCapabilities | 所需能力(见上方能力代码表) |
| requiredFeatures | 所需特性(function-calling / web-search / structured-outputs 等) |
| budget | 预算倾向:low / medium / high |
| qualityPreference | 质量偏好:flagship / balanced / cost-optimized |
| contextNeed | 上下文需求:standard / large / extra-large |
| complexity | 单模型完成(single) 或 多模型协同(pipeline) |
## 偏好推断规则
只在用户明确表达或场景强烈暗示时偏离默认值:
| 用户信号 | 推断 |
| --- | --- |
| "低成本"、"便宜"、"省钱" | budget:low |
| "最好的"、"高精度"、"不计成本" | qualityPreference:flagship |
| 高并发场景(如"日均百万请求") | budget:low |
| 企业级 + 准确率优先 | budget:high, qualityPreference:flagship |
| 个人学习/试玩 | budget:low, qualityPreference:cost-optimized |
| 无明确倾向 | budget:medium, qualityPreference:balanced |
@@ -0,0 +1,49 @@
# 数据来源
所有模型信息来自 `bailian-docs-llm-wiki` skill 的 `models/` 目录。
## 文件说明
| 文件 | 用途 |
| --- | --- |
| `models/models.jsonl` | 主数据源,每行一个模型 |
| `models/families.jsonl` | 家族信息,用于去重 |
| `models/groups/<slug>.json` | 模型详情,含 samples(API 调用示例代码) |
## models.jsonl 字段
每行 JSON 包含:
- `model` — 模型 API 调用名(如 `qwen-plus`)
- `family` — 所属家族 slug
- `capabilities` — 能力代码数组(如 `["TG", "VU"]`)
- `features` — 特性数组(如 `["function-calling", "web-search"]`)
- `contextWindow` — 上下文窗口(tokens)
- `prices` — 定价数组,含 input_token / output_token 等类型
- `qpmInfo` — QPM 限流信息
- `detailPath` — 指向 group 详情文件的路径
## families.jsonl 字段
每行 JSON 包含:
- `slug` — 家族标识(与 models.jsonl 的 family 字段 join)
- `name` — 家族中文名
- `primaryCapability` — 主能力
- `capabilities` — 家族下所有 item 能力的并集
- `itemCount` — 家族下模型数量
- `maxContextWindow` — 家族最大上下文窗口
## groups/<slug>.json 字段
单个家族完整明细:
- `name` — 家族名称
- `description` — 家族描述
- `items[]` — 家族下所有模型版本,每个 item 含:
- `model` — API 调用名
- `contextWindow` / `maxInputTokens` / `maxOutputTokens`
- `capabilities` / `features`
- `prices` / `qpmInfo`
- `samples` — 调用示例代码(详见 [samples-format.md](samples-format.md))
- `predictConfig` — 模型调用入参定义(temperature / top_p 等)
@@ -0,0 +1,35 @@
# 需求提取 JSON 结构
从用户描述中快速提取以下结构(纯内部使用,不展示给用户):
```json
{
"complexity": "single 或 pipeline",
"inputModality": ["Text", "Image", "Video", "Audio"],
"outputModality": ["Text", "Image", "Video", "Audio"],
"requiredCapabilities": ["TG", "VU", "IG", "VG", "TTS", "ASR", ...],
"requiredFeatures": ["function-calling", "web-search", "structured-outputs"],
"budget": "low / medium / high",
"contextNeed": "standard / large / extra-large",
"qualityPreference": "flagship / balanced / cost-optimized",
"segments": [{"step": "...", "inputModality": [...], "outputModality": [...], "requiredCapabilities": [...]}]
}
```
## 字段说明
| 字段 | 说明 |
| --- | --- |
| complexity | 单模型完成(single) 或 多模型协同(pipeline) |
| inputModality | 输入模态:Text / Image / Video / Audio |
| outputModality | 输出模态 |
| requiredCapabilities | 所需能力代码(见 [capability-codes.md](capability-codes.md)) |
| requiredFeatures | 所需特性(function-calling / web-search / structured-outputs 等) |
| budget | 预算倾向:low / medium / high |
| contextNeed | 上下文需求:standard / large / extra-large |
| qualityPreference | 质量偏好:flagship / balanced / cost-optimized |
| segments | pipeline 场景下每个步骤的模态和能力需求 |
## 推断规则
偏好推断见 [capability-codes.md](capability-codes.md) 中的"偏好推断规则"。
@@ -0,0 +1,52 @@
# 示例代码获取与输出规则
## samples 数据结构
每个模型的 `detailPath` 字段指向其 group 文件(如 `models/groups/qwen-plus.json`)。该文件中每个 item 有 `samples` 字段,结构如下:
```
samples:
openai: # OpenAI 兼容接口(优先使用)
completionsAPI / default: # API 类型
curl: "..." # curl 示例
python: "..." # Python 示例
nodejs: "..." # Node.js 示例
docUrl: "..." # 文档链接
dashscope: # DashScope 原生接口
default:
curl: "..."
python: "..."
java: "..."
docUrl: "..."
```
## 输出规则
1. 优先使用 `samples.openai` 下的代码(兼容性好,用户熟悉)
2. 如果没有 openai 兼容示例,使用 `samples.dashscope` 下的代码
3. 优先给 Python 示例,其次 curl
4. 示例代码中如果包含 `enable_thinking: true` 或深度思考相关逻辑,去掉这部分,给用户最简洁的调用方式
5. 如果 samples 字段不存在或为空,基于模型的 API 类型构造最简调用示例
## 推荐输出格式
每个推荐模型必须包含:
1. **模型名称和 ID**
2. **推荐理由** — 关联用户具体需求
3. **亮点** — 关键优势标签
4. **规格信息** — 上下文窗口、最大输出、定价(如有)
5. **调用示例代码** — 从 group 文件的 samples 字段获取
### pipeline 场景输出
```
方案概述:一句话描述
步骤 1:xxx
推荐模型 + 理由 + 示例代码
步骤 2:xxx
推荐模型 + 理由 + 示例代码
(如有兼容性提示则说明)
```