AIエージェント同士で会話ができるTinyTroupe!Microsoftの新しいPythonライブラリ徹底解説

AIエージェント 会話 TinyTroupe Microsoft Pythonライブラリ

Microsoftが新たにPythonライブラリをリリース!

「TinyTroupe」は大規模言語モデルを活用し、特定の性格、興味、目標を持つ架空の人物(TinyPerson)をシミュレートすることが可能。

TinyPersonは、互いに会話したり、現実的な行動を生成したりすることができ、ビジネスインサイトやイマジネーションを促進するために活用できます。

本記事では、TinyTroupeでどういったことができるのか、google colaboratoryでどのように実装するのかについて、詳しく解説します!

最後まで読めばgoogle colaboratoryでTinyTroupeを実装できるようになります。ぜひ最後までお読みください!

目次

TinyTroupeの概要

参考:https://github.com/microsoft/TinyTroupe?tab=readme-ov-file

TinyTroupeは、特定の個性、興味、目標を持つ人々のシミュレーションを可能にするPythonライブラリです

このライブラリは、LLMを活用して、リアルなシミュレーション動作を生成し、高度にカスタマイズ可能なペルソナを使用して、幅広い説得力のあるインタラクションとカスタマータイプを調査できます。

TinyTroupeは、AIアシスタントのように人間の行動を直接サポートすることではなく、人間の行動を理解することを目的としています。

また、他のLLMベースのシミュレーションアプローチとは異なり、TinyTroupeは生産性とビジネスシナリオの啓発を目指しており、より成功するプロジェクトや製品に貢献します。

参考:https://github.com/microsoft/TinyTroupe?tab=readme-ov-file

TinyTroupeの構成

TinyTroupeは、他のマルチエージェントシステムと同様に、2つの重要な機能を提供しています。

  • TinyPerson: 個性、興味、目標を持ち、刺激を受け、それに基づいて行動するエージェント
  • TinyWorld:エージェントが存在し、相互作用する環境

TinyPersonは、特定の性格特性、興味、目標を持つシミュレーションされた人間です。このようなシミュレートされたエージェントは、環境から刺激を受け取り、それに基づいて行動します。刺激はlistenメソッド、seeメソッド、その他類似のメソッドで受け取られ、行動はactメソッドで実行されます。

参考:https://github.com/microsoft/TinyTroupe?tab=readme-ov-file

TinyTroupeのユーティリティ

TinyTroupeには、シミュレーションの作成とそこから価値を引き出すためのユーティリティがあります

●TinyPersonFactory:LLMを使用して新しいTinyPersonを生成す
●TinyTool:TinyPersonが使用できるシミュレートされたツール
●TinyStory:シミュレーションを通じて語られるストーリーの作成と管理をサポート
●TinyPersonValidator:TinyPersonの動作を検証
●ResultsExtractorおよびResultsReducer:エージェント間のインタラクションの結果を抽出し、削減

TinyTroupeの開発状況

TinyTroupeはまだ開発の初期段階であり、解決すべき課題も残っています。

開発チームは、特に特定の業界における新しい潜在的なユースケースを見つけることに関心を持っており、APIは今後も変更される可能性があります。

TinyTroupeのキャッシュについて

TinyTroupeのキャッシュ機能にはシミュレーション効率化と一貫性保持のための2つの主な役割があります。

シミュレーション状態のキャッシュ:シミュレーションの各ステップでの状態をキャッシュすることで、以前の結果を保持し、同じ部分を再計算せずに途中から実行を再開できるようにします。これにより、例えば最終ステップだけを変更したい場合、すでに確認済みの前のステップを再実行せずに済むため、LLMのAPIコストを節約可能。

LLM API呼び出しのキャッシュ:同じ入力に対して以前の応答を再利用できるよう、LLM呼び出しをキャッシュに保存。これにより、同一の質問が繰り返しエージェントに送信された場合、前回の応答をキャッシュから取得することで、追加コストを抑えつつエージェントの一貫した応答が可能。

TinyTroupeのライセンス

TinyTroupeのライセンスはMITライセンスになっているので、基本的には商用利用が可能。

配布や改変なども可能になっています。

ただし、ライセンス表記(著作権表示や免責事項など)はソースコードや配布物に含める必要があります。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用⭕️
私的使用⭕️
参考:https://github.com/microsoft/TinyTroupe?tab=MIT-1-ov-file

なお、スマホで動くMicrosoftのLLMについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

TinyTroupeの使い方

TinyTroupeを使うには、OpenAIもしくはAzureのAPIキーとAzureのエンドポイントが必要です。

APIキーの用意ができれば、あとはgoogle colaboratoryで実装するだけ!ExamplesはGitHubに掲載されています。

google colaboratoryで実行した時の環境は以下で、GPUメモリを消費しないので、無料版のgoogle colaboratoryでも十分実装可能です。

■Pythonのバージョン
Python 3.8以上

■システム RAM
2.1 / 53.0 GB

■GPU RAM
0 / 22.5 GB

■ディスク
32.7 / 112.6 GB

まずは必要になるライブラリなどをインストールします。

必要ライブラリのインストールはこちら
!git clone https://github.com/microsoft/TinyTroupe
%cd TinyTroupe
!pip install .
サンプルコードはこちら
import os
from tinytroupe.examples import create_lisa_the_data_scientist

os.environ["OPENAI_API_KEY"] = "your_api_key"
# エージェントを生成
lisa = create_lisa_the_data_scientist()
# エージェントにメッセージを送って、その応答を表示
response = lisa.listen_and_act("Tell me about your life.")
print(response)
サンプルコードの結果はこちら

!!!!
DISCLAIMER: TinyTroupe relies on Artificial Intelligence (AI) models to generate content. 
The AI models are not perfect and may produce inappropriate or inacurate results. 
For any serious or consequential use, please review the generated content before using it.
!!!!

