Korzystanie z modeli czatów z obsługą przetwarzania 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 GPT-4 Turbo z usługą Vision, GPT-4o i GPT-4o-mini.
Modele obsługujące wizję odpowiadają na ogólne pytania dotyczące tego, co jest obecne na przekazanych obrazach.
Napiwek
Aby używać modeli z obsługą obrazów, należy wywołać interfejs API uzupełniania czatu w obsługiwanym modelu, który został wdrożony. Jeśli nie znasz interfejsu API uzupełniania czatu, zapoznaj się z przewodnikiem z instrukcjami dotyczącymi czatu z obsługą przetwarzania obrazó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
0409
modelu turbo openAI obsługuje tryb JSON i funkcję wywołującą wszystkie żądania 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
obrazów wbudowanych i wbudowanych) obsługują tryb JSON i wywoływanie funkcji.
Różnice w porównaniu z interfejsem 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), uziemanie obiektów, monity wideo i ulepszoną obsługę danych za pomocą obrazów.
Ważne
Ulepszenia obrazów w wersji zapoznawczej, w tym optyczne rozpoznawanie znaków (OCR), uziemanie obiektów, monity wideo zostaną wycofane i nie będą już dostępne po gpt-4
uaktualnieniu 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ść.
Dostępność zarządzana zaaprowizowana przez GPT-4 Turbo
gpt-4
Wersja:turbo-2024-04-09
jest dostępny zarówno w przypadku wdrożeń standardowych, jak i aprowizowania. Obecnie aprowizowana wersja tego modelu nie obsługuje żądań wnioskowania obrazów/obrazów. Aprowidowane wdrożenia tego modelu akceptują tylko wprowadzanie tekstu. Wdrożenia modelu w warstwie Standardowa akceptują żądania wnioskowania tekstu i obrazu/obrazów.
Wdrażanie GPT-4 Turbo z usługą Vision GA
Aby wdrożyć model ga z portalu Azure AI Foundry, wybierz pozycję, a następnie wybierz GPT-4
turbo-2024-04-09
wersję 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.
Wywoływanie interfejsów API uzupełniania czatu
Poniższe polecenie przedstawia najbardziej podstawowy sposób używania modelu GPT-4 Turbo z kodem. Jeśli używasz tych modeli po raz pierwszy programowo, zalecamy rozpoczęcie od przewodnika Szybki start GPT-4 Turbo z usługą Vision.
Wysyłanie żądania POST do miejsca, w https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview
którym
- RESOURCE_NAME to nazwa zasobu usługi Azure OpenAI
- DEPLOYMENT_NAME to nazwa modelu GPT-4 Turbo z wdrożeniem modelu vision
Wymagane nagłówki:
Content-Type
: application/jsonapi-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ść lub zwracane dane wyjściowe zostaną odcięte "max_tokens"
.
Ważne
Podczas przekazywania obrazów istnieje limit 10 obrazów na żą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>"
}
...
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.
Szczegółowe ustawienia parametrów w przetwarzaniu obrazów: Niski, Wysoki, Automatyczny
Parametr szczegółów w modelu oferuje trzy opcje: low
, lub high
auto
, aby dostosować sposób, w jaki model interpretuje i przetwarza obrazy. Ustawieniem domyślnym jest automatyczne ustawienie, w którym model decyduje o rozmiarze danych wejściowych obrazu o niskim lub wysokim rozmiarze.
low
ustawienie: model nie aktywuje trybu "wysokiej res", zamiast tego przetwarza niższą rozdzielczość 512x512, co skutkuje szybszymi odpowiedziami i zmniejszeniem użycia tokenów w scenariuszach, w których dokładne szczegóły nie są kluczowe.high
ustawienie: model aktywuje tryb "wysoka res". 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 dwukrotnego budżetu tokenu, co pozwala na bardziej szczegółową interpretację obrazu".
Aby uzyskać szczegółowe informacje na temat wpływu parametrów obrazu na używane tokeny i ceny, zobacz Co to jest usługa Azure OpenAI? Tokeny obrazów
Wyjście
Odpowiedzi na czat otrzymywane z modelu powinny teraz zawierać rozszerzone informacje o obrazie, takie jak etykiety obiektów i pola ograniczenia 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
: pominięto zawartość z powodu flagi z filtrów zawartości.