ミックスパネラーの國崎です。
今回は「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.
より高度な分析となると、与えるデータも必然的に多くなると思いますが、その場合はデータの整形など工夫が必要になるみたいです。
この辺はどういう作業が必要になるか、もうちょっと勉強してみようと思います。