你好,我是产品二姐。
上节课我们拆解了AI产品的基础设施建设,这节课我们聊聊上层建筑。这部分是产品经理日常工作的重头戏,包含提示词、RAG和Agent构建。
用AI客服产品举例,这三者的作用是这样的:
-
提示词能让客服很有礼貌。比如它会说:您好呀,很高兴为您服务。
-
RAG能让客服很专业。当客户咨询某个产品具体的价格时,RAG能查阅相关价格手册,直接给出具体数值;如果没有RAG,客服只能傻白甜地说,“亲,请您查阅价格手册哦~”虽然礼貌,但并不解决实际问题。
-
Agent能让客服很有执行力。当客户要求安排明天送货时,Agent能在系统里修改送货时间,并回复客户“我已经帮您修改明天送货”。
这节课我会用最容易入门的方式带你理解以下概念,为后面的实战案例做好知识储备。
-
提示词工程:我会讲述一个框架和两个技巧。
-
RAG:我会带你“参观”RAG工厂的流水线作业。
-
Agent:我会带你学习让Agent具备执行能力的两项技能。
提示词
相信你在很多地方看到过关于提示词的知识,但是AI产品经理的提示词和日常我们所说的提示词有所不同。
第一个区别是目标不同,正如01节课中讲的:
-
普通用户写提示词就像玩盲盒。对结果有所期待,但不要求确定。
-
AI产品经理写提示词就像打靶。你是首先有一个确定的目标,再开始写提示词,直到提示词能打中靶心为止。
第二个不同是使用工具不同。
-
普通用户写提示词是在AI产品里写,比如Open AI的ChatGPT。
-
AI产品经理写提示词是面向原生的大语言模型写,比如Open AI的GPT Playground。
在这里,ChatGPT是OpenAI包装好的一个AI产品,ChatGPT里的每一次问答并不是直接发给模型,而是经过了包装才发给GPT模型。而GPT Playground里的对话才是直接发给GPT模型的。你可以把GPT理解为OpenAI提供的“毛坯房”,为了把这个“毛坯房”卖出去,OpenAI提供了一个“样板房”,就是ChatGPT。
下图是二者界面对比,ChatGPT看上去更加简洁,看上去就可以“拎包入住”;而GPT Playground 里会有很多设置项,更像是毛坯房里裸露的“水电管线”。

预备知识:准备环境
那么在“毛坯房”里写提示词之前,我们先来介绍一下毛坯房里的“水电注意事项”。不过这里需要说明,每个模型厂商“水电注意事项”也不尽一致,在这里我列出部分模型的“毛坯房”可配置项和官方链接,其他模型大家直接参考官网。

