You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure OpenAI GPT-4o-mini的Python调用中传入图片?

Azure OpenAI Python调用图片分析的正确实现方法

问题原因

你之前的写法错误,Azure OpenAI的聊天API不支持在prompt文本中直接使用Markdown图片语法(![image](url)),必须使用结构化的消息内容格式,将文本和图片信息分开定义。

正确实现方式

方式1:使用公开可访问的Blob存储URL

确保你的Blob存储URL是公开可访问的(已配置匿名读取权限),按以下格式构造请求:

import os
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_API_VERSION"),
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
)

deployment_name = "gpt-4o-mini"  
print("Sending a test completion job")

# 替换为你的Blob存储公开URL
image_url = "https://your-blob-storage-url/image.jpeg"
messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "告诉我这张图片里有什么"},
            {"type": "image_url", "image_url": {"url": image_url}}
        ]
    }
]

response = client.chat.completions.create(
    model=deployment_name,
    messages=messages,
    temperature=0,
)
generated_text = response.choices[0].message.content
print("响应:", generated_text)

方式2:使用本地图片(转Base64编码)

本地图片无法直接通过路径传给API,需要转为Base64编码后传入:

import os
import base64
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_API_VERSION"),
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
)

deployment_name = "gpt-4o-mini"  
print("Sending a test completion job")

# 本地图片路径
local_image_path = r"c:/users/..../image.jpeg"

# 将图片转为Base64编码
def image_to_base64(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

base64_image = image_to_base64(local_image_path)
messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "告诉我这张图片里有什么"},
            {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
        ]
    }
]

response = client.chat.completions.create(
    model=deployment_name,
    messages=messages,
    temperature=0,
)
generated_text = response.choices[0].message.content
print("响应:", generated_text)

关键说明

  • 必须使用content数组同时传递文本指令和图片信息,每个元素需指定type(text或image_url)
  • 若使用URL,需确保URL公开可访问;私有Blob存储需在URL中包含SAS令牌
  • 本地图片必须转为Base64编码,以data:image/[格式];base64,[编码内容]格式传入

内容的提问来源于stack exchange,提问作者the phoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:07:21