你所不知道的Prompt

340 阅读10分钟

近期在老师的推荐下去学了吴恩达的prompt系列课程,让我明白了一些我所不知道的Prompt的用法。在吴恩达教授的Prompt工程系列课程中,他深入探讨了如何通过精心设计的提示(prompt)与人工智能模型进行高效的互动,其中AI客服让我印象深刻,“AI客服”作为应用场景之一,展示了传统客服工作与现代人工智能的结合如何提升效率和质量。在这篇文章中,让我们探索如何利用AI技术来重新定义和优化客户服务领域。

从传统客服到AI客服

传统的客户服务通常依赖人工客服人员与客户的直接交流。这种方式虽然直接、个性化,但也存在效率低下、成本高昂和无法24小时在线等问题。而AI客服的出现,则为这些问题提供了有效的解决方案。AI客服系统通过与自然语言处理(NLP)技术的结合,可以快速响应客户的询问,处理大量的常见问题,并且实现自动化的客户支持。 吴恩达在课程中提到,AI客服的关键在于如何让人工智能更好地理解并生成符合用户需求的回答。而这正是通过精心设计的prompt来实现的。通过与AI模型的互动,prompt不仅仅是指令的输入,它是一个桥梁,连接了用户的需求与AI模型的能力。因此,设计一个高效的prompt,能够让AI在特定情境下提供精准、智能的反馈,从而帮助客服系统完成从回答问题到处理复杂任务的全过程。

给AI赋予角色和清晰任务

在构建AI客服系统时,角色的赋予至关重要。吴恩达强调,要想让AI客服发挥作用,首先需要定义清晰的任务,并且为AI模型设定角色。例如,在电商平台中,AI客服的角色可能是“订单处理员”、“商品推荐员”或者“售后支持员”,而每一个角色都应该有清晰的责任范围和工作流程。这样,AI模型就能根据任务的需求,针对性地给出反馈,避免出现不相关或者不符合要求的回答。

例如,在电商平台的售后服务中,如果顾客询问关于退货政策的问题,AI客服的任务就是清晰地解释该平台的退货流程,并提供相关的操作指引。对于这类任务,AI不仅要了解平台的政策,还要能够根据具体的用户需求灵活回答。如果没有清晰的任务定义,AI模型可能就无法正确识别用户意图,从而给出不合适的回答。

如何让大模型“思考”:工作伴侣Agent的设计

吴恩达提到,通过合理的设计,AI可以作为工作伴侣Agent,来协助完成复杂的任务。在AI客服场景中,工作伴侣Agent的设计尤为重要。它不仅要帮助客服人员解答基础问题,还能处理一些较为复杂的需求。例如,当用户遇到一个涉及多个环节的问题时,AI客服需要能够理解这个问题的复杂性,并按步骤进行处理。

为了实现这一目标,我们需要给AI提供一定的背景信息、任务上下文以及示例数据。通过将相关案例作为输入,AI可以“学习”如何处理类似的任务,从而在实际应用中不断优化自身的表现。此外,AI的输出还需要根据一定的格式要求进行规范化,以确保最终的答复符合客户的预期。例如,AI客服的答复可能需要包含某些关键信息,如订单号、退货原因、逾期时间等,并且格式要简洁清晰,以便客户快速理解。

1.分布式设计:情感分析与写作风格的适应

一个高效的AI客服系统,除了能够回答问题,还需要具备情感分析和风格适应的能力。这是吴恩达在课程中提到的一个关键点——如何根据客户的情绪和表达方式调整AI的回应风格。例如,对于一个表达出不满的客户,AI应该能够识别出对方的负面情绪,并做出合适的安抚回应。而对于一个表达感谢或者询问的客户,AI则应该以更为亲切和积极的语气做出回应。

在这种情境下,情感分析和写作风格的分布式设计显得尤为重要。AI系统需要能够处理负面和正面的情感,并根据不同的情境选择合适的语气和风格。此外,AI客服的答复还需要与品牌的整体风格保持一致。例如,如果某个品牌的语气定位偏向正式且专业,那么AI客服的回答就需要避免过于随意的语言,保持一致的专业性。

2.给AI客服返回内容约定格式

吴恩达还强调了,设计AI客服时,输出内容的格式需要事先约定清楚。这不仅有助于提升信息传递的效率,还能确保每一次互动的标准化。例如,在处理一个订单查询时,AI的回答格式可能应该包含以下几个部分:

订单信息:订单号、下单时间、商品详情等。 当前状态:订单的处理进度,如已发货、待发货等。 下一步操作:如需要客户确认某些信息、联系售后等。 通过预设的格式,AI可以在处理每一项任务时保持一致性,从而提高用户体验。并且,通过反复迭代和优化这些格式,客服系统能够进一步提高效率和准确性,避免出现格式不统一或信息不全的情况。

自然语义编程:AI与人类语言的深度融合

