在自然语言处理(NLP)中,意图指用户表达某种目的,想做或想要的事情。通过分析用户发出的信息,识别其背后的意图,从而回复相关的内容。例如,“订餐”、“查看天气”、“我想去巴黎”等都是有效的意图。
为了让聊天机器人能够准确地识别用户的意图,我们需要为每个意图定义一个名称和一组示例。名称是用来标识意图的唯一标签,示例是用来训练聊天机器人识别意图的样本语句。名称应该简洁、明确、一致,示例应该多样、典型、覆盖。例如,我们可以为“订餐”这个意图定义如下:
名称:order_food
示例:
- 我想点一份披萨
- 请给我来一碗牛肉面
- 你们有什么特色菜?
通过定义不同的意图,我们可以让聊天机器人能够处理多种类型的用户请求,并根据不同的场景提供合适的回复或动作。例如,如果用户输入“我想去巴黎”,聊天机器人可以识别出这是一个“旅游”意图,并根据用户的偏好和预算提供巴黎的旅游信息和建议。这样,我们就可以创建一个更智能、更灵活、更人性化的聊天机器人。
介绍意图
Zep 的意图提取器识别消息的意图,并将其持久化到消息元数据中。💡 借助意图数据,开发者可以构建更丰富、更个性化的智能体交互。🔥
在自然语言处理 (NLP) 领域,从混乱的人类沟通中提取意义似乎令人望而生畏。今天,我们很高兴推出一项重要功能——“意图提取”,它为实时理解提供了更深刻的价值。
理解用户的意图是设计任何对话式 AI 系统中,有意义且个性化交互的基石。提取意图不仅仅是识别单词或短语,更在于理解用户在给定语境中的含义。大语言模型 (LLM) 应用的个性化需要在整个会话过程中理解意图。
我们新推出的功能:意图提取,是企业利用 AI 驱动的客户互动的一个有价值的工具。
什么是意图提取?
意图提取的核心是一个 NLP 任务,它涉及从用户的输入中识别用户的目标或目的——他们想要做什么。例如,用户可能会说,“播放一些欢快的音乐”。这里的意图不仅仅是“播放音乐”,而是指定音乐的类型——“欢快的”。
使用意图
默认情况下,Zep 会自动提取每条消息的意图,您可以通过编辑 config.yaml 来切换启用或禁用此功能:
...
extractors:
summarizer:
enabled: true
entities:
enabled: true
intent:
enabled: true
embeddings:
enabled: true
dimensions: 1536
model: "AdaEmbeddingV2"
...
默认情况下,所有对话都将包含一个“system”元数据,其中为存储在 Zep 中的每条消息设置了“intent”。
意图 驱动个性化
以下示例说明了“意图”如何与客户偏好相结合,以帮助在电子商务环境中推动与用户的个性化互动:
Human: I'm looking for a new skincare product.
ZepMemory:
{
"uuid": "6026b3b7-3755-4d00-89d8-243ecfc45931",
"created_at": "2023-06-21T02:19:45.577522Z",
"role": "human",
"content": "I'm looking for a new skincare product.",
"metadata": {
"system": {
"intent": "The subject is expressing a need or want for a new skincare product."
}
"customer_firstname": "Alice",
"customer_id": "KDSJFJDSF",
"member_since": "03-01-2009",
"product_pref_tags": "eco-friendly, vegan"
},
"token_count": 11
}
AI: Of course, Alice. Based on your preference for eco-friendly and vegan products, I can recommend a few options. Are you looking for a specific type of skincare product like a cleanser, moisturizer, or serum?
ZepMemory:
{
"uuid": "30eb918d-4b3a-42a9-a64b-c79e01f87ec4",
"created_at": "2023-06-21T02:19:45.577522Z",
"role": "ai",
"content": "Of course, Alice. Based on your preference for eco-friendly and vegan products, I can recommend a few options. Are you looking for a specific type of skincare product like a cleanser, moisturizer, or serum?",
"metadata": {
"system": {
"intent": "The subject is offering recommendations for eco-friendly and vegan skincare options and inquiring about the specific type of product the person is looking for."
}
},
"token_count": 46
}
Human: I'm looking for a good face moisturizer.
ZepMemory:
{
"uuid": "f8ec855b-fd59-4084-a3d1-2b81857d5dcd",
"created_at": "2023-06-21T02:19:45.577522Z",
"role": "human",
"content": "I'm looking for a good face moisturizer.",
"metadata": {
"system": {
"intent": "The subject is searching for a specific type of facial skincare product."
}
},
"token_count": 12
}
AI: I recommend the 'Green Goddess' vegan moisturizer. It's a highly rated, eco-friendly product and is particularly effective for dry skin. Would you like to add this to your cart?
ZepMemory:
{
"uuid": "4e3d0fe8-5242-4c9c-8891-34636af1e576",
"created_at": "2023-06-21T02:19:45.577522Z",
"role": "ai",
"content": "I recommend the 'Green Goddess' vegan moisturizer. It's a highly rated, eco-friendly product and is particularly effective for dry skin. Would you like to add this to your cart?",
"metadata": {
"system": {
"intent": "The subject is making a product recommendation and asking if the listener would like to add it to their cart."
}
},
"token_count": 40
}
Human: Great, that should work!
ZepMemory:
{
"uuid": "5ec6a546-eec9-4b9d-b03d-11b142600a0a",
"created_at": "2023-06-21T02:19:45.577522Z",
"role": "human",
"content": "Great, that should work!",
"metadata": {
"system": {
"intent": "None."
}
},
"token_count": 8
}
]
}
为什么意图提取如此重要?
随着 AI 聊天机器人在各个领域的使用不断增长,这些系统理解并恰当响应用户意图的需求变得空前重要。意图提取有助于:
- 增强用户体验: 通过理解用户的意图,AI 系统可以提供相关且个性化的响应,从而提高用户满意度。
- 简化互动: 它通过在交流的早期识别用户的目标来帮助简化对话。
- 提高效率: 通过准确识别用户的意图,AI 系统可以开始代表用户执行操作(例如调用 API、更新系统等),从而提高这些系统的整体效率。
实际应用
如今的大语言模型在 理解 、 推理 和 推断 方面非常强大。那么,如何在您的应用程序中利用意图的力量呢?
让我们看一下上面的示例如何在实际生产环境中真正使用:
Human intents that we captured in this conversation:
1: "The subject is expressing a need or want for a new skincare product."
2: "The subject is searching for a specific type of facial skincare product."
现在我们知道了意图,我们可以分析客户过去是如何进行这些对话的,并使用它来建模未来与客户互动的几种可能方式:
- 过去 7 天内寻找护肤产品的客户
- 过去一个月内搜索面部护肤品的客户
- 在护肤品类别中寻找特定类型产品的客户
因此,如果我们想将过去七天内所有寻找护肤产品的客户聚集在一起,我们现在可以创建一个 客户群,其中包括所有意图符合这些标准的客户。
# Use Zep SDK
search_results = await client.asearch_memory(
session_id=session_id,
search_payload=MemorySearchPayload(
metadata={
"start_date": "2023-06-02",
"end_date": "2023-06-09",
"where": {"jsonpath": "$[*]['metadata']['system']['intent'] == 'customers looking for skincare'"},
},
),
)
# You can also use Langchain
search_results = retriever.get_relevant_documents(
metadata={
"start_date": "2023-06-02",
"end_date": "2023-06-09",
"where": {"jsonpath": "$[*]['metadata']['system']['intent'] == 'customers looking for skincare'"},
},
)
此外,您可以继续进行此分析,以评估有多少具有购买护肤保湿霜 意图 的客户最终购买了它,而不是不同的但相关的产品(可能是防晒霜)。这可能最终成为现有客户群的改进,或者可能是额外的客户群。
然后,可以将这些客户群中的每一个映射到 Prompt 旅程中,然后可以针对用户个性化、品牌忠诚度、响应一致性或其他业务成果进行优化。
from langchain.prompts import PromptTemplate, StringPromptTemplate
from langchain.chains import LLMChain
...
prompt = """you are a helpful shopping assistant. Use the User preferences and Recommendations to write back responses based on the following rules:
1. If the user has preference for {user_pref} then suggest {recommend_sku} products.
2. Make a helpful {prompt_journey_append} suggestion.
"""
prompt_journey.prompt = prompt
...
#
# an example of how a prompt_journey may be used
# prompt_journey may be implemented as a structure that
# contains different prompts that can be used and chained together
# for different customer segments
#
if customer_segment.tag == "ecofriendly":
prompt_journey.type = customer_segment.type
prompt_journey.append("eco-friendly face cream")
prompt_journey.suggest_top(eco_sku)
elif customer_segment.tag == "newcustomer":
prompt_journey.append("face cream with built in sun-protection?)
prompt_journey.suggest_top(spf_facecream)
# Now you can use the chosen prompt
prompt = PromptTemplate.from_template(prompt_journey.prompt)
chain = LLMChain(llm=ChatOpenAI(), prompt=prompt)
chain.run(input=input)
一个相关的自动化系统可能会根据学习到的意图以及您可能希望如何定位产品,不断地对不同的 Prompt 路径进行 A/B 测试。
现在我们可以开始看到意图在分类客户如何与产品互动以及构建 Prompt 旅程方面的力量,Prompt 旅程可以在这些互动中提供更深层次的个性化。
智能体未来
意图的有趣之处在于其在自主 AI 智能体中的潜力。我们很高兴将深度个性化与工作流程相结合,这些工作流程可能会根据对话中识别的操作触发 API 或调用外部系统。意图还可以用于调试步骤、修剪不必要的智能体执行循环以及优化快速智能体执行。
理解意图是这些系统中人类可解释性、准确性和可重复性的核心。这仍然是一个新兴领域,我们看到团队正在迅速地进行实验和创新。我们希望此功能将有助于各种用例。
随着意图提取的推出,我们的目标是使对话式 AI 更加个性化、有意义和高效。立即试用,让我们知道您的想法。