项目实战:用Phi-3-vision-128k-instruct构建一个智能会议纪要生成器,只需100行代码!
项目构想:我们要做什么?
在现代职场中,会议是信息传递和决策制定的重要场景,但冗长的会议内容往往让人难以快速抓住重点。为了解决这一问题,我们设计了一个“智能会议纪要生成器”。该应用能够根据会议中的图像(如白板内容、幻灯片截图或会议笔记)和文本输入,自动生成结构化的会议纪要,帮助用户快速回顾会议核心内容。
输入:
- 会议中的图像(如白板、幻灯片或笔记截图)。
- 用户提供的简短文本提示(例如:“总结会议的核心议题”或“列出会议中的行动计划”)。
输出:
- 结构化的会议纪要,包括核心议题、讨论要点、行动计划等内容。
- 可选的后续讨论问题,帮助用户进一步思考。
技术选型:为什么是Phi-3-vision-128k-instruct?
Phi-3-vision-128k-instruct是一个轻量级的多模态开源模型,具有以下核心亮点,非常适合实现我们的项目:
- 多模态支持:能够同时处理图像和文本输入,非常适合会议场景中图像与文本结合的需求。
- 长上下文支持(128K tokens):可以处理复杂的会议内容,生成详细的会议纪要。
- 高效的推理能力:在计算资源有限的环境中也能快速运行,适合实际部署。
- 指令遵循能力强:通过精心设计的Prompt,可以准确生成结构化的输出。
核心实现逻辑
项目的核心逻辑分为以下几步:
- 图像与文本输入处理:用户上传会议图像并提供文本提示,系统将两者结合为模型的输入。
- Prompt设计:设计一个清晰的Prompt,指导模型生成结构化的会议纪要。
- 模型调用:使用Phi-3-vision-128k-instruct模型处理输入,生成会议纪要。
- 结果解析与输出:对模型的输出进行解析,提取关键信息并格式化展示。
代码全览与讲解
以下是完整的项目代码,关键部分添加了详细注释:
from PIL import Image
import requests
from transformers import AutoModelForCausalLM, AutoProcessor
# 初始化模型和处理器
model_id = "microsoft/Phi-3-vision-128k-instruct"
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
trust_remote_code=True,
torch_dtype="auto",
_attn_implementation="flash_attention_2"
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
# 定义会议图像和用户提示
image_url = "https://example.com/meeting_image.png" # 替换为实际图像URL
image = Image.open(requests.get(image_url, stream=True).raw)
user_prompt = "总结会议的核心议题和行动计划。"
# 构建多轮对话格式的Prompt
messages = [
{"role": "user", "content": f"<|image_1|>\n{user_prompt}"},
{"role": "assistant", "content": "请生成结构化的会议纪要。"}
]
# 生成模型输入
prompt = processor.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(prompt, [image], return_tensors="pt").to("cuda:0")
# 设置生成参数
generation_args = {
"max_new_tokens": 500,
"temperature": 0.7,
"do_sample": True,
}
# 调用模型生成会议纪要
generate_ids = model.generate(**inputs, eos_token_id=processor.tokenizer.eos_token_id, **generation_args)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print("生成的会议纪要:")
print(response)
代码讲解:
- 模型初始化:加载Phi-3-vision-128k-instruct模型和处理器,启用Flash Attention以提升推理速度。
- 输入处理:用户提供会议图像和文本提示,系统将其格式化为多轮对话的Prompt。
- 生成参数:设置生成文本的长度和随机性(
temperature)。 - 结果解析:对模型的输出进行解码,跳过特殊标记并清理空格。
效果展示与功能扩展
效果展示
假设输入一张包含会议白板内容的图像,并提示“总结会议的核心议题”,模型可能输出如下内容:
会议核心议题:
1. 项目进度更新:讨论了当前项目的完成情况和下一步计划。
2. 技术难点:分析了开发过程中遇到的主要技术问题。
3. 资源分配:明确了各部门的资源需求和分配方案。
行动计划:
1. 技术团队将在下周解决主要技术难点。
2. 项目经理负责更新项目进度报告。
功能扩展
- 多语言支持:通过微调模型,支持更多语言的会议纪要生成。
- 语音输入集成:结合语音识别技术,直接将会议录音转为文本输入。
- 个性化模板:允许用户自定义会议纪要的模板格式。
- 实时协作:将生成的纪要实时同步给参会人员,支持在线编辑和反馈。
结语
通过Phi-3-vision-128k-instruct,我们仅用100行代码就实现了一个高效的智能会议纪要生成器。希望这个项目能激发你的灵感,尝试更多有趣的应用场景!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



