feat: support PDF documents in tools, get(), and file reads#289
Open
mlikasam-askui wants to merge 1 commit into
Open
feat: support PDF documents in tools, get(), and file reads#289mlikasam-askui wants to merge 1 commit into
mlikasam-askui wants to merge 1 commit into
Conversation
Let tools and file reads return PDFs to the model as a document content block, mirroring existing image handling. PDFs are sent as an Anthropic base64 `document` block (no beta header) and an OpenAI `file` content part. - agent_message_param: add DocumentBlockParam + Base64PdfSourceParam; allow document blocks in ToolResultBlockParam content - tools: render a returned PdfSource as a document block in tool results - anthropic/openai get models: accept PdfSource (Office docs stay unsupported) - LoadPdfTool: load a PDF from disk and hand it to the model - AgentOs.get_file: detect and return PDFs as PdfSource; sniff file type via filetype.guess and decode the base64 payload once - reporting: truncate base64 PDF (and any media) blobs to keep reports readable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds first-class PDF support across the SDK, mirroring how images are already
handled. PDFs are sent to the model as a
documentcontent block — anAnthropic base64
documentblock (no beta header) and an OpenAIfilecontent part.
Changes
DocumentBlockParam+Base64PdfSourceParam; allowedin
ToolResultBlockParamcontent and exported fromaskui/askui.models.PdfSourceis rendered as a documentblock (
_convert_to_content). MCP tools returning a PDF as an embedded blobresource (
application/pdf) are now converted too, instead of being dropped.get(): the Anthropic and OpenAI get models acceptPdfSource(Officedocuments remain unsupported).
AgentOs.get_filedetects and returns PDFs asPdfSource;file-type detection now sniffs the MIME via
filetype.guessand decodes thebase64 payload once.
LoadPdfTool: new universal tool to load a PDF from disk and hand it tothe model (the PDF counterpart to
LoadImageTool).keep them readable.
venvfrom the mypy typecheck.