WWW.YOUINFO.SITE
标签聚合 写法

/tag/写法

IT之家 · 2026-06-07 11:31:45+08:00 · tech

IT之家 6 月 7 日消息,据英国《金融时报》报道,由于担忧人工智能生成的不准确内容会扰乱司法流程,英国多个警察部门已接到通知,停止使用人工智能系统撰写法庭陈述及开展其他刑事司法相关工作。 英国警方人工智能中心( Police.AI )负责人亚历克斯・默里表示,他已介入干预部分警队。这些警队在未完成全面合规评估的情况下,就开始使用市面上的商用人工智能工具。 “我们已经叫停了部分相关应用。”默里称,他告知相关警队:“立刻暂停使用,我们需要放缓推进节奏。” 他补充道,应用于刑事司法体系的任何技术,其准确性都必须达到排除合理怀疑的严苛标准。 此次叫停行动,凸显出生成式人工智能在警务领域的应用争议日益加剧。默里负责监管英格兰和威尔士地区警方的人工智能使用工作。他表示,这项技术最终有望加快案件侦查与证据处理效率,但全面推广使用前必须先建立完善的安全保障机制。 Police.AI 于今年正式成立,是英国政府为提升警务整体效率推出的改革举措之一。英国内政大臣沙巴娜・马哈茂德表示,该项目三年合计获 1.15 亿英镑(IT之家注:现汇率约合 10.46 亿元人民币)资金支持,投入使用后节省的人力时间,相当于为英格兰和威尔士现有的约 14.5 万名在职警员增配 3000 名警力。 据默里介绍,部分警队开始借助商用人工智能系统,协助警员将审讯笔录整理为法庭陈述文书,警方人工智能中心随即出手干预。 默里并未透露涉及的具体警队,但他表示,警方同时也收到提醒:在完成全部合规审查前,不得将人工智能应用于其他警务工作。 “我们明确告知部分警队:目前不能这么做,因为全套审核与制衡流程尚未走完。”他说道。 他特别指出,证据披露清单的编制工作需要格外谨慎。这类清单是庭审前必须提交给辩方的证据记录。使用人工智能处理该项工作的警队,必须说明该技术的训练方式与实际应用流程。 默里坦言,警方此前使用人工智能已有过前车之鉴。去年,西米德兰兹郡警方在整理一份禁令佐证材料时,使用了微软智能助手 Copilot 生成的内容。这份材料旨在申请禁止某足球俱乐部球迷观赛,其中竟编造出以色列特拉维夫马卡比队的一场过往赛事。相关球迷原定前往现场观看该队与阿斯顿维拉队的比赛。 这起事件进一步引发了各界对人工智能幻觉问题的广泛担忧,人工智能幻觉也就是人工智能系统生成看似真实、实则虚假信息的现象。 “目前所有警队都已出台规范使用 Copilot 的相关制度,规定警员必须核查该工具生成的所有内容。”默里说。 尽管存在诸多隐患,但默里认为,经过全面测试的人工智能系统,能够为深陷工作量激增、案件侦查日趋复杂困境的警队带来显著助益。 监控录像分析就是极具前景的应用方向。现阶段,警员往往要耗费数小时人工回看录像,从中搜寻嫌疑人。 默里表示:“只要指令设置得当,人工智能完全可以做到按要求检索,比如‘找出戴红帽子的男子’。在证据尚存关键价值的黄金数小时乃至一两天内,我们就能锁定目标、上门抓捕,当场查获带有血迹的鞋证。” 他还提到,人工智能有能力处理海量电子证据,儿童性侵案件侦查便是典型场景。目前警方人工智能中心正在研发一款工具,可对查扣设备中的图片进行识别与分类,减少警员直接浏览不良影像的次数。 默里说:“警员只需抽样核验即可,不必逐一查看全部画面。这类内容会对人的身心造成极大伤害。我认为,只要配套完善监管规则、使用规范与人员培训,自动化技术带来的益处远大于弊端。”

v2ex.com · 2026-05-06 16:32:36+08:00 · tech

