gpt-4-vision-preview APIをGradioで使用する[GPT-4V API]
2023年11月24日
コード
import base64
import gradio
import openai
from PIL import Image
openai.api_key = ("YOUR_API_KEY")
# 画像パスを返す
def convert_to_png(image):
# 画像をPNG形式で保存
output_path = "./uploaded_image.png"
image.save(output_path, "PNG")
return output_path
# 画像をbase64にエンコードする関数
def encode_image_to_base64(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Gradioアプリと連携する関数
def ask_openai_with_image(image):
# 画像をbase64にエンコードする
img = convert_to_png(image)
base64_image = encode_image_to_base64(img)
# チャットの応答を生成する
response = openai.ChatCompletion.create(
model="gpt-4-vision-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "何が起きてる?"}, # ここに質問を書く
{"type": "image_url", "image_url": f"data:image/png;base64,{base64_image}"}, # 画像の指定の仕方がちょい複雑
],
}
],
max_tokens=300,
)
# 応答をテキストで返す
return response.choices[0].message['content
# Gradioインタフェースの定義
iface = gradio.Interface(
fn=ask_openai_with_image,
inputs=gradio.Image(type="pil",label="Upload an Image"),
outputs="text"
)
# Gradioアプリを起動する
iface.launch(server_name="0.0.0.0")
参考
https://qiita.com/kenji-kondo/items/87e71bf9645338d59ecb