Looking for default config on: /content/TinyTroupe/tinytroupe/config.ini
Failed to find custom config on: /content/TinyTroupe/config.ini
Will use only default values. IF THINGS FAIL, TRY CUSTOMIZING MODEL, API TYPE, etc.

=================================
Current TinyTroupe configuration 
=================================
[OpenAI]
api_type = openai
azure_api_version = 2023-05-15
model = gpt-4o
max_tokens = 4000
temperature = 0.3
freq_penalty = 0.0
presence_penalty = 0.0
timeout = 60
max_attempts = 5
waiting_time = 1
exponential_backoff_factor = 5
embedding_model = text-embedding-3-small
cache_api_calls = False
cache_file_name = openai_api_cache.pickle
max_content_display_length = 1024

[Simulation]
rai_harmful_content_prevention = True
rai_copyright_infringement_prevention = True

[Logging]
loglevel = ERROR

USER --> Lisa: [CONVERSATION] 
          > Tell me about your life.
Lisa --> Lisa: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Lisa acts: [TALK] 
          > Hi! My name is Lisa. I'm 28 years old and I'm a data scientist from Canada. I work at
          > Microsoft in the M365 Search team, where I analyze user behavior and feedback data to
          > improve search results. In my free time, I enjoy cooking, playing the piano, and
          > watching movies.
Lisa --> Lisa: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Lisa acts: [DONE] 

None

複数エージェントの会話シミュレーション

TinyTroupeでは、複数のエージェントを作成し、相互にやり取りさせることができます。

たとえば、データサイエンティストのLisaと建築家のOscarを会話させるシミュレーションを実行するのは以下です。

複数エージェントの会話コードはこちら
from tinytroupe.examples import create_lisa_the_data_scientist, create_oscar_the_architect

# エージェントを生成
lisa = create_lisa_the_data_scientist()
oscar = create_oscar_the_architect()

# LisaからOscarへの質問とその応答
response_lisa = lisa.listen_and_act("Hi Oscar, can you tell me about your work?")
print("Lisa: ", response_lisa)

response_oscar = oscar.listen_and_act("I'm an architect. What do you do, Lisa?")
print("Oscar: ", response_oscar)

# さらに会話を続ける
response_lisa = lisa.listen_and_act("I'm a data scientist. I love finding patterns in data. How about you?")
print("Lisa: ", response_lisa)

response_oscar = oscar.listen_and_act("That's fascinating! I enjoy designing spaces that are functional and beautiful.")
print("Oscar: ", response_oscar)

上記を実行すると、LisaとOscarが自動的に対話を行い、各ターンの内容がColab上に出力されます。

特定のシナリオや役割を設定したシミュレーション

TinyTroupeではエージェントに詳細な個性やシナリオを設定できます。

たとえば、あるビジネスシナリオで顧客からフィードバックを得るシミュレーションや、マーケティング担当者として広告の評価を行うエージェントを作成することが可能です。

特定のシナリオや役割を設定したコードはこちら
from tinytroupe.factory import TinyPersonFactory

# 顧客役のエージェントを生成
factory = TinyPersonFactory("A focus group")
customer = factory.generate_person("Create a customer who is interested in eco-friendly products")

# 質問に応答させる
response = customer.listen_and_act("What do you think about our new eco-friendly product line?")
print(response)

ビジネスや製品のフィードバックシミュレーション

TinyTroupeのエージェントにより、製品や広告に対するフィードバックを自動で収集することが可能です。

特に、異なるタイプの顧客に広告や製品アイデアを評価させ、フィードバックを集計するシミュレーションは、ビジネスやマーケティング分析で活用できます。

ビジネスや製品のフィードバックシミュレーションのコードはこちら
from tinytroupe.examples import advertisement_for_tv

# 広告に対するエージェントの反応をシミュレーション
feedback = advertisement_for_tv.run()
print(feedback)

シナリオのカスタム設定とシミュレーションの繰り返し実行

シミュレーションの設定を細かくカスタマイズしたり、複数の試行を繰り返して実行することもできます。

たとえば、異なるターゲット層に合わせてエージェントの反応を変えたり、結果を集計して分析することで、より実践的なインサイトを得られます。

シナリオのカスタム設定とシミュレーションの繰り返し実行コードはこちら
from tinytroupe.factory import TinyPersonFactory
import pandas as pd

# 顧客役のエージェントを生成
factory = TinyPersonFactory("A focus group")
customer = factory.generate_person("Create a customer who is interested in eco-friendly products")

# シミュレーション結果を収集するためのリストを準備
results = []

# シナリオを10回繰り返して実行
for i in range(10):
    response = customer.listen_and_act("How would you improve our eco-friendly product line?")
    results.append({"trial": i+1, "feedback": response})

# 結果をデータフレームに変換して表示
df = pd.DataFrame(results)
print(df)

このようにTinyTroupeでは、さまざまなことを行うことができ、シミュレーションに活かすことが可能です。

仮想商品の広告評価の検証

今回は、GitHubに掲載されているExamplesを参考に、詳しくシミュレーションをしてみたいと思います。

今回の検証で設定した内容は以下です。

  1. 詳細なペルソナ設定
  • 年齢、職業、収入などの基本情報
  • 性格特性や興味関心
  • 課題やペインポイント
  • 生活スタイルや価値観
  1. 構造化された広告評価
  • 複数の評価観点(第一印象、興味度、価格妥当性、購入意向)
  • 定量的な5段階評価
  • 具体的な改善点の収集
  1. 包括的な分析
  • スコアの平均値算出
  • ターゲット層ごとの反応分析
  • 改善提案の集約
  • 総合的な推奨事項