其中,OpenAI的Playground配置项是目前最全的,我们就以此为例具体说明。
首先,左侧四个选项Chat、Assistants、TTS、Completion,可以视作面向不同场景开发的不同“户型”。
-
Chat:和模型直接对话,是调试提示词的主要模式。
-
Assistants:可以先创建聊天机器人角色,再用这个角色与模型对话。如果你的产品仅仅就是一个对话机器人的话,可以用这种模式来调试提示词。
-
TTS:是文本到语音,当模型收到你的消息时,会被朗诵出来。适用于语音输出的场景。
-
Completions:是指文本补全,经常用在代码补全的场景。
我们以最基本的 Chat 模式来看一种模式下的右侧各种设置。
-
Function:添加模型可以执行的自定义功能。
-
Response format:指定对话输出的格式要求。比如要求以JSON格式输出,方便解析。方便下一步操作。
-
Temprature:用来控制模型的创造力和随机性。温度越高,回答越发散;温度越低,回答越稳定。你可以想象,水的温度是100时,水分子以水蒸气的方式发散;而水温0度时,则相对稳定。实际上大语言模型的原理本身就起源于热力学模型,因此在这里沿用了温度的概念。
-
Maximum Tokens:设置模型在单个响应中可以生成Token最大数量。
-
Stop sequences:可以提供特定的短语或模式控制模型应停止生成文本。
-
Top P:此参数影响模型输出的概率分布,专注于更可能的预测。
-
Frequency penalty:降低模型出现重复单词或短语的可能性。
-
Presence penalty:增加模型谈论新主题的可能性。
在AI产品开发中,当我们向OpenAI发送请求时,需要带上以上设置好的参数。对于产品经理来说,我们调整好提示词后,需要同时把这些参数值的设置告诉开发同学。
配好环境后,我们就可以学习提示词框架和技巧了。
提示词框架和技巧
提示词技巧难度不高,网上也有很多资料。但随着实战深入,你会发现提示词更多的是一项“工程”。
比如对于不同模型,我们需要调整不同的提示词;对于同一场景,也需要需要调整提示词以达到最大化满足需求。
这节课我会以一个框架和两个技巧带你了解基本知识,后续再通过实战案例带你深入体会。
- 一个入门框架
提示词的框架就是提示词模板。框架是为了让我们更容易上手、方便记忆。在你充分实践后,就不必拘泥于框架了。网上有非常多的提示词框架(参考1),这里我以RTF框架为例说明。
RTF代表Role(角色),Task(任务), Format(格式)。我们把上节课提到的客服场景用RTF框架写出来,就是下面这样的提示词。
## Role
情感标注人员
## Task
我给你的一句客户留言文字,请你判断出文字中的情绪。请你从以下选项中选择:
1. 正面:表达了肯定、喜欢、赞赏、褒扬
2. 负面:表达了否定、讨厌、贬低
3. 中性:通常客观描述,没有主观意向, 没有肯定、喜欢、赞赏、褒扬,也没有否定、讨厌、贬低
## Format
严格按照以下格式输出:
{
"客户留言": "客户留言内容",
"情绪判断": "情绪判断结果"
}
在撰写提示词时需要注意两条不成文的“习俗”。
-
提示词中的标记位参考 Markdown 语言来写。Markdown是一种带标记的语言,比如例子中 “##” 代表一个小标题,Markdown语言既能方便人来操作,又能让计算机很好理解。所以在提示词的撰写中广泛应用。你可以参考Markdown 官方文档学习。
-
输出格式结构化。上面的提示词特别规定了严格的输出格式(通常是JSON格式)。这是因为开发同学通常会对模型的输出做下一步处理,结构化输出会方便他们解析。如果你不熟悉JSON格式,可以借助ChatGPT来修改成JSON格式(比如下图)。

在框架之外,我们还需要掌握提示词的两个基本技巧,Few-Shots、COT。
- 技巧一: Few-Shots(少量样本提示)
Few-Shots通俗来讲就是“举例子”。我们给刚才客服场景的提示词加上Few-Shots,就是下面这样的。
// RTF 内容略...
## few shots
{
"客户留言":"今天我不在家,你们明天送货;",
"情绪判断":"中性"
},
{
"客户留言":"我就不相信你们卖的是正品,质量太差了!",
"情绪判断":"负面"
},
{
"客户留言":"收到您的差额退还了,你们的服务真快,谢谢!",
"情绪判断":"正面"
}
你可千万别小看举例子这个简单的操作,这可是正儿八经的学术话题。2020年OpenAI GPT-3论文的标题就是《Language Models are Few-Shot Learners》,论文中有一张图这样的:

你看,在1750亿参数的大语言模型中:
-
给出一个示例比不给示例的准确率从10%迅速提升到45%。
-
给出10个示例比一个示例的准确率从45%提升到60%。
-
给出10个以上示例效果会有所波动甚至下降。
所以,少量样本数量不宜过少,但也不能过多。这也是提示词被称为是“工程”的一个原因:我们需要通过大量尝试,把最典型的例子放在提示词里。
Few-Shots论文让学术界见识到了大语言模型通过上下文就能“照猫画虎”地学习到示例里的能力,而当时大语言模型的推理能力还很弱。于是大家就开始思考:如果提示词当中给出推理步骤,是不是就能让大语言模型“照猫画虎”地学会推理呢?
这一思考就催生了提示词的第二个基本技巧:COT(思维链,Chain Of Thought)。
- 技巧二: COT。
思维链简单来说就是在提示词里加上“让我们一步步来,第一步……,第二步……”,主要用于推理场景,比如数学应用题计算,再比如规划旅程时中转站的时间要前后合理,这些都是推理场景。
这个简单的技巧放在提示词里确实有四两拔千金的效果。在COT开山论文里发现:对于参数量在十亿、百亿、千亿的大模型,采纳了COT的提示词在GSM8K数据集(加减乘除应用题)的测试中,准确率从20%直接干到50%,接近人类平均水平。正如论文标题所说的《COT点燃了大语言模型的推理能力》。

