用Prompt构建AI电商客服:终于挤出时间摸鱼了!!

引言

根据 AI 大佬吴恩达教授的Prompt Engineering原则。本文将利用OpenAI,创建一个能够根据客户的评论分析客户的心情,并回应的智能AI客服。让AI与自然语言(nlp)相融合,驱动的电商客服转型。

环境配置

首先保证你拥有node.js环境。创建一个新文件,在新文件夹下,初始化一个后端项目,并安装所需要的模块包,本次所需要的有openaidotenv(用来保护你的个人隐私)。

bash 复制代码
npm init -y // 初始化  生成一个package.json文件
npm i openai  // 安装openai
npm i dotenv  // 安装dotenv

安装后可以在package.json文件的dependencies依赖中找到安装的openaidotenv和它们的版本号。

在根目录下创建一个.env文件,在.env文件中保存我们的密钥和和转发地址。

bash 复制代码
OPENAI_API_KEY=   你自己的密钥
OPENAI_BASE_URL=  http://api.302.ai/v1   // 我使用的转发地址

如果你还没有你自己的密钥,你可以在302.AI中生成密钥。免费获取1$,用来使用AI。

我们将.env写入到.gitignore文件中,gitignore就不会把.env中的内容提交到远程库,这样就保护了我们的密钥安全。

基础架构

创建main.mjs入口文件,mjs文件允许你使用ECMAScript模块(ESM)

main.mjs中:

javascript 复制代码
// 导入模块包
import OpenAI from "openai";
import dotenv from "dotenv";  // 模块引入放在头部,不会重复
// .env 本项目 环境变量配置文件
dotenv.config();   // 将.env文件中的内容读取到process.env中

// 全面es6 
// 全局环境对象
const { 
    OPENAI_API_KEY,
    OPENAI_BASE_URL,
} = process.env;

// 实例化openai对象
const client = new OpenAI({
    apiKey: OPENAI_API_KEY,
    baseURL: OPENAI_BASE_URL,
});

// get_completion 函数封装
// async 是 es7 
// 异步函数,用于获取OpenAI的完成结果。
const get_completion = async (prompt, model = 'gpt-3.5-turbo') => {
    // 创建一个包含用户提示的消息数组
    const messages = [
        { role: 'user', content: prompt }
    ];
    
    // 调用OpenAI的API,创建一个聊天完成请求
    const response = await client.chat.completions.create({
        model, // 使用指定的模型
        messages, // 使用创建的消息数组
        temperature: 0, // 设置温度为0,以获得最可能的输出
        // 0~1之间   靠近0 保守   靠近1 随机多样
    });

    // 返回模型生成的第一个完成结果的内容
    return response.choices[0].message.content;
};

简单分析一下上面的代码:

  1. 使用import...from将下载的模块包导入
  2. 加载环境变量到Node.js应用程序中
  3. 使用解构的方法在process.env中解构出要使用的密钥和转发地址
  4. 实例化openai对象,使用你的密钥和转发地址
  5. 封装了调用OpenAI API逻辑的异步函数get_completion,用于获取OpenAI的完成结果。参数设为下面要设置、修改的提示词(prompt)和你要使用的大模型(LLM),在这里可以先使用gpt-3.5-turbo,如果效果不好,可以换成gpt-4o

get_completion中:

  • 创建一个包含用户提示的消息数组,用来模拟用户提出的s问题
  • 创建一个聊天完成请求,调用OpenAI的API,需要设置成await来等待接收到上面的messagesAI设置为聊天模式(chat),生成文本(completions),creat允许你指定模型、输入提示(prompt)、以及一系列控制生成行为的参数(使用的LLM(model),用户消息数组(messages),文本的随机性和多样性(temperature))。
  • 最后返回结果,LLM会给出多个结果,我们在这里只返回一个结果

Prompt Engineering的应用

在设计具体的业务逻辑时,吴恩达教授在其课程中强调了"角色赋予"、"任务明确化"以及"格式约定"的重要性。这意味着我们需要给定清晰的任务描述,让模型知道它应该做什么;同时也要规定好输出格式,以便于后续处理。

先创建main异步函数,并调用。我们将在main函数中使用我们的OpenAI

javascript 复制代码
const main = async () => {
}
main()

具体实现如下,我给出了一个正面的评论和一个负面的评论:

javascript 复制代码
const main = async () => {
//   const review = `
//   因此,他们仍然以 70-10 左右的价格在季节性销售,价格也比之前的 29 美元低。
//   所以它看起来还不错,但如果你看看底座,刀片锁定到位的部分看起来不如几年前的版本那么好,但我打算非常温柔地使用它(例如,我先在搅拌机中粉碎非常硬的物品,如豆子、冰、米饭等。然后在搅拌机中将它们粉碎成我想要的份量,然后切换到搅拌刀片以获得更细的面粉,并在制作冰沙时先使用十字切割刀片,然后如果我需要它们更细/更少的浆状,则使用平刀片)。制作冰沙的特别提示:将水果和蔬菜切碎并冷冻(如果使用菠菜,请稍微炖一下,然后冷冻直至可以使用;如果制作冰糕,请使用小型或中型食品加工机),这样就可以避免在制作冰沙时添加太多冰块。
//   大约一年后,电机发出奇怪的声音。
//   我打电话给客服,但保修期已过,所以我不得不再买一个。仅供参考:这类产品的整体质量已经下降,因此他们有点指望品牌认知度和消费者忠诚度来维持销售。大约两天后就收到了。
//   `
    const review = `
  需要一盏漂亮的灯放在我的卧室,这盏灯有额外的存储空间,而且价格也不太高。 
  很快就收到了。我们灯的灯串在运输过程中断了,公司很乐意给我们寄来一根新的。
  几天之内就到了。组装起来很容易。
  我缺少一个零件,所以我联系了他们的支持人员,他们很快就给我找到了缺失的零件! 
  在我看来,Lumina 是一家关心客户和产品的好公司!!
  `;

    const prompt = `
  从评论文本中识别以下项目:
  - 情绪(正面或负面)
  - 评论者是否表达愤怒?(真或假)
  - 评论者购买的商品
  - 制造商品的公司

  评论以三个反引号分隔。
  将您的回复格式化为 JSON 对象,其中
  "情绪"、"愤怒"、"商品"和"品牌"作为键。
  如果信息不存在,请使用"未知"
  作为值。
  让您的回复尽可能简短。
  将愤怒值格式化为布尔值。

  评论文本: '''${review}'''
  `;
  
    const response = await get_completion(prompt);
    console.log(response);
}

负面评论 正面评论 (如果结果有些问题,可以把大模型换成gpt-4o

将prompt更改,让AI给出回复

javascript 复制代码
  const prompt = `
    你是一名客服AI助理。
    你的任务是向尊贵的客户发送电子邮件回复。
    给定以'''分隔的评论的客户发送电子邮件,
    生成回复以感谢客户的评论。
    如果情绪是正面或中性的,感谢他们的评论。
    如果情绪是负面的,道歉并建议他们可以联系客户。
    确保使用评论中的具体细节。
    用简洁专业的语气写作。
    在电子邮件中签名为"AI客服代理"
    客户评论:'''${review}'''
  `

负面评论

正面评论

可以看到AI帮助我们分析了客户的心情并成功给出了回复!!!

结论

综上所述,通过结合OpenAI的强大语言模型与吴恩达教授所倡导的Prompt Engineering理念,我们可以构建出既灵活又高效的AI客服解决方案。这样的系统不仅能够快速准确地处理大量客户咨询,还能持续学习和适应新的交流模式,最终为企业带来更好的用户体验和服务质量。

相关推荐
장숙혜26 分钟前
npm下载依赖相关命令
前端·npm·node.js
GISer_Jing42 分钟前
React Router常见面试题目
前端·react.js·面试
Cachel wood1 小时前
Vue.js前端框架教程5:Vue数据拷贝和数组函数
linux·前端·vue.js·python·阿里云·前端框架·云计算
匹马夕阳1 小时前
防抖(Debounce)和节流(Throttle)的区别和应用场景
开发语言·前端·javascript
快乐点吧2 小时前
【前端面试】list转树、拍平, 指标,
前端·面试·list
冴羽2 小时前
Solid.js 最新官方文档翻译(2)—— 响应式介绍
前端·javascript·react.js
今晚哒老虎2 小时前
ElementPlus Table 表格实现可编辑单元格
javascript·vue.js·elementui
Domain-zhuo2 小时前
uniapp跨端适配—条件编译
前端·javascript·vue.js·uni-app·vue
Cachel wood2 小时前
Vue.js前端框架教程1:Vue应用启动和Vue组件
大数据·前端·vue.js·git·elasticsearch·前端框架·ssh
范文杰2 小时前
2024年AI 编程现在可以做到什么程度?
前端