これらの設定により、次のことが明らかになります。

  • ターゲット層ごとの反応の違い
  • 価格に対する感度の違い
  • 広告メッセージの効果
  • 改善が必要な点の特定
  • 最適なターゲット層の発見
仮想のシミュレーションコードはこちら
from tinytroupe.agent import TinyPerson
from tinytroupe.environment import TinyWorld
from tinytroupe.factory import TinyPersonFactory
from tinytroupe.extraction import ResultsExtractor 
import json


# 仮想の広告コンテンツ(新しいスマートウォッチの例)
ad_content = {
    "product_name": "HealthWatch Pro",
    "title": "24時間365日、あなたの健康を見守る新しい相棒。",
    "description": """
    新登場のHealthWatch Proは、最新のAIテクノロジーを搭載した
    スマートウォッチです。心拍数、血中酸素濃度、睡眠の質など、
    あなたの健康状態を24時間モニタリング。
    
    スポーツモードは20種類以上対応し、運動強度や消費カロリーを
    正確に計測。さらに、スマートフォンとの連携で、LINEやメールの
    通知もシームレスに確認できます。
    
    バッテリーは1回の充電で最大7日間持続。防水機能付きで、
    水泳時も使用可能です。
    """,
    "price": "32,800円",
    "target_audience": "健康意識の高い20-50代",
    "selling_points": [
        "24時間健康モニタリング",
        "20種類以上のスポーツモード",
        "7日間連続使用可能なバッテリー",
        "防水機能搭載",
        "スマートフォン連携"
    ],
    "media_type": "Web広告、SNS広告",
    "campaign_duration": "2024年4月1日〜5月31日"
}

# ペルソナ定義(3つの異なるタイプ)
persona_definitions = [
    {
        "description": "健康意識の高い30代会社員",
        "details": {
            "age": 34,
            "gender": "男性",
            "occupation": "IT企業プロジェクトマネージャー",
            "income": "年収650万円",
            "location": "東京都内",
            "family_structure": "既婚・子供なし",
            "traits": [
                "健康管理に熱心",
                "新しいガジェットが好き",
                "仕事でストレスを感じやすい",
                "効率重視"
            ],
            "interests": [
                "フィットネス",
                "テクノロジー",
                "ワークライフバランス",
                "自己啓発"
            ],
            "pain_points": [
                "運動不足",
                "睡眠の質に不安",
                "仕事のストレス管理"
            ],
            "media_consumption": {
                "preferred_channels": ["Web", "YouTube", "LinkedIn"],
                "usage_frequency": "デジタルメディアを1日3時間以上利用"
            },
            "purchase_behavior": {
                "price_sensitivity": "中〜高級価格帯なら品質重視",
                "decision_factors": ["機能性", "デザイン", "ブランド信頼性"]
            }
        }
    },
    {
        "description": "スポーツ好きな20代学生",
        "details": {
            "age": 22,
            "gender": "女性",
            "occupation": "大学生(体育学部)",
            "income": "アルバイト月収10万円程度",
            "location": "神奈川県",
            "family_structure": "実家暮らし",
            "traits": [
                "活発",
                "SNSによく投稿する",
                "トレンドに敏感",
                "友人の影響を受けやすい"
            ],
            "interests": [
                "ランニング",
                "ヨガ",
                "インスタ映えするスポット",
                "ダイエット"
            ],
            "pain_points": [
                "限られた予算",
                "効果的なトレーニング方法",
                "モチベーション維持"
            ],
            "media_consumption": {
                "preferred_channels": ["Instagram", "TikTok", "YouTube"],
                "usage_frequency": "SNSは1日2時間以上"
            },
            "purchase_behavior": {
                "price_sensitivity": "予算重視だが、欲しいものには投資",
                "decision_factors": ["見た目", "人気度", "価格"]
            }
        }
    },
    {
        "description": "健康に気遣う50代主婦",
        "details": {
            "age": 52,
            "gender": "女性",
            "occupation": "パートタイム(週3日)",
            "income": "世帯年収800万円",
            "location": "大阪府",
            "family_structure": "夫と大学生の子供2人",
            "traits": [
                "家族の健康に気を配る",
                "慎重な性格",
                "口コミを重視",
                "新しい技術に少し不安"
            ],
            "interests": [
                "健康維持",
                "散歩",
                "料理",
                "家族との時間"
            ],
            "pain_points": [
                "年齢による健康不安",
                "家族の生活習慣",
                "デジタル機器の使い方"
            ],
            "media_consumption": {
                "preferred_channels": ["テレビ", "LINE", "Yahoo!ニュース"],
                "usage_frequency": "テレビは毎日、ネットは時々"
            },
            "purchase_behavior": {
                "price_sensitivity": "品質重視",
                "decision_factors": ["安全性", "使いやすさ", "アフターサポート"]
            }
        }
    }
]

# 評価基準の定義
evaluation_criteria = {
    "metrics": [
        {
            "name": "第一印象",
            "scale": 5,
            "weight": 1.0,
            "description": "広告を見た最初の印象"
        },
        {
            "name": "製品への興味",
            "scale": 5,
            "weight": 1.2,
            "description": "製品自体への興味度"
        },
        {
            "name": "価格の妥当性",
            "scale": 5,
            "weight": 1.5,
            "description": "価格に対する評価"
        },
        {
            "name": "購入意向",
            "scale": 5,
            "weight": 2.0,
            "description": "実際に購入したいと思うか"
        }
    ],
    "qualitative_aspects": [
        "最も印象に残った機能",
        "気になる懸念点",
        "改善してほしい点",
        "競合製品との比較感想"
    ]
}