所以,在推理场景下,COT的作用绝不可小觑。如果你了解更多关于COT的研究,可以参考这篇文章。上面说的提示词框架和两个提示词技巧还衍生出来了很多技巧,你可以参考2提示词指南网站上的内容学习。在后续的实战案例中,我们会以组合、嵌套的方式同时使用这些技巧。
接下来我们来了解AI产品上层建筑中的另外一项内容,RAG。
RAG
在本节课开头客服场景的例子里,我说的是RAG会让客服更专业,是因为它会查阅资料后给出回答。RAG本质上就是把搜索到的资料作为提示词的一部分发给大语言模型,让大语言模型有根据地输出内容,从而降低大模型“臆想答案”的概率。在OpenAI分享的案例中,通过对RAG技术的应用将回答准确率从45% 提升到了98%,可见RAG的重要性。
RAG的全称是 Retrieval Argumented Generation,中文是检索增强生成。意思是把检索(资料库)的结果发给大模型,以增强大模型的生成能力。
下面这张图就是一张RAG作业的流水线,行话叫Pipeline。这个流水线上有10个作业环节,只有精细打磨流水线上的每一个步骤,最后才能出来好的效果。

接下来,我们对这个 RAG Pipeline 中的各个环节做一个概念介绍。为了便于理解,这里都会拿“查阅资料库”来类比。
-
数据提取:类比于资料库的资料来源。主要目标是确保资料数据完整,除此之外,还可以新生成一些数据,比如利用大模型对资料进行 summary、打标签,让后续处理更高效。
-
分块(Chunking):你可以想象成资料应该拆分到多细来存储,用梗话来说就是“对齐颗粒度”。比如按段落、句子拆,或者按照文章标题、某个标记来拆等等。
-
向量化(Embedding):就是把拆分后的段落、句子、单词转换为计算机可处理的向量,向量化就是把一个物体拆成多个维度表达。
比如一本书可以从以下八个维度去表达。