最近我在整理 GPT Image 2 的图片 Prompt 。 先看 3 张图: 产品图 Prompt Prompt 结构 图到视频工作流 很多人写 AI 图片 Prompt 时,会这样写: 生成一张高级感产品图,真实摄影,8K ,商业海报。 这类 Prompt 可以出图,但很难稳定复用。 因为模型不知道你真正要的是: 白底电商主图,还是品牌广告海报? 产品要居中,还是要留出文字区? 文字要不要可读? 是摄影图、3D 渲染、插画,还是 UI 截图? 是否需要保留参考图的形状、颜色、Logo 、比例? 成品用在小红书、独立站、亚马逊、电商详情页,还是 App 首屏? 我更倾向于把 GPT Image 2 Prompt 当成一份“视觉设计 Brief”,而不是一串形容词。 先给一个通用公式 多数可复用的图片 Prompt ,都可以拆成: 用途:这张图用在哪里 主体:画面主角是什么 版式:主体、文字、留白、模块怎么摆 风格:摄影、3D 、插画、UI 、信息图等 细节:材质、光线、背景、镜头、比例 文字:需要出现哪些精确文字,放在哪里 约束:不要乱码、不要变形、不要水印、不要多余 Logo 如果只写“高级感”,模型会自由发挥。 如果写清用途和版式,结果更像能交付的设计图。 案例 1:产品摄影图 这张图适合拆产品摄影 Prompt 。 它不是单纯靠“高级感”,而是把产品图拆成了几个明确条件: 产品是什么 角度怎么拍 光线是什么 哪些细节必须保留 输出要适配哪些使用场景 可复用 Prompt: 生成一张 [产品类型] 商业摄影图。 产品以 [角度] 展示,位于 [干净背景 / 工作台 / 户外场景] 。 保持产品的形状、比例、颜色、材质和关键结构准确。 使用 [柔光 / 侧光 / 高反差光 / 自然光] 突出 [卖点] 。 画面用途是 [电商主图 / 品牌广告 / 详情页头图] 。 不要添加虚假 Logo 、乱码文字、额外按钮、变形结构或无关道具。 适合改成: 手表广告 耳机广告 鞋子详情页 饮料罐商业摄影 护肤品瓶身图 案例 2:Prompt 结构图 这张图对应的是一个更通用的 Prompt 结构: Prompt:一句话任务 Subject:主体 Composition:构图 Constraints:限制条件 很多失败的 AI 图片,不是模型不会画,而是 Prompt 没有把这四层写清楚。 一个更稳的写法: 任务:生成一张 [用途] 图片。 主体:画面主体是 [主体] ,必须保持 [关键外观] 。 构图:主体位于 [位置] ,画面保留 [文字区 / 留白区 / 模块区] 。 风格:整体为 [摄影 / 插画 / 3D / UI / 海报] 。 限制:不要乱码、不要水印、不要多余 Logo 、不要结构变形。 这个结构特别适合做: 海报 产品图 App UI 信息图 角色设定 社媒封面 案例 3:从单张图到视频工作流 这张图不是单张图片生成,而是一个工作流: 首帧图 -> 参考图 -> 分镜 -> Motion Prompt -> 视频结果 如果你后续要从图片进入视频生成,这个结构很有用。 图片 Prompt 不只是“生成一张图”,还可以为后续视频做准备: 生成一张视频首帧图。 主体是 [产品/角色/场景] 。 构图要适合后续动画,主体位于画面中心或三分线位置。 背景包含可运动元素,如水花、云层、灯光、风、布料。 光线和色调保持电影感。 不要添加复杂文字,不要让主体被遮挡。 首帧图要注意: 主体要清楚 背景不能太乱 光线方向要明确 适合后续运动 不要塞太多文字 再看 3 个视频工作流 CSDN 对外链视频的支持有时不稳定。如果编辑器里 <video> 不显示,可以删掉视频标签,只保留下面的视频链接。 产品广告工作流 <video controls width="100%" src=" https://cdn.nano-banana-2-ai.com/uploads/workflows/gpt-image-2/product-ad/product-ad-result.webm "></video> 视频链接: https://cdn.nano-banana-2-ai.com/uploads/workflows/gpt-image-2/product-ad/product-ad-result.webm 这个例子适合看“产品首帧图 -> 广告动态效果”的衔接。图片 Prompt 里要提前给后续运动留空间,比如水花、光线、背景层次和主体位置。 角色动作工作流 <video controls width="100%" src=" https://cdn.nano-banana-2-ai.com/uploads/workflows/gpt-image-2/character/character-result.webm "></video> 视频链接: https://cdn.nano-banana-2-ai.com/uploads/workflows/gpt-image-2/character/character-result.webm 角色类图片不要只追求单张好看,更重要的是身份一致:发型、服装、五官比例、道具、色彩要能在后续分镜里继续复用。 Storyboard 工作流 <video controls width="100%" src=" https://cdn.nano-banana-2-ai.com/uploads/workflows/gpt-image-2/storyboard/storyboard-result.webm "></video> 视频链接: https://cdn.nano-banana-2-ai.com/uploads/workflows/gpt-image-2/storyboard/storyboard-result.webm Storyboard 的重点不是“画得多炫”,而是让镜头顺序清楚。每一帧最好都写清主体、动作、景别、镜头方向和情绪。 案例 4:电商主图和场景图要分开写 产品图常见失败原因:一条 Prompt 同时想做主图、场景图、海报、详情页。 建议分开: 主图:产品清楚,背景干净,形状准确。 场景图:展示使用情境,允许道具和环境。 卖点图:需要文字区、箭头、局部放大或信息模块。 社媒广告:需要情绪、冲击力和标题区域。 主图模板: 生成一张 1:1 电商产品主图。 产品是 [产品] ,正面居中展示。 白色背景,柔和阴影,边缘清晰。 产品占画面 70%,完整可见。 不要道具,不要文字,不要虚假 Logo ,不要变形。 场景图模板: 生成一张 16:9 产品生活方式场景图。 产品是 [产品] ,放在 [场景] 中。 使用自然光和真实阴影。 右侧保留干净留白,方便后期加标题。 保持产品形状和材质准确,不要添加无关物品。 案例 5:海报文字要短、准、少 AI 图片里最容易翻车的是文字。 不要写: 加一些高级标题和说明文字 建议写: 生成一张竖版活动海报。 主标题只写: [精确标题] 。 副标题只写: [精确副标题] 。 文字放在顶部,使用粗体无衬线字体。 主视觉位于画面中央。 不要添加其他文字、乱码、伪 Logo 或多余标签。 经验: 主标题尽量 2 到 6 个字 副标题尽量一行 不要同时要求太多小字 如果文字重要,生成后一定人工检查 案例 6:角色设定要写成资产,不要只写美图 如果只是发社媒,一张漂亮角色图就够了。 但如果要做 IP 、游戏、短剧、贴纸包,就要写成角色设定表: 生成一张角色设定表。 角色身份是 [身份] ,年龄和气质是 [描述] 。 包含正面、侧面、背面、3 个表情、2 个动作姿势、核心道具和配色说明。 风格为 [动漫 / 3D / 写实 / Q 版 / 游戏概念设定] 。 所有视图保持同一个角色身份、服装、发型和比例。 不要改变五官,不要出现多余角色,不要乱码标注。 角色设定表的价值是复用,而不是单张图的视觉冲击。 最后给一个总模板 生成一张 [图片用途] 。 主体是 [主体] ,用于 [平台/场景] 。 画面比例为 [比例] 。 构图为 [主体位置 + 留白位置 + 文字区域] 。 风格为 [摄影 / 3D / 插画 / UI / 信息图 / 海报] 。 重点突出 [卖点或视觉重点] 。 必须保持 [产品形状 / 人物身份 / 品牌色 / 文字内容] 。 只允许出现以下文字: [精确文字] 。 不要添加乱码、水印、多余 Logo 、变形结构、无关元素。 建议不要收藏一堆“神奇咒语”,而是按用途保存模板: 产品主图模板 海报文字模板 UI 截图模板 信息图模板 角色设定模板 Storyboard 模板 这样下次只需要替换主体、比例、颜色、标题,就能快速得到新图。 完整 Prompt 库 我把完整可检索版本整理在这里,方便按案例标题查 Prompt: GPT Image 2 Prompt Library: https://gptimg2.art/prompts/gpt-image-2 建议先从一种用途开始,比如产品主图或 UI Mockup ,挑 10 条类似案例拆结构。比起一次性看几千条 Prompt ,这样更容易真正变成自己的能力。

