如何在Azure OpenAI GPT-4o-mini的Python调用中传入图片?
Azure OpenAI Python调用图片分析的正确实现方法
问题原因
你之前的写法错误,Azure OpenAI的聊天API不支持在prompt文本中直接使用Markdown图片语法(),必须使用结构化的消息内容格式,将文本和图片信息分开定义。
正确实现方式
方式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
相关产品推荐
相关产品推荐

