图像、音频、视频和文档输入
一些 LLM 现在能够理解音频、视频、图像和文档内容。
图像输入
信息
部分模型不支持图像输入。请查阅模型文档以确认其是否支持图像输入。
如果您有图像的直接 URL,您可以使用 ImageUrl
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
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.
- 为了确保示例可运行,我们从网络下载此图像,但您也可以使用
Path().read_bytes()
来读取本地文件的内容。
音频输入
信息
部分模型不支持音频输入。请查阅模型文档以确认其是否支持音频输入。
您可以使用 AudioUrl
或 BinaryContent
来提供音频输入。该过程与上述示例类似。
视频输入
信息
部分模型不支持视频输入。请查阅模型文档以确认其是否支持视频输入。
您可以使用 VideoUrl
或 BinaryContent
来提供视频输入。该过程与上述示例类似。
文档输入
信息
部分模型不支持文档输入。请查阅模型文档以确认其是否支持文档输入。
您可以使用 DocumentUrl
或 BinaryContent
来提供文档输入。该过程与上述示例类似。
如果您有文档的直接 URL,您可以使用 DocumentUrl
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
直接传递文档数据
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
通常情况下,当您使用 ImageUrl
、AudioUrl
、VideoUrl
或 DocumentUrl
提供 URL 时,Pydantic AI 会下载文件内容,然后将其作为 API 请求的一部分发送。
对于某些特定模型,情况有所不同
-
AnthropicModel
:如果您通过DocumentUrl
提供 PDF 文档,该 URL 会直接在 API 请求中发送,因此用户端不会发生下载。 -
Vertex AI 上的
GoogleModel
:任何使用ImageUrl
、AudioUrl
、VideoUrl
或DocumentUrl
提供的 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 会直接在请求中发送给模型。