Interpretador de Código de Assistentes do OpenAI do Azure (versão prévia)

O Interpretador de Código permite que a API de Assistentes grave e execute código Python em um ambiente de execução em área restrita. Com o Interpretador de Código habilitado, o Assistente pode executar o código iterativamente para resolver problemas de análise de dados, matemática e código mais desafiadores. Quando o Assistente grava o código que não é executado, ele pode iterar nesse código modificando e executando código diferente até que a execução do código seja bem-sucedida.

Importante

O Interpretador de Código tem encargos adicionais além das taxas baseadas em token para uso do OpenAI do Azure. Se o Assistente chamar o Interpretador de Código simultaneamente em dois threads diferentes, duas sessões de interpretador de código serão criadas. Cada sessão fica ativa por padrão por uma hora.

Observação

  • A pesquisa de arquivos pode ingerir até 10.000 arquivos por assistente – 500 vezes mais do que antes. Ela é rápida, dá suporte a consultas paralelas por meio de pesquisas com vários threads e recursos aprimorados de reclassificação e reescrita de consulta.
    • O repositório de vetores é um novo objeto na API. Depois que um arquivo é adicionado a um repositório de vetores, ele é analisado automaticamente, em partes e inserido, pronto para ser pesquisado. Os repositórios de vetores podem ser usados entre assistentes e threads, simplificando o gerenciamento de arquivos e a cobrança.
  • Adicionamos suporte para o parâmetro tool_choice que pode ser usado para forçar o uso de uma ferramenta específica (como pesquisa de arquivo, interpretador de código ou uma função) em uma execução específica.

Suporte ao interpretador de código

Modelos com suporte

A página de modelos contém as informações mais atualizadas sobre regiões/modelos em que há suporte para Assistentes e interpretador de código.

É recomendável usar assistentes com os modelos mais recentes para aproveitar os novos recursos, janelas de contexto maiores e dados de treinamento mais atualizados.

Versões da API

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

Tipos de arquivo compatíveis

Formato de arquivo 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 aplicativo/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 texto/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 ou "text/xml"
.zip application/zip

Referência da API de upload de arquivo

Os assistentes usam a mesma API para upload de arquivo que ajuste fino. Ao carregar um arquivo, você precisa especificar um valor apropriado para o parâmetro de finalidade.

Habilitar interpretador de código

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

Carregar arquivo para o Interpretador de Código

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

Passar o arquivo para um thread individual

Além de tornar os arquivos acessíveis no nível de Assistentes, você pode passar arquivos para que eles só estejam acessíveis a um thread específico.

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

Baixar arquivos gerados pelo Interpretador de Código

Os arquivos gerados pelo Interpretador de Código podem ser encontrados nas respostas de mensagem do Assistente

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

Você pode baixar esses arquivos gerados passando os arquivos para a API de arquivos:

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)

Confira também