--- title: "Python AI Integration Patterns" aliases: [ai-agents, claude-api, gemini-api, openai, llm-integration] tags: [ai, claude, gemini, openai, llamaindex, python, agents] sources: [01 Projects/gmal-scope-builder, 01 Projects/modcomms, 01 Projects/semblance, 01 Projects/enterprise-ai-hub-nexus, 01 Projects/olivas, 01 Projects/pimco-charts, 01 Projects/video-accessibility, 01 Projects/pdf-accessibility, 01 Projects/build-a-squad, 01 Projects/ac-helper] created: 2026-04-15 updated: 2026-04-15 --- # Python AI Integration Patterns How Oliver projects integrate LLMs — model selection, structured output, multi-model fallback. ## Key Takeaways - **Claude** (Anthropic): `tool_use` for structured JSON output — used in GMAL, OliVAS, PIMCO, PDF Accessibility - **Gemini** (Google): dominant model for real-time/streaming analysis — Mod Comms, Video Accessibility, AC Helper, Build A Squad - **OpenAI**: used in Semblance (GPT-4.1, GPT-5.2) and Solventum - **LlamaIndex**: RAG orchestration in Sandbox NotebookLM (multi-model via `llm_factory.py`) - **DeepGaze**: specialized vision model for OliVAS (saliency/attention prediction) - Always implement a **fallback model**: Gemini Pro → Flash (Mod Comms pattern) ## When to Use Which Model | Task | Model | Why | |------|-------|-----| | Structured JSON output | Claude (`tool_use`) | Reliable schema adherence | | Document analysis / image | Gemini 2.5 Pro | Multimodal, fast | | Real-time persona/focus groups | Gemini 3 Pro Preview / GPT-4.1 | Quality personas | | Metadata generation | OpenAI (Solventum) | Client preference | | RAG retrieval | LlamaIndex + any model | Framework abstraction | | Chart/SVG generation | Claude API | Precise code output | | Prompt optimization | Claude Sonnet 4.6 | Design analysis | | Video captions | Gemini 2.5 Pro | Native video understanding | ## Structured Output — Claude `tool_use` ```python # GMAL pattern: Claude tool_use for schema-bound output response = client.messages.create( model="claude-opus-4-6", tools=[{"name": "parse_brief", "input_schema": BriefSchema}], tool_choice={"type": "tool", "name": "parse_brief"}, messages=[{"role": "user", "content": brief_text}] ) result = response.content[0].input # typed dict ``` ## Multi-Model Fallback (Mod Comms Pattern) ```python # Primary: Gemini Pro, fallback: Flash try: result = await gemini_pro.generate(prompt) except Exception: result = await gemini_flash.generate(prompt) ``` ## LLM Factory Pattern (Sandbox NotebookLM) ```python # llm_factory.py — abstract model selection def get_llm_by_type(llm_type: str) -> BaseLLM: mapping = {"gemini-pro": GeminiPro(), "gpt4": OpenAI("gpt-4.1"), ...} return mapping[llm_type] def get_structured_llm(schema: type) -> BaseLLM: ... # wraps output in Pydantic model ``` ## AI Agents (Mod Comms Multi-Agent) ``` 4 specialist agents (Legal, Brand, Tone, Channel) → run in parallel → Lead agent synthesizes verdict ``` See [[wiki/architecture/multi-agent-ai-systems|multi-agent-ai-systems]] for full pattern. ## Projects Using This Pattern - [[01 Projects/gmal-scope-builder/GMAL Scope Builder|GMAL Scope Builder]] — Claude Opus 4.6, tool_use, structured ratecard output - [[01 Projects/modcomms/Mod Comms|Mod Comms]] — Gemini Pro + Flash fallback, 4 parallel agents - [[01 Projects/semblance/Semblance|Semblance]] — Gemini 3 Pro Preview, GPT-4.1, GPT-5.2, multi-persona - [[01 Projects/enterprise-ai-hub-nexus/Enterprise AI Hub Nexus|Enterprise Nexus]] — multi-model RAG via LlamaIndex + Qdrant - [[01 Projects/sandbox-notebookllamalm-nextjs/Sandbox NotebookLM|Sandbox NotebookLM]] — LlamaIndex, llm_factory, 7 studio generators - [[01 Projects/olivas/OliVAS|OliVAS]] — Claude Sonnet 4.6 design analysis + DeepGaze vision - [[01 Projects/pimco-charts/PIMCO Charts|PIMCO Charts]] — Claude API, SVG code generation - [[01 Projects/video-accessibility/Video Accessibility Platform|Video Accessibility]] — Gemini 2.5 Pro, VTT captions, audio description - [[01 Projects/pdf-accessibility/PDF Accessibility Checker|PDF Accessibility]] — Claude + Google Cloud Vision - [[01 Projects/build-a-squad/Build A Squad|Build A Squad]] — Gemini (client-side, no backend) - [[01 Projects/ac-helper/AC Helper|AC Helper]] — Gemini, natural language commands ## Gotchas & Lessons - Long AI calls (>30s) will timeout on GCP LB — use HTTP polling, not streaming (see [[wiki/architecture/gcp-deployment-lb-timeout|gcp-deployment-lb-timeout]]) - Increase Vite proxy timeout to 5 min for AI-heavy endpoints - Claude `tool_use` is more reliable than prompt-based JSON for structured output - `max_tokens` defaults (4096) too low for document generation — set 8192–16000 - Gemini models change frequently — update model IDs in `llm_factory.py` regularly (Sandbox 2026-03-31) - GCP Vision + Claude hybrid (PDF Accessibility) — GCV handles image extraction, Claude does semantic analysis ## Related - [[wiki/architecture/multi-agent-ai-systems|multi-agent-ai-systems]] - [[wiki/architecture/rag-architecture|rag-architecture]] - [[wiki/architecture/gcp-deployment-lb-timeout|gcp-deployment-lb-timeout]]