从代码到原理,深入解析一个能让AI自动生成并校验小红书文案的循环系统
开场:当AI学会了"自我检查"
想象一下,你让AI写一篇小红书美妆文案,它不仅写了,还自己检查是否符合要求,不符合就重写,直到满意为止。这不是科幻小说,而是今天要讲的 AI Loop------一个让AI拥有"自主工作能力"的核心机制。
最近我在研究一个有趣的项目,它实现了一个完整的AI循环系统,能自动生成符合规则的文案。让我带你深入剖析这个系统的实现原理。
第一幕:什么是AI Loop?
AI Loop,简单来说,就是让AI进入一个**"生成-校验-反馈-优化"的自动化循环**。它的核心思想是:
sql
┌─────────────────────────────────────────────────────────────┐
│ AI Loop 工作原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 生成内容 │ → │ 规则校验 │ → │ 判断结果 │ │
│ │ Generate │ │ Check │ │ Decision│ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │
│ └───────────────────────────────────────┘ │
│ │ │
│ 符合规则? │
│ │ │
│ ┌──────┴──────┐ │
│ ▼ ▼ │
│ 输出结果 重新生成 │
│ │
└─────────────────────────────────────────────────────────────┘
这个项目的核心文件 main.mjs 实现了一个完整的AI Loop,用于生成符合规则的小红书美妆文案。
第二幕:核心架构剖析
2.1 配置层:三大约束体系
系统设计了三层配置,从不同维度约束AI的行为:
js
// API配置 - 连接外部能力
const API_CONFIG = {
MODEL: "deepseek-v4-flash",
API_KEY: process.env.DEEPSEEK_API_KEY,
BASE_URL: process.env.DEEPSEEK_API_URL
};
// 循环控制配置 - 防止无限循环和资源浪费
const loopConfig = {
maxRound: 5, // 最多尝试5轮
maxTokens: 2000, // 最多消耗2000 Token
sameStop: 2 // 连续2次生成相同内容则停止
};
// 任务配置 - 定义具体需求
const taskConfig = {
desc: "小红书美妆文案",
rules: ["标题带数字", "正文小于三百字", "结尾有行动号召"]
};
设计亮点:将配置集中管理,便于调整和维护。特别是循环控制配置,体现了工程化思维------任何自动化系统都必须有终止条件。
2.2 状态管理:追踪循环进度
系统使用四个状态变量来追踪循环过程:
js
let currentRound = 1; // 当前轮次
let totalTokensUsed = 0; // 累计消耗Token
let lastGeneratedText = ""; // 上一轮生成的文案
let consecutiveSameCount = 0; // 连续重复次数
这些状态变量共同构成了循环的"记忆",让系统能够感知自身的执行进度。
2.3 终止条件:三重保险机制
shouldStopLoop() 函数实现了三重终止条件:
js
function shouldStopLoop() {
return consecutiveSameCount >= loopConfig.sameStop ||
totalTokensUsed >= loopConfig.maxTokens ||
currentRound > loopConfig.maxRound;
}
| 条件 | 作用 | 防止的问题 |
|---|---|---|
sameStop |
检测连续重复内容 | AI陷入死循环生成相同内容 |
maxTokens |
控制Token消耗 | 成本失控 |
maxRound |
限制尝试次数 | 无限循环 |
第三幕:核心功能实现
3.1 API调用封装
将重复的API调用逻辑提取为独立函数:
js
async function callDeepSeekApi(prompt) {
const response = await client.chat.completions.create({
model: API_CONFIG.MODEL,
messages: [{ role: "user", content: prompt }],
});
const content = response.choices[0].message.content.trim();
const tokens = response.usage.total_tokens;
return { text: content, tokens };
}
设计优势:
- 代码复用:生成和校验都调用同一个函数
- 错误隔离:API调用逻辑集中管理
- 统一返回格式:确保返回结构一致
3.2 文案生成器
js
async function generateBeautyCopy() {
const prompt = `假如你是一位资深小红书美妆博主,写一篇${taskConfig.desc},
严格遵循要求:${taskConfig.rules.join(",")},只输出文案`;
return callDeepSeekApi(prompt);
}
这里的Prompt设计很精妙:
- 明确角色定位(资深小红书美妆博主)
- 动态注入任务描述和规则
- 要求"只输出文案"减少冗余内容
3.3 AI驱动的规则校验
这是整个系统的亮点------让AI自己检查自己的输出:
js
async function checkCopyRules(text) {
const prompt = `请检查文案是否符合要求:${text}
规则:${taskConfig.rules.join(",")},
仅输出JSON格式:{"pass":布尔值,"fail":未通过规则数组}`;
const { text: result } = await callDeepSeekApi(prompt);
try {
return JSON.parse(result);
} catch {
console.error("❌ 规则检查返回格式异常:", result);
return { pass: false, fail: ["规则检查失败"] };
}
}
创新点:
- AI自评:利用AI的理解能力进行规则校验
- 结构化输出:要求JSON格式便于程序解析
- 容错处理:对解析失败进行优雅降级
第四幕:主循环流程详解
runAiLoop() 函数是整个系统的核心,实现了完整的循环逻辑:
js
async function runAiLoop() {
console.log("🚀 AI Loop 开始执行");
while (!shouldStopLoop()) {
console.log(`\n=== 第 ${currentRound} 轮 ===`);
// 步骤1:生成文案
const { text: newText, tokens: generatedTokens } = await generateBeautyCopy();
totalTokensUsed += generatedTokens;
// 步骤2:检测重复
if (newText === lastGeneratedText) {
consecutiveSameCount++;
} else {
consecutiveSameCount = 0;
}
lastGeneratedText = newText;
// 步骤3:规则校验
const { pass, fail } = await checkCopyRules(newText);
if (pass) {
console.log(`✅ 第 ${currentRound} 轮文案符合所有规则!`);
return newText;
}
console.log(`❌ 第 ${currentRound} 轮文案不符合要求`);
currentRound++;
}
return null;
}
执行流程图:
markdown
开始
│
▼
┌───────────────┐
│ 检查终止条件 │
└───────────────┘
│
▼ (未终止)
┌───────────────┐
│ 生成文案 │
└───────────────┘
│
▼
┌───────────────┐
│ 检测重复 │
└───────────────┘
│
▼
┌───────────────┐
│ 规则校验 │
└───────────────┘
│
├──── 符合 ──→ 输出结果 → 结束
│
▼ 不符合
┌───────────────┐
│ 轮次+1 │
└───────────────┘
│
└──→ 回到检查终止条件
第五幕:工程化亮点
5.1 环境变量验证
js
const requiredEnvVars = ["DEEPSEEK_API_KEY", "DEEPSEEK_API_URL"];
const missingEnvVars = requiredEnvVars.filter(key => !process.env[key]);
if (missingEnvVars.length > 0) {
console.error(`❌ 缺少必要的环境变量: ${missingEnvVars.join(", ")}`);
process.exit(1);
}
最佳实践:在程序启动前进行配置验证,快速失败,避免运行时错误。
5.2 错误处理机制
js
runAiLoop().catch(error => {
console.error("❌ AI Loop 执行失败:", error.message);
process.exit(1);
});
全局错误捕获确保程序不会因未处理的异常而静默崩溃。
5.3 日志输出设计
系统使用 emoji 和清晰的分隔符提升日志可读性:
shell
🚀 AI Loop 开始执行
=== 第 1 轮 ===
📝 生成文案(246 tokens):
### 妆前3步,卡粉浮粉全退散!换季干皮救星来了
...
✅ 第 1 轮文案符合所有规则!
🎉 最终文案:
...
第六幕:应用场景与扩展
6.1 适用场景
这个AI Loop系统可以应用于:
- 内容生成:自动生成符合规范的文案、报告、邮件等
- 代码生成:生成代码后自动检查语法和风格
- 数据处理:处理数据后验证结果正确性
- 创意辅助:生成创意内容后进行质量评估
6.2 扩展方向
如果要增强这个系统,可以考虑:
- 多模型支持:根据任务选择不同的模型
- 学习机制:记录成功案例,优化Prompt
- 并行处理:同时生成多个候选方案
- 人工介入:在特定条件下请求人工审核
结尾:循环的力量
计算机最底层的能力之一就是循环。从 CPU 的取指-执行循环,到操作系统的事件循环,再到今天讲的AI Loop,循环无处不在。
这个项目展示了如何将简单的循环机制与AI结合,创造出具有"自主工作"能力的系统。当AI学会了自我检查和自我修正,它就不再只是一个工具,而更像一个聪明的助手。
下次当你需要AI完成一个复杂任务时,不妨想想:能不能用AI Loop让它自己搞定?
项目地址 :lesson_zp/ai/loop/demo/main.mjs
附录:完善后的 README
AI Loop
一个基于 DeepSeek API 的 AI 自主循环系统,能够自动生成并校验符合规则的内容。
功能特点
- 智能内容生成:根据配置自动生成小红书美妆文案
- AI 自评机制:生成内容后自动进行规则校验
- 多重安全保障:轮次限制、Token 控制、重复检测
- 环境变量配置 :支持
.env文件管理敏感信息
快速开始
安装依赖:
bash
cd lesson_zp/ai/loop/demo
pnpm install
配置环境变量:
复制 .env.example 为 .env,并填写你的 API Key:
env
DEEPSEEK_API_KEY=your_api_key_here
DEEPSEEK_API_URL=https://api.deepseek.com/v1
运行程序:
bash
node main.mjs
核心配置说明
循环控制参数(loopConfig):
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| maxRound | number | 5 | 最大循环轮数 |
| maxTokens | number | 2000 | 最大消耗 Token 数 |
| sameStop | number | 2 | 连续重复内容停止阈值 |
任务配置(taskConfig):
| 参数 | 类型 | 说明 |
|---|---|---|
| desc | string | 文案主题描述 |
| rules | string\[\] | 规则检查列表 |
执行流程
- 生成阶段:调用 DeepSeek API 生成文案
- 检测阶段:检查是否与上一轮内容重复
- 校验阶段:调用 AI 检查文案是否符合规则
- 决策阶段:根据校验结果决定输出或继续循环
输出示例
shell
🚀 AI Loop 开始执行
=== 第 1 轮 ===
📝 生成文案(246 tokens):
### 妆前3步,卡粉浮粉全退散!换季干皮救星来了
换季上妆像翻车现场?别急,三招搞定!
...
✅ 第 1 轮文案符合所有规则!
🎉 最终文案:
### 妆前3步,卡粉浮粉全退散!换季干皮救星来了
...
注意事项
- 确保已获取有效的 DeepSeek API Key
- 运行前检查网络连接是否正常
- Token 消耗会产生费用,请合理配置 maxTokens
- 建议在生产环境中添加更完善的错误处理
技术栈
- Node.js 20+
- OpenAI API Client
- dotenv(环境变量管理)
许可证
MIT License