共用方式為


Azure OpenAI Assistants Code 解釋器 (預覽)

程式代碼解釋器可讓 Assistants API 在沙箱執行環境中撰寫和執行 Python 程式代碼。 啟用程式代碼解釋器后,您的小幫手可以反覆執行程式代碼,以解決更具挑戰性的程式碼、數學和數據分析問題。 當助理撰寫無法執行的程式代碼時,可以藉由修改並執行不同的程式碼來逐一查看此程序代碼,直到程式碼執行成功為止。

重要

程式代碼解釋器除了 Azure OpenAI 使用量的令牌型費用之外,還有 額外費用 。 如果您的小幫手在兩個不同的線程中同時呼叫程式代碼解釋器,則會建立兩個程式代碼解釋器會話。 每個會話預設為使用中一小時。

注意

  • 檔案搜尋 可以擷取每個助理最多 10,000 個檔案 - 比之前多 500 倍。 其速度很快,可透過多線程搜尋支援平行查詢,以及增強重新撰寫和查詢重寫的功能。
    • 向量存放區是 API 中的新物件。 一旦檔案新增至向量存放區,它就會自動剖析、區塊化和內嵌,準備好進行搜尋。 向量存放區可以跨助理和線程使用,簡化檔案管理和計費。
  • 我們已新增參數的支援 tool_choice ,可用來強制在特定執行中使用特定工具(例如檔案搜尋、程式代碼解釋器或函式)。

程式代碼解釋器支援

支援的模型

模型 頁面 包含支援小幫手和程式代碼解釋器之區域/模型的最新資訊。

我們建議搭配最新的模型使用助理,以利用新功能,以及較大的內容視窗,以及更最新的定型數據。

API 版本

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

支援的檔案類型

File format 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 應用程式/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 進行檔案上傳,就像微調一樣。 上傳檔案時,您必須為 目的參數指定適當的值。

啟用程式代碼解釋器

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"}],
  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"
        },
        # ...
 }

您可以將檔案傳遞至檔案 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)

另請參閱