Поделиться через


Интерпретатор кода службы агента ИИ Azure

Интерпретатор кода позволяет агентам записывать и запускать код Python в изолированной среде выполнения. С включенным интерпретатором кода агент может выполнять итеративное выполнение кода для решения более сложных проблем с кодом, математикой и анализом данных. Когда агент записывает код, который не выполняется, он может выполнять итерацию по этому коду, изменив и выполнив другой код до тех пор, пока выполнение кода не будет выполнено.

Внимание

Интерпретатор кода требует дополнительных расходов за использование токенов Azure OpenAI. Если агент вызывает интерпретатор кода одновременно в двух разных потоках, создаются два сеанса интерпретатора кода. Каждый сеанс активен по умолчанию в течение одного часа.

Поддерживаемые модели

Страница моделей содержит самые актуальные сведения о регионах и моделях, где поддерживаются агенты и интерпретатор кода.

Мы рекомендуем использовать агенты с последними моделями, чтобы воспользоваться новыми функциями, большими контекстными окнами и более актуальными данными обучения.

Поддержка использования

Поддержка литейных решений Azure AI Пакет SDK для Python Пакет SDK для C# Пакет SDK для JavaScript REST API Базовая настройка агента Настройка стандартного агента
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Использование средства интерпретатора кода с агентом

Вы можете добавить средство интерпретатора кода в агент программно с помощью примеров кода, перечисленных в верхней части этой статьи, или портала Azure AI Foundry. Если вы хотите использовать портал, выполните следующие действия.

  1. На экране создания и отладки агента прокрутите вниз область установки справа от действия. Нажмите кнопку Добавить.

    Снимок экрана: доступные категории инструментов на портале Azure AI Foundry.

  2. Выберите интерпретатор кода и следуйте инструкциям, чтобы добавить это средство.

    Снимок экрана: доступные средства действий на портале Azure AI Foundry.

  3. Кроме того, вы можете отправить файлы для агента для чтения и интерпретации информации из наборов данных, создания кода и создания графов и диаграмм с помощью данных.

    Снимок экрана: страница отправки интерпретатора кода.

Создание клиента проекта

Чтобы использовать интерпретатор кода, сначала добавьте import инструкции, показанные в примере, и создайте клиент проекта, который будет содержать строка подключения в проект ИИ и будет использоваться для проверки подлинности вызовов API.

import os
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import CodeInterpreterTool
from azure.ai.projects.models import FilePurpose
from azure.identity import DefaultAzureCredential
from pathlib import Path

# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables
project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(), conn_str=os.environ["PROJECT_CONNECTION_STRING"]
)

Отправка файла

Отправьте файл с помощью upload_and_poll() функции, указав путь к файлу и FilePurpose.AGENTS назначение.

# Upload a file and add it to the client 
file = project_client.agents.upload_file_and_poll(
    file_path="nifty_500_quarterly_results.csv", purpose=FilePurpose.AGENTS
)
print(f"Uploaded file, file ID: {file.id}")

Создание агента с помощью средства интерпретатора кода

Определите code_interpreter средство с CodeInterpreterTool() идентификатором файла, который вы добавили. Затем создайте агент с tools заданным code_interpreter.definitions значением и tool_resources задайте для code_interpreter.resourcesнего значение .


code_interpreter = CodeInterpreterTool(file_ids=[file.id])

# create agent with code interpreter tool and tools_resources
agent = project_client.agents.create_agent(
    model="gpt-4o-mini",
    name="my-agent",
    instructions="You are helpful agent",
    tools=code_interpreter.definitions,
    tool_resources=code_interpreter.resources,
)

Создание потока, сообщения и получение ответа агента

Затем создайте поток с create_thread() сообщением и вложите к нему сообщение с помощью create_message() средства интерпретатора кода. После этого создайте и выполните запуск с create_and_process_run()помощью . После завершения выполнения можно удалить файл из агента, delete_file() чтобы освободить место в агенте. Наконец, распечатайте сообщения от агента.

# create a thread
thread = project_client.agents.create_thread()
print(f"Created thread, thread ID: {thread.id}")

# create a message
message = project_client.agents.create_message(
    thread_id=thread.id,
    role="user",
    content="Could you please create bar chart in the TRANSPORTATION sector for the operating profit from the uploaded csv file and provide file to me?",
)
print(f"Created message, message ID: {message.id}")

# create and execute a run
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")

if run.status == "failed":
    # Check if you got "Rate limit is exceeded.", then you want to get more quota
    print(f"Run failed: {run.last_error}")

# delete the original file from the agent to free up space (note: this does not delete your version of the file)
project_client.agents.delete_file(file.id)
print("Deleted file")

# print the messages from the agent
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")

# get the most recent message from the assistant
last_msg = messages.get_last_text_message_by_sender("assistant")
if last_msg:
    print(f"Last Message: {last_msg.text.value}")

Скачивание файлов, созданных интерпретатором кода

Файлы, созданные интерпретатором кода, можно найти в ответах на сообщения агента. Файл изображения, созданный интерпретатором кода, можно скачать, выполнив итерацию ответа image_contents с именем и save_file() идентификатором файла.

# save the newly created file
for image_content in messages.image_contents:
  print(f"Image File ID: {image_content.image_file.file_id}")
  file_name = f"{image_content.image_file.file_id}_image_file.png"
  project_client.agents.save_file(file_id=image_content.image_file.file_id, file_name=file_name)
  print(f"Saved image file to: {Path.cwd() / file_name}") 

Поддерживаемые типы файлов

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 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

См. также