Udostępnij za pośrednictwem


Interpreter kodu usługi agenta sztucznej inteligencji platformy Azure

Interpreter kodu umożliwia agentom pisanie i uruchamianie kodu w języku Python w środowisku wykonywania w trybie piaskownicy. Po włączeniu interpretera kodu agent może uruchomić iteracyjny kod, aby rozwiązać trudniejsze problemy z kodem, matematyką i analizą danych. Gdy agent zapisuje kod, który nie może uruchomić, może iterować ten kod, modyfikując i uruchamiając inny kod do momentu pomyślnego wykonania kodu.

Ważne

Z interpreterem kodów wiążą się dodatkowe opłaty poza opłatami opartymi na tokenach za użycie usługi Azure OpenAI. Jeśli agent wywołuje interpreter kodu jednocześnie w dwóch różnych wątkach, tworzone są dwie sesje interpretera kodu. Każda sesja jest domyślnie aktywna przez jedną godzinę.

Obsługiwane modele

Strona modeli zawiera najbardziej aktualne informacje dotyczące regionów/modeli, w których są obsługiwani agenci i interpreter kodu.

Zalecamy używanie agentów z najnowszymi modelami, aby korzystać z nowych funkcji, większych okien kontekstowych i bardziej aktualnych danych treningowych.

Obsługa użycia

Pomoc techniczna dotycząca znajdowania sztucznej inteligencji platformy Azure Zestaw SDK dla języka Python Zestaw SDK języka C# Zestaw SDK dla języka JavaScript Interfejs API REST Konfiguracja agenta podstawowego Konfiguracja agenta standardowego
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Używanie narzędzia interpretera kodu z agentem

Narzędzie interpretera kodu można dodać do agenta programowo, korzystając z przykładów kodu wymienionych w górnej części tego artykułu lub portalu Usługi Azure AI Foundry. Jeśli chcesz użyć portalu:

  1. Na ekranie Tworzenie i debugowanie agenta przewiń w dół okienko Konfiguracja po prawej stronie do akcji. Następnie wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający dostępne kategorie narzędzi w portalu usługi Azure AI Foundry.

  2. Wybierz pozycję Interpreter kodu i postępuj zgodnie z monitami, aby dodać narzędzie.

    Zrzut ekranu przedstawiający dostępne narzędzia akcji w portalu usługi Azure AI Foundry.

  3. Opcjonalnie możesz przekazać pliki agenta, aby odczytywać i interpretować informacje z zestawów danych, generować kod oraz tworzyć grafy i wykresy przy użyciu danych.

    Zrzut ekranu przedstawiający stronę przekazywania interpretera kodu.

Tworzenie klienta projektu

Aby użyć interpretera kodu, najpierw dodaj import instrukcje pokazane w przykładzie i utwórz klienta projektu, który będzie zawierać parametry połączenia do projektu sztucznej inteligencji i będzie używany do uwierzytelniania wywołań interfejsu 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"]
)

Przekazywanie pliku

Przekaż plik przy użyciu upload_and_poll() funkcji, określając ścieżkę pliku i FilePurpose.AGENTS cel.

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

Tworzenie agenta za pomocą narzędzia interpretera kodu

Zdefiniuj code_interpreter narzędzie i CodeInterpreterTool() dołącz identyfikator pliku przekazanego pliku. Następnie utwórz agenta z ustawioną wartością toolscode_interpreter.definitions i tool_resources ustaw wartość 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,
)

Tworzenie wątku, komunikatu i uzyskiwanie odpowiedzi agenta

Następnie utwórz wątek za pomocą create_thread() polecenia i dołącz do niego komunikat, który create_message() wyzwoli narzędzie interpretera kodu. Następnie utwórz i wykonaj przebieg za pomocą create_and_process_run()polecenia . Po zakończeniu przebiegu można usunąć plik z agenta delete_file() , aby zwolnić miejsce w agencie. Na koniec wydrukuj komunikaty z agenta.

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

Pobieranie plików generowanych przez interpreter kodu

Pliki generowane przez interpreter kodu można znaleźć w odpowiedziach komunikatów agenta. Plik obrazu wygenerowany przez interpreter kodu można pobrać, iterując za pośrednictwem odpowiedzi image_contents i wywołując save_file() z nazwą i identyfikatorem pliku.

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

Typy obsługiwanych plików

File format Typ 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 lub text/xml
.zip application/zip

Zobacz też