def run_virtual_evaluation():
    # 評価システムの初期化
    # context_textを追加して初期化
    factory = TinyPersonFactory(context_text="""
    あなたは広告評価のためのペルソナを生成します。
    以下の条件を考慮して、現実的で詳細なペルソナを作成してください:
    - 年齢、性別、職業などの基本的な属性
    - 生活環境や家族構成
    - 趣味や関心事
    - 消費行動や価値観
    - メディア接触状況
    """)
    
    # ペルソナの生成
    personas = []
    for persona_def in persona_definitions:
        person = factory.generate_person(persona_def["description"])
        for key, value in persona_def["details"].items():
            person.define(key, value)
        personas.append(person)
    
    # 評価環境の設定
    world = TinyWorld("Advertisement Evaluation", personas)
    world.make_everyone_accessible()
    
    # 評価プロンプトの作成
    evaluation_prompt = f"""
    以下の広告を評価してください:

    【製品名】{ad_content['product_name']}
    【広告タイトル】{ad_content['title']}
    【説明】{ad_content['description']}
    【価格】{ad_content['price']}
    【主な特徴】
    {chr(10).join('- ' + point for point in ad_content['selling_points'])}

    あなたの視点で以下の点を評価してください:
    1. 第一印象(5段階)
    2. 製品への興味(5段階)
    3. 価格の妥当性(5段階)
    4. 購入意向(5段階)
    
    また、以下の点についても具体的に言及してください:
    - 最も魅力的に感じた点
    - 気になる懸念点
    - 改善提案
    """
    
    # 各ペルソナに評価を依頼
    for persona in personas:
        persona.listen_and_act(evaluation_prompt)
    
    # シミュレーション実行
    world.run(2)
    
    # 結果の抽出
    extractor = ResultsExtractor()
    results = extractor.extract_results_from_world(
        world,
        extraction_objective="広告評価の主要なポイントを抽出してください。特に以下の点に注目:\n"
                           "1. 各評価者の評点(第一印象、興味度、価格妥当性、購入意向)\n"
                           "2. 最も魅力的だと感じられた点\n"
                           "3. 懸念点\n"
                           "4. 改善提案",
        situation="広告評価のフォーカスグループを実施しています。",
        fields=[
            "ratings",
            "attractive_points",
            "concerns",
            "improvements"
        ],
        fields_hints={
            "ratings": "各評価者の5段階評価",
            "attractive_points": "魅力的だと感じられた点",
            "concerns": "懸念点",
            "improvements": "改善提案"
        },
        verbose=True
    )
    
    return results

if __name__ == "__main__":
    print("広告評価を開始します...")
    results = run_virtual_evaluation()
    print("\n=== 評価結果 ===")
    print(json.dumps(results, indent=2, ensure_ascii=False))
結果はこちら

!!!!
DISCLAIMER: TinyTroupe relies on Artificial Intelligence (AI) models to generate content. 
The AI models are not perfect and may produce inappropriate or inacurate results. 
For any serious or consequential use, please review the generated content before using it.
!!!!

Looking for default config on: /content/TinyTroupe/tinytroupe/config.ini
Failed to find custom config on: /content/TinyTroupe/config.ini
Will use only default values. IF THINGS FAIL, TRY CUSTOMIZING MODEL, API TYPE, etc.

=================================
Current TinyTroupe configuration 
=================================
[OpenAI]
api_type = openai
azure_api_version = 2023-05-15
model = gpt-4o
max_tokens = 4000
temperature = 0.3
freq_penalty = 0.0
presence_penalty = 0.0
timeout = 60
max_attempts = 5
waiting_time = 1
exponential_backoff_factor = 5
embedding_model = text-embedding-3-small
cache_api_calls = False
cache_file_name = openai_api_cache.pickle
max_content_display_length = 1024

[Simulation]
rai_harmful_content_prevention = True
rai_copyright_infringement_prevention = True

[Logging]
loglevel = ERROR

広告評価を開始します...
USER --> Yuki: [CONVERSATION] 
          >      以下の広告を評価してください:      【製品名】HealthWatch Pro     
【広告タイトル】24時間365日、あなたの健康を見守る新しい相棒。
          > 【説明】     新登場のHealthWatch Proは、最新のAIテクノロジーを搭載した     
スマートウォッチです。心拍数、血中酸素濃度、睡眠の質など、
          > あなたの健康状態を24時間モニタリング。          
スポーツモードは20種類以上対応し、運動強度や消費カロリーを
          > 正確に計測。さらに、スマートフォンとの連携で、LINEやメールの     通知もシームレスに確認できます。
          > バッテリーは1回の充電で最大7日間持続。防水機能付きで、     水泳時も使用可能です。          
【価格】32,800円     【主な特徴】     -
          > 24時間健康モニタリング - 20種類以上のスポーツモード - 7日間連続使用可能なバッテリー - 防水機能搭載 - 
スマートフォン連携
          > あなたの視点で以下の点を評価してください:     1. 第一印象(5段階)     2. 製品への興味(5段階)     3.
価格の妥当性(5段階)     4.
          > 購入意向(5段階)          また、以下の点についても具体的に言及してください:     - 
最も魅力的に感じた点     - 気になる懸念点     - 改善提案
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [THINK] 
          > I need to evaluate the advertisement for HealthWatch Pro based on the given criteria.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [THINK] 
          > I will start by evaluating the first impression of the HealthWatch Pro advertisement.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [THINK] 
          > I should provide a rating for the first impression of the advertisement.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > For the first impression of the HealthWatch Pro advertisement, I would rate it a 4 out
          > of 5. The advertisement is visually appealing and clearly communicates the product's
          > features.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > Regarding my interest in the product, I would rate it a 4 out of 5. The features like
          > 24/7 health monitoring and water resistance are quite appealing.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > In terms of price fairness, I would rate it a 3 out of 5. While the features are
          > impressive, the price point of 32,800 yen might be a bit high for some consumers.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > For purchase intention, I would rate it a 4 out of 5. The comprehensive health
          > monitoring features make it a desirable product for health-conscious individuals.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > The most attractive feature of the HealthWatch Pro is its 24/7 health monitoring
          > capability, which provides users with continuous insights into their health status.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > One concern is the price, which might be a barrier for some potential customers.
          > Additionally, ensuring the accuracy of the health data is crucial for user trust.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > As an improvement suggestion, consider offering a trial period or a more affordable
          > entry-level model to attract a wider audience.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [DONE] 

