项目实战:用StableBeluga2构建一个智能会议纪要生成器,只需100行代码!
【免费下载链接】StableBeluga2 项目地址: https://gitcode.com/mirrors/petals-team/StableBeluga2
项目构想:我们要做什么?
在日常工作中,会议是团队协作的重要环节,但整理会议纪要却是一项耗时且繁琐的任务。本项目旨在利用StableBeluga2的强大文本生成能力,开发一个智能会议纪要生成器。用户只需输入会议讨论的原始文本(例如会议记录的逐字稿或关键讨论点),系统即可自动生成结构清晰、重点突出的会议纪要。
输入:会议讨论的原始文本(可以是逐字稿或关键点列表)。
输出:结构化的会议纪要,包括会议主题、讨论要点、决策事项和待办任务等。
技术选型:为什么是StableBeluga2?
StableBeluga2是一个基于Llama2 70B微调的开源大语言模型,具有以下核心亮点,非常适合实现本项目:
- 强大的文本生成能力:StableBeluga2在Orca风格的数据集上进行了微调,能够生成高质量、连贯的文本,非常适合会议纪要的生成任务。
- 支持长文本处理:会议记录通常较长,StableBeluga2能够有效处理长文本输入,并从中提取关键信息。
- 灵活的Prompt设计:通过设计合适的Prompt,可以引导模型生成符合特定格式的会议纪要,例如分点列出讨论要点和决策事项。
- 高效的推理性能:模型支持
bfloat16精度和分块加载,能够在资源有限的设备上高效运行。
核心实现逻辑
本项目的核心逻辑分为以下几步:
- 加载模型和分词器:使用Hugging Face的
transformers库加载StableBeluga2模型和分词器。 - 设计Prompt:通过系统提示(System Prompt)和用户输入(User Prompt)构建完整的Prompt,引导模型生成会议纪要。
- 调用模型生成文本:将构建好的Prompt输入模型,生成会议纪要。
- 后处理与输出:对生成的文本进行简单格式化处理,使其更易读。
关键代码片段
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# 加载模型和分词器
tokenizer = AutoTokenizer.from_pretrained("stabilityai/StableBeluga2", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("stabilityai/StableBeluga2", torch_dtype=torch.float16, device_map="auto")
# 系统提示
system_prompt = """### System:
你是一个专业的会议纪要生成助手。请根据用户提供的会议讨论内容,生成一份结构清晰的会议纪要,包括以下部分:
1. 会议主题
2. 讨论要点
3. 决策事项
4. 待办任务
请确保内容简洁明了,重点突出。
\n\n"""
# 用户输入
user_input = "本次会议讨论了项目进度、技术难点和下一步计划。技术团队提到后端API开发延迟,前端团队建议先完成UI设计。最终决定下周召开技术评审会议。"
# 构建完整Prompt
prompt = f"{system_prompt}### User: {user_input}\n\n### Assistant:\n"
# 生成会议纪要
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
output = model.generate(**inputs, max_new_tokens=512, do_sample=True, top_p=0.95)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
代码全览与讲解
以下是完整的项目代码,并对关键部分进行了详细注释:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
def generate_meeting_summary(user_input):
"""
生成会议纪要的核心函数
:param user_input: 用户输入的会议讨论内容
:return: 生成的会议纪要
"""
# 加载模型和分词器
tokenizer = AutoTokenizer.from_pretrained("stabilityai/StableBeluga2", use_fast=False)
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/StableBeluga2",
torch_dtype=torch.float16,
device_map="auto"
)
# 系统提示,定义生成格式
system_prompt = """### System:
你是一个专业的会议纪要生成助手。请根据用户提供的会议讨论内容,生成一份结构清晰的会议纪要,包括以下部分:
1. 会议主题
2. 讨论要点
3. 决策事项
4. 待办任务
请确保内容简洁明了,重点突出。
\n\n"""
# 构建完整Prompt
prompt = f"{system_prompt}### User: {user_input}\n\n### Assistant:\n"
# 生成会议纪要
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
output = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
top_p=0.95
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
return generated_text
# 示例输入
user_input = "本次会议讨论了项目进度、技术难点和下一步计划。技术团队提到后端API开发延迟,前端团队建议先完成UI设计。最终决定下周召开技术评审会议。"
# 生成并打印会议纪要
summary = generate_meeting_summary(user_input)
print(summary)
代码讲解
- 模型加载:使用
AutoTokenizer和AutoModelForCausalLM加载StableBeluga2模型和分词器,并指定torch.float16精度以减少显存占用。 - Prompt设计:通过系统提示定义生成格式,用户输入的内容会被插入到Prompt中。
- 文本生成:调用模型的
generate方法生成会议纪要,参数max_new_tokens控制生成文本的长度,top_p用于控制生成的多样性。 - 结果输出:生成的文本通过分词器解码后返回。
效果展示与功能扩展
效果展示
输入:
本次会议讨论了项目进度、技术难点和下一步计划。技术团队提到后端API开发延迟,前端团队建议先完成UI设计。最终决定下周召开技术评审会议。
输出:
### Assistant:
1. 会议主题:项目进度与技术难点讨论
2. 讨论要点:
- 后端API开发进度延迟。
- 前端团队建议优先完成UI设计。
3. 决策事项:
- 下周召开技术评审会议。
4. 待办任务:
- 技术团队需加快API开发进度。
- 前端团队继续推进UI设计。
功能扩展
- 多语言支持:通过调整Prompt,可以支持生成其他语言的会议纪要。
- 自定义模板:允许用户自定义会议纪要的模板,例如添加“参会人员”或“会议时间”等字段。
- 批量处理:扩展为支持批量处理多段会议记录,适合大型团队使用。
- 集成到办公软件:将本工具集成到Slack、Teams等办公软件中,实现一键生成会议纪要。
结语
通过本项目,我们展示了如何利用StableBeluga2快速构建一个实用的智能会议纪要生成器。只需100行左右的代码,即可实现从原始讨论内容到结构化会议纪要的自动转换。希望这个案例能激发你探索更多基于大语言模型的有趣应用!
【免费下载链接】StableBeluga2 项目地址: https://gitcode.com/mirrors/petals-team/StableBeluga2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



