☰
文字+图片的多模态对话:LoCoMo多模态对话生成与BLIP配图流程详解
2026/10/14 16:06:21 网站建设 项目流程
  • 人工智能
  • 大模型
  • 模型评测
  • Agent 评测
  • 数据集
  • RAG

【免费下载链接】locomo

项目地址:https://gitcode.com/gh_mirrors/lo/locomo
点击查看免费下载

LoCoMo 是 ACL 2024 论文《Evaluating Very Long-Term Conversational Memory of LLM Agents》发布的长期对话记忆评测基准。本教程面向新手,带你搞懂它如何用两个"人格化"的 LLM Agent 自动生成文字+图片的多模态对话,以及 BLIP 模型在其中的自动配图与配文流程,并给出一键运行的命令与关键参数说明。

📌 上图来自仓库自带的 README.MD:左侧是两位 Agent(Joanna 与 Nate)跨月份聊宠物龟/狗的对话截图,右侧是数据集统计——平均每次对话 27.2 个 session、21.6 轮,多模态对话任务平均包含91.2 张图片。

一、LoCoMo 多模态对话基准是什么?

LoCoMo 数据集存放在 data/locomo10.json,包含10 段超长对话,每段对话由两名"说话人"跨越数月(2022 年初到年中)陆续聊天形成。它支持三类任务:

任务说明标注
问答(QA)单跳/多跳检索、时间推理、开放知识、对抗性提问,共 1,986 题人工标注
事件摘要每位说话人在每个 session 中的重要事件人工标注
多模态对话生成对话中包含大量"分享照片"行为,可用于训练/评测图文对话模型自动生成

每个带图轮次在数据里都保留了三样东西:

  • img_url:图片的网络地址(注意:官方不直接发布图片文件本身)
  • blip_caption:由BLIP模型为图片自动生成的描述文字
  • query:用于检索这张图的图片搜索关键词

这三者正是下一节要讲的"配图流水线"的产物。

二、多模态对话生成:从人格到图片的三步流水线

整个生成入口是 generative_agents/generate_conversations.py,核心逻辑集中在main()函数里,分为三步。

Step 1:给两个 Agent 创建"人格"

支持两种模式(见 README.MD):

  1. 自定义人格:把--out-dir指向一个包含agent_a.json和agent_b.json的目录,示例可参考 data/multimodal_dialog/example/agent_a.json,里面只有name和persona_summary两个字段,例如 31 岁、经营礼品店的 Angela。
  2. MSC 人格池采样:指向空目录时,脚本会从 data/msc_personas_all.json 里随机抽取一对人生属性,再让 LLM 扩写成详细人设(名字、职业、家人、喜好等),实现由conversation_utils.py中的get_msc_persona完成。

Step 2:生成带时间与因果关系的事件图

脚本为每位 Agent 在随机时间跨度内(--num-days控制,默认 240 天)生成若干生活事件,事件之间通过caused_by字段建立因果连接(比如"领养宠物"由"搬到新家"引起)。事件图缓存在每个 agent 文件的graph字段中,后续每个 session 只取"上次聊天之后新发生"的事件来聊,保证内容不重复。

Step 3:逐 Session 生成对话并插入"图片占位符"

对话提示词(AGENT_CONV_PROMPT_W_EVENTS等)明确要求 Agent:

  • 回复控制在 20 词以内,口语化;
  • 在合适的时机主动分享照片(自己拥有的东西、求助的东西、旧回忆);
  • 分享照片时用方括号写出详细图注,例如[shares an old photo of a pineapple birthday cake]。

生成后,replace_captions会借助 prompt_examples/image_sharing_examples.json 里的 few-shot 示例,把"分享意图"自然融进句子本身;而接收方 Agent 的下一句回复,则由VISUAL_QUESTION_PROMPT先针对对方刚分享的图片生成一个自然的追问("照片里那个是什么?"),再拼进提示词——这就模拟了真实的"看图接话"行为。

三、BLIP 配图流程:4 步自动完成

