6
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure OpenAI の Code Interpreter で CSV データを分析してみた

Posted at

はじめに

2024 年 2 月に Azure OpenAI の Assistant 機能の一つとして Code Interpreter がプレビューで追加されました。こちらを試してみました。
Azure OpenAI Assistants Code Interpreter (Preview)

※注意
現在、Assistants 機能 が使える Azure OpenAI のリージョンが限られていますので注意してください。

2024 年 2 月 16 日現在
image.png

利用可能リージョン(公式)

実際のコード

from openai import AzureOpenAI
import json
import time
    
client = AzureOpenAI(
  api_key=os.getenv("AOAI_API_KEY"),  
  api_version="2024-02-15-preview",
  azure_endpoint = os.getenv("AOAI_ENDPOINT")
)

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

assistant = client.beta.assistants.create(
  instructions = "You are an AI assistant that can analyze csv data to help answer math questions.",
  model = "gpt-4",
  tools = [{"type": "code_interpreter"}],
  file_ids = [file.id]
)

thread = client.beta.threads.create()

message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="Survivedが0の人の特徴を分析してください。"
)

run = client.beta.threads.runs.create(
  thread_id=thread.id,
  assistant_id=assistant.id,
)

status = run.status

while status not in ["completed", "cancelled", "expired", "failed"]:
    time.sleep(5)
    run = client.beta.threads.runs.retrieve(thread_id=thread.id,run_id=run.id)
    status = run.status

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

data = json.loads(messages.model_dump_json(indent=2))
print(data['data'][0]['content'][1]['text']['value'])

実行してみると、以下のように結果が返ってきます。
image.png

読み込ませた CSV データは以下のようなものです。
image.png

質問

Survived が 0 の人の特徴を分析してください。

回答

プロットから以下の観察を行うことができます:

  1. 性別 (Sex): 生存しなかった乗客の大部分は男性で、女性は比較的少ないです。
  2. 乗客のクラス (Pclass): 生存しなかった乗客の大部分は3等クラスに所属していました。これは、船の避難手順や生存設備の利用可能性がクラスによって異なった可能性があります。
  3. 年齢 (Age): 20-30歳の間の乗客が最も多く、生存しなかった人々の中で最も一般的な年齢層でした。また、年齢が若い子供や高齢者も一定数存在していました。
  4. 料金 (Fare): 生存しなかった多くの乗客が低い運賃を支払っていました。これは、運賃が低いということは一般的に下位クラスの船室に乗船していた可能性が高いことを示唆しています。
  5. 兄弟または配偶者の数 (SibSp): 生存しなかった乗客の大部分が一人で旅行していたか、または1人の兄弟や配偶者と一緒に旅行していました。
  6. 親または子供の数 (Parch): 生存しなかった乗客の大多数は親または子供と一緒には旅行していませんでした。

これらの観察は、生存結果に影響を与えた一部の要素を示しています。例えば、性別、クラス、年齢は特に重要な役割を果たしているように思われます。

さいごに

見事にデータに対する分析結果が返ってきました。
その他にもグラフを描画してくれたりと便利な機能があるので試してみたいと思います。

6
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?