Korzystanie z GPT-4 Turbo z usługą Vision
GPT-4 Turbo with Vision to duży model wielomodalny (LMM) opracowany przez openAI, który może analizować obrazy i dostarczać tekstowe odpowiedzi na pytania dotyczące nich. Obejmuje zarówno przetwarzanie języka naturalnego, jak i zrozumienie wizualne.
Model GPT-4 Turbo z usługą Vision odpowiada na ogólne pytania dotyczące tego, co jest obecne na obrazach.
Napiwek
Aby użyć biblioteki GPT-4 Turbo z usługą Vision, należy wywołać interfejs API uzupełniania czatu w modelu GPT-4 Turbo z wdrożonym modelem przetwarzania obrazów. Jeśli nie znasz interfejsu API uzupełniania czatów, zapoznaj się z przewodnikiem Z instrukcjami GPT-4 Turbo &GPT-4.
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 poziomu interfejsu użytkownika programu Studio, wybierz GPT-4
pozycję, a następnie wybierz 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.
Tworzenie indeksu pobierania wideo
Uzyskaj zasób usługi Azure AI Vision w tym samym regionie co używany zasób usługi Azure OpenAI.
Utwórz indeks do przechowywania i organizowania plików wideo oraz ich metadanych. W poniższym przykładowym poleceniu pokazano, jak utworzyć indeks o nazwie
my-video-index
przy użyciu interfejsu API tworzenia indeksu. Zapisz nazwę indeksu w lokalizacji tymczasowej; Będzie on potrzebny w kolejnych krokach.Napiwek
Aby uzyskać bardziej szczegółowe instrukcje dotyczące tworzenia indeksu wideo, zobacz Wykonywanie pobierania wideo przy użyciu wektoryzacji.
Ważne
Nazwa indeksu wideo może zawierać maksymalnie 24 znaki, chyba że jest to identyfikator GUID, który może zawierać 36 znaków.
curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii " { 'metadataSchema': { 'fields': [ { 'name': 'cameraId', 'searchable': false, 'filterable': true, 'type': 'string' }, { 'name': 'timestamp', 'searchable': false, 'filterable': true, 'type': 'datetime' } ] }, 'features': [ { 'name': 'vision', 'domain': 'surveillance' }, { 'name': 'speech' } ] }"
Dodaj pliki wideo do indeksu ze skojarzonymi metadanymi. W poniższym przykładzie pokazano, jak dodać dwa pliki wideo do indeksu przy użyciu adresów URL sygnatur dostępu współdzielonego za pomocą interfejsu API tworzenia pozyskiwania . Zapisz adresy URL sygnatury dostępu współdzielonego i
documentId
wartości w lokalizacji tymczasowej. Będą one potrzebne w kolejnych krokach.curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions/my-ingestion?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii " { 'videos': [ { 'mode': 'add', 'documentId': '02a504c9cd28296a8b74394ed7488045', 'documentUrl': 'https://example.blob.core.windows.net/videos/02a504c9cd28296a8b74394ed7488045.mp4?sas_token_here', 'metadata': { 'cameraId': 'camera1', 'timestamp': '2023-06-30 17:40:33' } }, { 'mode': 'add', 'documentId': '043ad56daad86cdaa6e493aa11ebdab3', 'documentUrl': '[https://example.blob.core.windows.net/videos/043ad56daad86cdaa6e493aa11ebdab3.mp4?sas_token_here', 'metadata': { 'cameraId': 'camera2' } } ] }"
Po dodaniu plików wideo do indeksu rozpocznie się proces pozyskiwania. Może upłynąć trochę czasu w zależności od rozmiaru i liczby plików. Aby upewnić się, że pozyskiwanie zostało ukończone przed wykonaniem wyszukiwania, możesz użyć interfejsu API pobierania pozyskiwania , aby sprawdzić stan. Poczekaj na powrót
"state" = "Completed"
tego wywołania przed przejściem do następnego kroku.curl.exe -v -X GET "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions?api-version=2023-05-01-preview&$top=20" -H "ocp-apim-subscription-key: <YOUR_SUBSCRIPTION_KEY>"