Chat2Scenic:基于迭代式 RAG 的自动驾驶场景生成框架 Chat2Scenic: An Iterative RAG-Based Framework for Scenario Generation in Autonomous Driving
首个迭代式组件级 RAG 框架,将法规描述转为可执行 Scenic 场景脚本
前置知识
Scenic DSL
Scenic 是一种概率编程式的领域特定语言(DSL),用于描述自动驾驶仿真场景,可在 CARLA 等 3D 仿真器上执行。它用简洁语法定义道路、车辆、行人的位置、行为和约束(例如 ego vehicle 跟随车道、避障),并能够编译为可运行的仿真脚本。本文使用的是 Scenic 3.1.0 与 CARLA 0.9.15 组合。
本文的核心任务就是把自然语言场景描述转换为 Scenic 脚本,理解 Scenic 的语法和组件结构才能理解生成任务的难度与方法设计。
RAG 检索增强生成
Retrieval-Augmented Generation 通过从外部知识库(代码片段库、文档库)检索相关信息并作为上下文注入 LLM 提示,从而提升生成准确性并减少幻觉。本文构建了双检索器:代码检索用 all-MiniLM-L6-v2 嵌入做纯语义搜索(top-3 余弦相似),文档检索用 BM25 关键词匹配 + 嵌入语义检索的混合方式,再用 Reciprocal Rank Fusion (RRF) 融合重排。
RAG 是本文框架的核心机制,理解它的双库结构和混合检索策略才能理解为何 Chat2Scenic 优于直接生成方法。
Compilation Success Rate (CSR)
编译成功率指生成的 DSL 脚本能够在仿真器中成功执行(通过编译并运行)的比例,是衡量场景代码生成框架可行性的关键指标。本文中 CSR = 成功编译的脚本数 / 总生成脚本数 × 100%。论文最优配置 C11 达到 CSR 76.42%,而 SOTA 方法 ChatScene 仅 30.08%、NL2Scenic 仅 16.26%。
CSR 是论文最核心的评估指标,所有方法的优劣比较都围绕它展开,理解它才能看懂结果表 IV。
In-Context Learning 与 RAG-ICL
上下文学习(ICL)指在 LLM 提示中提供少量示例(few-shot examples),让模型从示范中学习正确的实现模式和语法。本文的 RAG-ICL 进一步动态检索与当前查询最相关的示例,而非使用固定示例:CodeICL 检索 top-3 语义相似的代码片段,DocICL 检索相关文档块。
消融实验表明 ICL 与 CodeICL 是性能跃升的关键(C5 相比 C4 从 12.20% 跃升到 47.15%),理解它能解释为何 C11 是最佳配置、为何 DocICL 反而有害。
研究动机
自动驾驶系统(ADS)的验证需要大量多样化、符合法规的测试场景,传统物理路测无法覆盖罕见且高风险的边缘情况。在仿真测试中场景以可执行脚本形式定义,但自动从法规描述生成这些脚本仍是开放问题。现有 LLM 方法面临根本性权衡:Retrieval Assemble 方法(如 TARGET、ChatScene、Text2Scenario)从预定义代码库检索并组装代码片段,虽然编译率合理(ChatScene CSR 30.08%),但缺乏对新场景的泛化能力;Direct Generation 方法(如 LEADE、LeGEND、ScenicNL、NL2Scenic)直接生成完整脚本或组件,灵活性更好但编译成功率低(NL2Scenic CSR 仅 16.26%)。此外,多数框架聚焦简化场景描述而非法规级规范,且缺乏对编译成功率与语义准确率的全面评估,更关键的是对手动态行为的生成质量普遍偏低。
本文的目标是本文旨在开发一个能够处理复杂 ADS 测试法规描述的场景生成框架,同时保持高编译成功率和强泛化能力。具体目标包括三方面:第一,提出 Chat2Scenic,一个基于 chatbot 交互的迭代式组件级生成框架,集成先进提示技术(CP、CoT、ICL、RAG-ICL)和 RAG,在编译成功率 CSR、语义准确率 SQ 和框架准确率 FA 三项指标上全面超越 SOTA;第二,从 CARLA Leaderboard、NHTSA、UN Vehicle Regulations 等多源法规中精选 123 个 ADS 场景描述作为公开基准,并提出兼顾框架层(CSR、FA)与应用层(语义准确率)的专用评估指标;第三,在闭源和开源 LLM 上进行全面评估,开展提示技术消融研究(12 种配置),并与 ChatScene、NL2Scenic 等 SOTA 方法对比。
与已有工作不同的是,本文的独特切入角度是迭代式组件级生成(Iterative Component-wise Generation)——介于 Retrieval Assemble 与 Direct Full-script Generation 之间的第三条道路。它既不是从预定义库检索组装(避免泛化受限),也不是一次性生成完整脚本(避免编译失败),而是将场景分解为逻辑组件 G/R/E/O/T,按依赖顺序逐个生成,每步累积已生成代码作为上下文,确保组件间兼容性。这种分而治之加上下文累积的范式在 Table I 的 Granularity 维度上首次标注为 I(Iterative),区别于现有的 C(Component-wise)与 F(Full DSL),是同时具备 UI、Documentation RAG、Contextual Prompting、CoT、ICL、RAG-ICL 全部能力的首个方法。
核心方法
直觉上,Chat2Scenic 像一位经验丰富的工程师,先把用户模糊的场景需求拆解为清晰的零件清单(道路、本车、对手车、约束),再逐个零件地从知识库找参考、按规范组装,最后拼成完整可运行程序。技术路线分为三大模块协同工作:Interactive Module 通过 Gradio chatbot 接口解析用户自然语言为逻辑结构 S;RAG Module 构建代码片段库与文档库双数据库,并设计专用检索器提供领域知识;Generation Module 按 Algorithm 1 先生成全局配置,再按依赖顺序迭代生成 R/E/O/T 组件,最后拼接为可执行 Scenic 程序。整个流程基于 LangChain 和 LangGraph 框架,使用 MemorySaver checkpoint 支持会话状态保持和交互式精炼,用户可提供反馈更新逻辑解读而无需重启工作流。本文在 123 个场景基准上的最佳配置 C11 取得 CSR 76.42%、FA 58.17%。
核心创新是逻辑结构分解 + 迭代组件生成 + 上下文累积三位一体。本文将场景形式化为 $S = \{G\} \cup S_{int} = \{G, R, E, O, T\}$,其中 G 为全局配置(地图、天气、车辆模型),$S_{int}$ 含空间关系 R、本车行为 E、对象集 $O = \{O_1, ..., O_N\}$ 和约束 T。每个组件被抽象为单句描述作为后续检索与生成的语义查询。生成时严格按依赖顺序:先 R(道路拓扑决定一切),再 E(本车),再逐个 $O_i$(依赖前面所有已生成对象),最后 T(终止条件)。每个生成器接收相关组件的逻辑描述与已累积代码上下文,确保组件间类型、参数、引用一致。这与以往方法的本质区别在于生成即组装——边生成边验证兼容性,而非事后拼装可能不兼容的部件,从而显著提升编译成功率(C11 达 76.42% vs ChatScene 30.08%)。
方法步骤详情
完整流程见 Algorithm 1,分三步。步骤1 Logical Structure Extraction:Interpreter 用 LLM 配合 few-shot 示例从用户查询提取 $S_{int}=\{R,E,O,T\}$,借助 LangGraph MemorySaver 支持反馈迭代精炼。步骤2 Global Configuration:SettingsDetector 检测 map/weather/models,仅当置信度 $\geq 0.6$ 才采用,否则回退默认值,HeaderGenerator 转为 $G_{code}$。步骤3 Iterative Component Generation:按依赖顺序依次调用 GeneratorR、E、O、T,每步接收相关组件逻辑描述与已累积代码上下文确保兼容;各生成器统一采用图 4 四类提示技术(Contextual Prompting、CoT、ICL、RAG-ICL 含 CodeICL+DocICL 混合检索)。最终拼接 $S_{code}$ 输出可执行 Scenic 程序。
技术新颖性
技术新颖性体现在四层面。第一,首个迭代式组件级 RAG 框架,填补 Retrieval Assemble 与 Direct Generation 之间的空白,Table I 显示本文是唯一同时具备 UI、Documentation RAG、CP、CoT、ICL、RAG-ICL 且 Granularity 为 Iterative 的方法。第二,双检索器架构——代码检索用 all-MiniLM-L6-v2 嵌入做纯语义搜索(按组件类型过滤 top-3 余弦相似),文档检索用 BM25 + 嵌入混合 + Reciprocal Rank Fusion 融合,兼顾精确 API 定义(如 FollowLaneBehavior)与语义背景。第三,组件级代码片段数据库构建方法——将官方 Scenic 源码分解为覆盖 R/E/O/T 的独立单元,每个用 LLM 生成单句描述并嵌入,使检索粒度与生成粒度对齐。第四,动态 RAG-ICL 取代固定 few-shot,每次查询自适应检索最相关示例,数据库可独立扩展,提升跨域泛化能力。
实验结果
核心发现分三组实验。消融研究(Table III,Gemini-3-Flash,12 配置):零样本 C1 的 CSR 和 FA 均为 0%;单独 CP(C4)CSR 仅 12.20%;CP+ICL(C5)跃升至 CSR 47.15%,证明 ICL 是关键;最佳 C11(CP+CoT+ICL+CodeICL)达 CSR 76.42%、SQ 76.12%、FA 58.17%;加 DocICL(C12)反降到 CSR 56.90%;CodeICL 显著提升效率(C11 RT 222.11s vs C9 的 520.47s)。跨模型对比(Table IV):Gemini-3-Flash 最佳(CSR 76.42%),优于 Gemini-3-Pro(60.16%);开源模型糟糕,Qwen3:30B、Gemma3:27B 的 CSR 均为 0%,GPT-OSS 仅 0.82%。与 SOTA 对比:ChatScene CSR 30.08%,NL2Scenic CSR 16.26%;本文 CSR 是 ChatScene 的 2.54 倍、NL2Scenic 的 4.70 倍。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Scenic 场景脚本生成(编译成功率) | Compilation Success Rate (CSR, %) | 76.42%(Gemini-3-Flash, C11 配置) | ChatScene 30.08%,NL2Scenic 16.26% | 相比 ChatScene 提升 46.34 个百分点(约 2.54 倍),相比 NL2Scenic 提升 60.16 个百分点(约 4.70 倍) |
| 场景生成框架端到端准确率 | Framework Accuracy (FA = CSR × SQ, %) | 58.17% | ChatScene 11.03%,NL2Scenic 10.86% | 相比 ChatScene 提升 47.14 个百分点(约 5.27 倍),相比 NL2Scenic 提升 47.31 个百分点(约 5.35 倍) |
| 场景语义对齐质量(6 层模型人工评估平均) | Scenario Quality (SQ, %) | 76.12%(C11 配置) | ChatScene 36.68%,NL2Scenic 66.77% | 相比 ChatScene 提升 39.44 个百分点,相比 NL2Scenic 提升 9.35 个百分点 |
| 消融配置提示技术组合效果 | CSR (%) | C11 配置 CP+CoT+ICL+CodeICL 达 76.42% | 零样本 C1 为 0%,仅 CP 的 C4 为 12.20% | ICL 使 CSR 从 12.20%(C4)跃升至 47.15%(C5),CodeICL 进一步推升至 76.42%(C11) |
局限与改进
作者承认的局限包括四方面。第一,响应时间较长,C11 配置 RT 达 222.11 秒,因迭代生成导致多次 LLM 调用,虽作者称对离线场景可接受,但限制交互式实时应用。第二,强依赖强大闭源模型,开源模型 CSR 几乎为 0%(Qwen3:30B、Gemma3:27B 均为 0%,GPT-OSS:20B 仅 0.82%),框架对模型能力门槛高,难以本地低成本部署。第三,仅在 CARLA + Scenic 这一种 DSL/仿真器组合上验证,未扩展到 OpenScenario。第四,评估基准规模仅 123 个场景且高度集中在驾驶领域。我观察到的额外局限:语义准确率采用人工评估(6 层模型),存在主观性和不可重复性;FA = CSR × SQ 的乘法定义使 SQ 在 Road 层达 90.65% 但 Dynamic Objects 仅 58.16%,复杂动态行为生成仍是瓶颈;RAG 数据库需手工构建并人工标注组件描述,扩展到新 DSL 成本较高。
独立分析的弱点
独立分析的弱点及改进方向如下。弱点一:动态对象生成质量不足,Table III 显示 C11 的 DO(Dynamic Objects)层准确率仅 58.16%,远低于 Road(90.65%)。改进方向是为对抗性车辆设计强化提示策略,或引入对抗行为库(换道、急停、博弈)作为额外 RAG 源并加入运动学约束校验。弱点二:响应时间过长(222 秒),对交互式 chatbot 不友好。改进方向是并行化独立组件生成、引入缓存复用相似查询结果、用更小专门的模型蒸馏。弱点三:开源模型几乎不可用(CSR 接近 0%)。改进方向是针对开源小模型做 LoRA 微调,或设计教师-学生蒸馏流程将 Gemini 生成轨迹蒸馏到本地模型。弱点四:评估主观性。改进方向是引入基于仿真的自动化语义评估(对比生成场景与描述的关键事件序列)。弱点五:单一 DSL 依赖。改进方向是抽象中间表示使其能映射到 Scenic、OpenScenario 等多 DSL。
未来方向
作者明确提出的未来方向有两条主线。其一是引入多模态输入(如事故图像、道路草图),让用户用视觉方式补充场景描述,增强场景规范的丰富性与直观性。其二是加入 simulation-in-the-loop 反馈,将仿真器的运行结果(如碰撞、违规事件)回传给生成器进行迭代修正,形成生成-仿真-修正的闭环优化。基于本文成果可延伸的方向还包括:将逻辑结构分解范式推广到其他代码生成任务(机器人任务规划、UI 自动化脚本),验证迭代组件级加上下文累积的普适性;探索主动学习,让框架主动向用户提问以消解场景描述中的歧义;结合形式化验证,将生成的场景与法规条文做形式化等价检查,而非仅依赖人工评估;研究提示技术的组合理论,解释为何 DocICL 反而有害(可能与文档噪声、注意力分散有关),建立提示选择的指导原则;针对 Dynamic Objects 瓶颈,引入对抗性强化学习或博弈论建模提升复杂动态行为生成质量。
复现评估
复现评估总体良好。开源情况:作者在 GitHub 发布代码(https://github.com/TUM-AVS/chat2scenic),声明开源,是重大加分项。数据:基准 123 场景来自公开来源(CARLA Leaderboard 24、NHTSA Crash 16、PreCrash 31、UN R152 4、R157 12、R171 36),可重新获取;但代码片段库、文档库及人工标注组件描述需从仓库获取。算力:实验在 Dell Alienware R15 + NVIDIA RTX 4090(24GB)完成,主要是 API 调用成本而非本地训练,算力门槛中等,但闭源模型 API 费用(Gemini-3-Flash/Pro、DeepSeek-V3.2、Qwen)可能较高,开源模型用 Ollama 本地运行。软件依赖成熟工具:CARLA 0.9.15+Scenic 3.1.0+LangChain+LangGraph+sentence-transformers。复现难度中等偏高——代码可用降低门槛,但人工评估(6 层 SQ 打分)难完全复现,不同 LLM API 版本可能导致结果漂移。
论文图表
该图对比了三类 DSL 场景生成方法:Retrieval Assemble(从预定义库检索代码片段组装)、Direct Generation(直接生成完整脚本)、以及 Chat2Scenic(迭代式生成与数据库交互的 DSL 块)。图中直观展示 Chat2Scenic 如何在两者之间取平衡——既不依赖预定义片段,也不一次性生成完整程序,而是迭代生成组件。
这张图是理解本文方法定位的核心,一图道明 Chat2Scenic 相对已有范式的本质区别,是 motivation 部分的关键支撑。
该表系统对比 9 种 LLM 场景生成方法(TARGET、ChatScene、Text2Scenario、LEADE、LeGEND、ScenicNL、Talk2Traffic、Rubavicius、NL2Scenic 及 Ours)在 7 个维度的差异:UI、Documentation RAG、Contextual Prompting、CoT、ICL、RAG-ICL、Regulatory Test Specifications,并标注 Granularity(F/C/I)。本文是唯一全部打勾且 Granularity 为 Iterative 的方法。
这张表从能力维度证明本文的全面性和独特性,是定位创新点的直接证据,对理解 method 章节的贡献声明至关重要。
伪代码描述完整生成流程:步骤1 Interpreter 提取 $S_{int}$;步骤2 SettingsDetector + HeaderGenerator 生成全局配置 $G_{code}$(置信度 $\geq 0.6$ 才采用检测值);步骤3 按依赖顺序迭代生成 $R_{code}$、$E_{code}$、$O_{1:N,code}$、$T_{code}$,每步累积上下文,最后拼接输出 $S_{code}$。
这是方法的技术核心,精确描述了迭代组件生成的算法逻辑和上下文累积机制,是复现和理解的必读。
展示 123 个基准场景的来源分布:CARLA Leaderboard 24 个、NHTSA Crash 16 个、NHTSA PreCrash 31 个、UN R152 4 个、UN R157 12 个、UN R171 36 个。同时按 SCE/VRU/TC/Temporal/DB 五类标签和 Vehicle/VRU/DB 数量分类。
这张表说明基准的多源性和多样性,是理解评估覆盖面和泛化能力主张的基础。
消融研究的核心数据表,展示 12 个配置(C1-C12)在 CSR、RT、Tokens、6 层场景对齐(RL/TI/TM/DO/EN)、SQ、FA 上的表现。C11(CP+CoT+ICL+CodeICL)达到最佳 CSR 76.42%、SQ 76.12%、FA 58.17%;C12 加 DocICL 反而下降到 CSR 56.90%、FA 41.71%;零样本 C1 为 0%。
这是论文最关键的实验结果,揭示了提示技术的组合规律和最佳配置,是理解方法有效性和设计选择的核心证据。
对比 13 种模型/方法在 123 场景基准上的表现:开源模型(Qwen3-Coder:30B、Qwen3:30B、Gemma3:27B 等)CSR 接近 0%;闭源模型中 Gemini-3-Flash 最佳(CSR 76.42%、FA 58.17%),优于 Gemini-3-Pro(CSR 60.16%);与 SOTA 对比,ChatScene CSR 30.08%、NL2Scenic CSR 16.26%,本文显著领先。
这是与 SOTA 对比的核心结果表,直接证明本文方法的有效性和模型选择的重要性。