🦄

Swarm パーソナルショッパー: AIを活用したカスタマーサービス

2024/10/13に公開

この記事では、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つの主要なエージェントで構成されています:

  1. トリアージエージェント:顧客のリクエストを分類し、適切なエージェントに転送します。
  2. 払い戻しエージェント:顧客の払い戻しリクエストを処理します。
  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],
)

これらのコードは、各エージェントの役割と振る舞いを定義しています。トリアージエージェントは顧客のリクエストを適切なエージェントに振り分け、販売エージェントと払い戻しエージェントはそれぞれの専門分野でリクエストを処理します。

システムの動作

  1. ユーザーがリクエストを入力します。
  2. トリアージエージェントがリクエストを分析し、適切なエージェント(販売または払い戻し)に転送します。
  3. 各エージェントは必要な情報(ユーザーID、製品ID、アイテムIDなど)を収集します。
  4. 収集した情報を基に、リクエストを処理します(商品の注文や払い戻しの実行)。
  5. 処理結果をユーザーに通知します。

このシステムにより、顧客サービスの自動化と効率化が実現され、24時間対応の柔軟なサポートが可能になります。

まとめ

Swarmを活用したこのパーソナルショッパーシステムは、AIエージェントを使用して顧客サービスを自動化する優れた例です。複数のエージェントが協力して働くことで、効率的かつ正確な顧客対応が可能になります。このシステムは、eコマースプラットフォームやカスタマーサポートシステムの基盤として活用できる可能性があります。

実際の運用環境で使用する場合は、セキュリティ、エラー処理、データ検証などの実装を強化する必要があります。また、ユーザー認証システムの追加や外部APIとの連携など、さらなる機能拡張も考えられます。

リポジトリ

https://github.com/Sunwood-ai-labs/swarm-sample-box/tree/main/examples/personal_shopper

https://github.com/Sunwood-ai-labs/swarm

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Discussion