このガイドでは クロード の高度な対話機能は、顧客からの問い合わせをリアルタイムで処理し、24時間365日のサポートを提供し、待ち時間を短縮し、正確な応答と積極的な対話で大量のサポートリクエストを管理します。
クロードと組む前に
サポートチャットにクロードを使うかどうかを決める
クロードのようなLLMを使ってカスタマーサポートプロセスの一部を自動化すべき重要な指標をいくつか挙げてみよう:
繰り返しの多いクエリー
クロードは、大量の似たような問題を効率的に処理することに特化しており、人間のエージェントはより複雑な問題に取り組むことができる。
迅速な情報統合の必要性
クロードは膨大な知識ベースから情報を素早く検索、処理、統合することができるが、人間のエージェントは調査を行ったり、複数の情報源を参照したりするのに時間を要するかもしれない。
24時間365日の可用性要件
クロードは24時間365日、疲れることなくサポートを提供することができる。一方、人間のエージェントに継続的なサポートを提供することは、コストもかかるし、難しいことだ。
ピーク時の急拡大
クロードは、スタッフを増員したり訓練したりすることなく、問い合わせ件数の急激な増加に対応できる。
一貫したブランド・ボイス
クロードには一貫してブランドのトーンや価値観を表現するよう指示できますが、人間のエージェントはコミュニケーション・スタイルが異なる場合があります。
他のLLMよりクロードを選ぶ際に考慮すべきいくつかの要素:
- 自然でニュアンスのある会話を優先する:クロードの洗練された言語理解力により、他のLLMとのチャットよりも人間同士の対話に近い、より自然で文脈を意識した会話が可能になります。
- クロードは、定型的な回答を生成したり、ユーザー用語の並べ替えを大量に書いたりすることなく、幅広いトピックやクエリに対応できます。
- 拡張性のある多言語サポートが必要:クロードの多言語機能により、対応言語ごとにチャットボットを設定したり、大規模な翻訳プロセスを経たりすることなく、200以上の言語での会話が可能になります。
理想的なチャット・インタラクションの定義
理想的な顧客とのやり取りを概説し、顧客がいつ、どのようにクロードとやり取りすることを期待するかを定義します。この概要は、ソリューションの技術要件を定義するのに役立ちます。
以下は、自動車保険カスタマーサポートのチャット対話のサンプルです:
- お客様サポート・チャット体験
- クロードお客様を温かく迎え、対話を始める
- お客様新しい電気自動車の保険について尋ねる
- クロード電気自動車保険に関する情報提供
- お客様電気自動車保険に関する質問
- クロード正確で有益な回答を、関連情報源へのリンクとともに提供すること。
- お客様保険やクルマとは関係のない質問をすること
- クロード無関係な話題は扱わないことを明確にし、顧客を自動車保険関連のコンテンツに誘導する。
- お客様保険の見積もりに興味を示す
- クロード適切な見積もりを決定するために一連の質問をし、顧客の回答に基づいて見積もりを調整する。
- クロード顧客から収集した必要な情報を見積書作成APIツールに送信します。
- クロードAPIツールからレスポンス情報を受け取り、自然な答えに合成し、顧客に見積もりを提供する。
- お客様質問 : フォローアップの質問
- クロード必要に応じてフォローアップの質問に答える
- クロードお客様を次のステップへご案内し、対話を終了する。
あなた自身のユースケースのために実際の例を書くとき、クロードの理想的なトーン、応答の長さ、必要とされる詳細のレベルを感じることができるように、対話で使用される実際の言葉を書き出すことが役に立つかもしれません。
相互作用を個別のタスクに分解する
カスタマ サポート チャットは、質問への回答、情報の取得、およびリクエスト アクションの処理など、多くの異なるタスクで構成され、すべてが 1 つの完全なカスタマ インタラクションにまとめられます。構築を開始する前に、理想的な顧客との対話をクロードが実行する必要がある各タスクに分解します。これにより、各タスクに対してクロードを促し、評価することが確実になり、テストケースを書くときに考慮すべきインタラクションの範囲をよく理解することができます。
クライアントは、このプロセスをインタラクション・フローチャートとして視覚化することで、ユーザーのリクエストに基づく可能な対話の分岐点を示すことができる。
以下は、上記の保険取引に関連する主な業務である:
- 歓迎と一般的なガイダンス
- お客様を温かく迎え、対話を始める
- 会社や交流に関する基本情報を提供する
- 製品情報
- EV保険に関する情報を提供する これは、クロードがその文脈で必要な情報を得られるようにする必要がある。 RAG統合.
- 電気自動車保険の特別なニーズに関する質問に答える。
- 見積もりや保険の詳細に関するフォローアップの質問に答える
- 必要に応じて関連情報源へのリンクを提供する
- ダイアログ・マネジメント
- トピックに集中する(自動車保険)
- トピックから外れた質問を関連するトピックに戻す
- 引用 世代
- オファーの適格性を判断するために適切な質問をする
- 顧客の回答に基づいて質問を調整する
- 収集した情報を見積もり作成APIに送信します。
- 作成した見積書を顧客に提供する
成功基準の確立
サポートチームと協力して明確な成功基準を定めるそして、定量化可能なベンチマークと目標を記載した報告書を作成する。詳細評価.
以下は、クロードが定義されたタスクを遂行する上での成功を評価するための基準とベンチマークである:
クエリー理解精度
この指標は、さまざまなトピックにわたる顧客からの問い合わせに対するクロードの理解の正確さを評価するものです。会話のサンプルを確認することで、顧客の意図、重要な次のステップ、成功したソリューションなどに関するクロードの理解が評価されます。目標は95%以上の理解精度を達成することです。
関連性
クロードの応答が顧客の特定の問題を解決するのに有効かどうかを評価する。一連のダイアログを評価し、各回答の関連性を評価する(大規模言語モデルに基づくスコアリングシステムを使用した大規模評価)。90%以上の関連性スコアを目標とする。
応答精度
提供された文脈情報に基づき、クロードに提供された企業および製品情報の正確性を評価する。目標は、このリード情報の正確さ100%を達成することである。
引用による関連性
提供されたリンクやリソースの頻度と関連性を追跡する。目標は、追加情報を必要とする80%の相互作用において、関連するリソースを提供することです。
テーマの順守
例えば自動車保険の例では、対話中にクロードがトピックに留まるかどうかを評価し、自動車保険や顧客固有の質問に対するクロードの応答を評価する。目標は95%の応答が自動車保険や顧客特有の質問に直接関係することである。
コンテンツ生成の効果
クロードがいつメッセージの内容を生成するか、またその内容の妥当性を評価する。例えば、私たちの実装では、クロードがいつ見積もりを生成するか、またその正確さについて理解しているかを評価します。目標は100%の正確さであり、これは顧客とのやり取りを成功させるための重要な情報である。
アップグレード効率
これは、人間の介入が必要なクエリを特定し、適切な場合にエスカレーションするクロードの能力を測定します。正しくエスカレーションされた会話と、エスカレーションされるべきだったがされなかった会話の割合を追跡します。目標は95%以上のエスカレーション精度です。
以下は、サポートにクロードを使用することによるビジネスへの影響を評価するための基準とベンチマークです:
感情のメンテナンス
対話を通じて顧客のセンチメントを維持または改善するクロードの能力を評価する。センチメント分析ツールを使って、各対話の最初と最後の感情状態を測定する。目標は、90%の対話においてセンチメントが維持または改善されることです。
転用率
人間の介入なしにチャットボットによって正常に処理された顧客からの問い合わせの割合。一般的には、問い合わせの複雑さに応じて、70%~80%のトリアージ率を目標とします。
顧客満足度
チャットボットとのインタラクションに対する顧客満足度を測定する。通常、インタラクション後のアンケートによって行われる。目標は5点満点中4点以上の顧客満足度です。
平均処理時間
チャットボットが問い合わせを解決するまでの平均時間。この時間は質問の複雑さによって大きく異なりますが、全体的な目標は、人間のカスタマーサービスよりも平均処理時間を短くすることです。
カスタマーサービスとしてクロードを導入する方法
適切なクロード・モデルの選択
モデルの選択は、コスト、精度、応答時間のトレードオフに依存する。
カスタマーサポートチャットclaude-3-5-sonnet-20240620
インテリジェンス、待ち時間、コストのバランスをとるのに理想的である。しかし、複数のプロンプトがダイアログに含まれる場合(RAG、ツールの使用法、および/または長い文脈的プロンプトを含む)、そのプロンプトは、そのダイアログに含まれない。claude-3-haiku-20240307
レイテンシーを最適化した方がいいかもしれない。
強力なキュー・ワードを作る
クロードをカスタマーサポートに使用するには、クロードが適切に対応できるような方向性と文脈を持ち、幅広い顧客からの問い合わせに柔軟に対応できることが必要です。
強力なキューを書くための要素、システムキューから始めよう:
IDENTITY = """你是 Eva,一位友好且知识渊博的 Acme 保险公司 AI 助手。你的角色是热情地欢迎客户,并提供有关 Acme 保险产品的信息,包括车险和电动车险。你还可以帮助客户获取他们的保险需求报价。"""
指示とユーザーとの対話を分離するために、すべての情報をシステムプロンプトの言葉に入れたくなるかもしれないが、クロードは実際には、プロンプトの内容のほとんどを、最初のラウンドの User
真ん中にいるときに最高のパフォーマンスを発揮する(唯一の例外は文字プロンプト)。詳しくは システムプロンプトを使用して、クロードにロールを割り当てます。.
複雑な合図は小部分に分解し、1つずつ書いていくのがベストである。各タスクについて、クロードがそのタスクを完了するために必要なプロンプトの部 分を段階的に定義することで、より良い結果を得ることができます。たとえば、自動車保険のカスタマーサポートの場合、「挨拶と一般的なガイダンス」タスクから段階的にプロンプトを書いていきます。これにより、プロンプト全体の個々の部分をより迅速に調整できるため、プロンプトのデバッグも容易になります。
これらのセクションはすべて config.py
を文書に追加した。
STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme 汽车保险:您在路上的可靠伙伴
简介:
在 Acme 保险公司,我们理解您的车辆不仅仅是交通工具——它是您通往生活冒险的门票。自 1985 年以来,我们一直在制定汽车保险政策,赋予驾驶者探索、通勤和旅行的信心。
无论您是在城市街道上穿行,还是在进行跨国旅行,Acme 都会保护您和您的车辆。
我们的创新汽车保险政策专为适应您的独特需求而设计,涵盖从轻微碰撞到重大事故的一切。
凭借 Acme 的获奖客户服务和快速理赔解决方案,您可以专注于驾驶的乐趣,而我们处理其他事宜。
我们不仅是保险提供商——我们是您人生旅途中的副驾驶。
选择 Acme 汽车保险,体验优质保障和真诚关怀带来的安心。因为在 Acme,我们不仅为您的汽车提供保险——我们还为您开拓生活的旅程提供动力。
注:我们还提供电动车的专门保险,确保所有类型车辆的驾驶者都能从我们的保护中受益。
Acme 保险提供以下产品:
- 汽车保险
- 电动车保险
- 两轮车保险
营业时间:周一至周五,上午 9 点至下午 5 点(美国东部时间)
客户服务电话:1-800-123-4567
</static_context>
"""
自動車保険と電気自動車保険の情報は同じように扱う。
STATIC_CAR_INSURANCE="""
<static_context>
汽车保险覆盖范围:
Acme 的汽车保险政策通常涵盖:
1. 责任险:支付您对他人造成的人身伤害和财产损失。
2. 碰撞险:支付事故中对您汽车的损坏。
3. 综合险:支付非碰撞事故对您汽车造成的损坏。
4. 医疗费用险:支付事故后的医疗费用。
5. 无保险/保险不足的驾驶员险:当您被保险不足的驾驶员撞击时保护您。
可选覆盖范围包括:
- 租车报销
- 道路救援
- 新车更换
</static_context>
"""
STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
电动车保险:
我们专门的电动车保险超越了传统的汽车保险,为您的高科技投资提供量身定制的保护。除了标准的保险项目外,我们还提供:
- 保护昂贵的电池系统
- 覆盖家用充电设备
- 适应电动车领域的快速发展
无论您驾驶的是 Rivian、Nissan Leaf、Chevrolet Bolt 或其他电动车型,我们经验丰富的代理人都准备为您制定一份让您安心享受每一段电力驱动旅程的保单。
</static_context>
"""
静的コンテンツができたので、クロードの対応を導くために、「良い」インタラクションの例を少なくとも4-5つ追加しましょう。これらの例は、あなたの理想的な顧客とのやり取りを表すものであるべきで、セーフガードやツールコールなどを含めることができます。
EXAMPLES="""
以下是一些如何与客户互动的示例:
<example 1>
H: 你好,请问你们提供小企业的商业保险吗?
A: 啊!很遗憾,目前我们不提供商业保险。
不过,我们有多种个人保险产品,包括汽车保险和电动车保险。
您想了解更多关于这些产品的信息吗?
</example 1>
<example 2>
H: 你好,你们的营业时间是几点?
A: 我们的营业时间是周一至周五,上午 9 点到下午 5 点 (美国东部标准时间)。
如果您有任何问题或需要帮助,请随时在这些时间内联系我们。
今天还有什么其他需要我帮助的吗?
</example 2>
<example 3>
H: 我正在寻找汽车保险。Acme 提供哪些服务?
A: 很好的选择!Acme 的汽车保险通常包括:
- 责任险:在事故中您为过错方时为您提供保障
- 碰撞险:支付事故中您车辆的损坏费用
- 全面保障:涵盖非碰撞事件,如盗窃或故意破坏
- 医疗费用保险:事故后支付医疗费用
- 未投保/保险不足司机保障:保护您免受投保不足的司机影响
我们还提供一些可选保障,如租车报销、道路救援和新车更换。
您想了解这些保障的更多细节,还是有其他关于为您的车辆投保的具体问题?
</example 3>
<example 4>
H: 我想了解一下你们的电动车保险。
A: 当然可以!我们的电动车保险专为电动车车主的独特需求量身定制。
除了我们为普通车辆提供的所有标准保障外,我们的电动车保险还包括:
- 电池保障:保护您的车辆昂贵电池系统免受损坏或老化
- 技术包:涵盖高级电子设备和车载计算机系统的维修或更换
- 充电站保障:保护家庭和便携式充电设备
- 网络安全保障:对抗黑客攻击或数字威胁的保障
- 专业道路救援:包括平板拖车服务,以保护车辆底盘
我们为多种电动车提供保障,包括特斯拉、Rivian、日产、雪佛兰等热门车型。
您是否有特定的电动车需要投保,或者您想了解某些保障的更多细节?
</example 4>
<example 5>
H: 我想获取我的汽车保险报价。
A: 当然!我很乐意为您提供汽车保险报价。
为了为您提供准确的报价,我需要收集一些关于您车辆和主要驾驶人的信息。
让我们从基本信息开始:
1. 您的车辆品牌和型号是什么?
2. 车辆生产年份是哪一年?
3. 您大约行驶了多少英里?
4. 主要驾驶人的年龄是多少?
一旦您提供了这些信息,我会使用我们的报价工具为您生成个性化的保险报价。
</example 5>
"""
また、クロードが顧客とどのように接するかについての重要な指示も含める必要があります。これらは、ブランド保護やサポートポリシーから引用することができます。
ADDITIONAL_GUARDRAILS = """请遵循以下防护措施:
1. 仅提供我们产品中列出的保险类型信息。
2. 如果被问及我们不提供的保险类型,请礼貌地说明我们不提供此类服务。
3. 不要对未来的产品或公司计划进行猜测。
4. 不要做出未经授权的承诺或达成协议。你只能提供信息和指导。
5. 不要提及任何竞争对手的产品或服务。
"""
では、これらのパーツを組み合わせて、プロンプトとして使う文字列を作ってみよう。
TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
STATIC_GREETINGS_AND_GENERAL,
STATIC_CAR_INSURANCE,
STATIC_ELECTRIC_CAR_INSURANCE,
EXAMPLES,
ADDITIONAL_GUARDRAILS,
])
ダイナミクスと積極性を高めるツールの使用
クロードは、クライアント側のツール機能を使用することで、操作の実行や情報の取得を動的に行うことができる。プロンプトに使用すべき外部ツールやAPIがあれば、最初に列挙する。
この例では、見積もりを計算するツールから始める。
ツールは実際に計算を実行するのではなく、ツールを使用することをアプリケーションに通知し、指定されたパラメータを渡すだけであることに注意してください。
保険見積もり計算の例
TOOLS = [{
"name": "get_quote",
"description": "根据用户输入计算保险报价。返回值为每月的保费。",
"input_schema": {
"type": "object",
"properties": {
"make": {"type": "string", "description": "车辆的品牌。"},
"model": {"type": "string", "description": "车辆的型号。"},
"year": {"type": "integer", "description": "车辆的生产年份。"},
"mileage": {"type": "integer", "description": "车辆的行驶里程数。"},
"driver_age": {"type": "integer", "description": "主要驾驶员的年龄。"}
},
"required": ["make", "model", "year", "mileage", "driver_age"]
}
}]
def get_quote(make, model, year, mileage, driver_age):
"""返回每月的保费(以美元计)"""
# 你可以调用 HTTP 端点或数据库来获取报价。
# 这里,我们模拟1秒的延迟并返回固定的100美元报价。
time.sleep(1)
return 100
ヒントを展開する
プロンプトをテスト本番環境にデプロイせずに 運用評価 の場合、ヒントの効果を知ることは困難です。そこで、ヒント、Anthropic SDK、streamlitを使って小さなアプリケーションを作り、そのユーザーインターフェイスを作ってみましょう。
その名の下に chatbot.py
ファイルで使用されるのと同じ情報をカプセル化します。 アンソロピック SDKの相互作用。
このクラスには2つの主要なメソッドが含まれていなければならない:generate_message
歌で応える process_user_input
.
from anthropic import Anthropic
from config import IDENTITY, TOOLS, MODEL, get_quote
from dotenv import load_dotenv
load_dotenv()
class ChatBot:
def __init__(self, session_state):
self.anthropic = Anthropic()
self.session_state = session_state
def generate_message(
self,
messages,
max_tokens,
):
try:
response = self.anthropic.messages.create(
model=MODEL,
system=IDENTITY,
max_tokens=max_tokens,
messages=messages,
tools=TOOLS,
)
return response
except Exception as e:
return {"error": str(e)}
def process_user_input(self, user_input):
self.session_state.messages.append({"role": "user", "content": user_input})
response_message = self.generate_message(
messages=self.session_state.messages,
max_tokens=2048,
)
if "error" in response_message:
return f"发生错误: {response_message['error']}"
if response_message.content[-1].type == "tool_use":
tool_use = response_message.content[-1]
func_name = tool_use.name
func_params = tool_use.input
tool_use_id = tool_use.id
result = self.handle_tool_use(func_name, func_params)
self.session_state.messages.append(
{"role": "assistant", "content": response_message.content}
)
self.session_state.messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": tool_use_id,
"content": f"{result}",
}],
})
follow_up_response = self.generate_message(
messages=self.session_state.messages,
max_tokens=2048,
)
if "error" in follow_up_response:
return f"发生错误: {follow_up_response['error']}"
response_text = follow_up_response.content[0].text
self.session_state.messages.append(
{"role": "assistant", "content": response_text}
)
return response_text
elif response_message.content[0].type == "text":
response_text = response_message.content[0].text
self.session_state.messages.append(
{"role": "assistant", "content": response_text}
)
return response_text
else:
raise Exception("发生错误: 意外的响应类型")
def handle_tool_use(self, func_name, func_params):
if func_name == "get_quote":
premium = get_quote(**func_params)
return f"生成的报价: 每月 ${premium:.2f}"
raise Exception("使用了意外的工具")
ユーザーインターフェースの構築
このコードをStreamlitとマスター・メソッド・テストを使ってデプロイする。この main()
関数はStreamlitベースのチャットインターフェースを設定します。
という名前のファイルで作業することになる。 app.py
これは
import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS
def main():
st.title("与 Eva 聊天,Acme 保险公司的助理🤖")
if "messages" not in st.session_state:
st.session_state.messages = [
{'role': "user", "content": TASK_SPECIFIC_INSTRUCTIONS},
{'role': "assistant", "content": "明白"},
]
chatbot = ChatBot(st.session_state)
# 显示用户和助理的消息,跳过前两条
for message in st.session_state.messages[2:]:
# 忽略工具使用的消息块
if isinstance(message["content"], str):
with st.chat_message(message["role"]):
st.markdown(message["content"])
if user_msg := st.chat_input("在此输入您的消息..."):
st.chat_message("user").markdown(user_msg)
with st.chat_message("assistant"):
with st.spinner("Eva 正在思考..."):
response_placeholder = st.empty()
full_response = chatbot.process_user_input(user_msg)
response_placeholder.markdown(full_response)
if __name__ == "__main__":
main()
以下のコマンドでプログラムを実行する:
streamlit run app.py
ヒントを評価する
プロンプトが本番環境に対応するには、多くの場合、テストと最適化が必要です。ソリューションの準備が整っているかどうかを判断するには、定量的な方法と定性的な方法を組み合わせた体系的なプロセスを通じてチャットボットのパフォーマンスを評価することができます。定義した成功基準に基づいて強力な実証的評価を使用すると、プロンプトを最適化できます。
アンソロピック・コンソール さまざまなシナリオでプロンプトをテストできる評価ツールが提供されました。
パフォーマンスの向上
複雑なシナリオでは、標準的なエンジニアリングのヒント歌で応えるガードレール実施戦略それ以上に、パフォーマンスを向上させるための他の戦略を検討することが役に立つかもしれない。よくあるシナリオをいくつか挙げてみよう:
RAGによる長いコンテキストの待ち時間の短縮
多数の静的および動的コンテキストを扱う場合、キューにすべての情報を含めると、コストが高くなり、応答時間が遅くなり、コンテキストウィンドウの限界に達する可能性がある。この場合、RAG(Retrieval Augmented Generation)技術を実装することで、パフォーマンスと効率を大幅に向上させることができる。
を使用する。 ボヤージュのような埋め込みモデル 情報をベクトル表現に変換することで、よりスケーラブルで応答性の高いシステムが構築される。このアプローチでは、すべての可能なコンテキストをヒントに含めるのではなく、現在のクエリに基づいて関連情報を動的に検索することができます。
気付く ラグ シナリオの使用をサポートするために使用される RAG製剤 は、幅広いコンテキストを必要とするシステムにおいて、精度を向上させ、応答時間を短縮し、APIコストを削減することが示されている。
ツールの使用によるリアルタイムデータの統合
口座残高や契約内容の詳細など、リアルタイムの情報を必要とする問い合わせに対応する場合、RAGベースのアプローチを埋め込むだけでは不十分です。その代わりに、ツールの利用を活用することで、正確なリアルタイム応答を提供するチャットボットの能力を大幅に向上させることができます。例えば、ツールを使用して顧客情報を検索したり、注文の詳細を取得したり、顧客に代わって注文をキャンセルしたりすることができます。
この方法は、我々の ツール使用:カスタマーサービス・エージェント式 クロードの応答にリアルタイムデータをシームレスに統合し、よりパーソナライズされた効率的な顧客体験を提供することができます。
入出力保護対策の強化
チャットボットを導入する場合、特にカスタマーサービスシナリオでは、悪用、範囲外の問い合わせ、不適切な応答のリスクから保護することが重要です。Claudeは本質的にこれらのシナリオに耐性がありますが、ここではチャットボットのセーフガードを強化するための追加ステップを紹介します:
- 幻覚の減少ファクトチェックの実施 引用 回答が提供された情報に基づいていることを確認するため。
- 情報の照合:エージェントの対応が会社の方針および既知の事実と一致していることを確認する。
- 契約上の約束の回避:代理人が約束する権限のない約束や合意をしないようにする。
- 脱獄の緩和ユーザがモデルの脆弱性を悪用して不適切なコンテンツを生成するのを防ぐために、無害なスクリーニングや入力検証などの方法を使用する。
- 競合他社への言及を避ける:競合他社への言及フィルターを導入し、ブランドを集中させ、競合他社の製品やサービスへの言及を避ける。
- クロードの役割を維持するクロードが長く複雑なやりとりの中で、コンテクストスタイルを変えるのを防ぐ。
- 個人を特定できる情報(PII)の削除:明示的に要求され、承認された場合を除き、回答からすべてのPIIを削除する。
ストリーミング処理による知覚応答時間の短縮
ストリーミングを実装することで、長い回答になる可能性がある場合でも、ユーザーのエンゲージメントと満足度を大幅に向上させることができます。この場合、ユーザーはレスポンス全体が生成されるのを待つのではなく、徐々に回答を受け取ります。
以下は、ストリーム処理の実装手順である:
- 利用する Anthropic Streaming API ストリーミング返信に対応。
- 受信したテキスト・ブロックを処理するフロント・エンドを設定する。
- リアルタイム入力の効果をシミュレートするために、各到着に対してテキストのブロックを表示する。
- 返信の全文を保存する仕組みを導入し、ユーザーがナビゲーションを離れて戻ってきたときに、全文を表示できるようにする。
場合によっては、ストリーミングは、プログレッシブ表示が長い処理時間の影響を緩和するため、基本レイテンシーの高い高度なモデルの使用を可能にする。
チャットボットを拡張する
Chatbotの複雑さが増すにつれて、アプリケーション・アーキテクチャもそれに合わせて進化させることができます。アーキテクチャにさらなるレイヤーを追加する前に、以下のようなシンプルなオプションを検討してください:
- ヒントを最大限に活用し、ヒントエンジニアリングで最適化しましょう。私たちの 先端技術ガイド 最も効果的なヒントを書く。
- プロンプトに他人を加える アーティファクト (を含む キューチェーン)を使って、目的の機能が達成できるかどうかを確認する。
あなたのチャットボットが非常に多様なタスクを処理する場合、次のオプションを追加することを検討するとよいでしょう。 インテント分類器の分離 を作成する。既存のアプリケーションの場合、これは、顧客のクエリを分類器を通して特別なダイアログ(それぞれが独自のツールとシステムプロンプトを持つ)にルーティングする決定木を作成することを含む。このアプローチは、Claudeへの追加コールを必要とし、待ち時間を増やす可能性があることに注意。
サポートワークフローへのクロードの統合
この例ではStreamlit環境で呼び出せるPython関数に焦点を当てているが、ChatbotをリアルタイムでサポートするためにClaudeをデプロイするにはAPIサービスが必要だ。
これならできる:
- APIラッパーを作る:あなたの分類した関数のためのシンプルなAPIラッパーを開発しましょう。例えば、Flask APIやFast APIを使用して、コードをHTTPサービスとしてラップすることができます。このHTTPサービスは、ユーザーの入力を受け取り、完全なアシスタントのレスポンスを返すことができます。その結果、このサービスには次のような特性を持たせることができます:
- Server-Sent Events (SSE): SSEは、サーバーとクライアント間のリアルタイム・レスポンス・ストリーミングを可能にする。これは、LLMを使用する際にスムーズでインタラクティブな体験を提供するために非常に重要です。
- キャッシュ:キャッシュを実装することで、応答性を大幅に改善し、不要なAPIコールを減らすことができる。
- コンテキストの保持:コンテキストの保持は、ユーザーが離れたり戻ったりする際にダイアログを継続するために重要である。
- ウェブインターフェースの構築:クロード駆動エージェントと対話するためのユーザーフレンドリーなウェブUIを実装する。