微信扫码
与创始人交个朋友
我要投稿
前段时间写了一篇《利用CrewAI框架打造高效自动化周报系统:告别手动报告,迎接智能协作》,来实现团队工作周报的汇总工作的案例,很多朋友反馈使用多智能体的过程中,智能体的“自由发挥”不太可控,导致生成的结果不稳定,甚至出现幻觉的情况,为了解决这个问题,我们今天来尝试一下单纯使用LangChain看看是否还有相同的问题,效果会不会好点。
在开始编写脚本之前,我们需要确保开发环境已经准备就绪,并对需求进行详细分析。
email
用于发送邮件,langchain
用于处理文本等。./docs
目录下所有以.md
格式存放的个人工作周报文件。首先,我们需要编写一个函数来读取每个员工的工作周报。我们将遍历./docs
目录下的所有.md
文件,并读取它们的内容。
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
接下来,我们需要将读取到的个人周报汇总成一份团队周报。我们将创建一个新的函数来完成这项任务。
def summarize_reports(reports):
summary = "团队工作周报:\n\n"
all_str = ""
for name, report in reports.items():
all_str += f"{name}:\n{report}\n\n"
# 初始化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
库来实现邮件的发送。
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)
现在我们已经有了所有必要的函数,我们需要将它们整合到一个主函数中,并进行测试。
def main():
reports = read_weekly_reports(weekly_reports_dir)
summary = summarize_reports(reports)
send_email(summary)
if __name__ == "__main__":
main()
在运行脚本之前,请确保你已经替换了所有的占位符,如邮箱地址、SMTP服务器设置等,为实际的配置信息。运行脚本后,检查是否有任何错误,并确保邮件已成功发送。
可以看到,实际运行的效果还是非常不错的,相比多智能体来说可控的多了。(涉及公司信息,加了马赛克)
多智能体比较适合有创造性的,比较复杂的,流程不单一的场景,可以给智能体一定的“自由发挥”的空间,而对于场景单一,流程相对固定的场景,只要提示词写的足够好,LangChain就可以满足需求了。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-26
为什么大多数人不愿意接受AI?
2024-12-26
太逆天了,Cursor让我的开发效率翻10倍,好用到怀疑人生
2024-12-23
基于AutoGen构建个性化AI助理Aura的实践探索
2024-11-22
ChatGPT Mac桌面端重磅更新!与VS Code、终端完美联动!工作效率起飞!
2024-11-22
用AI提升使用电脑幸福感的小例子
2024-11-13
吴恩达:如何在人工智能领域建立你的职业生涯
2024-11-12
AI知识泛滥的年代,“脑图+AI”=“埃迪+毒液”:未来工作流的黄金组合,你掌握了吗?
2024-11-08
在未来,这种人或许会沦为AI的奴隶
2024-07-07
2024-06-24
2024-04-02
2024-04-27
2024-06-06
2024-04-02
2024-05-08
2024-05-04
2024-04-19
2024-05-15