Files
2026-07-13 12:58:18 +08:00

58 lines
2.2 KiB
Markdown

# QA: Multimodal Attachments — PydanticAI
## Prerequisites
- Demo deployed and accessible at `/demos/multimodal`
- Agent backend healthy (check `/api/health`)
- `OPENAI_API_KEY` set
- Bundled `public/demo-files/sample.png` and `public/demo-files/sample.pdf`
present (copied over from the langgraph-python reference assets)
## Test Steps
### 1. Basic Functionality
- [ ] Navigate to `/demos/multimodal`
- [ ] Verify the header "Multimodal attachments" is visible
- [ ] Verify the sample-row is visible with two buttons:
"Try with sample image" and "Try with sample PDF"
- [ ] Verify `<CopilotChat />` renders a message composer
### 2. Sample image round-trip
- [ ] Click "Try with sample image"
- [ ] Within 10 seconds, an attachment chip labelled `sample.png`
appears in the composer
- [ ] Type "Describe this image" and click send
- [ ] Within 90 seconds, an assistant response renders that references
the CopilotKit / logo / image content
### 3. Sample PDF round-trip
- [ ] Click "Try with sample PDF"
- [ ] Within 10 seconds, an attachment chip labelled `sample.pdf`
appears in the composer
- [ ] Type "Summarize this document" and click send
- [ ] Within 90 seconds, an assistant response renders that references
the document contents (should mention "CopilotKit")
## Known Limitations vs. langgraph-python port
- PydanticAI's AG-UI bridge does not expose a LangChain-style
`before_model` middleware. The equivalent behaviour is implemented via
a PydanticAI `history_processors` hook that rewrites incoming binary
parts into `image_url` (for GPT-4o vision) or extracted text (for
PDFs via `pypdf`) before each model call. Functionally equivalent to
the langgraph-python reference.
- The frontend's `onRunInitialized` shim (rewriting modern
image/document parts into legacy `binary` parts) is framework-agnostic
and kept intact so the Python-side history processor sees the same
wire shape the langgraph-python reference does.
## Expected Results
- Images flow through to GPT-4o vision natively.
- PDFs flatten to inline text; the agent can answer questions about the
document contents.
- Bundled samples work without mic / file-picker permission dialogs.