上篇文章分享了《跟着我的步骤,轻松打造出 AI 智能体》,很多朋友都比较感兴趣,咨询我问 “AI 小白能学吗?” 我感觉问题不大,完全可以,只要把要做的事情屡明白了,遇到的卡点问题直接问 GPT 就好了,当然也可以找我加入交流群,我们一起学习进步。
这篇文章,我将分享一下我制作的一款实用工具 - 「AI 周报助手」。
废话不多好,直接进入主题。
设计背景
作为职场人的我们,应该都门清,编写周报是一个耗时的过程,尤其是对于那些需要管理多个项目和任务的团队成员来说,真的就像绣花一样,费时又费力。
周报往往需要汇总来自不同团队成员或部门的信息,手动整合这些信息往往效率低下,而且还很容易出错。
周报的格式也是一个优先需要关注的点,尤其是在远程工作和团队成员分布在不同地点的情况下,保证数据的标准化也蛮重要。
最最主要的是,没人爱干这活,这是一件重复且没有太多创造性的任务,怎么办,这时候该 AI 出场了,AI 大哥任劳任怨,让 AI 大哥把这活干了吧。
完成后的效果
Alice-工作周报
- 完成了客户管理系统的新功能开发。 - 协助解决了内部数据库的性能问题。 - 准备下周的客户培训材料。
Bob-工作周报
- 优化了营销活动的数据分析流程。 - 与Alice合作,提高了客户管理系统的用户体验。 - 计划下周开始新的市场调研项目。
Carol-工作周报
- 完成了营销活动的初步数据分析报告。 - 参与了客户管理系统的界面设计。 - 下周将专注于完善数据分析报告,并准备市场调研的问卷。
汇总-工作周报
尊敬的团队成员及管理层: 本周,我们团队取得了以下主要成就: - Bob优化了营销活动的数据分析流程,并与Alice合作提高了客户管理系统的用户体验。 - Carol完成了营销活动的初步数据分析报告,并参与了客户管理系统的界面设计。 - Alice完成了客户管理系统的新功能开发,并协助解决了内部数据库的性能问题。 团队克服了多项挑战,实现了以下关键成果: - 营销活动的数据分析流程得到显著优化,提高了报告的准确性及效率。 - 客户管理系统的用户体验得到提升,界面设计更加人性化。 - 新开发的系统功能将增强我们的客户服务能力,数据库性能问题得到有效解决。 下周,我们将专注于以下计划: - Bob将启动新的市场调研项目。 - Carol将进一步完善数据分析报告,并准备市场调研问卷。 - Alice将准备客户培训材料,以提升客户满意度。 感谢大家的辛勤工作与卓越贡献。让我们期待下周更多的进展和成功!
设计思路
- 收集来自不同团队成员或部门的周报信息;
- 交给大模型只能处理;
- 将整合完成的周报发送邮件;
实现过程
我是使用 crewAI 框架去实现的,具体步骤可参考这篇文章《跟着我的步骤,轻松打造出 AI 智能体》,篇幅有限,这篇文章只写核心代码,不用担心,需要完整代码的可以找我免费获取。
核心代码
@CrewBase class WeeklyReportAssistantCrew(): """WeeklyReportAssistant crew""" agents_config = 'config/agents.yaml' tasks_config = 'config/tasks.yaml' @agent def writer(self) -> Agent: return Agent( config=self.agents_config['writer'], tools=[send_email_tool], verbose=True, llm=llm, function_calling_llm=function_calling_llm, allow_delegation=True ) @task def writer_task(self) -> Task: return Task( config=self.tasks_config['writer_task'], agent=self.writer(), output_file='mail.md' ) @crew def crew(self) -> Crew: """Creates the WeeklyReportAssistant crew""" return Crew( agents=self.agents, # Automatically created by the @agent decorator tasks=self.tasks, # Automatically created by the @task decorator verbose=2, manager_llm=function_calling_llm, # process=Process.hierarchical, # In case you wanna use that instead https://docs.crewai.com/how-to/Hierarchical/ )
agents.yaml
writer: role: > 周报整理员 goal: > 提高团队的周报整理效率,确保所有成员的周报按时提交并得到有效整理。 backstory: > 你是一位资深的周报整理员,旨在帮助团队成员管理日常工作报告,并从中生成周报。
// 框架对 Agent 的解析 class CrewAgentParser(ReActSingleInputOutputParser): """Parses ReAct-style LLM calls that have a single tool input. Expects output to be in one of two formats. If the output signals that an action should be taken, should be in the below format. This will result in an AgentAction being returned. Thought: agent thought here Action: search Action Input: what is the temperature in SF? If the output signals that a final answer should be given, should be in the below format. This will result in an AgentFinish being returned. Thought: agent thought here Final Answer: The temperature is 100 degrees """
tasks.yaml
writer_task: description: > 我需要你根据{reports}来整理一份周报。 每位成员的日报已经包含了他们的工作亮点、挑战、以及下周计划。 请确保周报能够清晰地展示每位成员的贡献,同时突出团队的整体进展和关键成果,并且格式清晰、专业。 请在周报中包含一个简短的引言,概述本周的主要成就,并以正式而积极的语言风格结束,提供下周的展望。 确保使用正式的语言和适当的语调,以适应团队和管理层的阅读。 发送邮件的content参数请保证是汇总完毕的周报内容。 expected_output: > 整理后的周报
小结
- 大模型可以自由选择,例如:OpenAI、GLM、Baichuan、Qianfan、使用自己的本地私有化大模型也可以,我使用的 GLM-4。
- tools 可以自定义编码去实现,使用一个或多个工具都可以。
- 如果你的场景比较复杂,可以定义多个 Agent、多个 Task ,可以自定义编排,Task 与 Task 之间可以使用上下文传递。
- 这里面的核心还是提示词、提示词、提示词,重要事情说三遍。
这个案例比较简单,也比较粗糙,还有很多需要优化的点,仅仅只是流程跑通了。