USER --> Kenta: [CONVERSATION] 
          >      以下の広告を評価してください:      【製品名】HealthWatch Pro     
【広告タイトル】24時間365日、あなたの健康を見守る新しい相棒。
          > 【説明】     新登場のHealthWatch Proは、最新のAIテクノロジーを搭載した     
スマートウォッチです。心拍数、血中酸素濃度、睡眠の質など、
          > あなたの健康状態を24時間モニタリング。          
スポーツモードは20種類以上対応し、運動強度や消費カロリーを
          > 正確に計測。さらに、スマートフォンとの連携で、LINEやメールの     通知もシームレスに確認できます。
          > バッテリーは1回の充電で最大7日間持続。防水機能付きで、     水泳時も使用可能です。          
【価格】32,800円     【主な特徴】     -
          > 24時間健康モニタリング - 20種類以上のスポーツモード - 7日間連続使用可能なバッテリー - 防水機能搭載 - 
スマートフォン連携
          > あなたの視点で以下の点を評価してください:     1. 第一印象(5段階)     2. 製品への興味(5段階)     3.
価格の妥当性(5段階)     4.
          > 購入意向(5段階)          また、以下の点についても具体的に言及してください:     - 
最も魅力的に感じた点     - 気になる懸念点     - 改善提案
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [THINK] 
           > The HealthWatch Pro advertisement seems to emphasize its comprehensive health
           > monitoring features, which could be appealing to athletes like me.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [TALK] 
           > 1. 第一印象: 4/5 - The HealthWatch Pro gives a strong first impression with its advanced AI
           > technology and comprehensive health monitoring features. 2. 製品への興味: 5/5 - As a sports
           > science student, I'm very interested in its ability to monitor various health metrics
           > and support over 20 sports modes. 3. 価格の妥当性: 3/5 - The price of 32,800 yen seems
           > reasonable for the features offered, but it might be a bit high for students. 4. 購入意向:
           > 4/5 - I would consider purchasing it due to its extensive features and benefits for
           > athletic performance.  最も魅力的に感じた点: The 24/7 health monitoring and the ability to track
           > over 20 types of sports activities are very appealing. 気になる懸念点: The price might be a
           > concern for students or those on a budget. 改善提案: Offering a student discount or a more
           > affordable version with essential features could attract more buyers.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [DONE] 

USER --> Miyako: [CONVERSATION] 
          >      以下の広告を評価してください:      【製品名】HealthWatch Pro     
【広告タイトル】24時間365日、あなたの健康を見守る新しい相棒。
          > 【説明】     新登場のHealthWatch Proは、最新のAIテクノロジーを搭載した     
スマートウォッチです。心拍数、血中酸素濃度、睡眠の質など、
          > あなたの健康状態を24時間モニタリング。          
スポーツモードは20種類以上対応し、運動強度や消費カロリーを
          > 正確に計測。さらに、スマートフォンとの連携で、LINEやメールの     通知もシームレスに確認できます。
          > バッテリーは1回の充電で最大7日間持続。防水機能付きで、     水泳時も使用可能です。          
【価格】32,800円     【主な特徴】     -
          > 24時間健康モニタリング - 20種類以上のスポーツモード - 7日間連続使用可能なバッテリー - 防水機能搭載 - 
スマートフォン連携
          > あなたの視点で以下の点を評価してください:     1. 第一印象(5段階)     2. 製品への興味(5段階)     3.
価格の妥当性(5段階)     4.
          > 購入意向(5段階)          また、以下の点についても具体的に言及してください:     - 
最も魅力的に感じた点     - 気になる懸念点     - 改善提案
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [THINK] 
            > The HealthWatch Pro advertisement seems to emphasize its comprehensive health
            > monitoring features and connectivity with smartphones.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [TALK] 
            > 1. First Impression: 4/5 - The advertisement is clear and highlights the key features
            > effectively. 2. Interest in Product: 4/5 - The health monitoring capabilities and
            > smartphone connectivity are appealing. 3. Price Reasonableness: 3/5 - The price seems
            > a bit high, but it might be justified by the features offered. 4. Purchase Intention:
            > 3/5 - I am somewhat interested, but would like to compare it with similar products.
            > Most Attractive Point: The 24/7 health monitoring and the variety of sports modes are
            > very appealing. Concerns: The price is a bit high, and I wonder about the accuracy of
            > the health data. Improvement Suggestion: Offering a trial period or a more detailed
            > comparison with competitors could be beneficial.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [DONE] 

────────────────────────────────────── Advertisement Evaluation step 1 of 2 ───────────────────────────────────────
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [DONE] 

Yuki --> Kenta: [CONVERSATION] 
          > For the first impression of the HealthWatch Pro advertisement, I would rate it a 4 out
          > of 5. The advertisement is visually appealing and clearly communicates the product's
          > features.
Yuki --> Miyako: [CONVERSATION] 
          > For the first impression of the HealthWatch Pro advertisement, I would rate it a 4 out
          > of 5. The advertisement is visually appealing and clearly communicates the product's
          > features.
Yuki --> Kenta: [CONVERSATION] 
          > Regarding my interest in the product, I would rate it a 4 out of 5. The features like
          > 24/7 health monitoring and water resistance are quite appealing.
Yuki --> Miyako: [CONVERSATION] 
          > Regarding my interest in the product, I would rate it a 4 out of 5. The features like
          > 24/7 health monitoring and water resistance are quite appealing.