v2ex.com · 2026-05-06 15:42:18+08:00 · tech

最近我在整理 Seedance 2.0 相关的视频 Prompt 。 一开始我以为重点是找“更炫的关键词”,比如电影感、大片质感、8K 、超写实、运镜高级。 但看了很多真实案例以后,我发现真正有复用价值的 Prompt ,通常不是靠堆风格词,而是靠更清楚的结构。 尤其是视频 Prompt ,和图片 Prompt 不太一样。 图片 Prompt 更关注主体、风格、构图和细节;视频 Prompt 还要额外交代: 画面里谁在动 怎么动 镜头怎么跟 每个时间段发生什么 声音、台词、口型要不要同步 人物、产品、服装是否要保持一致 哪些错误需要明确禁止 这篇文章主要分享我从一批 Seedance 2.0 Prompt 里总结出来的 8 类写法。 如果你也在做 AI 视频、短视频分镜、产品广告、图生视频或角色一致性测试,可以直接拿这些结构去改。 为了方便直观看,下面我会在每类写法里放一个案例缩略图和视频示例。建议先看结果,再看 Prompt 结构,这样更容易理解为什么某些写法会更稳定。 先说结论 整理完这些 Prompt 后,我有几个比较明确的感受: 视频 Prompt 最重要的不是“形容词”,而是“动作和时间结构”。 想要稳定,最好把一个视频拆成 2 到 4 个镜头段落。 图生视频要优先说明“保留什么”,再说明“让它怎么动”。 产品广告类 Prompt 要写材质、卖点、镜头和环境反应。 人物视频要写脸部一致性、服装一致性、动作幅度和口型要求。 动作戏不能只写“打斗很燃”,要写清空间关系、攻击方式和镜头节奏。 声音不是附加项,台词、环境声、音乐节奏都会影响视频理解。 发布或复用公开 Prompt 时,最好保留来源和作者信息,避免把别人的完整案例当成自己的原创。 下面按场景拆。 一、通用视频 Prompt:先把“镜头计划”写出来 很多人写视频 Prompt 时,会像写图片一样: 一个女孩在城市街头,电影感,超真实,8K ,高级光影。 这类描述不是完全没用,但它对视频来说太空了。 更稳的写法是把 Prompt 当成一个小分镜。 可复用结构: 主题:这个视频要表达什么 主体:人物 / 产品 / 动物 / 场景 / 角色 场景:时间、地点、天气、环境元素 动作:主体在几秒内做什么 镜头:推、拉、摇、移、跟拍、环绕、特写、俯拍 风格:写实、广告片、动漫、纪录片、MV 、电影短片 时间段:0-5 秒、5-10 秒、10-15 秒分别发生什么 声音:环境声、音乐、台词、音效 限制:不要字幕、水印、变脸、抖动、穿帮、畸形 一个简单模板: 生成一个 10 秒视频,主题是 [主题] 。 主体是 [主体] ,位于 [场景] 。 整体风格为 [风格] ,画面比例 [比例] 。 0-3 秒: [第一个动作和镜头] 3-7 秒: [第二个动作和镜头] 7-10 秒: [收尾动作和画面] 要求保持 [需要稳定的元素] 一致。 避免 [常见错误] 。 这个模板不复杂,但比“高级电影感”可控很多。 案例预览:街头赛车镜头 <video controls width="100%" src=" https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/3a7fb0a6d706b9f568479bb720ce1ad4/downloads/default.mp4 "></video> 视频示例: https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/3a7fb0a6d706b9f568479bb720ce1ad4/downloads/default.mp4 这个案例适合观察“镜头计划”的价值。它不是只写一辆车很快,而是把车内特写、按钮、外部跟拍、低机位轮胎、街道追逐这些镜头串起来,所以画面更像一段剪辑好的短片。 二、电影短片类:氛围要写,动作更要写 电影短片 Prompt 常见问题是太依赖氛围词。 比如: 日系青春电影,暧昧,阳光,教室,纯爱,电影感。 这能给模型一个方向,但还不够。 如果想让结果更像一段视频,而不是一张会动的海报,需要写清人物关系、微表情、镜头推进和时间变化。 可复用结构: 故事氛围 + 场景细节 + 人物关系 + 微动作 + 分段镜头 + 声音设计 + 一致性要求 示例结构: 15 秒日系青春短片,空教室,下午金色阳光透过百叶窗,桌面有细小尘埃漂浮。 0-4 秒:中景缓慢推进到两人侧脸。女生低头写字,发丝被微风轻轻吹动,呼吸自然。 4-9 秒:切到男生近景。他偷偷看向女生,发现她停笔后慌忙移开视线,手指轻微发抖。 9-15 秒:两人视线相遇,女生短暂愣住后低头,轻声说一句台词,男生小声回应。 要求:脸部、发型、校服保持一致;口型自然;动作克制;不要字幕、水印和夸张表情。 声音:远处蝉鸣、笔尖划纸声、很轻的钢琴。 案例预览:日系青春短片 <video controls width="100%" src=" https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/1402.mp4 "></video> 视频示例: https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/1402.mp4 这个案例里最值得学的不是“纯爱”“电影感”这些词,而是它把呼吸、眼神、手指发抖、短暂停顿、低声台词都写进去了。AI 视频里,微动作越具体,结果越容易像一段真实表演。 重点不是把故事写长,而是把“可拍出来的动作”写清楚。 三、产品广告类:不要只写产品外观,要写展示逻辑 产品广告 Prompt 如果只写“高级产品广告”,经常会出现两个问题: 产品很漂亮,但卖点不清楚。 镜头很好看,但产品形状容易变。 这类 Prompt 最好按广告片逻辑写: 产品主体 + 材质细节 + 核心卖点 + 镜头运动 + 环境反应 + 禁止变形 可复用结构: 生成一个 [产品] 广告短片。 产品位于 [场景] ,材质为 [材质] ,核心卖点是 [卖点] 。 0-3 秒:产品静态亮相,镜头 [推近 / 环绕 / 低角度] 。 3-7 秒:展示 [功能或材质变化] ,突出 [细节] 。 7-10 秒:产品完成最终姿态,背景光线和反射强调高级感。 要求产品结构稳定,不要多余文字,不要标签变形,不要出现不存在的按钮或接口。 如果是手表、耳机、鞋、饮料、护肤品这类产品,最好额外写: 表面材质 反光方式 是否有水滴、烟雾、灰尘、冰块 镜头距离 产品是否旋转 标签或 Logo 是否必须清晰 这里要特别注意:如果涉及真实品牌、参数、认证标识,生成后一定要人工复核。 案例预览:高定幻想广告 <video controls width="100%" src=" https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/594.mp4 "></video> 视频示例: https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/594.mp4 这个案例可以当成“材质驱动广告片”的参考。它不是简单写一条裙子很高级,而是写了液态青花瓷、镜面盐湖、低角度镜头、碎裂成水墨燕子、最后进入流体漩涡。产品、服装、艺术装置类视频都可以参考这种“材质变化 + 镜头段落 + 视觉结果”的写法。 四、图生视频:先固定首帧,再控制运动 图生视频的核心不是“让图片动起来”这么简单。 更准确地说,它是在一张参考图的基础上控制变化范围。 所以 Prompt 里要先写清楚保留项: 保持人物脸部、五官、发型、服装、产品形状、主色调、构图一致 然后再写运动项: 只让头发、衣摆、镜头、光线、背景粒子发生轻微变化 可复用结构: 基于参考图生成视频。 必须保持 [脸部 / 产品 / 服装 / 构图 / 颜色] 一致。 允许变化的是 [动作 / 镜头 / 光线 / 背景 / 特效] 。 0-4 秒: [轻微动作] 4-8 秒: [镜头变化] 8-10 秒: [收尾姿态] 禁止改变五官、脸型、产品结构、服装颜色和主体身份。 图生视频里,限制条件非常重要。 如果你只写“让她跳舞”“让产品旋转”,模型可能会顺手改掉脸、衣服、产品结构或背景。 更稳的思路是: 先说明不能变的部分 再说明可以动的部分 最后说明不要出现的错误 案例预览:参考图角色一致性 <video controls width="100%" src=" https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/846845dc60598558687d67d6abcc1c3d/downloads/default.mp4 "></video> 视频示例: https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/846845dc60598558687d67d6abcc1c3d/downloads/default.mp4 这类案例里常见写法是 exactly matching @img1 、 character consistency 。它的重点不是把参考图重新描述一遍,而是告诉模型:参考图里的角色身份、脸、服装和整体气质必须保持,然后只让角色在新场景里运动。 五、变装和转场类:写清“转场机制” 变装类视频很容易出效果,但也很容易乱。 很多人只写: 古风美女连续变装,丝滑转场,抖音爆款。 这不够。 变装 Prompt 最关键的是转场机制。 常见转场方式包括: 袖子扫过镜头 团扇遮面 转身遮挡 披帛甩动 手掌靠近镜头 光效覆盖主体 裙摆扫过画面 可复用结构: 人物设定 + 初始造型 + 每秒服装变化 + 每次转场遮挡方式 + 镜头稳定要求 + 节奏要求 示例结构: 10 秒古风变装视频,中景跟拍,人物脸部保持一致。 0-1 秒:素色襦裙,站定垂手,暖调柔光。 1-2 秒:转身拂袖,衣袖扫过镜头完成变装,换成白色仙裙。 2-3 秒:团扇遮面,扇子移开后换成粉色襦裙。 3-4 秒:裙摆扫过画面,换成蓝绿色渐变古风裙。 ... 9-10 秒:回到初始造型,镜头稳定收尾。 要求:转场自然,服装变化明确,脸部一致,不要生硬切镜,不要多余文字。 这类 Prompt 的重点是:每一次变化都要有“遮挡动作”。 没有遮挡动作,模型就很容易把变装做成跳帧。 案例预览:古风变装转场 <video controls width="100%" src=" https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/1967.mp4 "></video> 视频示例: https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/1967.mp4 看这类案例时,建议重点观察每次变装前有没有“遮挡动作”。袖扫、转身、手掌、团扇、光效,本质上都是给模型一个合理的视觉过渡点。 六、动作和特效类:先写空间关系,再写打斗 动作戏最怕只写“打得很燃”。 因为模型不知道谁从哪里来,攻击谁,镜头站在哪里。 动作类 Prompt 可以这样拆: 场地 + 角色位置 + 攻击路线 + 防守动作 + 特效类型 + 镜头节奏 + 最终结果 例如真人动漫对战、武侠、机甲、怪兽、街头格斗,都适合这种结构。 可复用结构: 场景: [地点、天气、地面状态、背景元素] 角色 A: [服装、武器、站位、能力] 角色 B: [服装、武器、站位、能力] 0-5 秒:角色 A 蓄力,特效如何出现,镜头如何靠近。 5-10 秒:角色 B 反击,移动路线和速度如何表现。 10-15 秒:双方碰撞,特效如何爆发,环境如何受到影响。 要求动作清晰,不要血腥,不要肢体畸形,不要镜头乱跳。 动作戏里的“环境反应”也很重要。 比如: 落叶被气流卷起 地面积水被震开 玻璃反射闪光 雾气被冲散 尘土被脚步带起 这些细节会让特效不只是贴在画面上,而是和场景产生关系。 案例预览:真人动漫对战 <video controls width="100%" src=" https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/189.mp4 "></video> 视频示例: https://github.com/YouMind-OpenLab/awesome-seedance-2-prompts/releases/download/videos/189.mp4 这个案例把动作戏拆成“起式、突进、对撞”三段。每段都说明角色位置、能力效果和环境反应,所以特效不是随机闪光,而是围绕动作推进。 七、台词和声音类:口型、停顿和音效要分开写 如果视频里有台词,Prompt 不能只写一句对白。 最好把这些信息拆开: 谁说话 什么语气 什么时候说 口型是否同步 停顿多长 背景声是什么 音乐节奏是否配合动作 可复用结构: 台词: [具体台词] 语气: [低声、紧张、兴奋、克制、冷幽默] 口型: [自然、轻微、不要夸张] 停顿: [短暂停顿、迟疑、打断] 环境声: [风声、雨声、车声、脚步声、纸张声] 音乐: [轻钢琴、电子鼓点、低频氛围、无音乐] 示例: 女生轻声说:“你在看什么?” 语气害羞,音量低,停顿自然,口型轻微变化,不要夸张张嘴。 男生停顿 0.4 秒后小声回答:“没什么。” 背景有远处蝉鸣和笔尖划纸声,最后进入很轻的钢琴。 如果台词很重要,建议不要把它藏在长段落里,单独列出来更清楚。 案例预览:动作喜剧台词 <video controls width="100%" src=" https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/bb5d9aa4e44f9d44900e0a5781fa3e47/downloads/default.mp4 "></video> 视频示例: https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/bb5d9aa4e44f9d44900e0a5781fa3e47/downloads/default.mp4 这类 Prompt 很适合学习台词节奏。它把角色对白、反应、动作和音效放在同一个时间线上,读起来像短剧脚本。做 AI 短剧、广告口播、剧情反转时,这种格式比单独写一句台词更稳。 八、物理写实类:写清运动原因和环境反馈 有些视频看起来“不真实”,不是因为画质低,而是因为运动没有物理原因。 比如鹰飞行、赛车漂移、水滴飞溅、衣服摆动、人物落地,都需要交代力和反馈。 可复用结构: 主体运动 + 受力变化 + 环境反馈 + 镜头跟随 + 真实限制 示例结构: 一只金雕从悬崖起飞,翅膀展开时羽毛分离明显,气流阻力让初级飞羽独立弯曲。 镜头使用稳定航拍跟随,中距离平行移动。 金雕接近城市屋顶时逐渐减速,爪子前伸,落在金属招牌上。 落地瞬间招牌轻微震动,羽毛自然收拢,头部有微小观察动作。 要求真实鸟类解剖结构,真实重量转移,避免夸张慢动作和不自然插帧。 写实类 Prompt 里,最有用的不是“超真实”,而是: 什么力量导致了什么运动 运动又让环境产生了什么反馈 案例预览:金雕物理运动 <video controls width="100%" src=" https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/a6bdca94d1ce92fba822adab24159aa1/downloads/default.mp4 "></video> 视频示例: https://customer-qs6wnyfuv0gcybzj.cloudflarestream.com/a6bdca94d1ce92fba822adab24159aa1/downloads/default.mp4 这类写法尤其适合动物、飞行、赛车、液体、火焰、布料和机械装配。只写“真实”不够,要写清楚气流、重量、阻力、接触、震动和环境反馈。 我整理 Prompt 时保留的字段 如果你也想做自己的 Prompt 库,建议每条至少保留这些字段: 标题 原始 Prompt 模型 视频时长 画面比例 标签 视频结果 缩略图 作者或来源 适用场景 可复用结构 这样后续复盘会方便很多。 比如同样是“人物变身”,你可以对比: 哪些 Prompt 写了时间段 哪些 Prompt 写了参考图一致性 哪些 Prompt 写了声音 哪些 Prompt 写了禁止项 哪些 Prompt 写了环境反馈 看多了以后会发现,高质量 Prompt 往往不是“更长”,而是“更像一个可执行的拍摄计划”。 一个更稳的使用流程 我现在更推荐这个流程: 先选一个明确场景 -> 找一个相似 Prompt -> 只替换主体、场景和风格 -> 保留镜头结构 -> 生成第一版 -> 只改一个变量 -> 保存有效版本 不要每次都从零写。 AI 视频 Prompt 最值得积累的,不是某一句神奇咒语,而是一套能反复改主题的结构。 写在最后 这次整理最大的收获是:视频 Prompt 本质上更接近“分镜脚本”,而不是普通描述词。 如果你只写风格,结果会很随机。 如果你写清主体、动作、镜头、时间段、声音、限制条件和一致性要求,结果通常更容易复盘,也更容易二次修改。 我把完整可检索版本整理到了这里,方便按案例查 Prompt: Seedance 2.0 Prompt Library: https://cdance.ai/prompts/seedance-2-0 站里也整理了 GPT Image 2 和 Nano Banana Pro 的 Prompt ,但我建议先不要贪多。先从一种模型、一类场景、一个可复用模板开始,慢慢建立自己的 Prompt 库。 希望这些结构对你写 AI 视频 Prompt 有帮助。

