Swarm パーソナルショッパー: AIを活用したカスタマーサービス
この記事では、Swarmを使用して作成されたパーソナルショッピングエージェントシステムについて解説します。このシステムは、販売や注文の払い戻しを支援する複数のAIエージェントで構成されています。
<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">swarmのpersonal_shopperのコードが古いぽいので修正して動かしてみました!
personal_shopper使って無事に返金処理のシミュレーションできました!!
*修正したコードは後ほどリポジトリにて公開します! <a href="https://t.co/zJtRZssGkN">https://t.co/zJtRZssGkN</a> <a href="https://t.co/yrtDgp3X9z">pic.twitter.com/yrtDgp3X9z</a></p>— Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1845173164755800320?ref_src=twsrc^tfw">October 12, 2024</a></blockquote>
システム概要
このシステムは3つの主要なエージェントで構成されています:
- トリアージエージェント:顧客のリクエストを分類し、適切なエージェントに転送します。
- 払い戻しエージェント:顧客の払い戻しリクエストを処理します。
- 販売エージェント:商品の注文に関するリクエストを処理します。
また、SQLite3データベースを使用して顧客情報と取引データを管理しています。
主要コードの解説
データベース管理(database.py)
データベースの初期化と管理を行う関数が含まれています。以下は主要な関数の一部です:
def create_database():
"""データベースとテーブルを作成する関数"""
conn = get_connection()
cursor = conn.cursor()
# Usersテーブルの作成
cursor.execute(
"""
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
phone TEXT
)
"""
)
# 他のテーブル(PurchaseHistory, Products)も同様に作成
# ...
def add_user(user_id, first_name, last_name, email, phone):
"""ユーザーを追加する関数"""
conn = get_connection()
cursor = conn.cursor()
try:
cursor.execute(
"""
INSERT INTO Users (user_id, first_name, last_name, email, phone)
VALUES (?, ?, ?, ?, ?)
""",
(user_id, first_name, last_name, email, phone),
)
conn.commit()
except sqlite3.Error as e:
print(f"データベースエラー: {e}")
これらの関数は、データベースの作成、ユーザーの追加、購入履歴の記録などの操作を行います。
メイン処理(main.py)
メインの処理ロジックとエージェントの定義が含まれています。
# エージェントの定義
refunds_agent = Agent(
name="払い戻しエージェント",
description="""返品処理後の払い戻しに関するすべてのアクションを処理するエージェントです。
払い戻しを開始するには、ユーザーIDとアイテムIDの両方が必要です。両方を1つのメッセージで尋ねてください。
ユーザーが通知を希望する場合は、通知方法を尋ねる必要があります。通知の場合、
ユーザーIDと通知方法を1つのメッセージで尋ねてください。""",
functions=[refund_item, notify_customer],
)
sales_agent = Agent(
name="販売エージェント",
description="""商品の注文に関するすべてのアクションを処理する販売エージェントです。
ユーザーが購入したい商品に関わらず、注文を行うにはユーザーIDと製品IDの両方が必要です。
これらの2つの情報なしでは注文を行うことができません。ユーザーIDと製品IDの両方を1つのメッセージで尋ねてください。
ユーザーが通知を希望する場合は、通知方法を尋ねる必要があります。通知の場合、
ユーザーIDと通知方法を1つのメッセージで尋ねてください。
""",
functions=[order_item, notify_customer],
)
triage_agent = Agent(
name="トリアージエージェント",
instructions="""ユーザーのリクエストを分類し、適切なインテントに転送するツールを呼び出します。
適切なインテントに転送する準備ができたら、ツールを呼び出してください。
詳細を知る必要はなく、リクエストのトピックだけを理解すれば十分です。
ユーザーのリクエストが注文や商品の購入に関するものであれば、販売エージェントに転送します。
ユーザーのリクエストが商品の払い戻しや返品に関するものであれば、払い戻しエージェントに転送します。
リクエストをエージェントに振り分けるために更に情報が必要な場合は、理由を説明せずに直接質問してください。
ユーザーに思考プロセスを共有しないでください!ユーザーに代わって不合理な仮定をしないでください。""",
functions=[transfer_to_sales_agent, transfer_to_refunds_agent],
)
これらのコードは、各エージェントの役割と振る舞いを定義しています。トリアージエージェントは顧客のリクエストを適切なエージェントに振り分け、販売エージェントと払い戻しエージェントはそれぞれの専門分野でリクエストを処理します。
システムの動作
- ユーザーがリクエストを入力します。
- トリアージエージェントがリクエストを分析し、適切なエージェント(販売または払い戻し)に転送します。
- 各エージェントは必要な情報(ユーザーID、製品ID、アイテムIDなど)を収集します。
- 収集した情報を基に、リクエストを処理します(商品の注文や払い戻しの実行)。
- 処理結果をユーザーに通知します。
このシステムにより、顧客サービスの自動化と効率化が実現され、24時間対応の柔軟なサポートが可能になります。
まとめ
Swarmを活用したこのパーソナルショッパーシステムは、AIエージェントを使用して顧客サービスを自動化する優れた例です。複数のエージェントが協力して働くことで、効率的かつ正確な顧客対応が可能になります。このシステムは、eコマースプラットフォームやカスタマーサポートシステムの基盤として活用できる可能性があります。
実際の運用環境で使用する場合は、セキュリティ、エラー処理、データ検証などの実装を強化する必要があります。また、ユーザー認証システムの追加や外部APIとの連携など、さらなる機能拡張も考えられます。
リポジトリ
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
Discussion