Yuki --> Kenta: [CONVERSATION] 
          > In terms of price fairness, I would rate it a 3 out of 5. While the features are
          > impressive, the price point of 32,800 yen might be a bit high for some consumers.
Yuki --> Miyako: [CONVERSATION] 
          > In terms of price fairness, I would rate it a 3 out of 5. While the features are
          > impressive, the price point of 32,800 yen might be a bit high for some consumers.
Yuki --> Kenta: [CONVERSATION] 
          > For purchase intention, I would rate it a 4 out of 5. The comprehensive health
          > monitoring features make it a desirable product for health-conscious individuals.
Yuki --> Miyako: [CONVERSATION] 
          > For purchase intention, I would rate it a 4 out of 5. The comprehensive health
          > monitoring features make it a desirable product for health-conscious individuals.
Yuki --> Kenta: [CONVERSATION] 
          > The most attractive feature of the HealthWatch Pro is its 24/7 health monitoring
          > capability, which provides users with continuous insights into their health status.
Yuki --> Miyako: [CONVERSATION] 
          > The most attractive feature of the HealthWatch Pro is its 24/7 health monitoring
          > capability, which provides users with continuous insights into their health status.
Yuki --> Kenta: [CONVERSATION] 
          > One concern is the price, which might be a barrier for some potential customers.
          > Additionally, ensuring the accuracy of the health data is crucial for user trust.
Yuki --> Miyako: [CONVERSATION] 
          > One concern is the price, which might be a barrier for some potential customers.
          > Additionally, ensuring the accuracy of the health data is crucial for user trust.
Yuki --> Kenta: [CONVERSATION] 
          > As an improvement suggestion, consider offering a trial period or a more affordable
          > entry-level model to attract a wider audience.
Yuki --> Miyako: [CONVERSATION] 
          > As an improvement suggestion, consider offering a trial period or a more affordable
          > entry-level model to attract a wider audience.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [THINK] 
           > Yuki's feedback on the HealthWatch Pro aligns with my own thoughts. The 24/7 health
           > monitoring is a standout feature, but the price could be a concern for some.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [TALK] 
           > I agree with your assessment, Yuki. The HealthWatch Pro's continuous health monitoring
           > is indeed a strong feature, and addressing the price concern with options like a trial
           > period or a more affordable model could make it more accessible.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [DONE] 

Kenta --> Yuki: [CONVERSATION] 
           > 1. 第一印象: 4/5 - The HealthWatch Pro gives a strong first impression with its advanced AI
           > technology and comprehensive health monitoring features. 2. 製品への興味: 5/5 - As a sports
           > science student, I'm very interested in its ability to monitor various health metrics
           > and support over 20 sports modes. 3. 価格の妥当性: 3/5 - The price of 32,800 yen seems
           > reasonable for the features offered, but it might be a bit high for students. 4. 購入意向:
           > 4/5 - I would consider purchasing it due to its extensive features and benefits for
           > athletic performance.  最も魅力的に感じた点: The 24/7 health monitoring and the ability to track
           > over 20 types of sports activities are very appealing. 気になる懸念点: The price might be a
           > concern for students or those on a budget. 改善提案: Offering a student discount or a more
           > affordable version with essential features could attract more buyers.
Kenta --> Miyako: [CONVERSATION] 
           > 1. 第一印象: 4/5 - The HealthWatch Pro gives a strong first impression with its advanced AI
           > technology and comprehensive health monitoring features. 2. 製品への興味: 5/5 - As a sports
           > science student, I'm very interested in its ability to monitor various health metrics
           > and support over 20 sports modes. 3. 価格の妥当性: 3/5 - The price of 32,800 yen seems
           > reasonable for the features offered, but it might be a bit high for students. 4. 購入意向:
           > 4/5 - I would consider purchasing it due to its extensive features and benefits for
           > athletic performance.  最も魅力的に感じた点: The 24/7 health monitoring and the ability to track
           > over 20 types of sports activities are very appealing. 気になる懸念点: The price might be a
           > concern for students or those on a budget. 改善提案: Offering a student discount or a more
           > affordable version with essential features could attract more buyers.
Kenta --> Yuki: [CONVERSATION] 
           > I agree with your assessment, Yuki. The HealthWatch Pro's continuous health monitoring
           > is indeed a strong feature, and addressing the price concern with options like a trial
           > period or a more affordable model could make it more accessible.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [THINK] 
            > Both Yuki and Kenta have provided valuable insights into the HealthWatch Pro
            > advertisement. They both appreciate the health monitoring features but have concerns
            > about the price.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [TALK] 
            > Thank you, Yuki and Kenta, for sharing your thoughts on the HealthWatch Pro. It seems
            > like the 24/7 health monitoring and sports tracking features are quite appealing to
            > both of you. However, the price is a common concern. Offering a trial period or
            > discounts could indeed make it more accessible.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [DONE] 

Miyako --> Yuki: [CONVERSATION] 
            > 1. First Impression: 4/5 - The advertisement is clear and highlights the key features
            > effectively. 2. Interest in Product: 4/5 - The health monitoring capabilities and
            > smartphone connectivity are appealing. 3. Price Reasonableness: 3/5 - The price seems
            > a bit high, but it might be justified by the features offered. 4. Purchase Intention:
            > 3/5 - I am somewhat interested, but would like to compare it with similar products.
            > Most Attractive Point: The 24/7 health monitoring and the variety of sports modes are
            > very appealing. Concerns: The price is a bit high, and I wonder about the accuracy of
            > the health data. Improvement Suggestion: Offering a trial period or a more detailed
            > comparison with competitors could be beneficial.
