diff --git a/simple-llm/SKILL.md b/simple-llm/SKILL.md new file mode 100644 index 0000000..be9c7b3 --- /dev/null +++ b/simple-llm/SKILL.md @@ -0,0 +1,306 @@ +--- +name: simple-llm +description: 简单的 LLM 请求 - 明确上下文、明确需求结果,不支持推理/工具调用/复杂过程,支持 1M 上下文和图片识别 +domain: utilities +version: 1.2.0 +tags: [llm, api, simple, context, qwen, vision] +triggers: + keywords: + primary: [llm, simple llm, 简单llm, qwen, 大模型] + secondary: [文本生成, 总结, 翻译, 改写, 分析, 图片识别, 图片分析, ocr] + context_boost: [文本, context, context window, 上下文, 图片] + priority: low +--- + +# Simple LLM + +简单的 LLM 请求工具,适用于明确上下文和明确需求结果的场景。 + +## 特点 + +| 特性 | 说明 | +|------|------| +| 上下文 | 支持 1M tokens | +| 成本 | 本地部署,无 token 成本 | +| 功能 | 文本生成 + 图片识别/分析 | +| 限制 | 不支持推理、工具调用、复杂过程 | + +## API 配置 + +``` +Endpoint: https://one.hao.work/v1/chat/completions +Model: qwen3.5-plus +Auth: Bearer sk-2e51c350efdeb41e27fcea4c3116567e514435db291b291e +``` + +## 图片上传服务 + +本地图片需要先上传获取 URL,再传给 LLM 识别。 + +### 上传 API + +```bash +curl -u admin:whoami139 \ + -F "file=@/path/to/image.png" \ + https://img.hao.work/upload +``` + +| 参数 | 说明 | +|------|------| +| file | 图片或 JSON 文件 | +| ttl_days | 可选,默认 90 天,小于 90 天按 90 天保存 | + +### 返回示例 + +```json +{"filename":"abc123.png","size":12345,"url":"https://img.hao.work/images/abc123.png"} +``` + +### 本地图片处理流程 + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 本地图片识别流程 │ +│ │ +│ ┌─────────────┐ │ +│ │ 本地图片路径 │ │ +│ └──────┬──────┘ │ +│ ▼ │ +│ ┌─────────────┐ │ +│ │ 上传到图床 │ curl -u admin:whoami139 -F "file=@..." │ +│ │ img.hao.work│ │ +│ └──────┬──────┘ │ +│ ▼ │ +│ ┌─────────────┐ │ +│ │ 获取图片URL │ https://img.hao.work/images/xxx.png │ +│ └──────┬──────┘ │ +│ ▼ │ +│ ┌─────────────┐ │ +│ │ 调用LLM识别 │ image_url + prompt │ +│ └──────┬──────┘ │ +│ ▼ │ +│ ┌─────────────┐ │ +│ │ 返回结果 │ │ +│ └─────────────┘ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +## 使用方式 + +### 文本请求 + +```bash +curl -X POST https://one.hao.work/v1/chat/completions \ + -H "Authorization: Bearer sk-2e51c350efdeb41e27fcea4c3116567e514435db291b291e" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3.5-plus", + "messages": [{"role": "user", "content": "<你的提示词>"}], + "stream": true + }' +``` + +### 图片识别请求 + +```bash +curl -X POST https://one.hao.work/v1/chat/completions \ + -H "Authorization: Bearer sk-2e51c350efdeb41e27fcea4c3116567e514435db291b291e" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3.5-plus", + "messages": [{ + "role": "user", + "content": [ + {"type": "text", "text": "<你的问题或指令>"}, + {"type": "image_url", "image_url": {"url": "https://example.com/image.png"}} + ] + }], + "stream": true + }' +``` + +### 多图片请求 + +```bash +curl -X POST https://one.hao.work/v1/chat/completions \ + -H "Authorization: Bearer sk-2e51c350efdeb41e27fcea4c3116567e514435db291b291e" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3.5-plus", + "messages": [{ + "role": "user", + "content": [ + {"type": "text", "text": "对比这两张图片的区别"}, + {"type": "image_url", "image_url": {"url": "https://example.com/image1.png"}}, + {"type": "image_url", "image_url": {"url": "https://example.com/image2.png"}} + ] + }], + "stream": true + }' +``` + +--- + +## 自动任务分配机制 + +当主模型接收到任务时,自动评估是否适合委托给 Simple LLM: + +### 任务适配规则 + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 任务分发决策 │ +│ │ +│ 收到任务 │ +│ │ │ +│ ▼ │ +│ ┌─────────────┐ 否 ┌─────────────┐ │ +│ │ 是否需要推理? │ ──────→ │ 主模型处理 │ │ +│ └─────────────┘ └─────────────┘ │ +│ │是 │ +│ ▼ │ +│ ┌─────────────┐ 是 ┌─────────────┐ │ +│ │ 是否需要工具? │ ──────→ │ 主模型处理 │ │ +│ └─────────────┘ └─────────────┘ │ +│ │否 │ +│ ▼ │ +│ ┌─────────────┐ 是 ┌─────────────┐ │ +│ │ 是否多步骤? │ ──────→ │ 主模型处理 │ │ +│ └─────────────┘ └─────────────┘ │ +│ │否 │ +│ ▼ │ +│ ┌─────────────┐ │ +│ │ Simple LLM │ ──→ 执行 → 评估 → 记录结果 │ +│ └─────────────┘ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### 适合自动分配的任务类型 + +| 类型 | 示例 | 优先级 | +|------|------|--------| +| 文本总结 | 总结这篇文章的核心观点 | 高 | +| 翻译 | 将这段文字翻译成英文 | 高 | +| 格式转换 | 将 JSON 转成 YAML | 高 | +| 代码解释 | 这段代码做了什么 | 中 | +| 图片描述 | 描述这张图片的内容 | 高 | +| OCR | 识别图片中的文字 | 高 | +| 简单分析 | 分析这段文字的情感倾向 | 中 | +| 改写润色 | 改写这段文字使其更专业 | 中 | + +### 不适合分配的任务 + +- 需要多轮对话推理 +- 需要调用外部工具/API +- 需要文件系统操作 +- 需要代码执行验证 +- 复杂的规划和决策 + +--- + +## 效果评估与记录 + +### 评估标准 + +执行完成后,按以下标准评估效果: + +```yaml +评估维度: + 准确性: 输出是否正确回答了问题 (1-5) + 完整性: 输出是否覆盖了所有要求 (1-5) + 格式: 输出格式是否符合预期 (1-5) + 速度: 响应是否及时 (1-5) + +综合评分: (准确性 + 完整性 + 格式) / 3 +``` + +### 记录机制 + +在 `~/.agents/skills/simple-llm/records.json` 中记录: + +```json +{ + "task_records": [ + { + "id": "task_001", + "timestamp": "2026-02-26T10:00:00Z", + "task_type": "summarize", + "prompt": "总结以下文章...", + "result_quality": 4.5, + "success": true, + "notes": "总结准确,要点清晰" + } + ], + "type_stats": { + "summarize": {"count": 10, "avg_quality": 4.3}, + "translate": {"count": 15, "avg_quality": 4.5}, + "ocr": {"count": 5, "avg_quality": 4.0} + } +} +``` + +### 优先级调整 + +根据历史记录动态调整任务分配优先级: + +``` +if (任务类型 in type_stats && avg_quality >= 4.0) { + 优先分配给 Simple LLM +} else if (任务类型 in type_stats && avg_quality < 3.0) { + 优先使用主模型 +} else { + 首次尝试 Simple LLM,记录结果 +} +``` + +--- + +## 示例模板 + +### 文本总结 + +``` +请总结以下文章的核心内容,用 3-5 个要点表示: + +[文章内容] + +要求: +- 每个要点不超过 50 字 +- 保留关键数据和结论 +``` + +### 图片识别 + +``` +识别这张图片中的所有文字,按原文排版输出: + +[图片URL] + +要求: +- 保持原始排版 +- 标注不确定的文字 +``` + +### 翻译 + +``` +将以下内容翻译成英文: + +[内容] + +要求: +- 保持原文语气 +- 专业术语保持准确 +``` + +--- + +## 注意事项 + +1. **充分利用 1M 上下文** - 可以传入大段文本,无需担心 token 限制 +2. **图片支持** - 通过 image_url 传入图片链接进行识别 +3. **避免复杂指令** - 单步任务效果最佳 +4. **明确输出格式** - 让模型清楚知道期望的输出形式 +5. **效果反馈** - 执行后评估效果,用于优化后续任务分配