Azure OpenAI アシスタント コード インタープリター (プレビュー)

コード インタープリターを使うと、Assistants API はサンドボックス実行環境で Python コードを記述して実行できます。 コード インタープリターを有効にすると、アシスタントはコードを繰り返し実行して、より困難なコード、数学、データ分析の問題を解決できます。 アシスタントは、記述したコードの実行が失敗したら、コードの変更と変更したコードの実行を、コードの実行が成功するまで繰り返すことができます。

重要

コード インタープリターを使うと、Azure OpenAI の使用に対するトークン ベースの料金の他に、追加料金が発生します。 アシスタントが 2 つの異なるスレッドでコード インタープリターを同時に呼び出すと、2 つのコード インタープリター セッションが作成されます。 既定では、各セッションは 1 時間アクティブです。

Note

  • ファイル検索では、アシスタントあたり最大 10,000 個のファイルを取り込むことができます。これは以前の 500 倍以上の量です。 これは高速で、マルチスレッド検索を通して並列クエリをサポートしており、強化された再ランク付けとクエリの書き換えを特徴としています。
    • ベクトル ストアは、API 内の新しいオブジェクトです。 ファイルがベクトル ストアに追加されると、自動的にそのファイルの解析、チャンク、埋め込みが行われ、検索の準備が整います。 ベクトル ストアは、複数のアシスタントとスレッドにわたって使用できるため、ファイル管理と課金が単純化されます。
  • 特定の実行において特定のツール (ファイル検索、コード インタープリター、関数など) の使用を強制するために使用できる tool_choice パラメーターのサポートが追加されました。

コード インタープリターのサポート

サポートされているモデル

モデルのページには、アシスタントとコード インタープリターがサポートされているリージョンとモデルに関する最新情報が含まれています。

新しい機能、より大きなコンテキスト ウィンドウ、最新のトレーニング データを利用するために、最新のモデルでアシスタントを使用することをお勧めします。

API のバージョン

  • 2024-02-15-preview
  • 2024-05-01-preview

サポートされているファイルの種類

ファイル形式 MIME の種類
c. text/x-c
.cpp text/x-c++
.csv application/csv
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.html text/html
.java text/x-java
.json application/json
.md text/markdown
.pdf application/pdf
.php text/x-php
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.py text/x-python
.py text/x-script.python
.rb text/x-ruby
.tex text/x-tex
.txt text/plain
.css text/css
.jpeg image/jpeg
.jpg image/jpeg
.js text/javascript
.gif image/gif
.png image/png
.tar application/x-tar
.ts application/typescript
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml application/xml または "text/xml"
.zip application/zip

ファイル アップロード API リファレンス

アシスタントは、微調整と同じ API をファイル アップロードに使用します。 ファイルをアップロードする際には、purpose パラメーターに適切な値を指定する必要があります。

コード インタープリターを有効にする

from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-05-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

assistant = client.beta.assistants.create(
  instructions="You are an AI assistant that can write code to help answer math questions",
  model="<REPLACE WITH MODEL DEPLOYMENT NAME>", # replace with model deployment name. 
  tools=[{"type": "code_interpreter"}]
)

コード インタープリターにファイルをアップロードする

from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-05-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

# Upload a file with an "assistants" purpose
file = client.files.create(
  file=open("speech.py", "rb"),
  purpose='assistants'
)

# Create an assistant using the file ID
assistant = client.beta.assistants.create(
  instructions="You are an AI assistant that can write code to help answer math questions.",
  model="gpt-4-1106-preview",
  tools=[{"type": "code_interpreter"}],
  tool_resources={"code interpreter":{"file_ids":[file.id]}}
)

個々のスレッドにファイルを渡す

アシスタント レベルでファイルにアクセスできるようにするだけでなく、ファイルを渡して、特定のスレッドのみがアクセスできるようにすることができます。

from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-05-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

thread = client.beta.threads.create(
  messages=[
    {
      "role": "user",
      "content": "I need to solve the equation `3x + 11 = 14`. Can you help me?",
      "file_ids": ["file.id"] # file id will look like: "assistant-R9uhPxvRKGH3m0x5zBOhMjd2" 
    }
  ]
)

コード インタープリターによって生成されたファイルをダウンロードする

コード インタープリターによって生成されたファイルは、アシスタントのメッセージ応答に含まれています

 {
      "id": "msg_oJbUanImBRpRran5HSa4Duy4",
      "assistant_id": "asst_eHwhP4Xnad0bZdJrjHO2hfB4",
      "content": [
        {
          "image_file": {
            "file_id": "assistant-1YGVTvNzc2JXajI5JU9F0HMD"
          },
          "type": "image_file"
        },
        # ...
 }

これらの生成されたファイルは、ファイルを files API に渡すことでダウンロードできます。

from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-05-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

image_data = client.files.content("assistant-abc123")
image_data_bytes = image_data.read()

with open("./my-image.png", "wb") as file:
    file.write(image_data_bytes)

関連項目