gpt-4o已经可以支持多模态了,因此可以通过给4o的模型喂图,让大模型给我们分析出图片中的具体内容,这个功能非常方便,而且识别的准确率也非常的高,下面就一起来实现一下吧。
前置准备
在开始之前,确保你具备以下条件:
- OpenAI API密钥:你需要一个有效的OpenAI API密钥来访问其服务。请确保妥善保管,不要泄露给他人。
- Python环境:确保你的计算机上已安装Python,并且了解基本的Python编程知识。
- 必要的库:安装所需的Python库,如
openai
、requests
等。
可以通过以下命令安装必要的库:
pip install openai requests
具体步骤如下:
1. 导入必要的库
import base64
import requests
import os
from openai import OpenAI
- base64:用于将图像文件转换为Base64编码,这是一种将二进制数据转换为文本格式的方法,便于在JSON中传输。
- requests:用于发送HTTP请求。
- os:用于与操作系统进行交互,如读取文件路径。
- openai:OpenAI的官方Python库,用于与OpenAI API进行交互。
2. 配置API密钥与客户端
api_key = "sk-***************" # 示例:遮蔽后的API密钥
api_url = "https://api.manyi88.top/v1"
client = OpenAI(api_key=api_key, base_url=api_url)
-
api_key:API密钥,可根据需要进行切换。注意:实际使用中应将API密钥妥善保管,不要在代码中明文显示。
-
client:初始化OpenAI客户端,使用默认的API密钥和基础URL。
3. 定义获取洗涤建议的函数
def get_common_advice(image_path, prompt):
# 内部函数:编码图像为Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# 获取Base64字符串
base64_image = encode_image(image_path)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
]
)
return response.choices[0].message.content
4. 调用并返回结果
print(get_common_advice("images/test2.gif","描述此图片内容是什么,做了什么事情,给出详细的描述"))
步骤解析:
-
编码图像为Base64:
- 读取指定路径的图像文件,以二进制模式打开并读取内容。
- 使用
base64.b64encode
将图像内容编码为Base64字符串,并解码为UTF-8格式的文本。
-
构建请求数据:
- 使用OpenAI的聊天模型(如
gpt-4o-2024-08-06
)进行API调用。 - 构建消息内容,包括用户的文本指令和图像的Base64编码。
- 使用OpenAI的聊天模型(如
-
发送请求并获取响应:
- 调用
client.chat.completions.create
方法,传入模型名称和消息内容。 - 从响应中提取助手生成的内容,即洗涤建议。
- 调用
4. 使用示例
假设我们有一张名为clothes.jpg
的衣物图片,位于脚本的同一目录下,可以通过以下方式获取洗涤建议:
image_path = "clothes.jpg"
advice = get_washing_advice(image_path)
print(advice)
运行上述代码后,程序将输出根据图片分析得出的衣物材质、类型以及相应的洗涤建议,包括洗涤程序、水温、洗涤时长和脱水转速等。
注意事项
-
API密钥安全:
- 切勿将API密钥公开在公共代码库或共享平台上。
- 建议使用环境变量或配置文件来存储API密钥,并在代码中进行读取。
-
图像格式支持:
- 确保上传的图像格式受支持,如JPEG、PNG等常见格式。
- 避免上传过大的图像文件,以减少编码和传输时间。
-
API调用限制:
- 注意OpenAI API的调用限制和费用,避免因频繁调用导致超出配额。
- 可以在代码中增加异常处理机制,以应对API调用失败或返回错误的情况。
-
模型选择:
- 根据具体需求选择合适的模型版本,不同模型在理解能力和响应速度上可能有所差异。
总结
通过以上步骤,我们成功实现了利用OpenAI API读取和分析图像,并根据分析结果提供具体的洗涤建议。该方法不仅适用于衣物洗涤建议,还可以扩展到其他需要图像理解和分析的应用场景,如产品推荐、内容审核、视觉搜索等。
随着人工智能技术的不断发展,图像识别与分析将变得更加智能和高效。希望本文能为你在实际项目中应用OpenAI的图像分析能力提供有益的参考和指导。