Condividi tramite


Interprete di codice degli assistenti di Azure OpenAI (anteprima)

L'interprete di codice consente all'API Assistenti di scrivere ed eseguire codice Python in un ambiente di esecuzione in modalità sandbox. Con l'Interprete di codice abilitato, l'Assistente può eseguire il codice in modo iterativo per risolvere problemi di codice, matematica e analisi dei dati più complessi. Quando l'assistente scrive codice che non riesce a essere eseguito, può eseguire l'iterazione su questo codice modificando ed eseguendo codice diverso fino a quando l'esecuzione del codice non riesce.

Importante

L’Interprete di codice prevede addebiti aggiuntivi oltre i costi basati su token per l'utilizzo di Azure OpenAI. Se l'Assistente chiama l'interprete di codice contemporaneamente in due thread diversi, verranno create due sessioni dell'interprete di codice. Ogni sessione è attiva per impostazione predefinita per un'ora.

Nota

  • Ricerca file può inserire fino a 10.000 file per assistente, 500 volte più di prima. È veloce, supporta query parallele tramite ricerche multithread e include la riclassificazione avanzata e la riscrittura di query.
    • L’archivio di vettori è un nuovo oggetto nell’API. Dopo l’aggiunta a un archivio di vettori, un file viene analizzato, suddiviso in blocchi, incorporato e preparato per essere sottoposto a ricerca. Gli archivi di vettori possono essere usati in diversi assistenti e thread, semplificando quindi la gestione dei file e la fatturazione.
  • È stato aggiunto il supporto per il parametro tool_choice, che può essere usato per imporre l’uso di uno strumento specifico, ad esempio ricerca file, interprete di codice o una funzione, in una determinata esecuzione.

Supporto dell'interprete di codice

Modelli supportati

La pagina dei modelli contiene le informazioni più aggiornate su aree/modelli in cui sono attualmente supportati gli assistenti e l'interprete di codice.

È consigliabile usare assistenti con i modelli più recenti per sfruttare le nuove funzionalità, le finestre di contesto più grandi e i dati di training più aggiornati.

Versioni dell’API

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

Tipi di file supportati

File format Tipo 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 applicazione/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 or "text/xml"
.zip application/zip

Riferimento API per il caricamento di file

Gli assistenti usano la stessa API per il caricamento di file come ottimizzazione. Quando si carica un file, è necessario specificare un valore appropriato per il parametro scopo.

Abilitare l'interprete di codice

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"}]
)

Caricare il file per l'interprete di codice

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]}}
)

Passare il file a un singolo thread

Oltre a rendere i file accessibili a livello degli assistenti, è possibile passare i file in modo che siano accessibili solo per un thread specifico.

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" 
    }
  ]
)

Scaricare i file generati dall'interprete di codice

I file generati dall'interprete di codice sono disponibili nelle risposte ai messaggi dell'assistente

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

È possibile scaricare questi file generati passando i file all'API dei file:

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)

Vedi anche