文章

11-项目实践一-小红书爆款笔记生成项目

11|项目实践(一):小红书爆款笔记生成项目

概述

第一个核心项目实践,从0到1打造一个真正能够应用于企业级生产环境的复杂 Multi-Agent 系统:小红书爆款笔记生成引擎。集成了视觉分析、策略规划、文案撰写与SEO优化,并支持完整API调用的后端服务系统。

项目地址https://github.com/kid0317/crewai_mas_demo_m2l7

核心概念

1. 产品需求与业务目标

输入:几张未修的图片 + 一段粗略的灵感或想法 输出:结构化的、可直接落地的爆款笔记方案

核心业务流程

  • 单图多模态解析:每图独立输出视觉分析与P图方案
  • 全局内容策划:基于所有图片特征制定内容策略简报
  • 文案生成:符合小红书网感、自带Emoji的标题与正文
  • SEO与分发优化:提炼5-8个长尾标签 + 图片发布顺序建议

2. 核心架构:Agent-Task-Process 深度设计

5大专业数字员工

Agent职责特殊配置
视觉分析师图片视觉分析、P图方案多模态模型(qwen3-vl-plus) + AddImageToolLocal
内容撰写员撰写符合小红书网感的文案纯文本高智商模型
SEO专家提炼标签、优化分发懂KFS闭环和长尾关键词
内容策划师制定整体内容策略协调各Agent输出
编辑排版师最终排版与格式优化-

工程最佳实践:Agent人设文案放在YAML配置,LLM和Tools绑定放在Python代码。

3. 异步并发 + 串行混合编排

传统问题:依次识别10张图会耗费极长时间,API严重超时。

解决方案

  • 多模态极速并发:每张图并发执行”视觉分析Task”和”编辑方案Task”
  • 业务逻辑严密串行:汇总为XhsVisualBatchReport后,按”内容策划→文案撰写→搜索优化”顺序执行

4. FastAPI云原生部署

选型理由:AI任务耗时数秒至数分钟,FastAPI基于uvloop的异步事件循环确保等待大模型时不阻塞服务器线程。

架构分层

  • Service层:封装调用逻辑、错误处理、监控日志埋点
  • API路由层:暴露run_xhs_note_flow HTTP接口
  • 前端接入:业务前端可直接调用

关键要点

  1. 人设工程:5个Agent各司其职,避免”全能Agent”反模式
  2. YAML解耦:Agent配置与代码分离,便于非技术人员调整
  3. 契约驱动:所有核心产出强制遵循Pydantic结构化输出
  4. 显式依赖:通过context参数精准传递上游结果,杜绝上下文污染
  5. 异步编排:图片处理并行化,策略任务串行化,显著压缩等待时间

实践示例

Agent定义(agents.py)

def get_xhs_visual_analyst() -> Agent:
    cfg_visual = _agent_cfg("xhs_visual_analyst")  # 从YAML读取
    return Agent(
        config=cfg_visual,
        multimodal=True,  # 开启多模态
        llm=get_llm(image_model="qwen3-vl-plus"),
        tools=[AddImageToolLocal()],
    )

Task定义(tasks.py)

def get_task_copywriting(content_strategy_task: Task) -> Task:
    return Task(
        description=cfg.get("description", ""),
        expected_output=cfg.get("expected_output", ""),
        agent=get_xhs_content_writer(),
        context=[content_strategy_task],  # 显式依赖上游
        output_pydantic=XhsCopywritingOutput,  # 结构化输出
        async_execution=False,
    )

Process编排(flows.py)

# 1. 图片并发处理
visual_tasks = []
for img in images:
    visual_tasks.append(get_visual_analysis_task(img))
    visual_tasks.append(get_edit_plan_task(img))

# 2. 策略任务串行执行
strategy_task = get_content_strategy_task(context=visual_tasks)
copywriting_task = get_copywriting_task(context=[strategy_task])
seo_task = get_seo_task(context=[copywriting_task])

常见问题/坑点

问题原因解决方案
API接口超时串行处理多张图片耗时太长图片处理阶段改为异步并发
上下文污染Task之间传递不清晰使用显式context参数 + Pydantic约束
输出格式不一致没有结构化约束所有核心产出必须遵循output_pydantic
人设调整困难代码与配置混在一起YAML解耦,非技术人员可独立调整

关联知识

参考资源

学习时间

  • 课程时长:42:50
  • 笔记整理:2026-04-10

状态

  • 课程学习
  • 代码实践
  • 项目复现

下次复习日期

2026-04-17