Most production AI still behaves like a clever text box: one prompt in, one paragraph out. The world your users live in is messier. They send screenshots, call recordings, PDFs, dashboard charts, product photos, and chat messages in the same session. A useful system must see, hear, read, reason, act, and remember — not just complete the next token.
This post walks through how to design a multimodal agentic AI architecture end to end: what multimodal inputs really are, how this class of systems differs from traditional ML and single-LLM chatbots, the core components you need (orchestrator, modality microservices, and more), and a concrete request path from upload to audited action.
What are multimodal inputs?
Multimodal means the system accepts more than one type of signal about the same problem. Each type is a modality. Common ones in enterprise and consumer products:
| Modality | Examples | Typical encoder / service |
|---|---|---|
| Text / language | Chat, tickets, emails, policies | LLM, embeddings |
| Vision | Images, screenshots, scanned docs, video frames | Vision LM, OCR, object detectors |
| Audio / speech | Calls, voice notes, meeting recordings | ASR (speech-to-text), speaker diarization |
| Documents | PDF, DOCX, slides, invoices | Layout parsers, table extractors |
| Structured data | Tables, CRM rows, metrics, logs | SQL / warehouse tools, feature stores |
| Time series / signals | Sensor streams, click paths | Specialized models or analytics services |
A modality is not just “a file type.” It is a pipeline: ingest → validate → normalize → extract features / embeddings → produce a structured observation the rest of the system can reason over.
Important nuance: multimodal input is not the same as a multimodal model. You can:
- Feed several modalities into one large multimodal LLM (e.g. image + text in a single API call), or
- Run specialist microservices per modality and fuse their outputs in an orchestrator.
Production systems usually do both: specialists for quality and cost control, plus a strong reasoning LLM where cross-modal judgment is needed.
Multimodal agentic AI vs traditional AI
Traditional AI (classical ML or a single predictive model) answers a fixed question: classify this image, score this lead, transcribe this audio. The input schema is rigid, the output schema is rigid, and there is no loop that decides what to do next.
A plain chatbot LLM is more flexible in language, but still mostly reactive: one user turn → one model call → text. It does not own tools, long-horizon plans, or modality-specific quality gates.
Multimodal agentic AI adds three ideas at once:
- Multiple senses — the agent can ground decisions in text, pixels, audio, and structured facts.
- Agency — it plans, calls tools, waits for results, revises the plan, and may ask clarifying questions.
- Architecture — specialists, memory, policy, and observability sit around the LLM so the system is reliable enough for real products.
| Dimension | Traditional ML | Single LLM chatbot | Multimodal agentic system |
|---|---|---|---|
| Input | Fixed feature vector or one modality | Mostly text | Text + vision + audio + docs + data |
| Control flow | Train → infer once | Prompt → complete | Plan → act → observe → replan |
| Tools | Rare | Optional plugins | First-class (APIs, RAG, browsers, tickets) |
| Failure mode | Wrong class | Hallucinated prose | Wrong tool, wrong modality, unsafe action |
| Design focus | Model accuracy | Prompt quality | Orchestration, contracts, evaluation |
If you only bolt a vision API onto a chatbot, you get multimodal I/O. You do not yet have multimodal agency until planning, tool use, memory, and governance are part of the design.
Reference architecture (bird’s-eye view)
Think in layers:
┌─────────────────────────────────────────────────────────────┐
│ Experience layer (web, mobile, Slack, voice IVR) │
└────────────────────────────┬────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────┐
│ API gateway + auth + rate limits + request envelope │
└────────────────────────────┬────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────┐
│ Agent orchestrator (planner, router, state machine) │
│ + policy / guardrails + tool registry (MCP or similar) │
└─┬──────────┬──────────┬──────────┬──────────┬───────────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Text/LLM Vision Audio Document Structured
service service service service / data tools
│ │ │ │ │
└──────────┴──────────┴──────────┴──────────┘
│
┌────────────────────────────▼────────────────────────────────┐
│ Shared fabric: object store, vector/graph memory, │
│ event bus, workflow engine, eval & tracing │
└─────────────────────────────────────────────────────────────┘
The orchestrator owns the session brain. Modality microservices own perception quality. Shared fabric owns durable state and ops.
Core component 1: the orchestrator
The orchestrator is the control plane. It should not OCR images or fine-tune ASR. Its jobs:
- Session state — turn history, attached assets, current goal, open tool calls.
- Intent & modality routing — decide which specialists to invoke (in parallel when independent).
- Planning — break a user goal into steps (“extract invoice fields → match PO → open ticket”).
- Tool selection — choose RAG, CRM, calendar, ticket system, browser, etc.
- Fusion — merge specialist outputs into one working memory for the reasoner.
- Replanning — if a tool fails or confidence is low, change strategy.
- Response composition — text answer, citations, UI cards, or confirmation prompts for risky actions.
Orchestrator patterns that work in practice
Router → specialists → synthesizer. Fast for “explain this screenshot” style tasks.
State machine / workflow. Best when compliance requires a fixed sequence (KYC, claims, refunds).
Hierarchical multi-agent. A supervisor agent delegates to modality or domain agents (finance agent, vision agent). Useful when teams own different skills.
Graph / DAG of steps. Explicit dependencies (“wait for ASR before NER on the transcript”). Prefer this when latency budgets and retries matter.
Store orchestrator state as an explicit run object: run_id, goal, observations[], plan[], tool_traces[], status. That object is what you debug, evaluate, and replay.
Core component 2: modality microservices
Each modality deserves its own service boundary: independent deploy, scaling, models, and SLAs.
Text / language microservice
- Embedding generation for RAG
- Query rewriting and classification
- Optional small models for toxicity / PII before the big LLM
Vision microservice
- Image validation (size, NSFW, blur)
- OCR and layout understanding for screenshots and scans
- Object / scene captions for grounding
- Optional multimodal LLM call when semantic understanding beats OCR alone
Audio microservice
- Streaming or batch ASR
- Diarization (“who said what”)
- Optional emotion / urgency signals for call-center agents
Document microservice
- PDF page rendering, table extraction, form field detection
- Chunking strategies aware of headings and page numbers
- Provenance: every claim maps back to
doc_id + page + bbox
Structured-data microservice (or tool adapters)
- Read-only SQL / warehouse queries with row limits
- Feature lookups (customer tier, fraud score)
- Write tools only behind human confirmation or policy allow-lists
Why microservices beat one mega-process
- Vision bursts do not starve chat latency.
- You can swap Whisper for a cloud ASR without touching the planner.
- Contracts stay stable: each service returns a typed observation, not raw model dumps.
Example observation contract:
{
"modality": "vision",
"asset_id": "img_1842",
"confidence": 0.91,
"entities": [{ "type": "invoice_total", "value": "18420.50", "currency": "INR" }],
"text_blocks": [{ "text": "GSTIN ...", "bbox": [120, 440, 380, 470] }],
"warnings": ["low_contrast_region"]
}
The orchestrator reasons over observations, not over opaque tensors.
Creative (but essential) components beyond the basics
1. Multimodal asset registry
Before any model runs, register uploads in an asset service: content hash, MIME type, virus scan, retention policy, and signed URLs. Agents reference asset_id, never raw user disks. This is your source of truth for audits and deletion (DPDP / GDPR-style requests).
2. Cross-modal fusion & grounding layer
After specialists return, a fusion step aligns them: e.g. OCR total on an invoice vs amount spoken on a call. Flag conflicts instead of silently averaging. Grounding rules such as “numbers must appear in at least one primary document” cut hallucinations hard.
3. Memory stack (short, long, and procedural)
- Working memory — current run observations and plan (ephemeral).
- Episodic memory — past sessions for the same user/org (summaries + pointers to assets).
- Semantic memory — vector / hybrid RAG over policies and manuals.
- Knowledge graph (optional) — entities, relationships, and Graph-RAG for multi-hop questions.
- Procedural memory — saved playbooks (“how we handle damaged shipment claims”).
Agents without memory feel clever once and useless the second week.
4. Tool registry and MCP-style adapters
Expose capabilities as versioned tools with JSON schemas: search_policy, create_ticket, fetch_order, send_email_draft. An MCP (Model Context Protocol) style server (or equivalent) keeps the LLM from hard-coding vendor APIs. The orchestrator only sees tool names and contracts.
5. Policy, safety, and human-in-the-loop gates
Classify actions: read, draft, mutate. Auto-allow reads; require confirmation for refunds, PII exports, or external messages. Run input/output filters for secrets, jailbreaks, and modality-specific abuse (e.g. deepfake audio for auth).
6. Event bus & durable workflows
Long jobs (hour-long video, large PDF packs) should not live inside an HTTP request. Emit events (asset.ready, asr.completed), resume the agent on completion, and use a workflow engine for retries and compensation.
7. Evaluation, tracing, and offline replay
Trace every run: prompts, specialist outputs, tool I/O, latencies, cost. Maintain golden multimodal cases (invoice + chat, screenshot + error log). Score not only answer quality but tool correctness and citation fidelity. Without this layer you cannot ship safely.
8. Cost and model router
Not every turn needs your most expensive multimodal model. Route: small classifier → mid-tier text LLM → frontier multimodal only when vision+reasoning is required. Cap tokens and parallel specialist fan-out per request class.
End-to-end walkthrough: a realistic scenario
User goal: “This WhatsApp voice note and photo are from a customer. Is the claim valid against our warranty policy, and draft a reply?”
Step 1 — Ingest
Gateway authenticates the agent user, creates run_id, stores voice + image in the asset registry, and enqueues processing.
Step 2 — Parallel perception
Orchestrator fans out:
- Audio service → transcript + speaker segments.
- Vision / document service → OCR, product serial if visible, damage description.
- Text classifier → intent =
warranty_claim.
Step 3 — Enrichment
Structured tools fetch order and warranty window from CRM using serial / phone number extracted with confidence thresholds. If confidence is low, the agent asks one clarifying question instead of guessing.
Step 4 — Reasoning with RAG
Semantic memory retrieves warranty clauses. Fusion checks: damage visible in photo? purchase inside window? exclusions triggered?
Step 5 — Act carefully
Agent drafts a customer reply and a internal ticket payload. Policy marks create_ticket as mutate → UI shows Confirm. On confirm, tool executes; run status becomes completed.
Step 6 — Learn
Eval pipeline scores citation match and policy adherence. Failures become regression fixtures.
That path is the product: perceive → ground → decide → act → audit.
Suggested technology choices (pragmatic, not religious)
| Concern | Practical options |
|---|---|
| Orchestration | LangGraph / custom state machine / Temporal + LLM planner |
| Text LLM | Strong reasoning models for planning; smaller models for routing |
| Vision | Dedicated OCR + multimodal LLM for hard screenshots |
| Audio | Streaming ASR for voice UX; batch for back-office |
| Memory | Hybrid search (BM25 + vectors); optional graph for entities |
| Tools | OpenAPI / MCP servers with strict schemas |
| Store | Object storage for assets; Postgres for runs; vector DB for RAG |
| Observability | OpenTelemetry traces + prompt/tool logs |
Prefer contracts and replayability over chasing the newest model name every month.
Design principles that keep you out of trouble
- Typed observations over raw dumps — specialists speak JSON the planner can trust.
- Parallelize perception, serialize mutation — speed where safe, caution where irreversible.
- Cite the modality — answers should point to page, timestamp, or row.
- Fail open to questions — when modalities conflict, ask; do not invent.
- Separate brain and hands — orchestrator decides; tools execute.
- Budget latency and money — multimodal stacks fail first on cost, not IQ.
- Evaluate the loop — unit-test tools; scenario-test the agent.
Closing
Designing multimodal agentic AI is less about one magical model and more about systems engineering: an orchestrator that plans and fuses, modality microservices that perceive well, memory that grounds claims, tools that act under policy, and evaluation that tells you whether the loop actually works.
Start small — one high-value journey (claims, support screenshots, meeting follow-ups) — with clear observation contracts and tracing. Expand modalities only when the control plane and safety gates are already boringly reliable. That is how multimodal agents move from demos to durable products.
Discussion
Sign in to leave a comment.
Loading comments…