视觉理解

向多模态大模型发送图片进行分析和理解,支持截图分析、文档 OCR、图表解读等场景。UloveGPT 兼容 OpenAI、Anthropic、Gemini 三大视觉接口。

支持的模型

模型图片格式URL最大尺寸
gpt-5.4PNG, JPEG, GIF, WebP20MB
claude-sonnet-4.6PNG, JPEG, GIF, WebPBase64 编码
gemini-3.1-proPNG, JPEG, GIF, WebP, BMP20MB

OpenAI 视觉接口

OpenAI 协议使用 image_url 内容类型,支持 URL 和 base64 两种方式。

使用 URL

通过 URL 发送图片Python
from openai import OpenAI

client = OpenAI(
    base_url="https://www.ulovegpt.com/v1",
    api_key="<你的 API_KEY>"
)

response = client.chat.completions.create(
    model="openai/gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这张图片里有什么?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg",
                        "detail": "high"
                    }
                }
            ]
        }
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)

使用 Base64

通过 Base64 发送本地图片Python
import base64
from openai import OpenAI

client = OpenAI(
    base_url="https://www.ulovegpt.com/v1",
    api_key="<你的 API_KEY>"
)

# 将本地图片编码为 base64
def encode_image(image_path: str) -> str:
    with open(image_path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")

base64_image = encode_image("screenshot.png")

response = client.chat.completions.create(
    model="openai/gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "分析这张截图的界面布局"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{base64_image}"
                    }
                }
            ]
        }
    ]
)

print(response.choices[0].message.content)

Claude 视觉接口

Claude 使用独立的 image content block,目前只支持 base64 编码。

Claude 视觉分析Python
import anthropic

client = anthropic.Anthropic(
    base_url="https://www.ulovegpt.com/anthropic",
    api_key="<你的 API_KEY>"
)

# Claude 使用 base64 发送图片
import base64

with open("diagram.png", "rb") as f:
    image_data = base64.b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="anthropic/claude-sonnet-4.6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "请描述这个架构图的关键组件和它们之间的关系"
                }
            ]
        }
    ]
)

print(message.content[0].text)

Gemini 视觉接口

Gemini 视觉分析Python
from google import genai

client = genai.Client(
    http_options={"base_url": "www.ulovegpt.com"},
    api_key="<你的 API_KEY>"
)

# Gemini 支持 inline_data 格式
import base64

with open("photo.jpg", "rb") as f:
    image_bytes = f.read()

response = client.models.generate_content(
    model="google/gemini-3.1-pro",
    contents=[
        "描述这张图片中的场景",
        {
            "mime_type": "image/jpeg",
            "data": base64.b64encode(image_bytes).decode("utf-8")
        }
    ]
)

print(response.text)

图片精度参数

OpenAI 协议的 detail 参数控制图片处理精度:

说明Token 消耗
low低分辨率,图片缩放到 512x512较少
high高分辨率,先缩到 2048 再裁切为 768 方块较多
auto默认,根据图片大小自动选择自动

最佳实践

  • 压缩图片:发送前适当压缩,减少 base64 编码后的大小
  • URL 优先:图片可公开访问时优先用 URL,节省 token
  • 多图片:可以在一条消息中发送多张图片,模型会综合分析
  • Prompt 清晰:明确告诉模型需要关注什么(如"识别文字"、"描述场景")