53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
import base64
|
|||
|
|
import mimetypes
|
||
|
|
import os
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
import httpx
|
||
|
|
from openai import OpenAI
|
||
|
|
|
||
|
|
|
||
|
|
BASE_DIR = Path(__file__).resolve().parent
|
||
|
|
IMAGE_PATH = BASE_DIR / "03_43431636157.jpg"
|
||
|
|
|
||
|
|
|
||
|
|
def image_to_data_url(path):
|
||
|
|
if not path.exists():
|
||
|
|
raise FileNotFoundError("Image not found: {}".format(path))
|
||
|
|
|
||
|
|
mime_type = mimetypes.guess_type(str(path))[0] or "image/jpeg"
|
||
|
|
image_base64 = base64.b64encode(path.read_bytes()).decode("ascii")
|
||
|
|
return "data:{};base64,{}".format(mime_type, image_base64)
|
||
|
|
|
||
|
|
|
||
|
|
client = OpenAI(
|
||
|
|
base_url=os.environ.get("OPENAI_BASE_URL", "http://127.0.0.1:8080/v1"),
|
||
|
|
api_key=os.environ.get("OPENAI_API_KEY", "pwd"),
|
||
|
|
http_client=httpx.Client(trust_env=False),
|
||
|
|
)
|
||
|
|
|
||
|
|
response = client.chat.completions.create(
|
||
|
|
model=os.environ.get("OPENAI_MODEL", "gpt-5.5"),
|
||
|
|
messages=[
|
||
|
|
{
|
||
|
|
"role": "user",
|
||
|
|
"content": [
|
||
|
|
{
|
||
|
|
"type": "text",
|
||
|
|
"text": (
|
||
|
|
"请观察这张图片中人物身上 T 恤胸前的印花。"
|
||
|
|
"只回答印花是什么,包括图案形状、主要颜色、可能的文字或符号;"
|
||
|
|
"如果文字看不清,请明确说明不要编造。"
|
||
|
|
),
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "image_url",
|
||
|
|
"image_url": {"url": image_to_data_url(IMAGE_PATH)},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
}
|
||
|
|
],
|
||
|
|
)
|
||
|
|
|
||
|
|
print(response.choices[0].message.content)
|