Llama3 + CrewAI + Groq 实现邮件智能客服

发布于:2024-05-03 ⋅ 阅读:(59) ⋅ 点赞:(0)

一、唠嗑

如果说AI的到来,哪个行业最有危机感,我觉得电商客服应该是榜上有名的。目前像淘宝、京东其实也是先用AI客服进行回复,客户不满意才使用人工客服,从而达到降本增效的目的。

而本次,就是使用 Llama3 + CrewAI + Groq  实现一个小的邮件智能客服,即实现邮件的一个智能回复。这里也要说明下,关于用程序代码读取邮件,发送邮件的操作,此次并没有说明,主要是着重讲述AI这块。

二、技术栈剖析

此次主要涉及三个核心技术,分别是 Llama3CrewAIGroq

Llama3 是一个Meta最近刚发布的开源大模型,一共有 Llama3-8B 和 Llama3-70B两个型号,关于它的详细介绍,我在之前的有过说明,这里不再赘述。

CrewAI 则是基于LangChain 开发的一个开源Agent框架,旨在编排和协调多个自主AI Agent进行团队合作。

Groq 是一家初创公司,但同时也是AI芯片领域的一匹黑马。Groq之所以爆火,是因为他们推出了一款全新的 AI 芯片 LPU(Language Processing Unit),宣称做到了“地表最强推理”——在 Groq 上运行大模型的推理速度,较英伟达 GPU 提高 10 倍,而成本只有其十分之一。

Groq的成本是否真的能降低那么多我不太清楚,但是它的推理速度是真的快!我自己实测的话大概每秒能达到300Token,相比之下,ChatGPT-3.5每秒生成速度仅为40个token,速度这块直接秒杀!

loading

本次的核心流程其实也非常简单,就是通过将邮件回复拆成三个步骤,分别是邮件分类、信息检索和邮件总结回复,每一个步骤由Llama3完成,Groq主要是一个提供API的作用,最后使用CrewAI编排这三个步骤即可。

loading

三、项目实战

3.1 注册Groq账户

实现上面的智能客服,第一步我们需要注册一个Groq的账号,注册完毕后跳到申请一个 API Key

loading

需要注意的,这一步需要魔法辅助,并且API Key只会展示一次,所以记得保存!

目前 Groq 是有免费版本的,只不过在调用方面有一定限制,但是也足够我们进行简单的测试了

loading

3.2 创建Agent

CrewAI 中,Agent就是一个我们设定的角色,它能够为我们执行任务,做出决策并与其他Agent进行通信。

如果你用过Coze或通义千问,这玩意其实就是Coze的AI Bot,以及通义千问里面的智能体。1

前面提过,我将邮件回复拆成三个步骤,分别是邮件分类、信息检索和邮件总结回复,这其实就分别对应三个Agent。

为什么要拆成三个Agent,而不是一个Agent搞定呢?

我个人的看法是,如果你的步骤或者提问越精细,则AI的准确率会越高,一个Agent的话,AI要干的事情太多,不一定能给出一个很好的答案。

3.2.1 邮件分类Agent

loading

将邮件分类的目的是方便AI根据不同分类提供不同的话术,下面会讲到。

Agent参数解析如下:

  • role:Agent扮演的角色
  • goal:Agent的目标
  • backstory:为Agent提供背景
  • llm:Agent使用什么大模型
  • verbose:调试开关,如果为True,表示查看CrewAI执行时的详细信息
  • allow_delegation:是否允许将任务委派给其他Agent
  • max_iter : Agent执行任务的最大迭代次数
  • memory:是否允许Agent拥有“记忆”
  • step_callback:回调函数

3.2.2 信息检索Agent

loading

这个Agent比上面的多了一个 tool 参数,这个参数的作用是指定Agent可以使用的工具。

因为在邮件回复中,有一些内容可能涉及网络内容检索,而这里的 search_tool 其实就是一个网络检索工具,使用的是 DuckDuckGo 浏览器的检索功能。

3.2.3 邮件回复Agent

loading

这里其实就凸显出拆分成多个Agent的好处,可以根据不同的邮件分类,使用不同的回复方式。

3.3 创建Task

在 CrewAI 中,Task就是把任务分配到对应的Agent,Task里面封装了Agent执行该任务所需的所有信息,可以简单理解为我们平时输入的提示词(会更完整)。

3.3.1 邮件分类Task

loading

Task参数解析如下:

  • description:本次任务描述
  • expected_output:本次任务期待输出什么内容
  • output_file :输出到文件
  • agent :由哪个Agent完成

这里我们强调只输出一个分类,可以避免AI生成太多无关内容

3.3.2 信息检索Task

loading

这里比上面多了一个参数:context,这就是我们常说的上下文,因为在这一环节,信息检索任务需要根据前面得到的邮件分类进行特定内容的检索

3.3.3 邮件回复Task

loading

3.4 任务编排

loading

完成上面的步骤后,再通过Crew实现一个Task和Agent的编排,整体功能基本就大功告成了!

3.5 实际效果

我的邮件内容如下:

email = """您好, \n
        我发这封邮件是想说,上周我在你们的度假村度过了愉快的时光. \n

        非常感谢贵公司员工所做的一切

        谢谢,
        AI技术巫
    """

执行之后的效果如下:

第一个任务,Llama3模型会把邮件归到 customer_feedback 分类,总体还是准确的

loading

执行第二个任务,可以看到这里进行了一个检索,问“how to respond to positive customer feedback”,也就是“如何回应客户的积极反馈”

loading

执行第三个任务,可以看到最终回复如下:

loading

整体翻译过来就是:

亲爱的 AI 技术巫、

非常感谢您在百忙之中抽出时间与我们分享您在度假村的美好体验!我们很高兴听到您在我们这里度过了一段美好时光,也很感谢您对我们员工的赞誉。您的反馈对我们来说非常宝贵,我们很高兴能满足您的期望。

我们一直在努力为客人提供最好的体验,您的反馈将帮助我们不断改进。如果您今后需要任何帮助或有任何问题,请随时联系我们。

再次感谢您的反馈并选择我们的度假村。我们期待您的再次光临!

致以最诚挚的问候、
[您的姓名]

可以看到整体的效果还是OK的!

3.6 一些不足

首先第一点就是这只是一个比较基础的例子,单纯为了方便大家理解如何通过 AI 实现智能回复,它并不是一个可以实际投入使用的成品。

第二就是大家可以看到它是使用英文回复的,这是因为Llama3大部分是使用英文语料训练的,如果需要中文回复的,就得更换其他大模型了

四、小小总结

本次采用 Llama3 + CrewAI + Groq 实现了一个小型的邮件智能客服,从回复的内容看,整体效果还是OK的,希望对这方面感兴趣的朋友有一些启发。

注:完整源码见

最后如果本文对你有所帮助的话,希望多多点赞支持!