v2ex.com · 2026-05-01 09:56:09+08:00 · tech

想起茴香的茴子有四种写法,孔乙己先生是高明的,他如果生在这个时代,就能用不同的思路让 AI 帮他解决问题了。 Python 列表去重的 20 种实现方式 列表(数组)去重是最常见的算法,非常简单,但不同实现方式背后的差异巨大。AI 时代,可以不手写代码了,但需要知道代码背后的原理,这样才能更好地指导 AI 编程。 最简单的思路 新建列表,遍历原列表,当原列表的元素不在新列表的,则添加到新列表中。 def unique(data): # 新建 list new_list = [] for item in data: # 原 list 中的项是否存在于新 list 中,不存在则添加。这是 O(n)操作 if item not in new_list: new_list.append(item) return new_list 这种写法最直观易懂,但每次 not in 都要遍历整个 new_list ,复杂度为 O(n²)。 如何降低复杂度呢?可以从以下角度思考: 哈希集合 / 字典:把查询从 O(n) 可压到 O(1),整体 O(n) 先排序:相同元素两两比较再去重,O(nlogn),但会破坏原顺序 函数式 / 递归:写法上换一种风格,适用不同场景,本质仍是上面的方式 第 1 类:基础循环(方法 1-8 ) 策略原理:遍历原数组,直接用双重循环或下标比较找出重复项。每一步判断"是否存在"都是 O(n),整体复杂度 O(n²)。 适用场景:这里主要是展示算法原理,用于教学示例,弄懂编程原理。生产代码不建议使用。 # 方法 1:最基础的线性查找 def unique_v1(data): new_list = [] for item in data: # in 在列表上是 O(n) 扫描,整体 O(n²) # 该元素不在新 list 则添加 if item not in new_list: new_list.append(item) return new_list # 方法 2:用下标遍历 def unique_v2(data): new_list = [] for i in range(len(data)): # 与第 1 种相同,遍历方式换成 range ,复杂度不变 if data[i] not in new_list: new_list.append(data[i]) return new_list # 方法 3:列表推导式 def unique_v3(data): new_list = [] # 利用列表推导式的副作用追加元素,写法简化,本质与前面一样 [new_list.append(i) for i in data if i not in new_list] return new_list # 方法 4:通过元素首次出现位置判断 def unique_v4(data): new_list = [] for i in range(len(data)): # data.index(x) 返回 x 在 data 里第一次出现的下标 # 当前下标恰好等于该值时,说明该元素是首次出现,将首次出现的添加到新 list if i == data.index(data[i]): new_list.append(data[i]) return new_list # 方法 5:原地删除(从右往左扫描) def unique_v5(data): l = len(data) while l > 0: l -= 1 i = l while i > 0: i -= 1 # 在 [0, l) 区间里寻找与 data[l] 相同的元素 # 找到就删后面那个,保留前面的 if data[i] == data[l]: del data[l] break return data # 修改原列表,空间 O(1) # 方法 6:原地删除(从左往右扫) def unique_v6(data): l = len(data) i = 0 while i < l: j = i + 1 while j < l: # 把 data[i] 后面所有等于它的元素删掉 if data[i] == data[j]: del data[j] l -= 1 # 列表变短,长度同步更新 else: j += 1 i += 1 return data # 方法 7:用 try-except 替代 in def unique_v7(data): new_list = [] for item in data: try: # index 找不到会抛 ValueError new_list.index(item) except ValueError: # 找不到才追加 new_list.append(item) return new_list # 实际上不会这么使用——拿异常处理正常的控制流,性能和可读性都吃亏 # 方法 8:双层循环+下标判断 def unique_v8(data): new_list = [] for i in range(len(data)): j = 0 while j <= i: # 看 data[i] 在它之前是否出现过 if data[i] == data[j]: # 只有 j == i (前面都没遇到)时才追加 if i == j: new_list.append(data[i]) break j += 1 return new_list # 内层只跑到 i 而非 n ,比较次数约为方法 1 的一半,但渐进复杂度仍是 O(n²) 第 2 类:哈希表(方法 9-12 ) 策略原理:利用 dict 或 set 的键( Key )唯一性来记录"已经出现的元素"。哈希结构的查询是 O(1),因此整体降到 O(n)。代价是需要 O(n) 额外内存空间,且元素必须可哈希——数字、字符串、元组都可以,但 list 、dict 这类可变对象不行。 适用场景:日常项目的首选。需要保留原顺序时尤其合适,因为一边查重一边按原序写入结果。 # 方法 9:set 配合 list——工程最常见写法 def unique_v9(data): seen = set() # set 用于 O(1) 判重 result = [] # list 用于保持原顺序 for item in data: if item not in seen: seen.add(item) result.append(item) return result # 方法 10:dict.fromkeys()——最佳版本,实际使用首选 def unique_v10(data): # dict 自 Python 3.7 起保持插入顺序 # fromkeys 会自动用相同 key 覆盖,从而完成去重 return list(dict.fromkeys(data)) # 方法 11:filter + 列表,函数式风格 def unique_v11(data): seen = [] # 内部函数 def check(item): # 闭包捕获 seen # 注意 seen 是 list ,in 仍是 O(n),整体仍是 O(n²) if item not in seen: seen.append(item) return True return False return list(filter(check, data)) # 函数式风格,但不纯粹,seen 类型选错了,这里只是为了展示写法 # 方法 12:filter + 字典,由 list 改为 dict ,仍然不是纯函数式 def unique_v12(data): obj = {} def check(item): # 用 dict 替代上面的 list ,查询变成 O(1) if obj.get(item) is None: obj[item] = item return True return False return list(filter(check, data)) 第 3 类:集合与排序(方法 13-16 ) 策略原理:将 list 直接转 set ,或者通过 sort() 让相同元素挨在一起再去重,从而简化查找逻辑。两种思路都不再保留原有顺序。集合方式 O(n),排序方式 O(nlogn),且要求元素可比较。 适用场景:不关心顺序、只关心结果集合的场合,例如统计去重数量、做集合运算、把列表当作"无序集合"使用。 # 方法 13:set 直接转列表,常见用法 def unique_v13(data): # 哈希集合天然不重复 return list(set(data)) # 写法最短,但顺序会被打乱 # 方法 14:map + filter 组合 def unique_v14(data): seen = [] def mark(item): # 第一次见到返回元素本身,后续返回 None if item not in seen: seen.append(item) return item return None # 先 map 标记,再 filter 把 None 去掉 return list(filter(lambda x: x is not None, map(mark, data))) # 函数式风格,但 seen 用 list 仍是 O(n²) # 方法 15:先排序再相邻去重(从右往左删) def unique_v15(data): data.sort() # 排序后,相同元素会聚到一起 l = len(data) while l > 0: l -= 1 # 相邻两两比较,相同就删后面那个 if l > 0 and data[l] == data[l-1]: del data[l] return data # 复杂度由 sort 决定,O(nlogn);元素需要可比较 # 方法 16:先排序再相邻去重(从左往右删) def unique_v16(data): data.sort() l = len(data) - 1 i = 0 while i < l: if data[i] == data[i+1]: del data[i] # 删当前,i 不前进;同时长度减一 i -= 1 l -= 1 i += 1 return data 第 4 类:函数式与递归(方法 17-20 ) 策略原理:用 reduce 、外部库或递归换一种表达方式。 reduce 配合元组累加器可以做到 O(n),但写法比直接 for 循环晦涩;递归则吃调用栈、numpy 需要库依赖。 适用场景:numpy 适合大规模数值数据;其余几种主要用于练习函数式或递归思维,工程上一般直接用第 2 类。 # 方法 17:reduce + 元组累加器(函数式风格但能跑到 O(n)) import functools def unique_v17(data): def foo(acc, item): # 累加器是一个元组 (result, seen) # result 保留首次出现的顺序,seen 用集合实现 O(1) 判重 result, seen = acc if item in seen: return (result, seen) # 这里直接修改累加器内部的 list 和 set # 严格的纯函数式应返回新对象 (result + [item], seen | {item}) # 但那样每步都新建列表/集合,复杂度退回到 O(n²) # 在 reduce 内做"受控副作用",换取 O(n) 的性能 seen.add(item) result.append(item) return (result, seen) # 初始累加器是空列表+空集合,最后取 [0] 即得到去重结果 return functools.reduce(foo, data, ([], set()))[0] # O(n);保序;本质是用 reduce 重写了方法 9 的循环 # 方法 18:调用 numpy.unique def unique_v18(data): import numpy as np # numpy 底层用 C 实现的排序+相邻去重 return list(np.unique(np.array(data))) # O(nlogn);不保序;适合大规模数值数据 # 方法 19:递归+原地删除 def unique_v19(data, length=None): # 递归退出条件 if length is None: length = len(data) if length <= 1: return data last_idx = length - 1 # 看末尾元素是否在前面出现过 is_repeat = False for i in range(last_idx): if data[i] == data[last_idx]: is_repeat = True break # 重复则删除 if is_repeat: del data[last_idx] # 递归调用,处理前 length-1 项 return unique_v19(data, length - 1) # 递归深度 = n ,大数据会栈溢出,仅作学习用 # 方法 20:递归+拼接返回(不修改原列表) # 递归自后往前逐个调用,当长度为 1 时终止。与上一个递归不同,这里将不重复的项目作为结果拼接起来 def unique_v20(data, length=None): if length is None: length = len(data) if length <= 1: return data last_idx = length - 1 last_item = data[last_idx] is_repeat = False for i in range(last_idx): if data[i] == last_item: is_repeat = True break # 末尾元素重复就丢弃,否则拼到结果末尾 result = [] if is_repeat else [last_item] # 切片 + 拼接都会产生新列表,空间开销大 return unique_v20(data[:last_idx], length - 1) + result # 演示如何用递归构造结果,工程上没有实用价值 这么多实现方式,如何选择? 类别 时间复杂度 是否保序 主要场景 基础循环 O(n²) 是 教学、极小规模 哈希表 O(n) 是 日常项目首选 集合 / 排序 O(n) / O(nlogn) 否 不在意顺序 函数式 / 递归 视实现而定 看实现 学习、特定场景 实际项目里怎么选 绝大多数情况一行就够: # 保序、O(n)、对所有可哈希类型有效,Python 3.7+ 自带 result = list(dict.fromkeys(data)) 不在意顺序: result = list(set(data)) 数据量很大且都是数值: import numpy as np result = list(np.unique(data)) 带逻辑干预的去重 前面所有方法都把"重复的元素"直接丢掉。但实际工作里经常遇到这样的情况:遇到重复时不能简单丢弃,要根据某个条件做处理。比如: 按 id 去重,但要保留分数最高的那条记录 去重的同时累加重复次数(即频次统计) 数值在某个区间内才参与去重,区间外原样保留 这类需求 set 和 dict.fromkeys 都没法直接表达,需要把"判重"和"处理"两步拆开来写。 def unique_with_rule(data, key=None, on_duplicate=None): """ 带逻辑干预的去重。 key: 可哈希的去重键,默认拿元素本身 on_duplicate: 遇到重复时如何处理 (旧值, 新值) -> 新的"代表值" 返回 None 时保持旧值不变(即等同于丢弃新值) """ if key is None: key = lambda x: x chosen = {} # 键 -> 当前选中的元素 order = [] # 记录键首次出现的顺序,保证保序 for item in data: k = key(item) if k not in chosen: chosen[k] = item order.append(k) elif on_duplicate is not None: # 遇到重复时由调用方决定如何合并 merged = on_duplicate(chosen[k], item) if merged is not None: chosen[k] = merged return [chosen[k] for k in order] 例 1 ,按 id 去重,保留分数最高的: students = [ {'id': 1, 'name': '张三', 'score': 90}, {'id': 1, 'name': '张三', 'score': 95}, # 同 id ,分数更高 {'id': 2, 'name': '李四', 'score': 99}, ] result = unique_with_rule( students, key=lambda x: x['id'], on_duplicate=lambda old, new: new if new['score'] > old['score'] else old, ) # [{'id':1,'score':95,...}, {'id':2,'score':99,...}] 例 2 ,去重的同时统计每个值的出现次数: from collections import Counter data = ['A', 'B', 'A', 'C', 'B', 'A'] # Counter 本身就是"键->计数",遍历一次即可完成统计 counts = Counter(data) # Python 3.7+ 起 dict / Counter 保留插入顺序,因此 keys 即首次出现顺序 unique_keys = list(counts.keys()) # unique_keys = ['A', 'B', 'C'] # counts = {'A': 3, 'B': 2, 'C': 1} 例 3 ,区间过滤——只对 [0, 50] 区间内的值去重,区间外的原样保留: data = [5, 12, 5, 100, 12, 200] seen = set() result = [] for x in data: if 0 <= x <= 50: # 区间内才参与去重 if x in seen: continue seen.add(x) # 区间外或首次出现,都保留 result.append(x) # [5, 12, 100, 200] 这三个例子是同一种思路:把判重与业务规则分开。判重用哈希结构保证 O(n),规则部分留给回调或显式分支处理,这样既不丢性能,又能容纳各种业务变化。 AI 时代,程序员不一定要手写代码,但一定要懂得编程思路,这样才能更好地指导 AI 。 更多算法 不同语言算法实现: https://github.com/microwind/algorithms AI 编程知识库: https://microwind.github.io