Miyako --> Kenta: [CONVERSATION] 
            > 1. First Impression: 4/5 - The advertisement is clear and highlights the key features
            > effectively. 2. Interest in Product: 4/5 - The health monitoring capabilities and
            > smartphone connectivity are appealing. 3. Price Reasonableness: 3/5 - The price seems
            > a bit high, but it might be justified by the features offered. 4. Purchase Intention:
            > 3/5 - I am somewhat interested, but would like to compare it with similar products.
            > Most Attractive Point: The 24/7 health monitoring and the variety of sports modes are
            > very appealing. Concerns: The price is a bit high, and I wonder about the accuracy of
            > the health data. Improvement Suggestion: Offering a trial period or a more detailed
            > comparison with competitors could be beneficial.
Miyako --> Yuki: [CONVERSATION] 
            > Thank you, Yuki and Kenta, for sharing your thoughts on the HealthWatch Pro. It seems
            > like the 24/7 health monitoring and sports tracking features are quite appealing to
            > both of you. However, the price is a common concern. Offering a trial period or
            > discounts could indeed make it more accessible.
Miyako --> Kenta: [CONVERSATION] 
            > Thank you, Yuki and Kenta, for sharing your thoughts on the HealthWatch Pro. It seems
            > like the 24/7 health monitoring and sports tracking features are quite appealing to
            > both of you. However, the price is a common concern. Offering a trial period or
            > discounts could indeed make it more accessible.
────────────────────────────────────── Advertisement Evaluation step 2 of 2 ───────────────────────────────────────
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [TALK] 
          > Thank you, Miyako, for your input. It's great to see that the health monitoring and
          > sports tracking features are resonating well. Addressing the price concern with options
          > like a trial period or discounts could indeed enhance its appeal.
Yuki --> Yuki: [THOUGHT] 
          > I will now act a bit, and then issue DONE.
Yuki acts: [DONE] 

Yuki --> Miyako: [CONVERSATION] 
          > Thank you, Miyako, for your input. It's great to see that the health monitoring and
          > sports tracking features are resonating well. Addressing the price concern with options
          > like a trial period or discounts could indeed enhance its appeal.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [THINK] 
           > Miyako's feedback also aligns with the common concerns and attractions we've discussed.
           > It's clear that the HealthWatch Pro has strong features, but the price is a significant
           > factor for potential buyers.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [TALK] 
           > Thanks for your input, Miyako. It seems we all agree that the HealthWatch Pro's
           > features are impressive, but the price is a hurdle. A trial period or discounts could
           > definitely help in making it more appealing to a wider audience.
Kenta --> Kenta: [THOUGHT] 
           > I will now act a bit, and then issue DONE.
Kenta acts: [DONE] 

Kenta --> Miyako: [CONVERSATION] 
           > Thanks for your input, Miyako. It seems we all agree that the HealthWatch Pro's
           > features are impressive, but the price is a hurdle. A trial period or discounts could
           > definitely help in making it more appealing to a wider audience.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [THINK] 
            > Yuki and Kenta both appreciate the feedback and agree on the potential improvements
            > for the HealthWatch Pro. It's good to see a consensus on the product's strengths and
            > areas for improvement.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [TALK] 
            > I'm glad we could all share our thoughts on the HealthWatch Pro. It's important to
            > consider both the appealing features and the potential barriers like pricing.
            > Hopefully, the feedback can help in making the product more accessible and attractive
            > to a broader audience.
Miyako --> Miyako: [THOUGHT] 
            > I will now act a bit, and then issue DONE.
Miyako acts: [DONE] 

Miyako --> Yuki: [CONVERSATION] 
            > I'm glad we could all share our thoughts on the HealthWatch Pro. It's important to
            > consider both the appealing features and the potential barriers like pricing.
            > Hopefully, the feedback can help in making the product more accessible and attractive
            > to a broader audience.
Miyako --> Kenta: [CONVERSATION] 
            > I'm glad we could all share our thoughts on the HealthWatch Pro. It's important to
            > consider both the appealing features and the potential barriers like pricing.
            > Hopefully, the feedback can help in making the product more accessible and attractive
            > to a broader audience.
Extraction raw result message: {'content': '```json\n[\n    {\n        "ratings": {\n            "第一印象": "4/5",\n            "製品への興味": "4/5",\n            "価格の妥当性": "3/5",\n            "購入意向": "4/5"\n        },\n        "attractive_points": "24/7 health monitoring capability",\n        "concerns": "Price might be a barrier for some potential customers. Ensuring the accuracy of the health data is crucial for user trust.",\n        "improvements": "Consider offering a trial period or a more affordable entry-level model to attract a wider audience."\n    },\n    {\n        "ratings": {\n            "第一印象": "4/5",\n            "製品への興味": "5/5",\n            "価格の妥当性": "3/5",\n            "購入意向": "4/5"\n        },\n        "attractive_points": "24/7 health monitoring and the ability to track over 20 types of sports activities",\n        "concerns": "The price might be a concern for students or those on a budget.",\n        "improvements": "Offering a student discount or a more affordable version with essential features could attract more buyers."\n    },\n    {\n        "ratings": {\n            "第一印象": "4/5",\n            "製品への興味": "4/5",\n            "価格の妥当性": "3/5",\n            "購入意向": "3/5"\n        },\n        "attractive_points": "24/7 health monitoring and the variety of sports modes",\n        "concerns": "The price is a bit high, and I wonder about the accuracy of the health data.",\n        "improvements": "Offering a trial period or a more detailed comparison with competitors could be beneficial."\n    }\n]\n```', 'refusal': None, 'role': 'assistant'}

