← 返回

4种架构方案的并行测试:SuperSlide如何在LLM策略之间做选择

2026-03-10 #ai#architecture#superslide#testing#llm

你有4种方法来解决问题。每种听起来都有说服力,但没有一种可以不经实验就排除。经典方法——逐一尝试。但当每个选项需要3-6小时的数据准备时,顺序测试会延伸到几周。在SuperSlide中,我决定并行运行所有选项——并将每个流程委托给单独的智能体。

任务

SuperSlide从文本制作演示文稿。我们有57个模板——从cover_darkroadmap_horizontal。LLM需要理解”销售增长30%“是带KPI块的幻灯片,不是项目符号列表。

第一个版本通过OpenRouter工作。我给模型一个文本目录描述,它选择合适的选项。结果——60%的准确率。剩下的40%——重复最喜欢的布局或不合适的格式。

需要更好的方法。哪种——不清楚。

我测试的4种方案

方案A——当前基线。 LLM以文本形式获取模板目录,按描述选择,填充占位符。简单,但模型”粘”在57个中的5-6个最喜欢的布局上。

方案B——用示例代替描述。 模型获得57个填充好的示例,而不是带{{PLACEHOLDER}}的空模板。假设:具体比抽象教得更好。

方案B2——Qdrant + 语义搜索。 每个模板获得semantic_description(“3个数字指标,KPI指标,季度结果”)并在Qdrant中索引。逻辑:POST /api/context/semantic → 搜索最近的模板 → 过滤重复。假设:让向量搜索决定,而不是LLM。

方案C——组件。 模板分解为48个原子块:背景(bg_dark_ringsbg_gradient),标题(comp_title_hero),内容(comp_kpi_blockcomp_bulletscomp_table)。每个都有constraintscompatible_with[]grid_area。LLM从积木中组装幻灯片。假设:灵活组装带来更多多样性。

我如何并行运行

每个选项的数据准备需要2到6小时。手动顺序执行——一周的工作。我将每个流程委托给Claude Code中的单独智能体。

对于方案B2,我发送了这个提示:

为57个幻灯片模板准备Qdrant索引数据。
为每个模板创建:
- semantic_description(2-3句话,视觉和内容描述)
- best_for(3-5个用例)
- never_for(限制)
- visual_tags[](过滤标签)
格式:SQL INSERT到slide_templates表。
参考/var/www/superslide/templates/中的HTML

对于组件方案——不同的智能体,不同的提示:

将36个最复杂的模板分解为原子组件。
每个组件:html_fragment、css_classes、description、
constraints(max_text、max_items、needs_number)、
compatible_with[]、grid_area。
格式:SQL INSERT到slide_components表。

路由基础设施——带有Switch节点的n8n工作流。用户通过单选按钮选择方案,请求进入正确的分支。

我测量了什么

日志写入generation_log表。我跟踪:

  • 演示文稿中唯一模板的数量
  • 类别多样性(幻灯片类型覆盖率)
  • 主题交替(深色/浅色背景)
  • 生成时间
  • 使用的方案

每个选项5次测试生成——20次运行。足以看到模式。

我学到了什么

语义搜索(B2)给出了最好的模板多样性。Qdrant不会”粘”在热门布局上——12张幻灯片的演示文稿中平均9-11个唯一模板,而基线是4-5个。但需要精确的描述:如果semantic_description写得不好,最近的向量就会出错。

示例(B)比基线效果更好,但模型开始从示例中复制内容而不是生成新内容。不得不在提示中明确添加:“使用结构,而不是内容”。

组件(C)给出了最大的灵活性,但也产生了最多的组装错误。尽管有compatible_with[],LLM有时会组合不兼容的块。

最重要的——并行执行比顺序测试节省了4-5天。

什么时候不需要并行测试

如果你有2个选项,其中一个明显更简单——从简单的开始。并行测试在以下情况下合理:

  • 有3个或更多选项
  • 没有一个可以不经实验就排除
  • 每个的数据准备需要几小时,而不是几分钟
  • 你有委托的能力(智能体、团队)

20分钟就能验证假设?不要为并行执行构建基础设施。

常见问题

为什么没有将Function Calling(tools)作为单独选项?

那是方案D。但它需要API中的tools支持。claude -p不直接支持tools,需要使用OpenRouter。这增加了一个干扰纯净比较的变量。

20次测试生成花了多少钱?

通过OpenRouter使用Claude模型大约3-4美元。数据准备成本(智能体tokens)——另外约8-10美元。总计不到15美元,完成了4种架构方案的完整验证。

最终选择了哪种方案?

B2 + C元素的混合。语义搜索用于模板选择,组件约束用于兼容性验证。纯组件方案太脆弱,纯语义方案不控制组装质量。

没有Claude Code也能这样测试吗?

可以,使用任何允许运行独立工作流的工具。关键不在于具体工具,而在于分解:每个选项是一个隔离的任务,有明确的输入和输出。