AI 使用最佳实践
本文汇总了 Obsidian 中使用 AI 的最佳实践,包括 Prompt 优化、隐私保护、成本控制等方面的技巧。
适用场景
- 🎯 希望提高 AI 生成质量
- 🔒 需要保护敏感信息隐私
- 💰 想要控制 API 使用成本
- ⚡ 追求更高的工作效率
- 🔄 建立可持续的 AI 工作流
1. 明确 AI 的角色定位
AI 的正确用途
markdown
AI 是:
- ✅ 效率工具:加速重复工作
- ✅ 创意伙伴:提供灵感和建议
- ✅ 学习助手:解释和总结
- ✅ 编辑帮手:润色和纠错
- ✅ 翻译助手:跨语言理解AI 的局限性
markdown
AI 不是:
- ❌ 替代思考:保持独立判断
- ❌ 权威来源:验证 AI 输出
- ❌ 隐私保险柜:注意数据安全
- ❌ 事实来源:可能产生幻觉
- ❌ 决策者:最终决定权在你2. Prompt 优化技巧
基础原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 明确目标 | 清楚说明要做什么 | "生成一份周报" → "生成一份包含项目进度、问题、下周计划的工作周报" |
| 提供上下文 | 给出必要的背景信息 | "翻译" → "这是一篇技术文档,翻译成中文,保持专业术语准确" |
| 指定格式 | 说明期望的输出格式 | "列出要点" → "用无序列表列出要点,每点不超过 20 字" |
| 设定约束 | 限制输出范围 | "总结" → "用不超过 200 字总结,包含 3 个核心观点" |
迭代优化示例
markdown
# Prompt 优化过程
## 版本 1(基础)
总结这段内容
## 版本 2(增加要求)
总结这段内容,使用列表格式,不超过 200 字
## 版本 3(结构化)
请按以下格式总结内容:
### 核心观点
- [观点]
### 关键数据
- [数据]
### 行动建议
- [建议]
内容:[原文]
## 版本 4(角色扮演)
你是一位资深编辑,请分析以下内容并提供专业的总结报告:
**报告格式要求:**
1. 核心观点(3-5 点)
2. 论据支撑(引用原文关键句)
3. 实践价值(可应用的场景)
4. 批判性思考(可能的盲点)
内容:[原文]高级 Prompt 技巧
1. 角色扮演
markdown
# 角色扮演 Prompt
你是一位专业的[角色],拥有[背景经验]。
你的任务是:[具体任务]
请以该角色的视角,运用专业知识来完成这个任务。
保持专业性和可信度,使用该领域常用的术语和表达方式。2. 少样本学习
markdown
# 少样本学习 Prompt
请按照以下示例格式生成输出:
示例 1:
输入:人工智能正在改变世界
输出:🤖 人工智能 → 变革驱动力
示例 2:
输入:量子计算带来新突破
输出:🔬 量子计算 → 技术前沿
现在请处理:
输入:{{user_input}}
输出:3. 思维链
markdown
# 思维链 Prompt
请逐步思考以下问题:
1. 首先,分析问题的核心是什么
2. 然后,列出可能的解决方案
3. 接着,评估每个方案的优劣
4. 最后,给出你的建议和理由
问题:{{question}}
请展示你的思考过程:3. 建立个人 Prompt 库
目录结构
text
Vault/
└── Prompts/
├── reading/
│ ├── summary.md # 内容摘要
│ ├── key-points.md # 要点提取
│ ├── critique.md # 批判性阅读
│ └── questions.md # 阅读问题生成
├── writing/
│ ├── outline.md # 大纲生成
│ ├── expand.md # 内容扩写
│ ├── polish.md # 文字润色
│ └── rewrite.md # 风格重写
├── learning/
│ ├── explain.md # 概念解释
│ ├── quiz.md # 测验生成
│ ├── flashcard.md # 闪卡制作
│ └── analogize.md # 类比解释
├── work/
│ ├── email-reply.md # 邮件回复
│ ├── weekly-report.md # 周报生成
│ ├── meeting-minutes.md # 会议纪要
│ └── project-plan.md # 项目计划
└── templates/
├── base.md # 基础模板
└── variables.md # 变量说明模板示例
基础模板 (templates/base.md):
markdown
---
name: 基础模板
description: 所有 Prompt 的基础结构
---
# 任务
{{task}}
## 背景
{{context}}
## 要求
1. {{requirement_1}}
2. {{requirement_2}}
## 输出格式
{{output_format}}
## 注意事项
- {{note_1}}
- {{note_2}}摘要模板 (reading/summary.md):
markdown
---
name: 内容摘要
description: 生成结构化的内容摘要
---
请对以下内容生成专业摘要:
## 原文
{{selection}}
## 摘要要求
1. 字数限制:200-300 字
2. 核心观点:提取 3-5 个要点
3. 客观中立:不添加个人评价
4. 保留关键数据:重要数字、日期
## 输出格式
### 一句话概括
[用一句话总结核心内容]
### 核心观点
1. [观点一]
2. [观点二]
3. [观点三]
### 关键数据
- [数据一]
- [数据二]
### 适用场景
[说明该内容的实践价值]4. 隐私保护策略
分级处理
yaml
隐私级别:
高敏感:
类型: 密码、身份证、银行账户、公司机密
策略:
- 使用本地 AI (Ollama)
- 禁止发送到任何云端服务
- 必要时进行脱敏处理
中敏感:
类型: 个人信息、工作内容、项目细节
策略:
- 优先使用本地 AI
- 云端使用时注意服务商政策
- 定期清理历史记录
低敏感:
类型: 公开知识、学习内容、一般讨论
策略:
- 可使用云端 API
- 注意控制成本
- 保持良好习惯脱敏技巧
javascript
// 信息脱敏脚本
function sanitizeContent(content) {
return content
// 替换邮箱
.replace(/[\w.-]+@[\w.-]+\.\w+/g, '[邮箱]')
// 替换手机号
.replace(/1[3-9]\d{9}/g, '[手机号]')
// 替换身份证
.replace(/\d{17}[\dXx]/g, '[身份证]')
// 替换银行卡
.replace(/\d{16,19}/g, '[银行卡]')
// 替换密码相关
.replace(/密码[::]\s*\S+/g, '密码:[已脱敏]')
// 替换 API Key
.replace(/[a-zA-Z0-9]{32,}/g, '[API_KEY]');
}本地部署建议
yaml
Ollama 配置:
模型选择:
隐私优先: llama3, mistral
性能平衡: llama3:70b
中文优化: qwen2, deepseek-v2
硬件要求:
最低: 8GB RAM, 4GB VRAM
推荐: 16GB RAM, 8GB VRAM
高性能: 32GB RAM, 16GB+ VRAM5. 成本控制
费用对比
| 模型 | 输入价格 | 输出价格 | 适用场景 |
|---|---|---|---|
| GPT-4 Turbo | $10/1M tokens | $30/1M tokens | 复杂推理、专业写作 |
| GPT-3.5 Turbo | $0.5/1M tokens | $1.5/1M tokens | 日常任务、简单翻译 |
| Claude 3 Opus | $15/1M tokens | $75/1M tokens | 深度分析、创意写作 |
| Claude 3 Sonnet | $3/1M tokens | $15/1M tokens | 平衡性能和成本 |
| 本地模型 | 免费 | 免费 | 隐私优先、无限制使用 |
省钱技巧
yaml
成本优化策略:
模型选择:
- 简单任务用便宜模型
- 复杂任务才用强模型
- 本地处理日常任务
Prompt 优化:
- 减少不必要的上下文
- 精简指令和示例
- 合并相似请求
批量处理:
- 合并多个小任务
- 使用异步处理
- 设置调用缓存
监控管理:
- 设置月度预算上限
- 定期审查使用记录
- 分析成本构成使用量追踪
javascript
// API 使用追踪
const usageTracker = {
daily: {},
monthly: {},
log(model, inputTokens, outputTokens) {
const today = new Date().toISOString().split('T')[0];
const month = today.slice(0, 7);
this.daily[today] = this.daily[today] || {};
this.daily[today][model] = this.daily[today][model] || { in: 0, out: 0 };
this.daily[today][model].in += inputTokens;
this.daily[today][model].out += outputTokens;
// 月度统计
this.monthly[month] = this.monthly[month] || { in: 0, out: 0 };
this.monthly[month].in += inputTokens;
this.monthly[month].out += outputTokens;
},
getCost(month, pricing) {
const usage = this.monthly[month];
return (usage.in * pricing.input + usage.out * pricing.output) / 1000000;
}
};6. 工作流优化
模板自动化
结合 Templater 实现 Prompt 模板调用:
javascript
<%*
// 自动调用 AI 生成摘要
const content = tp.file.content;
const summary = await textGenerator.generate(`
用一句话总结以下内容(不超过 50 字):
${content}
`);
tR += `
## 📝 AI 摘要
${summary}
`;
%>快捷操作配置
yaml
推荐快捷键:
Ctrl/Cmd + Shift + G: 生成文本
Ctrl/Cmd + Shift + S: 摘要选中内容
Ctrl/Cmd + Shift + T: 翻译选中内容
Ctrl/Cmd + Shift + P: 润色选中内容
Ctrl/Cmd + Shift + E: 解释选中内容批量处理工作流
javascript
// 批量处理笔记
async function batchProcess(notes, action) {
const results = [];
for (const note of notes) {
const content = await app.vault.read(note);
let result;
switch (action) {
case 'summarize':
result = await textGenerator.generate(
`总结:${content}`
);
break;
case 'translate':
result = await textGenerator.generate(
`翻译成中文:${content}`
);
break;
case 'tag':
result = await textGenerator.generate(
`为以下内容生成 3-5 个标签:${content}`
);
break;
}
results.push({ note, result });
}
return results;
}常见问题
Q: AI 生成的内容不准确怎么办?
A:
- 验证关键信息,不盲目信任
- 使用更强的模型(如 GPT-4)
- 优化 Prompt,增加约束条件
- 使用 RAG 增强上下文
- 多次生成取最佳结果
Q: 如何降低 API 成本?
A:
- 使用更便宜的模型处理简单任务
- 减少 Prompt 长度,精简上下文
- 批量处理,减少调用次数
- 设置调用缓存,避免重复
- 考虑本地部署 Ollama
Q: 本地模型效果不好怎么办?
A:
- 尝试不同的模型(如 Llama 3, Qwen 2)
- 使用量化程度较低的版本
- 调整温度等生成参数
- 升级硬件配置
- 优化 Prompt 适配模型特点
Q: 如何保持风格一致性?
A:
- 建立个人风格模板
- 在 Prompt 中提供风格示例
- 使用相同的 AI 配置
- 定期审查和调整
Q: AI 生成速度太慢?
A:
- 使用更快的模型
- 减少 Prompt 长度
- 启用流式输出
- 检查网络连接
- 考虑本地部署