=== 評価結果 ===
[
  {
    "ratings": {
      "第一印象": "4/5",
      "製品への興味": "4/5",
      "価格の妥当性": "3/5",
      "購入意向": "4/5"
    },
    "attractive_points": "24/7 health monitoring capability",
    "concerns": "Price might be a barrier for some potential customers. Ensuring the accuracy of the health data is crucial for user trust.",
    "improvements": "Consider offering a trial period or a more affordable entry-level model to attract a wider audience."
  },
  {
    "ratings": {
      "第一印象": "4/5",
      "製品への興味": "5/5",
      "価格の妥当性": "3/5",
      "購入意向": "4/5"
    },
    "attractive_points": "24/7 health monitoring and the ability to track over 20 types of sports activities",
    "concerns": "The price might be a concern for students or those on a budget.",
    "improvements": "Offering a student discount or a more affordable version with essential features could attract more buyers."
  },
  {
    "ratings": {
      "第一印象": "4/5",
      "製品への興味": "4/5",
      "価格の妥当性": "3/5",
      "購入意向": "3/5"
    },
    "attractive_points": "24/7 health monitoring and the variety of sports modes",
    "concerns": "The price is a bit high, and I wonder about the accuracy of the health data.",
    "improvements": "Offering a trial period or a more detailed comparison with competitors could be beneficial."
  }
]

結果を踏まえて、どのように考えることができるのでしょうか?

  1. 全体的な評価の傾向
  • 第一印象:全員が4/5と評価 → 広告のメッセージと製品説明が効果的
  • 製品への興味:4-5/5 → 特にスポーツや健康に関心の高い層で高評価
  • 価格の妥当性:全員が3/5 → 価格に関する懸念が共通
  • 購入意向:3-4/5 → 機能は魅力的だが、価格が購入の障壁に
  1. 主な魅力的なポイント
  • 全評価者が「24/7健康モニタリング」を評価
  • スポーツモードの多様性が高評価
  • 継続的な健康管理機能が評価のポイント
  1. 共通の懸念事項
  • 価格(32,800円)が主な障壁
  • 健康データの正確性への不安
  • 学生など予算の限られた層には手が届きにくい
  1. 共通して提案された解決策
  • 試用期間の提供
  • より手頃な価格の基本モデルの提供
  • 学生割引などの検討
  • 競合製品との比較情報の提供
  1. ペルソナ別の特徴的な反応
  • 1人目:バランスの取れた評価、一般消費者的な視点での分析
  • 2人目:スポーツ関連機能への高い関心(製品への興味が5/5)、学生の視点からの価格懸念
  • 3人目:より慎重な評価(購入意向3/5)、競合製品との比較を重視
  1. マーケティングへの示唆
    価格戦略の見直し
  • 複数の価格帯の製品ライン展開
  • 学生向け特別プログラムの検討
  • 試用プログラムの導入

    製品訴求ポイントの強化
  • 健康モニタリングの精度に関する情報提供
  • スポーツモードの詳細な説明
  • 競合製品との比較情報の提供

    ターゲット層別のアプローチ
  • スポーツ愛好家向けの専門機能のアピール
  • 一般ユーザー向けの基本的な健康管理機能の強調
  • 学生向けの特別プログラムの開発

こちらが設定したペルソナを忠実に守り、具体的にシミュレーションをしてくれています。

あくまでもシミュレーションなので、TinyTroupeで出た結果がどれくらい現実世界で通用するかはわかりません。しかし、ターゲット層に応じた細かなアプローチを検討するきっかけにはなるかもしれませんね。

ちなみにペルソナ設定は以下のようにできます。

ペルソナ設定はこちら
persona_definitions = [
    {
        "description": "ターゲット層1",
        "details": {
            "age": 25,  # 必須
            "gender": "任意",  # オプション
            "occupation": "職業",  # 必須
            "income": "年収",  # 推奨
            "location": "居住地",  # オプション
            "family_structure": "家族構成",  # オプション
            "traits": [  # 推奨
                "性格・行動特性1",
                "性格・行動特性2"
            ],
            "interests": [  # 推奨
                "興味・関心1",
                "興味・関心2"
            ],
            "pain_points": [  # 推奨
                "課題1",
                "課題2"
            ],
            "media_consumption": {  # オプション
                "preferred_channels": ["SNS", "TV", "Web"],
                "usage_frequency": "利用頻度"
            },
            "purchase_behavior": {  # オプション
                "price_sensitivity": "価格感度",
                "decision_factors": ["要因1", "要因2"]
            }
        }
    },
    # 追加のペルソナ定義...
]
評価したい広告コンテンツの定義はこちら
# 広告コンテンツの定義例
ad_content = {
    "product_name": "製品名を入力",  # 必須
    "title": "広告タイトル",  # 必須
    "description": """
    広告の詳細な説明文を入力
    複数行可能
    """,  # 必須
    "price": "価格を入力",  # 必須
    "target_audience": "ターゲット層", # オプション
    "selling_points": [  # 推奨
        "セールスポイント1",
        "セールスポイント2",
        "セールスポイント3"
    ],
    "media_type": "掲載メディア(SNS/TV/Web等)", # オプション
    "campaign_duration": "キャンペーン期間", # オプション
}

なお、複数のAIエージェントが会話しながら複雑なタスクを自動解決してくれるAutoGenについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

まとめ

本記事では、MicrosoftがリリースしたTinyTroupeについて詳しく解説をしました。GPUメモリがかからないのでgoogle colaboratoryでの実装も楽に行えます。

また、GitHubにExamplesが掲載されていますが、本記事で紹介しているコードはそれを元にかなり詳細にペルソナや広告内容を設定してシミュレーションを行なっていますので、ぜひそちらも参考に実装してみてください!

最後に

いかがだったでしょうか?

タスクや業務に合わせたAIエージェントで業務の自動化、効率化を実現することが可能です。

株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!

開発実績として、

・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント

などの開発実績がございます。

まずは、無料相談にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • 翔平

    総合病院で10年間理学療法士として勤務し、その後Pythonを独学で学びデータアナリストとして転職。趣味はキックボクシング

  • URLをコピーしました!
  • URLをコピーしました!
目次