MixpanelのデータをChatGPTにAPI連携して仮説立てをさせてみる
ミックスパネラーの國崎です。
今回は「Mixpanelと今流行りのChatGPTをAPIで連携して仮説立てしてもらったら面白そうやん」と思ったりしたので実際に試してみました。
3行まとめ
- MixpanelのデータをAPIで取得できるようにする
- Open AIのAPIを使って取得したデータを基に仮説立てさせる
- 結果を見てムフフする
前提としてはMixpanelを既に使っていてかつ、Open AIのAPIを扱える方が対象となります。
WEB版のChatGPTに入力して使うのではなく、あくまでAPIでの連携をしてやってみた記事になるので、そのあたりご承知おきください。
Mixpanelのデータを準備
まず仮説立てしてほしいMixpanelのデータを準備します。
ここでいうMixpanelのデータはMixpanelで保存したレポートのデータになります。
今回はMixpanelのインサイトレポートのデータを使います。
以下が用意したデータ「あるECアプリの商品カテゴリ別購買ユーザー数(週次)」になります。
上記のレポートを作成したらダッシュボードに保存します。
保存は右上のSaveで行います。
ダッシュボードに保存し終わるとURLが発行されます。
この時URLで以下のようにreportに紐づいている数字が当レポートのbookmark_IDとなります。
report-38309811
workspace_idは以下のようにviewとappの間の数字です。
view/3455464/app/
Mixoanelのインサイトレポート用のQuery APIを使い、データを外部でも取得できるようにします。
Query APIを使う際は、以下が必要となります。
- project_id
- workspace_id(任意)
- bookmark_id
- AUTHENTICATION(サービスアカウント or APIシークレットキー)
Query APIページ内でのTry It!をクリックして、以下のように書き出しができれば成功です。
上のデータを取得するための以下pythonコードも書き出されました。
import requests # project_id,workspace_id,bookmark_idには各指定のIDを記入 url = "https://mixpanel.com/api/2.0/insights?project_id=$project_id&workspace_id=$workspace_id&bookmark_id=$bookmark_id" headers = { "accept": "application/json", "authorization": "Basic 認証キー" } response = requests.get(url, headers=headers) print(response.text)
これでMixpanelからデータを取得するpythonコードがわかったので、次にOpen AIのapiと連携させます。
PythonでOpen AIのAPIにデータを読み込ませる
PythonはGoogle Colaboratoryの環境を使います。
事前にOpen AIのインストールはしておきます。
!pip install openai
Mixpanelから書き出されたコードに加え、Open AIのAPIキー、APIリクエストの実行文を以下のように追記します。
import openai import json import requests # project_id,workspace_id,bookmark_idには各指定のIDを記入 url = "https://mixpanel.com/api/2.0/insights?project_id=$project_id&workspace_id=$workspace_id&bookmark_id=$bookmark_id" headers = { "accept": "application/json", "authorization": "Basic 認証キー" } response = requests.get(url, headers=headers) # APIキーの設定 openai.api_key = "Open AIのAPIキー" # 整形済みデータ(JSON形式)の例 data = [response.text] # データを文字列に変換 data_str = json.dumps(data) # OpenAI APIにデータを渡すプロンプトを作成 prompt = f"ECアプリの運用をしています。次のMixpanelのデータからどのような仮説立てができるか教えてください。 insights:\n{data_str}\n\nInsights: " # APIリクエストを実行 response_ai = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "あなたはMixpanelのデータを分析し仮説立てをするAIアシスタントです"}, {"role": "user", "content": prompt} ], max_tokens=500, temperature=0.5, ) # 結果を表示 print(response_ai['choices'][0]['message']['content'].strip())
変数promptに質問とMixpanelの取得データを入れています。
max_tokensでAPIから書き出される文字数の調整もできます。
データを基に生成された仮説
上記の記述から出された仮説が以下になります。
このデータから得られる仮説は以下の通りです。 - 期間内に完了した購入の総数は3014件であることがわかります。 これはECアプリの売上に直結するため、売上の伸びを見込める可能性があります。 - カテゴリー別に見ると、Clothing、Jewelry & Watches、Industrialが上位にランクインしています。 これらのカテゴリーにフォーカスすることで、より多くの顧客を獲得することができるかもしれません。 - 一方で、Homeカテゴリーは他のカテゴリーに比べて売上が低いことがわかります。 このカテゴリーについては、商品ラインナップやマーケティング戦略を見直す必要があるかもしれません。 - 各カテゴリーの売上比率を見ることで、ECアプリの商品ラインナップの傾向がわかります。 これを踏まえて、商品のカテゴリー分けや新商品の開発を検討することができます。
「思ったよりも、ちゃんとした内容が返ってきた」と個人的には思ったのですが、いかがでしょうか。
今回与えたデータが「商品カテゴリ別購買ユーザー数」なので、普通にマーケティングをしている方からすると「他にもデータくれや!」となりそうなところですが、Open AI(ChatGPT)は健気に返してるのが、「ちゃんとしてるなぁ」と少し感心してしまいました。
ちなみにOpen AIにあまりに大量のデータを与えると、以下のようにエラーが出ます。
InvalidRequestError: This model's maximum context length is 4097 tokens. However, your messages resulted in 2114821 tokens. Please reduce the length of the messages.
より高度な分析となると、与えるデータも必然的に多くなると思いますが、その場合はデータの整形など工夫が必要になるみたいです。
この辺はどういう作業が必要になるか、もうちょっと勉強してみようと思います。