Opracuj aplikację do czatu opartą na wizji komputerowej

Ukończone

Wskazówka

Aby uzyskać więcej szczegółów, zobacz kartę Tekst i obrazy .

Aby opracować aplikację kliencką, która angażuje się w czaty oparte na obrazach z modelem wielomodalnym, możesz użyć tych samych podstawowych technik używanych na potrzeby czatów opartych na tekście. Wymagane jest połączenie z punktem końcowym, w którym wdrożono model, i używasz tego punktu końcowego do przesyłania monitów składających się z komunikatów do modelu i przetwarzania odpowiedzi.

Kluczową różnicą jest to, że monity do czatu opartego na obrazie obejmują wieloczęściowe wiadomości użytkownika, które zawierają zarówno element tekstowy, jak i element obrazowy.

Diagram przedstawiający wieloczęściowy monit przesyłany do modelu.

Przesyłanie monitu opartego na obrazie przy użyciu interfejsu API odpowiedzi

Aby dołączyć obraz do monitu przy użyciu interfejsu API odpowiedzi , określ adres URL pliku obrazu internetowego lub załaduj obraz lokalny i zakoduj jego dane w formacie Base64 i prześlij adres URL w formacie data:image/jpeg;base64,{image_data} (zastępując ciąg "jpeg" formatem "png" lub innymi formatami odpowiednio).

W poniższym przykładzie w języku Python pokazano, jak przesłać obraz w oknie dialogowym przy użyciu API "Responses" :

# Read the image data from a local file
image_path = Path("dragon-fruit.jpeg")
image_format = "jpeg"
with open(image_path, "rb") as image_file:
    image_data = base64.b64encode(image_file.read()).decode("utf-8")

data_url = f"data:image/{image_format};base64,{image_data}" # You can also use a web URL

# Send the image data in a prompt to the model
response = client.responses.create(
    model="gpt-4.1",
    input=[
        {"role": "developer", "content": "You are an AI assistant for chefs planning recipes."},
        {"role": "user", "content": [  
            { "type": "input_text", "text": "What desserts could I make with this?"},
            { "type": "input_image", "image_url": data_url}
        ] } 
    ]
)
print(response.output_text)

Przesyłanie monitu opartego na obrazie przy użyciu interfejsu API ChatCompletions

Podczas korzystania z punktu końcowego Azure OpenAI do wysyłania promptów do modeli, które nie obsługują interfejsu API Responses, możesz użyć interfejsu API ChatCompletions; na przykład tak:

# Read the image data from a local file
image_path = Path("orange.jpeg")
image_format = "jpeg"
with open(image_path, "rb") as image_file:
    image_data = base64.b64encode(image_file.read()).decode("utf-8")

data_url = f"data:image/{image_format};base64,{image_data}" # You can also use a web URL

# Send the image data in a prompt to the model
response = client.chat.completions.create(
    model="Phi-4-multimodal-instruct",
    messages=[
        {"role": "system", "content": "You are an AI assistant for chefs planning recipes."},
        { "role": "user", "content": [  
            { "type": "text", "text": "What can I make with this fruit?"},
            { "type": "image_url", "image_url": {"url": data_url}}
        ] }
    ]
)
print(response.choices[0].message.content)