在学习完《吴恩达Prompt工程》课程后,我对自然语义编程有了更加深入的理解。与传统的编程语言不同,自然语义编程强调的是用人类语言与机器进行交流,通过设计合适的prompt来引导机器执行任务。这种方式不仅降低了编程的难度,还使得AI能够更好地理解和生成符合人类需求的输出。

以下是我对此次学习的一些试验代码

import dotenv from 'dotenv';
import OpenAI from 'openai'; // 模块引入放在头部, 不会重复


// .env 本项目 环境变量配置文件
dotenv.config();
// 全面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 的 GPT-3.5-turbo 模型获取完成文本
 * @param {string} prompt - 用户提供的提示文本
 * @param {string} model - 要使用的 OpenAI 模型,默认为 'gpt-3.5-turbo'
 * @returns {Promise<string>} - 解析后的模型响应内容
 */
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,
  });

  // 返回解析后的模型响应内容
  return response.choices[0].message.content;
}


const main = async () => {
  /*// nlp 情感分析
  const sentiment = "negative" // 消极
  const review = `
  因此,他们仍然以 10-70 左右的价格在季节性销售,价格也比之前的 29 美元低。
  所以它看起来还不错,但如果你看看底座,刀片锁定到位的部分看起来不如几年前的版本那么好,但我打算非常温柔地使用它(例如,我先在搅拌机中粉碎非常硬的物品,如豆子、冰、米饭等。然后在搅拌机中将它们粉碎成我想要的份量,然后切换到搅拌刀片以获得更细的面粉,并在制作冰沙时先使用十字切割刀片,然后如果我需要它们更细/更少的浆状,则使用平刀片)。制作冰沙的特别提示:将水果和蔬菜切碎并冷冻(如果使用菠菜,请稍微炖一下,然后冷冻直至可以使用;如果制作冰糕,请使用小型或中型食品加工机),这样就可以避免在制作冰沙时添加太多冰块。
  大约一年后,电机发出奇怪的声音。
  我打电话给客服,但保修期已过,所以我不得不再买一个。仅供参考:这类产品的整体质量已经下降,因此他们有点指望品牌认知度和消费者忠诚度来维持销售。大约两天后就收到了。
  `
  const prompt = `
    你是一名客服AI助理。
    你的任务是向尊贵的客户发送电子邮件回复。
    给定以'''分隔的评论的客户发送电子邮件,
    生成回复以感谢客户的评论。
    如果情绪是正面或中性的,感谢他们的评论。
    如果情绪是负面的,道歉并建议他们可以联系客服。
    确保使用评论中的具体细节。
    用简洁专业的语气写作。
    在电子邮件中签名为“AI客户代理”
    客户评论: '''${review}'''
    评论情绪: ${sentiment}
  `

  const response = await get_completion(prompt);
  console.log(response);
  */
  const lamp_review = `
  需要一盏漂亮的灯放在我的卧室,这盏灯有额外的存储空间,而且价格也不太高。 
  很快就收到了。我们灯的灯串在运输过程中断了,公司很乐意给我们寄来一根新的。
  几天之内就到了。组装起来很容易。
  我缺少一个零件,所以我联系了他们的支持人员,他们很快就给我找到了缺失的零件! 
  在我看来,Lumina 是一家关心客户和产品的好公司!!
  `
  // 吴恩达prompt系列 machine learning 机器学习
  // nlp 

/*
  const prompt =`
    以下产品评论的情绪是什么,
    以三个反引号分隔
    确定以下评论作者表达的感情列表。
    列表中最多包含五项。将你的答案格式化为逗号分隔的单词列表。
    评论内容:'''${lamp_review}'''
  `
*/
/*  const prompt =`
  以下评论作者是否在表达愤怒?
  评论以下三个反引号分隔。
  请回答是或否。
  评论内容:'''${lamp_review}'''
  `
*/
/*  const prompt =`
  从评论文本中识别以下项目:
  - 评论者购买的物品
  - 制造该商品的公司

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

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

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

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

main()

通过将“cursor + prompt”的概念应用到实际问题中,我们可以让AI在处理客户服务时更加自然流畅。通过精细调整prompt的设计,我们能够更好地引导AI思考问题的本质,而不是单纯地将问题拆解成机械的指令。AI客服系统能够借助自然语言理解技术,从用户的提问中抓取核心信息,提供最准确的解答,甚至能够预判用户的需求,提供更为个性化的服务。

通过吴恩达的Prompt工程系列课程,我深刻认识到,AI客服不仅仅是一个自动化工具,更是一个智能的工作伙伴。它能够通过精心设计的prompt,赋予机器理解和解决问题的能力,使其在客户服务中发挥出巨大的作用。从角色和任务的定义,到情感分析和格式设计,再到自然语义编程的应用,每一个细节都能影响AI客服的表现。而随着人工智能技术的不断进步,我相信AI客服将在未来发挥越来越重要的作用,为电商、服务行业以及其他领域带来更多创新和变革。