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

一、唠嗑

如果说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的,希望对这方面感兴趣的朋友有一些启发。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。 img

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、100+套大模型面试题库

在这里插入图片描述

五、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

### 使用Llama2模型处理文本 对于希望利用Llama2模型执行自然语言处理任务的开发者而言,可以通过Python脚本加载预训练好的Llama2模型并调用其功能来完成特定的任务。下面是一个简单的例子展示如何初始化以及使用该模型来进行文本补全。 #### 加载和配置模型 为了能够运行基于Llama2的程序,首先需要安装必要的依赖项,并确保拥有正确的环境设置。接着可以按照如下方式导入所需的模块并设定路径指向本地存储的`tokenizer.model`文件: ```python from sentencepiece import SentencePieceProcessor def initialize_tokenizer(model_path=&#39;path/to/models/llama-2-7b/tokenizer.model&#39;): sp_model = SentencePieceProcessor() sp_model.load(model_file=model_path) return sp_model ``` 此函数用于创建一个SentencePiece处理器实例,它负责将输入文本转换成适合喂给神经网络的形式——即token ID序列[^2]。 #### 执行文本预测 一旦完成了上述准备工作之后,则可通过编写另一个辅助方法来实际调用模型的服务接口从而获取到预期的结果数据流。这里给出了一段示范性的代码片段用来说明怎样实现这一点: ```python import torch.distributed.run as dist_run def perform_inference(checkpoint_directory=&#39;../models/llama-2-7b/&#39;, max_sequence_length=512, batch_size=6): command_line_args = [ &#39;--ckpt_dir&#39;, checkpoint_directory, &#39;--tokenizer_path&#39;, f"{checkpoint_directory}/tokenizer.model", &#39;--max_seq_len&#39;, str(max_sequence_length), &#39;--max_batch_size&#39;, str(batch_size) ] # 假设 example_text_completion.py 是官方提供的推理脚本 dist_run.main(command_line_args) if __name__ == &#39;__main__&#39;: perform_inference() ``` 这段代码展示了如何通过命令行参数传递的方式启动多进程模式下的推断过程,其中包含了对检查点位置(`--ckpt_dir`)、分词器文件地址(`--tokenizer_path`)以及其他一些重要的超参选项进行指定的操作。 #### 处理单条消息的情况 当涉及到仅有一条记录的情形下是否会应用特殊的结束标记符时,这取决于具体的框架设计原则。通常来说,在构建输入张量之前会先对其进行适当填充直到达到预定的最大长度;而对于某些架构可能会额外附加特殊字符如`<eos>`作为句子终止指示[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值