跳转到内容

图像、音频、视频和文档输入

一些 LLM 现在能够理解音频、视频、图像和文档内容。

图像输入

信息

部分模型不支持图像输入。请查阅模型文档以确认其是否支持图像输入。

如果您有图像的直接 URL,您可以使用 ImageUrl

image_input.py
from pydantic_ai import Agent, ImageUrl

agent = Agent(model='openai:gpt-4o')
result = agent.run_sync(
    [
        'What company is this logo from?',
        ImageUrl(url='https://iili.io/3Hs4FMg.png'),
    ]
)
print(result.output)
# > This is the logo for Pydantic, a data validation and settings management library in Python.

如果您本地有图像文件,您也可以使用 BinaryContent

local_image_input.py
import httpx

from pydantic_ai import Agent, BinaryContent

image_response = httpx.get('https://iili.io/3Hs4FMg.png')  # Pydantic logo

agent = Agent(model='openai:gpt-4o')
result = agent.run_sync(
    [
        'What company is this logo from?',
        BinaryContent(data=image_response.content, media_type='image/png'),  # (1)!
    ]
)
print(result.output)
# > This is the logo for Pydantic, a data validation and settings management library in Python.
  1. 为了确保示例可运行,我们从网络下载此图像,但您也可以使用 Path().read_bytes() 来读取本地文件的内容。

音频输入

信息

部分模型不支持音频输入。请查阅模型文档以确认其是否支持音频输入。

您可以使用 AudioUrlBinaryContent 来提供音频输入。该过程与上述示例类似。

视频输入

信息

部分模型不支持视频输入。请查阅模型文档以确认其是否支持视频输入。

您可以使用 VideoUrlBinaryContent 来提供视频输入。该过程与上述示例类似。

文档输入

信息

部分模型不支持文档输入。请查阅模型文档以确认其是否支持文档输入。

您可以使用 DocumentUrlBinaryContent 来提供文档输入。该过程与上述示例类似。

如果您有文档的直接 URL,您可以使用 DocumentUrl

document_input.py
from pydantic_ai import Agent, DocumentUrl

agent = Agent(model='anthropic:claude-3-sonnet')
result = agent.run_sync(
    [
        'What is the main content of this document?',
        DocumentUrl(url='https://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf'),
    ]
)
print(result.output)
# > This document is the technical report introducing Gemini 1.5, Google's latest large language model...

支持的文档格式因模型而异。

您也可以使用 BinaryContent 直接传递文档数据

binary_content_input.py
from pathlib import Path
from pydantic_ai import Agent, BinaryContent

pdf_path = Path('document.pdf')
agent = Agent(model='anthropic:claude-3-sonnet')
result = agent.run_sync(
    [
        'What is the main content of this document?',
        BinaryContent(data=pdf_path.read_bytes(), media_type='application/pdf'),
    ]
)
print(result.output)
# > The document discusses...

用户端下载与直接文件 URL

通常情况下,当您使用 ImageUrlAudioUrlVideoUrlDocumentUrl 提供 URL 时,Pydantic AI 会下载文件内容,然后将其作为 API 请求的一部分发送。

对于某些特定模型,情况有所不同

  • AnthropicModel:如果您通过 DocumentUrl 提供 PDF 文档,该 URL 会直接在 API 请求中发送,因此用户端不会发生下载。

  • Vertex AI 上的 GoogleModel:任何使用 ImageUrlAudioUrlVideoUrlDocumentUrl 提供的 URL 都会在 API 请求中按原样发送,并且不会预先下载任何数据。

请参阅 Vertex AI 的 Gemini API 文档,了解有关支持的 URL、格式和限制的更多信息。

  • Cloud Storage 存储桶 URI(协议为 gs://
  • 公共 HTTP(S) URL
  • 公共 YouTube 视频 URL(每个请求最多一个 URL)

然而,由于抓取限制,可能会发生 Gemini 无法访问某些 URL 的情况。在这种情况下,您可以通过将布尔标志 force_download 设置为 True 来指示 Pydantic AI 下载文件内容并发送该内容,而不是发送 URL。此属性在所有继承自 FileUrl 的对象上都可用。

  • GLA 上的 GoogleModel:YouTube 视频 URL 会直接在请求中发送给模型。