首页 > 教程攻略 > ai资讯 >利用LangChain优化团队工作周报自动汇总:替代多智能体的可控解决方案

利用LangChain优化团队工作周报自动汇总:替代多智能体的可控解决方案

来源:互联网 时间:2026-06-01 20:39:14

之前写那篇CrewAI打造自动化周报的文章时,不少朋友反馈说多智能体虽然听起来高大上,但实际跑起来“自由发挥”的度不太好拿捏,结果不稳定,偶尔还会冒点幻觉出来。为了验证这个问题到底出在哪,今天换个思路,单独用LangChain跑一遍看看,同样的任务是不是更可控、效果会不会更好。

利用LangChain优化团队工作周报自动汇总:替代多智能体的可控解决方案

步骤一:环境准备与需求分析

动手写脚本之前,先把环境搭好,需求理清。

环境准备

  • Python环境得装好,版本别太老就行。
  • 必要的库,比如email负责发邮件、langchain处理文本调用模型,记得安装。
  • 阿里企业邮箱的SMTP服务要能正常访问,账号权限确认一下。

需求分析

  • ./docs目录下读取所有以.md结尾的个人工作周报。
  • 把这些周报汇总成一份团队工作周报。
  • 通过阿里企业邮箱把汇总结果发给领导。

步骤二:读取个人工作周报

先写个函数,把每个员工的周报文件读出来。直接遍历目录,过滤出.md文件,用文件名当key,内容就存成字符串。

import os

def read_weekly_reports(directory):
    reports = {}
    for filename in os.listdir(directory):
        if filename.endswith('.md'):
            name = filename.split('.')[0]  # 假设文件名是"姓名 工作周报"
            with open(os.path.join(directory, filename), 'r', encoding='utf-8') as file:
                reports[name] = file.read()
    return reports

步骤三:汇总工作周报

接下来把个人周报合并成团队层级的总结。思路很简单:把所有个人周报拼成一个长字符串,扔给LLM,让它按照要求生成部门工作总结,注意结果里不要出现人名。

def summarize_reports(reports):
    summary = "团队工作周报:nn"
    all_str = ""
    for name, report in reports.items():
        all_str += f"{name}:n{report}nn"
    # 初始化LLM
    llm = ChatOpenAI(openai_api_key=os.getenv("OPENAI_API_KEY"),model="gpt-3.5-turbo-0125")

    from langchain_core.prompts import ChatPromptTemplate
    prompt = ChatPromptTemplate.from_messages([
        ("system", "你是一个部门工作周报撰写者"),
        ("user", f"""
        请根据以下的个人工作周报内容,要求markdown格式,将个人周报合并,生成部门本周工作总结,生成的部门工作周报不包含人名:
        
        {all_str} """)
    ])
    from langchain_core.output_parsers import StrOutputParser
    
    output_parser = StrOutputParser()

    chain = prompt | llm | output_parser
    summary = chain.invoke({"input": all_str})

    return summary

步骤四:发送邮件

最后一步,用Python的email库把汇总好的周报发出去。配置好SMTP的地址、端口、账号密码就行。

from email import EmailMessage

def send_email(summary):
    # 填写你的阿里企业邮箱SMTP配置信息
    sender = 'your_email@example.com'
    receiver = 'leader_email@example.com'
    subject = '团队工作周报'
    message = EmailMessage()
    message.set_content(summary)
    message['From'] = sender
    message['To'] = receiver
    message['Subject'] = subject

    # 这里需要使用你的邮箱SMTP服务器发送邮件
    # 请替换以下信息为你的SMTP服务器设置
    server = 'smtp.example.com'
    port = 465
    username = sender
    password = 'your_email_password'
    message.send(server, port, username, password)

步骤五:整合与测试

把上面几个函数串起来,写个main函数,按顺序调用。跑之前记得把邮箱地址、SMTP配置这些占位符换成真实的。

def main():
    reports = read_weekly_reports(weekly_reports_dir)
    summary = summarize_reports(reports)
    send_email(summary)

if __name__ == "__main__":
    main()

运行脚本,检查一下有没有报错。如果邮箱配置正确,领导应该能收到一份清爽的团队周报。

实际运行效果

跑下来发现,效果确实不错。相比多智能体那种不可控的局面,LangChain这一套要稳得多,输出基本符合预期。(涉及公司信息,加了马赛克)

结论

多智能体更适合那些有创造性、流程复杂、场景不固定的任务,可以给智能体留一些自由发挥的空间。而像周报汇总这类场景单一、流程固定的任务,只要提示词写得够到位,纯LangChain就完全够用了——可控、稳定,还省心。

相关下载