Python + LangChain:开发智能会议纪要生成器

云信安装大师
90
AI 质量分
2 5 月, 2025
2 分钟阅读
0 阅读

Python + LangChain:开发智能会议纪要生成器

引言

在日常工作中,会议纪要整理是一项耗时且容易出错的任务。本文将教你如何使用Python和LangChain框架,开发一个智能会议纪要生成器,自动将会议录音或文字记录转换为结构化的会议纪要。

准备工作

环境要求

  • Python 3.8+
  • pip包管理工具
  • OpenAI API密钥(或其他LLM提供商)

安装依赖

代码片段
pip install langchain openai python-dotenv pydub

项目结构

代码片段
meeting-minutes-generator/
├── .env            # 存储API密钥
├── audio_files/    # 存放录音文件
├── output/         # 存放生成的纪要
├── main.py         # 主程序
└── requirements.txt

实现步骤

1. 配置环境变量

创建.env文件:

代码片段
OPENAI_API_KEY=your_api_key_here

2. 音频处理模块(如果输入是录音)

代码片段
from pydub import AudioSegment

def convert_audio_to_text(audio_path):
    """将音频文件转换为文本"""
    audio = AudioSegment.from_file(audio_path)

    # 这里简化处理,实际应用中应接入语音识别API
    # 如使用Whisper或Google Speech-to-Text

    print(f"音频文件 {audio_path} 已加载")
    return "这是模拟的会议文本内容..."

3. LangChain核心处理逻辑

代码片段
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain

def generate_minutes(transcript):
    """使用LangChain生成会议纪要"""

    # 1. 初始化大语言模型
    llm = ChatOpenAI(temperature=0.5, model="gpt-3.5-turbo")

    # 2. 创建提示模板
    template = """
    你是一个专业的会议纪要撰写助手。请根据以下会议记录:
    {transcript}

    生成结构化的会议纪要,包含以下部分:
    1. 会议主题
    2. 参会人员
    3. 讨论要点(分条列出)
    4. 达成的共识或决议
    5. 下一步行动计划(包含负责人和截止时间)

    要求:使用Markdown格式,语言简洁专业。
    """

    prompt = ChatPromptTemplate.from_template(template)

    # 3. 创建处理链
    chain = LLMChain(llm=llm, prompt=prompt)

    # 4. 执行处理并返回结果
    return chain.run(transcript=transcript)

4. 主程序整合

代码片段
import os
from dotenv import load_dotenv

def main():
    load_dotenv()   # 加载环境变量

    # Step1: 获取输入(可以是音频或直接文本)
    input_type = input("输入类型(1-音频文件 /2-直接输入文本): ")

    if input_type == "1":
        audio_path = input("请输入音频文件路径: ")
        transcript = convert_audio_to_text(audio_path)
    else:
        transcript = input("请输入会议文本内容: ")

    # Step2: 生成会议纪要
    print("\n正在生成会议纪要...")
    minutes = generate_minutes(transcript)

    # Step3: 保存结果
    os.makedirs("output", exist_ok=True)
    output_path = f"output/minutes_{len(os.listdir('output'))+1}.md"

    with open(output_path, "w", encoding="utf-8") as f:
        f.write(minutes)

    print(f"\n✅ 会议纪要已生成并保存至 {output_path}")

if __name__ == "__main__":
    main()

API调用优化建议

在实际应用中,建议添加以下优化:

代码片段
# API调用优化版本示例代码片段

from langchain.callbacks import get_openai_callback

def optimized_generate_minutes(transcript):
    """带优化的生成函数"""

    llm = ChatOpenAI(
        temperature=0.5,
        model="gpt-3.5-turbo",
        max_tokens=2000,       # 控制输出长度
        request_timeout=60     # API超时设置 
    )

    with get_openai_callback() as cb:
        result = generate_minutes(transcript) 
        print(f"API消耗统计: {cb}")

        if cb.total_tokens > (0.9 * llm.max_tokens):
            print("⚠️ Token使用接近上限,考虑拆分输入内容")

        return result 

LangChain工作原理详解

LangChain的核心组件:

  1. LLM WrapperChatOpenAI

    • LangChain封装了与LLM的交互接口,统一了不同提供商的API调用方式。
  2. Prompt TemplatesChatPromptTemplate

    • Prompt工程是LLM应用的关键。模板化设计可以:
      • ⭐️保持提示一致性
      • ⭐️方便变量插入
      • ⭐️支持多轮对话
  3. ChainsLLMChain

    • Chain是LangChain的核心抽象,它:
      • 🔗将多个组件串联起来
      • 🔄支持复杂的处理流程
      • 📦可组合和重用

FAQ与常见问题解决

Q1: API调用失败怎么办?

A:
1.检查API密钥是否正确
2.确认网络连接正常
3.OpenAI账户是否有足够配额

Q2: Token超出限制怎么处理?

A:
1.Split-and-summarize策略:先分段总结再合并
2.Set max_tokens参数限制输出长度

Q3:如何提高输出质量?

A:
1.Temperature参数调低(0~0.5)获得更稳定输出
2.Add few-shot examples到prompt中提供范例

GitHub完整项目参考

完整项目代码可在GitHub获取:
https://github.com/example/meeting-minutes-generator

包含额外功能:
✅ Web界面版本
✅ Slack集成方案
✅ Whisper语音识别集成


通过本教程,你已经掌握了使用Python和LangChain开发智能会议纪要工具的核心方法。实际部署时可以考虑添加用户认证、多格式导出等功能来增强实用性。

原创 高质量