- 人工智能
- 大模型
- 模型评测
- Agent 评测
- 数据集
- RAG
【免费下载链接】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):
- 自定义人格:把
--out-dir指向一个包含agent_a.json和agent_b.json的目录,示例可参考 data/multimodal_dialog/example/agent_a.json,里面只有name和persona_summary两个字段,例如 31 岁、经营礼品店的 Angela。 - 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:
- 对话文本 → 搜索关键词:
insert_image_response用DIALOG2IMAGE_QUERY_PROMPT让 LLM 把带图注的整段对话压缩成一个简短图片搜索词(自动去掉人名、年份等无关细节)。 - 关键词 → 下载真实图片:
get_images调用第三方工具icrawler的 Google 图片爬虫,优先按3024x4032、否则4032x3024的手机照片尺寸过滤,每次只取 1 张,存到out_dir/session_N/a|b/目录。 - 图片 → BLIP 图注:若开启
--blip-caption,脚本加载Salesforce/blip-image-captioning-large(见get_blip_caption函数),以 "a photography of" 为前缀做条件图注,得到blip_caption写回数据。 - 相关性校验:
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=你的key2. 一键运行
bash scripts/generate_conversations.shscripts/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 13. 关键参数速查
| 参数 | 默认值 | 作用 |
|---|---|---|
--persona | 关 | 从 MSC 人格池采样并生成详细人设 |
--events | 关 | 为每位 Agent 生成事件图 |
--session | 关 | 逐 session 生成对话 |
--blip-caption | 关 | 用 BLIP 为下载图片生成图注 ⭐ |
--num-sessions | 20 | 每段对话的 session 数 |
--num-days | 240 | 对话跨越的时间跨度(天) |
--num-events | 15 | 每位 Agent 生成的事件总数 |
--max-turns-per-session | 20 | 每个 session 的最大轮数 |
--start-session | 1 | 断点续跑时的起始 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
相关推荐
Chat2API文件上传功能:支持图片、文档的多模态对话实践
Chat2API文件上传功能:支持图片、文档的多模态对话实践 Chat2API是一个强大的开源项目,能够将网页版ChatGPT转换为OpenAI API格式,让
AutoGen.Ollama 实战教程:用 OllamaAgent 与 LLaVA 多模态模型进行图文对话
AutoGen.Ollama 实战教程:用 OllamaAgent 与 LLaVA 多模态模型进行图文对话 本文基于 AutoGen .NET(autogen)
人工智能AI AgentAgent 框架多智能体大模型工具调用Spring AI多模态应用开发:图像生成与文本对话的完美结合
Spring AI多模态应用开发:图像生成与文本对话的完美结合 Spring AI多模态应用开发为开发者提供了强大的AI能力集成方案,让图像生成与文本对话功能在
人工智能大模型AI AgentRAG后端工具调用MCP 服务MCP Clients
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考