核心要点
看消费方是谁:人读为主可以 Markdown/HTML,机器处理为主优先 JSON 或 schema 输出。
HTML 适合富展示:卡片、表格、交互说明、报告页和可视化片段,用 HTML 表达力更强。
安全边界要前置:AI 生成 HTML 不能直接信任,必须做标签白名单、属性过滤和脚本隔离。
不要让格式承担不该承担的事:业务数据仍应结构化存储,HTML 更适合作为展示层而不是事实源。
标准回答
一、核心回答
二、可以按“谁来消费输出”来选格式。
如果输出主要给人阅读,比如总结、说明、评论,Markdown 通常最简单;如果输出要给程序继续处理,比如抽取字段、路由、入库,可以优先 JSON 或严格 schema;如果输出要直接呈现复杂版式,比如报告卡片、对比表、富文本片段、轻量交互说明,那 HTML 会更合适。
三、面试补充
HTML 的优势是表达力强。 它可以描述层级、表格、强调、链接、布局和一些可访问性语义,比 Markdown 更接近最终页面。但代价也很明显:HTML 容易带来 XSS、样式污染、结构不合法和可访问性问题。
所以我不会让模型自由输出任意 HTML。更稳的做法是:给它组件模板或允许标签白名单,只允许安全属性;输出后用解析器校验结构,过滤 script、事件属性和危险 URL;真正需要交互时放进沙箱或转换成受控组件。换句话说,HTML 可以作为展示层,但不能绕过安全和工程边界。
常见误区
⚠️ 常见踩坑
误区一:觉得 HTML 更强,所以所有场景都用 HTML。其实机器消费的数据最好还是 JSON/schema,HTML 不适合当事实源。
误区二:直接把 AI 生成 HTML 塞进页面。只要有用户输入参与 prompt,就必须按不可信内容处理。
追问
追问 1:如果产品要求 AI 生成富文本报告,你会怎么落地?
可以让模型输出受限 HTML 或结构化 JSON,再由前端组件渲染。简单报告可以用标签白名单过滤后的 HTML;复杂报告更推荐 JSON 描述 blocks,比如 heading、table、callout、chart,再由前端映射成组件。这样安全、样式一致,也方便后续编辑和审计。
追问 2:怎么防 AI 生成 HTML 带来安全问题?
核心是把它当不可信输入:禁止 script、iframe、事件属性、javascript: URL;限制标签和属性白名单;用 DOMPurify 这类工具清洗;必要时 iframe sandbox 隔离;同时加 CSP。不要因为内容来自模型就默认安全,模型输出本质上仍可能被 prompt 注入影响。
🔗 相似问题
同一考点的不同问法,换着练更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习
