自然言語処理(NLP)において、意図とはユーザーが何らかの目的、欲求、願望を表現することを指す。ユーザーが送信したメッセージを分析し、その背後にある意図を特定することで、適切なコンテンツを返信することができる。例えば、「食べ物を注文する」、「天気をチェックする」、「パリに行きたい」などはすべて有効な意図です。
チャットボットがユーザーのインテントを正確に認識するためには、インテントごとに名前と例のセットを定義する必要があります。名前は、インテントを識別するために使用される一意のラベルであり、例は、チャットボットがインテントを認識するために訓練するために使用されるサンプル発話です。名前は簡潔で、明確で、一貫性があり、例は多様で、典型的で、網羅的でなければなりません。例えば、"order food "というインテントに対して以下のように定義することができます:
名前:注文
例
- ピザを注文したいんだ。
- 牛肉麺を一杯ください。
- 特技は何ですか?
異なるインテントを定義することで、チャットボットが複数のタイプのユーザーリクエストを処理し、異なるシナリオに基づいて適切な応答やアクションを提供できるようになります。例えば、ユーザーが「パリに行きたい」と入力すると、チャットボットはこれを「旅行」のインテントとして認識し、ユーザーの好みや予算に基づいてパリの情報や提案を提供することができます。このようにして、より賢く、より柔軟で、よりユーザーフレンドリーなチャットボットを作ることができる。
意思表示
ゼップ のインテント抽出機能は、メッセージのインテントを識別し、メッセー ジメタデータに永続化します。💡 インテントデータにより、開発者はよりリッチでパーソナライズされたスマートボディインタラクションを構築できます。🔥
自然言語処理(NLP)の分野では、人間の混沌としたコミュニケーションから意味を抽出することは困難と思われるかもしれません。今日、私たちは、リアルタイムの理解に深い価値を提供する重要な機能、Intent Extractionを紹介できることを嬉しく思います。
ユーザーの意図を理解することは、会話AIシステムにおいて有意義でパーソナライズされたインタラクションを設計するための基礎となります。インテントを抽出することは、単に単語やフレーズを認識することではなく、与えられたコンテキストでユーザーが何を意味しているかを理解することです。大規模言語モデル(LLM)アプリケーションのパーソナライゼーションには、会話全体を通して意図を理解することが必要です。
私たちが新しく立ち上げた機能:インテント抽出AIを活用した顧客とのインタラクションは、組織にとって貴重なツールである。
インテント抽出とは何か?
インテント抽出の核心は、ユーザーの入力からユーザーのゴールや目的、つまり何をしたいのかを認識するNLPタスクである。例えば、ユーザーが「アップビートな音楽を再生して」と言ったとします。ここでのインテントは、単に「音楽を再生する」ということではなく、「アップビート」という音楽の種類を指定することです。
使用意図
デフォルトでは、Zepは各メッセージの意図を自動的に抽出します。config.yamlを編集することで、この機能の有効/無効を切り替えることができます:
...
extractors:
summarizer:
enabled: true
entities:
enabled: true
intent:
enabled: true
embeddings:
enabled: true
dimensions: 1536
model: "AdaEmbeddingV2"
...
デフォルトでは、すべての会話はZepに保存された各メッセージの「インテント」を持つ「システム」メタデータを含む。
パーソナライゼーションを推進するインテント
次の例は、Eコマース環境におけるユーザーとのパーソナライズされたインタラクションを促進するために、インテントを顧客のプリファレンスとどのように組み合わせることができるかを示している:
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日間にスキンケア製品を探していた顧客
- 過去1ヶ月間に顔のスキンケア製品を検索した顧客
- スキンケアカテゴリーで特定のタイプの製品を探している顧客
つまり、過去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'"},
},
)
さらに、この分析を続けて、スキンケアのモイスチャライザーを購入するつもりが、別の関連製品(おそらく日焼け止め)ではなく、モイスチャライザーを購入してしまう顧客の数を評価することもできる。その結果、既存の顧客ベースが改善されたり、あるいは新たな顧客ベースが生まれたりする可能性がある。
そして、これらの顧客セグメントをそれぞれプロンプトのジャーニーにマッピングし、ユーザーのパーソナライズ、ブランド・ロイヤルティ、レスポンスの一貫性、その他のビジネス成果のために最適化することができる。
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)
関連する自動化されたシステムは、学習された意図と製品をどのように位置づけたいかに基づいて、異なるプロンプトパスを継続的にA/Bテストするかもしれない。
顧客がどのように製品とインタラクションするかを分類し、プロンプト・ジャーニーを構築することで、これらのインタラクションにおいてより深いレベルのパーソナライゼーションを提供することができる。
インテリジェンスの未来
インテントの興味深い点は、自律的なAIインテリジェンスの可能性です。私たちは、ダイアログで特定されたアクションに基づいてAPIをトリガーしたり、外部システムを呼び出したりするワークフローと、深いパーソナライゼーションを組み合わせることに興奮しています。インテントは、ステップのデバッグ、不要なインテリジェンス実行ループの刈り込み、高速インテリジェンス実行の最適化にも使用できます。
意図を理解することは、これらのシステムにおける人間の解釈可能性、正確性、再現性の核心である。これはまだ新しい分野であり、私たちはチームが急速に実験と革新を行っているのを目の当たりにしています。私たちは、この機能が様々なユースケースに役立つことを願っています。
Intent Extractionの発表により、私たちは会話AIをよりパーソナライズされた、意味のある、効率的なものにすることを目指しています。今すぐお試しいただき、ご意見をお聞かせください。