Korzystanie z modeli czatu z obsługą obrazów
Modele czatów z obsługą przetwarzania obrazów to duże modele wielomodalne (LMM) opracowane przez platformę OpenAI, które umożliwiają analizowanie obrazów i dostarczanie odpowiedzi tekstowych na pytania dotyczące nich. Obejmują one zarówno przetwarzanie języka naturalnego, jak i zrozumienie wizualne. Obecne modele z obsługą obrazów to o1, GPT-4o, GPT-4o-mini i GPT-4 Turbo z obsługą obrazów.
Modele obsługujące wizję mogą odpowiedzieć na ogólne pytania dotyczące tego, co jest obecne na przekazanych obrazach.
Napiwek
Aby używać modeli z obsługą widzenia, należy wywołać interfejs API uzupełniania czatu na obsługiwanym modelu, który wdrożyłeś. Jeśli nie znasz interfejsu API uzupełniania czatu, zapoznaj się z przewodnikiem z instrukcjami dotyczącymi czatu z obsługą przetwarzania obrazów.
Wywołaj API kompletacji czatu
Poniższe polecenie przedstawia najbardziej podstawowy sposób używania modelu czatu z wbudowaną obsługą wizji w kodzie. Jeśli po raz pierwszy korzystasz z tych modeli programowo, zalecamy rozpoczęcie od naszego Przewodnika szybkiego startu czatu z obrazami.
Wyślij żądanie POST do https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview
- RESOURCE_NAME to nazwa zasobu usługi Azure OpenAI
- DEPLOYMENT_NAME to nazwa wdrożenia Twojego modelu
Wymagane nagłówki:
-
Content-Type
: application/json -
api-key
: {API_KEY}
Treść: Poniżej znajduje się przykładowa treść żądania. Format jest taki sam jak interfejs API uzupełniania czatu dla GPT-4, z tą różnicą, że zawartość wiadomości może być tablicą zawierającą tekst i obrazy (prawidłowy adres URL HTTP lub HTTPS do obrazu albo obraz zakodowany w formacie base-64).
Ważne
Pamiętaj, aby ustawić wartość "max_tokens"
, lub zwracane dane wyjściowe zostaną odcięte.
Ważne
Podczas przesyłania obrazów istnieje limit 10 obrazów na każde żądanie czatu.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this picture:"
},
{
"type": "image_url",
"image_url": {
"url": "<image URL>"
}
}
]
}
],
"max_tokens": 100,
"stream": false
}
Napiwek
Używanie obrazu lokalnego
Jeśli chcesz użyć obrazu lokalnego, możesz użyć następującego kodu języka Python, aby przekonwertować go na base64, aby można go było przekazać do interfejsu API. Alternatywne narzędzia konwersji plików są dostępne w trybie online.
import base64
from mimetypes import guess_type
# Function to encode a local image into data URL
def local_image_to_data_url(image_path):
# Guess the MIME type of the image based on the file extension
mime_type, _ = guess_type(image_path)
if mime_type is None:
mime_type = 'application/octet-stream' # Default MIME type if none is found
# Read and encode the image file
with open(image_path, "rb") as image_file:
base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')
# Construct the data URL
return f"data:{mime_type};base64,{base64_encoded_data}"
# Example usage
image_path = '<path_to_image>'
data_url = local_image_to_data_url(image_path)
print("Data URL:", data_url)
Gdy dane obrazu base64 są gotowe, możesz przekazać je do interfejsu API w treści żądania w następujący sposób:
...
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<your_image_data>"
}
...
Szczegółowe ustawienia parametrów
Można zdefiniować parametr "detail"
w polu "image_url"
opcjonalnie. Wybierz jedną z trzech wartości, low
, high
lub auto
, aby dostosować sposób interpretowania i przetwarzania obrazów przez model.
-
auto
ustawienie: ustawienie domyślne. Model decyduje między niskim a wysokim w zależności od rozmiaru danych wejściowych obrazu. -
low
ustawienie: model nie aktywuje trybu "wysokiej res", zamiast tego przetwarza niższą wersję rozdzielczości 512x512, co skutkuje szybszymi odpowiedziami i zmniejszeniem zużycia tokenów w scenariuszach, w których dokładne szczegóły nie są kluczowe. -
high
ustawienie: model aktywuje tryb "wysoka rozdzielczość". W tym miejscu model początkowo wyświetla obraz o niskiej rozdzielczości, a następnie generuje szczegółowe segmenty 512x512 z obrazu wejściowego. Każdy segment używa podwójnego budżetu tokenów, co pozwala na bardziej szczegółową interpretację obrazu.
Wartość można ustawić przy użyciu formatu pokazanego w tym przykładzie:
{
"type": "image_url",
"image_url": {
"url": "<image URL>",
"detail": "high"
}
}
Aby uzyskać szczegółowe informacje na temat wpływu parametrów obrazu na używane tokeny i ceny, proszę zapoznać się z Co to jest usługa Azure OpenAI? Tokeny obrazów
Wyjście
Odpowiedź interfejsu API powinna wyglądać następująco.
{
"id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
"object": "chat.completion",
"created": 1702439277,
"model": "gpt-4",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"finish_reason":"stop",
"index": 0,
"message": {
"role": "assistant",
"content": "The picture shows an individual dressed in formal attire, which includes a black tuxedo with a black bow tie. There is an American flag on the left lapel of the individual's jacket. The background is predominantly blue with white text that reads \"THE KENNEDY PROFILE IN COURAGE AWARD\" and there are also visible elements of the flag of the United States placed behind the individual."
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"prompt_tokens": 1156,
"completion_tokens": 80,
"total_tokens": 1236
}
}
Każda odpowiedź zawiera "finish_reason"
pole. Ma następujące możliwe wartości:
-
stop
: interfejs API zwrócił pełne dane wyjściowe modelu. -
length
: Niekompletne dane wyjściowe modelu ze względu na limit tokenu parametru wejściowegomax_tokens
lub modelu. -
content_filter
: pominięto zawartość z powodu flagi z filtrów zawartości.
Wyjście
Odpowiedzi na czacie otrzymywane z modelu powinny teraz zawierać rozszerzone informacje o obrazie, w tym etykiety obiektów, ramki ograniczające oraz wyniki OCR. Odpowiedź interfejsu API powinna wyglądać następująco.
{
"id": "chatcmpl-8UyuhLfzwTj34zpevT3tWlVIgCpPg",
"object": "chat.completion",
"created": 1702394683,
"model": "gpt-4",
"choices":
[
{
"finish_reason": {
"type": "stop",
"stop": "<|fim_suffix|>"
},
"index": 0,
"message":
{
"role": "assistant",
"content": "The image shows a close-up of an individual with dark hair and what appears to be a short haircut. The person has visible ears and a bit of their neckline. The background is a neutral light color, providing a contrast to the dark hair."
}
}
],
"usage":
{
"prompt_tokens": 816,
"completion_tokens": 49,
"total_tokens": 865
}
}
Każda odpowiedź zawiera "finish_reason"
pole. Ma następujące możliwe wartości:
-
stop
: interfejs API zwrócił pełne dane wyjściowe modelu. -
length
: Niekompletne dane wyjściowe modelu ze względu na limit tokenu parametru wejściowegomax_tokens
lub modelu. -
content_filter
: Treść została pominięta z powodu ostrzeżeń naszych filtrów.
Uaktualnienie modelu GPT-4 Turbo
Najnowsza wersja GA GPT-4 Turbo to:
-
gpt-4
Wersja:turbo-2024-04-09
Jest to zamiennik następujących modeli w wersji zapoznawczej:
-
gpt-4
Wersja:1106-Preview
-
gpt-4
Wersja:0125-Preview
-
gpt-4
Wersja:vision-preview
Różnice między modelami OpenAI i Azure OpenAI GPT-4 Turbo GA
- Wersja najnowszego modelu turbo OpenAI obsługuje tryb JSON oraz wywołanie funkcji dla wszystkich żądań wnioskowania.
- Wersja najnowszej wersji
turbo-2024-04-09
usługi Azure OpenAI obecnie nie obsługuje korzystania z trybu JSON i wywoływania funkcji podczas wprowadzania żądań wnioskowania przy użyciu danych wejściowych obrazu (vision). Żądania wejściowe oparte na tekście (żądania bezimage_url
oraz obrazów wbudowanych) obsługują tryb JSON i funkcję wywoływania.
Różnice względem gpt-4 vision-preview
- Integracja funkcji przetwarzania obrazów specyficznych dla sztucznej inteligencji platformy Azure z funkcją GPT-4 Turbo z usługą Vision nie jest obsługiwana w wersji
gpt-4
:turbo-2024-04-09
. Obejmuje to optyczne rozpoznawanie znaków (OCR), lokalizowanie obiektów, podpowiedzi wideo oraz ulepszoną obsługę danych z użyciem obrazów.
Ważne
Ulepszenia wizji w wersji zapoznawczej, w tym optyczne rozpoznawanie znaków (OCR), wbudowywanie obiektów, monity wideo zostaną wycofane i nie będą już dostępne po gpt-4
aktualizacji wersji vision-preview
do turbo-2024-04-09
programu. Jeśli obecnie korzystasz z dowolnej z tych funkcji w wersji zapoznawczej, to automatyczne uaktualnianie modelu będzie zmianą powodującą niezgodność.
Udostępniona zarządzana dostępność przez GPT-4 Turbo
-
gpt-4
Wersja:turbo-2024-04-09
jest dostępna zarówno w przypadku wdrożeń standardowych, jak i wdrożeń świadczonych. Obecnie aprowizowana wersja tego modelu nie obsługuje żądań wnioskowania obrazów/wizji. Aprowidowane wdrożenia tego modelu akceptują tylko wprowadzanie tekstu. Wdrożenia modelu standardowego akceptują żądania inferencji tekstu i obrazu.
Wdrażanie GPT-4 Turbo z platformą Vision GA
Aby wdrożyć model GA z portalu Azure AI Foundry, wybierz GPT-4
, a następnie wybierz wersję turbo-2024-04-09
z menu rozwijanego. Domyślny limit przydziału gpt-4-turbo-2024-04-09
dla modelu będzie taki sam jak bieżący limit przydziału dla GPT-4-Turbo.
Zobacz regionalne limity przydziału.