那么某一本特定的书《思考的快与慢》对应的向量值就是八维空间的一个点,计算机就是通过这些点来定义事物的。同样,语言文字也可以被向量化,且语言都已经有成熟的向量模型,比如智源的开源 embedding 模型 bge-large-zh-v1.5 有 1024 个维度。
- 创建索引:类似把向量化后的资料块进行分类、整理,按照一定顺序放在对应位置后给出序号,方便后面的检索查找。索引可以建多个,比如书可以按照图书分类排序,也可以按照出版时间排序。
至此,你的资料库终于建好了,接下来就是根据具体问题在这些资料库中查找了。
-
检索环节(Retriever):类似在资料库找相关资料。系统会根据用户的提问,在索引中查找最相关的数据块。找到和问题匹配度高的资料(注意此时还没有形成答案)。
-
第一轮检索评估:大多数文章中会漏掉评估的环节,开发者往往也会忽视。要知道,没有评估等于盲走。这里的评估和传统搜索的评估是一样的,最核心的指标是召回率,即实际检索出的文本块数量/期待被检索的文本数量。
讲到这里我们停一下。实际上到这一步之前,在技术上和互联网的搜索逻辑是类似的,我们统称为“语义检索”阶段。这意味着如果你公司内部的知识库已经具备“语义搜索”能力,那么通过嫁接下面两步就可以实现基于 LLM 的问答应用了。
接下来的环节就是大语言模型 LLM 出来后特有的阶段。
-
重排序(Rerank):语义检索出来的结果相当于是资料初筛,讲究的是效率。重排序顾名思义就是对初步检索结果进行重排序,从而得到更精确的结果。重排序也有开源闭源的模型供大家使用,比如Cohere等。
-
重排评测:和语义检索阶段一样,在重排序之后,我们也应该有一个评估,这里的评估机制和步骤6类似。
-
生成(Generator):这一步对应的就是系统终于找到了最准确的资料,然后整理、总结资料,形成完整报告。实际上就是将重排序后的资料片段加上用户的提示词,提供给大型语言模型LLM,由 LLM 根据上下文生成最终的输出。在这个过程中,主要在提示词、上下文、意图识别方面下功夫。
-
终极评估:这一轮的评估指标和检索、重排序指标不一样,现在有专门用于评估 RAG 的框架 RAGAS (参考 RAGAS 官网)。
总的来说,RAG 流程玩的是一条流水线上的“组合拳”。对于应用开发者来说,比拼的就是对不同的场景该怎么打这套组合拳。有了RAG和提示词,相当于我们和大语言模型建立起了很好的沟通机制,当我们把事情沟通好之后呢,就可以借助大语言模型来“执行工作”了,这就轮到Agent出场了。
Agent
Agent并不是平行于RAG、提示词的概念,Agent本身就包含了RAG和提示词的应用。
在 01节中,我们知道Agent需要具备记忆、反思、规划和工具使用能力。这四项能力中,我把记忆、反思、规划总结为思考力,工具使用总结为执行力。思考力通过上述的提示词工程和RAG就可以获得,剩下的执行力,我们在这一小节讲述。
本节课开头的例子中,Agent能让客服直接安排退货这个行为,这就是执行力。那这是怎么做到的呢?你只要记住两项技能:Function calling和Re-Act,别急,我们一个个讲清楚。
技能一:Function calling(函数调用)
Function calling的中文意思是函数调用,是计算机语言里的一个概念。比如你使用Excel表里的公式SUM(C1,C2)代表将单元格C1,C2中的数字相加,在这里:
-
自然语言是:将单元格C1,C2中的数字相加。
-
自然语言被转换成函数调用就是:SUM(C1,C2),函数调用可以直接被机器编译并运行。
大语言模型的Function calling能力就是把自然语言指令转换为函数的调用指令,从而使自然语言指令可以被执行。
当然,可以被机器运行的函数有很多种,比如Java函数、Python函数,而在AI产品中最常见的函数调用方式就是调用微服务架构下的各种API request。
下面就是以API request这种函数为例,通过提示词的方式让大语言模型完成函数调用的任务。
## Instruction
你是一个人工智能编程助手,根据用户请求和函数定义,调用函数来完成任务,并以代码格式进行回应,无需回复其他话语。请特别注意函数的定义。
## 函数定义
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
},
"required": ["location"],
}
}
}
]
## 用户请求
查一下今天北京的天气
这个例子的提示词里有三个部分。
-
任务:告诉大语言模型要完成指令转换的任务,这里的核心任务就是“根据用户请求和函数定义,调用函数来完成任务,并以代码格式进行回应”。
-
函数定义:专业术语叫schema,即告诉大语言模型这个API request里有哪些参数,各个参数的名称、描述、数据类型等。这里最好遵循OpenAI自己的格式,这种格式也可以借助大语言模型来完成。
-
用户请求:就是自然语言指令。
我们把上述的例子输入给到Open AI的GPT Playground,GPT就会输出以下API Request,这就可以直接被机器运行。我们就实现了将自然语言指令转变为计算机可执行指令。
```json
{
"function": "get_current_weather",
"parameters": {
"location": "北京"
}
}
不过大语言模型在做这个可执行指令的转换时,充满了不确定性,除了调整提示词中instruction部分外,还需要一些机制来控制执行的准确性,这就需要赋予Agent的第二项技能:Re-Act。
技能二: Re-Act
Re-Act 的全称是:Reasoning and Act,推理并且执行,相当于是给行动装上了一个随机应变的机制。
回到上面的函数定义例子,假设API定义中要求第14行代码的字段“location”必须是英文字母,但我们发送的是汉字“北京”,API就会返回错误信息“location must be English”。这时大语言模型还会根据这个错误信息自动推理出此时需要将汉字“北京”改为拼音“Beijing”后,再去调用API。
```json
{
"function": "get_current_weather",
"parameters": {
"location": "BeiJing"
}
}
这就是推理并且执行,你瞧,大语言模型是不是很聪明呀。
在上面这个例子中,我们很容易就发现,在Agent进行推理执行的过程中,需要分享把观察到的报错信息也发给大语言模型,这就构成了Re-Act模式的提示词框架:Observation,Think,Act。
## Observation:
API就会返回错误信息“location must be English”.
## Think:
应该location这个字段的值转换为英文再发一次.将API request 当中的"北京"修改为"BeiJing".
## Act:
```json
{
"function": "get_current_weather",
"parameters": {
"location": "BeiJing"
}
}
这种Observation->Think->Act的模式会一直循环,直到在Think步骤中认为Observation里的结果能达成用户诉求,或者循环次数达到了代码里规定的上限。可以说,Re-Act本质上就是一种提高Agent执行准确率的提示词模板。
听到这里,你会不觉得,哇~ 这也太厉害了吧,只要通过提示词能让大语言模型像个真人一样自主行动呢。不过这里我要泼点冷水:目前大语言模型的Reasoning 和 Act的准确率还不够高,就像刚刚走路的孩子,执行起来跌跌撞撞,但这种能力会越来越强。
另一方面,研究者在Re-Act基础之上,也衍生出了各种各样的花式提示词模板来提升Agent的执行准确率。类似于给孩子装上护具、穿上牵引带这类外围措施防止他们跌倒。我们在后续的实战案例中会根据需要使用到这些方式,在这里不再细讲。
小结
到这里,AI产品架构中的上层建筑就完成了简单介绍。针对三点,我们需要做到:
-
提示词:以简单框架入门提示词,牢记Few shots、COT两项基本技巧。这是让应用层和大语言模型进行有效沟通的技巧。
-
RAG:了解RAG流水线的每一个环节,之后我们才能在实战案例按照流水线来一一排查问题。
-
Agent:通过函数调用具备执行力,通过以Re-Act为代表的Agent提示词模板提升执行准确率。
到这里我们完成了第一章的产品经理必懂的AI技术原理的学习。一款AI产品通常有四层架构,这四层又可以归类为基础设施(算法、数据,大语言模型)和上层建筑。这部分AI产品经理必备的基础知识,也是打造所有AI产品的必备工具。相信你已经掌握了使用这些工具的方法,一定在实战中得心应手地使用这些工具,打造出优秀的AI产品。
课后题
注册堪称国内版OpenAI的智谱大语言模型开放平台(相当于智谱的API playground),并完成两个任务。
任务一: 从 twitter数据集中选取20条数据,写一条提示词,使模型输出结果与20条数据中的标注数据保持一致。注意使用Few shots。
任务二:将本节课中的《技能一:Function calling(函数调用)》部分提到的Function calling提示词模板输入到智谱大语言模型开放平台,看看输出的结果是否和OpenAI输出的一致,看看在function calling 领域,openAI和智谱是否有一定差距?
精选留言
2024-09-24 10:21:41
是不是可以这么解释,function call中的能力,rag都具备,但funciton call的实现成本更低呢?
2024-09-24 17:15:45
{
"客户留言": "这手机真难用,五年还不坏,我要不要买的新。",
"情绪判断": "负面"
},
{
"客户留言": "这手机真好,用两天就坏了,我又可以买新手机了",
"情绪判断": "正面"
}
2024-09-23 14:06:11
2024-09-25 15:02:28
2024-12-26 09:47:55
Ai产品有必要让技术教一下怎么在代码环境测prompt吗?然后直接在代码里面调用模型API 测试效果,是不是和技术对接更方便点,还是说Ai产品一般都是直接在模型里面调prompt的
2024-09-23 16:58:36
2024-11-28 20:22:35
2024-09-27 14:52:27
2025-07-30 14:27:00
2025-07-30 14:04:13
2025-03-17 15:58:22
# 调用函数获取当前天气
get_current_weather(location="Beijing, CN")
2025-03-17 15:32:29
## Role
情感标注人员:负责对客服留言进行情感分析和标注的工作人员
## Task
准确判断客服留言中表达的情绪,将其标注为“Complaint”或“no Complaint”。
1. complaint:表示不满、愤怒、失望或沮丧。
2. no complaint:表示满意、陈述或接受。
## Format
严格按照以下格式输出:
{
"客户留言": "客户留言内容",
"情绪判断": "情绪判断结果"
}
## few shots
下面是几个输出的例子,
{
"客户留言":"My driver side air bag has been recalled and replaced, but what about the passenger side?",
"情绪判断":"complaint"
},
{
"客户留言":"Honda won't do anything about water leaking in brand new car. Frustrated!",
"情绪判断":"complaint"
},
{
"客户留言":"no power in south b area... is it scheduled.",
"情绪判断":"complaint"
}
2025-03-12 22:44:35
提示词
## Role
你是一个经过严格训练的社会媒体情感分析模型,擅长根据文本中的关键词、语气判断推文的情感倾向。
## Task
我给你的20条用户推文,请你判断出文字中的情绪。请你从以下选项中选择:
1.complaint:表达了抱怨、投诉、不满
2.no complaint:表达了没有抱怨、没有投诉、没有不满
## few shots
{ "推文文本":"@asblough Yep! It should send you a notification with your driver’s name and what time they’ll be showing up", "情绪判断":"no complaint"},{ "推文文本":"@KenyaPower_Care no power in south b area... is it scheduled.", "情绪判断":"complaint"},
## Format
严格按照以下格式输出:
{
"推文文本": "客户留言内容",
"情绪判断": "情绪判断结果"
}
只有第18条:"Today at work there was a low flying duck heading toward a crowd of people, and I yelled ""watch out! and I'm very disappointed with myself.",no complaint, 给出的判断是 complaint 与数据集不一致
是对任务定义的理解不一致吗?可能数据集对 complaint定义是向外部抱怨,自我抱怨不属于
2025-03-03 20:04:42
先推理出一个结果---执行---有问题--问题反馈---调整推理---重新执行-----不断循环直到感知到结果符合预期
1.比如一次问题,用户感知到结果不满意, 重新修改并提问, 系统感知到反馈后,重新进行推理, 修正原有的推理过程, 重新执行
2.比如驾车, LLM感知到路障, 系统根据路障反馈重新推理, 选择新的路径, 执行新的驾驶指令。
无人驾驶技术和ReAct是不是也有关系吗
RAG,我一直理解为大语言模型挂载特定的领域知识, 也就是外链检索+通用能力
2025-02-23 21:00:01
Twitter数据集网址我怎么打不开呀
2025-02-23 20:58:02
2025-02-14 15:21:50
情感标注人员
## Task
我给你的一句客户留言文字,请你判断出文字中的情绪。请你从以下选项中选择:
1. 正面:表达了肯定、喜欢、赞赏、褒扬
2. 负面:表达了否定、讨厌、贬低
3. 中性:通常客观描述,没有主观意向, 没有肯定、喜欢、赞赏、褒扬,也没有否定、讨厌、贬低
## Format
严格按照以下格式输出:
{
"客户留言": "客户留言内容",
"情绪判断": "情绪判断结果"
}
## few shots
{
"客户留言":"今天我不在家,你们明天送货;",
"情绪判断":"中性"
},
{
"客户留言":"我就不相信你们卖的是正品,质量太差了!",
"情绪判断":"负面"
},
{
"客户留言":"收到您的差额退还了,你们的服务真快,谢谢!",
"情绪判断":"正面"
},
## few shots
{
"客户留言":"今天我不在家,你们明天送货;",
"情绪判断":"中性"
},
{
"客户留言":"我就不相信你们卖的是正品,质量太差了!",
"情绪判断":"负面"
},
{
"客户留言":"收到您的差额退还了,你们的服务真快,谢谢!",
"情绪判断":"正面"
}
## few shots
{
"客户留言":"今天我不在家,你们明天送货;",
"情绪判断":"中性"
},
{
"客户留言":"我就不相信你们卖的是正品,质量太差了!",
"情绪判断":"负面"
},
{
"客户留言":"收到您的差额退还了,你们的服务真快,谢谢!",
"情绪判断":"正面"
},
{
"客户留言":"你们的产品太好了,但是外观不好看,换个颜色啦!",
"情绪判断":"正面"
}
{
"客户留言": "你们的产品好用就是好用,外观瑕疵较多,服务不满意",
"情绪判断": "中性"
}
2025-01-07 15:33:20
{
"weather": "Today's weather in Beijing is sunny with a high of 25°C and a low of 15°C."
}
不知道这样的答案是否正确呢? 看样子是自行把 中文 北京 转换成了 beijing 带入了函数中。
2025-01-05 16:28:44
1、提示词中的few shots,一开始并不生效,需要提醒它参考few shots后,才生效(智谱、kimi都是)。
2、few shots中包含2种情况时,智谱只能记住一种情况,记住A就忘了B,KIMI无此情况。
A情况是正面描述+负面描述,侧重点在提建议,「我喜欢用你们的APP,但是登录过程太久了」;B情况是中性描述+负面描述,整体是在陈述事实,「今天看到一个人差点踩到水坑,我大喊一声“小心”,让大家都看到我了,好丢脸」
2024-10-29 17:12:24
@NortonSupport Thanks much.
@VerizonSupport all of a sudden I can't connect to my primary wireless network but guest one works
Aaaahhhhh!!!! My @Razer @PlayOverwatch d.va meka headset came in!!! I didn't even know it had shipped!!! So excited… https://t.co/4gXy9xED8d
@Lin_Manuel @jmessinaphoto @VAMNit Omg a little squish!!!!! Enjoy and congrats!!!! I miss mine being so young! ������
@IanJamesPoulter What's your secret to poaching eggs? Mine NEVER look that good.
@AWSSupport When will be able Kinesis Firehose compatible with Elasticsearch 6.0? Thank you!
@NCIS_CBS https://t.co/eeVL9Eu3bE
@msetchell Via the settings? That’s how I do it on master T’s
Today at work there was a low flying duck heading toward a crowd of people, and I yelled "watch out! and I'm very disappointed with myself.