OpenAI API の Assistants API を使ってX(Twitter)の分析させてみた

2023/11/13に公開

Open AIのAssitatnts APIとは、テキストベースのユーザーの質問やリクエストに応答できるシステムです。

ビジネスの観点から見ると、Assistant APIは顧客サービス、マーケティング、データ分析など様々な領域で応用が可能です。例えば、顧客からの問い合わせに自動で返答したり、ユーザーの意見や感想を分析して、製品やサービスの改善点を見つけるのに役立ちます。

このAssistant APIのすごいところは、ビジネスシーンの様々なことに使えそうだということです。

さて、そのAssistatn APIの使い方は以下になります。

from openai import OpenAI

最近、APIを叩いてなかったので、OpenAIのパッケージがアップグレードしていることに気が付きませんでした。
以前は、import openaiで使えましたが、最新バージョンであれば、fromで呼び出してOpen AIとする必要があります。

openaiパッケージをアップグレードしようとするとlitellmとopen-interpreterパッケージと依存関係の競合が発生してしまい、一度、open-interpreterをアンインストールしました。
open-interpreterをインストールした方も多いと思うので、そのような方はお気をつけください。

pip uninstall litellm open-interpreter

今後もこういう問題が発生しそうなので、PoetryやPipenvを使って依存関係の競合を解決してもらうのが良さそうですね。

さて、これで無事openaiパッケージをアップグレードすることができました。

Assistants APIを使ってみます。

まずはファイルの読み込み。今回は私のツイートの表示回数やいいねの数を読み込ませます。

file = client.files.create(
  file=open("tweet_activity_metrics_Seiyan1_20231005_20231102_ja.csv", "rb"),
  purpose='assistants'
)

アシスタントの作成。可視化と要約をお願いしました。

assistant = client.beta.assistants.create(
  name="Data analyzer",
  description="あなたは優秀なデータ解析者です。与えられたデータを解析してください。",
  model="gpt-4-1106-preview",
  tools=[{"type": "code_interpreter"}],
  file_ids=[file.id]
)

# スレッドの用意
thread = client.beta.threads.create(
  messages=[
    {
      "role": "user",
      "content": "最も表示回数の多いツイートを分析してください。なぜそのツイートの表示回数が多いのか類推してください。",
      "file_ids": [file.id]
    }
  ]
)

そして、作成したアシスタントを実行!

run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="ユーザー名を 聖也 としてください。"
)

run = client.beta.threads.runs.retrieve(
    thread_id=thread.id,
    run_id=run.id
)

print(run.status)

これでstatusがcompletedと表示されれば、実行されます。

どのような実行過程だったかを知ることができます。

run_steps = client.beta.threads.runs.steps.list(
    thread_id=thread.id,
    run_id=run.id
)

print(run_steps)

そして結果を以下のようなコードで取り出すことができます。

messages=client.beta.threads.messages.list(
    thread_id=thread.id
)

for message in reversed(messages.data):
    print(f"{message.role}: {message.content[0].text.value}\n")

メッセージを原文ママで出力します。

user: 最も表示回数の多いツイートを分析してください。なぜそのツイートの表示回数が多いのか類推してください。

assistant: まず、アップロードされたファイルを調べて、ツイートのデータがどのような形式で格納されているかを確認し、それから最も表示回数が多いツイートを抽出して分析してみましょう。

そのためには、ファイルの内容を確認し、データ形式(CSV、JSON、Excelなど)を確定した上で、そのデータから示された情報を解析する必要があります。

まずファイルを開いて、データの形式を確認しましょう。

assistant: ファイルの内容から判断すると、これはCSV形式のファイルのようです。ヘッダーにはツイートの属性が見て取れます。特に、「インプレッション」列はツイートの表示回数を示しており、この値が最も高いツイートを分析対象とします。

次に、このCSVファイルを読み込み、インプレッション数に基づいて最も表示回数の多いツイートを見つけましょう。それからそのツイートの特徴を理解し、なぜ表示回数が多いかを類推することができます。

assistant: データフレームには、ツイートに関するさまざまな情報が含まれています。次に、「インプレッション」列を使用して、最も表示回数が多いツイートを見つけましょう。表示回数が最も多いツイートの全データを確認します。

assistant: 最も表示回数が多いツイートは、インプレッションが3,474回ありました。このツイートの本文は以下のとおりです。

> 【医師と患者の会話データからSOAP形式のメモを作成】
> 
> プロンプトエンジニアリングによりGPTでSOAP形式のメモを作成しました!(実際の医師と患者の会話データを使用しています)\n\n#AI #GPT #医療

このツイートが多くのインプレッションを獲得した理由を類推するには、いくつかの要因を考慮する必要があります。そのために、エンゲージメントや他の付随するデータも考慮に入れてみましょう。

- **エンゲージメント**: 合計96回。人々がツイートをクリックしたり、応答したり、共有したりすることを示します。
- **エンゲージメント率**: 約2.76%。
- **リツイート**: 6回。他のユーザーがツイートを共有した回数。
- **いいね**: 11回。ツイートへの好意的な反応。
- **ユーザープロフィールクリック**: 13回。ツイートの作者のプロフィールを見るためにクリックした回数。
- **URLクリック数**: 50回。ウェブサイト訪問などの他の行動への導線。

このツイートが人気を博した理由として、以下の点が考えられます。

1. **トピックの関連性**: AI技術と医療という話題は非常に関心が高い分野です。特に、最新のGPT技術を応用した話題は多くの人々の関心を引きます。
2. **ハッシュタグの利用**: ハッシュタグに「#AI」、「#GPT」、「#医療」といったキーワードが使われており、これらの話題に興味があるコミュニティにリーチしやすくなっている点もインプレッション数を増加させた可能性があります。
3. **エンゲージメントの質**: ツイートがエンゲージメントを引き出し、それがさらにリツイートなどの形での拡散につながった可能性があります。

他にも、ツイートがポストされた時間、作者のフォロワー数、ツイートが含まれるスレッドや対話など、多くの要因がインプレッション数に影響を与える可能性があります。ここでの分析は、提供されたデータに基づいた一時点での類推にすぎません。さらに詳細な分析を行うためには、同時期の他のツイートやソーシャルメディアのトレンドなどを含めた総合的な評価が必要になるでしょう。

【医師と患者の会話データからSOAP形式のメモを作成】のツイートが最もインプレッションが高かったとのことで、合っています!このツイート、以下の記事をツイートしたのですが、非常に反応が良かったです。
https://zenn.dev/pipon_tech_blog/articles/f70436ad95ada0

そして、トピックについての分析や、ハッシュタグの利用についての言及などもされていますね。素晴らしい。。。

そして、自分の持っているデータ外の要因についてまで言及しています、、、末恐ろしいですね。

Assistants APIを使えば様々なビジネスシーンに使えるウェブシステムやアプリ、チャットボットを開発できるはずです!

もちろん、株式会社piponでも技術でお困りのことがある方はオンライン相談が可能です。
こちらから会社概要資料をDLできます!
お問い合わせ内容に「オンライン相談希望」とご記載ください。
https://share.hsforms.com/19XNce4U5TZuPebGH_BB9Igegfgt

株式会社piponでは定期的に技術勉強会を開催しています。
ChatGPT・AI・データサイエンスについてご興味がある方は是非、ご参加ください。
https://chatgptllm.connpass.com/

株式会社piponではChatGPT・AI・データサイエンスについて業界ごとの事例を紹介しています。ご興味ある方はこちらのオウンドメディアをご覧ください。
https://bigdata-tools.com/

株式会社piponのテックブログ

Discussion