这是 LoCoMo 多模态数据的"灵魂",代码分布在 generative_agents/conversation_utils.py:

  1. 对话文本 → 搜索关键词:insert_image_response用DIALOG2IMAGE_QUERY_PROMPT让 LLM 把带图注的整段对话压缩成一个简短图片搜索词(自动去掉人名、年份等无关细节)。
  2. 关键词 → 下载真实图片:get_images调用第三方工具icrawler的 Google 图片爬虫,优先按3024x4032、否则4032x3024的手机照片尺寸过滤,每次只取 1 张,存到out_dir/session_N/a|b/目录。
  3. 图片 → BLIP 图注:若开启--blip-caption,脚本加载Salesforce/blip-image-captioning-large(见get_blip_caption函数),以 "a photography of" 为前缀做条件图注,得到blip_caption写回数据。
  4. 相关性校验:ALIGNMENT_PROMPT让 LLM 判断"图注与对话是否相关"(输出 0/1),不相关的图片会被过滤,保证图文语义一致。

💡 简单说:LLM 负责"想"(决定何时分享、写图注、搜什么图),爬虫负责"找",BLIP 负责"描述",对齐提示词负责"把关"。

四、如何快速运行多模态对话生成

1. 配置环境变量

所有脚本都会先加载 scripts/env.sh,需要填入OPENAI_API_KEY(对话生成用)和GOOGLE_API_KEY(图片下载用),并设置输出目录与数据文件路径:

export OPENAI_API_KEY=你的key export GOOGLE_API_KEY=你的key

2. 一键运行

bash scripts/generate_conversations.sh

scripts/generate_conversations.sh 的实际调用形如:

python3 generative_agents/generate_conversations.py \ --out-dir ./data/multimodal_dialog/example/ \ --prompt-dir ./prompt_examples \ --events --session --summary \ --persona --blip-caption \ --num-sessions 3 --num-days 90 --num-events 10 \ --max-turns-per-session 20 --num-events-per-session 1

3. 关键参数速查

参数默认值作用
--persona关从 MSC 人格池采样并生成详细人设
--events关为每位 Agent 生成事件图
--session关逐 session 生成对话
--blip-caption关用 BLIP 为下载图片生成图注 ⭐
--num-sessions20每段对话的 session 数
--num-days240对话跨越的时间跨度(天)
--num-events15每位 Agent 生成的事件总数
--max-turns-per-session20每个 session 的最大轮数
--start-session1断点续跑时的起始 session

运行结束后,还会自动通过html_utils.convert_to_chat_html把整段对话渲染成带图片的sessions.html,方便人工检查质量。

五、生成数据的结构与使用

每段对话最终输出agent_a.json/agent_b.json,包含session_N(对话轮次列表)、session_N_date_time(时间戳)、session_N_summary(session 摘要)等字段;带图轮次额外有img_url、img_file、blip_caption、query四个字段。

发布版 data/locomo10.json 即由这套流水线产出,可直接用于:

  • 多模态对话生成:训练/评测模型"看图聊天"的能力(如论文中的 MiniGPT-5);
  • QA 与事件摘要:对话中的文字部分同样支撑 1,986 题的问答基准与事件摘要任务。

六、总结

✅LoCoMo用"人格 → 事件图 → 逐 session 对话"三步流水线,让 LLM Agent 自动聊出跨越数月的超长对话; ✅ 通过方括号图注 + icrawler 搜索下载 +BLIP 图注+ 相关性校验,把真实照片自然嵌入对话,形成"文字+图片"的多模态数据; ✅ 一条bash scripts/generate_conversations.sh即可复现,--blip-caption是开启自动配图的关键开关。

如果你想深入研究提示词设计,可以翻一翻 prompt_examples/ 目录下的各类 few-shot 示例文件;想评估模型在 LoCoMo 上的表现,则可用 scripts/evaluate_gpts.sh、scripts/evaluate_rag_gpts.sh 等脚本。

  • 人工智能
  • 大模型
  • 模型评测
  • Agent 评测
  • 数据集
  • RAG

【免费下载链接】locomo

项目地址:https://gitcode.com/gh_mirrors/lo/locomo
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询