Skip to content

Add provider capability matrix for streaming, vision, tool calling, and other feature support#2411

Open
manishmandia133 wants to merge 3 commits into
567-labs:mainfrom
manishmandia133:main
Open

Add provider capability matrix for streaming, vision, tool calling, and other feature support#2411
manishmandia133 wants to merge 3 commits into
567-labs:mainfrom
manishmandia133:main

Conversation

@manishmandia133

Copy link
Copy Markdown

Description

Instructor supports 20+ providers, but there's no single place to check which ones support streaming, vision, tool calling, JSON mode, async, audio, etc. Developers currently find out the hard way, at runtime.

Adds

  • capability_matrix.pyProviderCapabilities dataclass covering 10 capability fields across 21 providers, plus get_provider_capabilities(), providers_supporting(), and print_capability_matrix() helpers
  • docs/integrations/capability-matrix.md — quick-reference table, per-provider profiles, known incompatibilities, and a provider selection guide
  • Exports wired into instructor.v2.core and mkdocs nav

Bug fix

notes field was a mutable list inside a frozen=True dataclass (made instances unhashable/mutable). Changed to tuple[str, ...].

Testing

334 tests added covering data integrity, cross-referencing with provider_specs.py, helper correctness, and known runtime incompatibilities (Anthropic/MD_JSON, Perplexity/tool calling, Bedrock/parallel tools, etc.). All passing.

Files changed

  • instructor/v2/core/capability_matrix.py (new)
  • instructor/v2/core/__init__.py
  • docs/integrations/capability-matrix.md (new)
  • docs/integrations/index.md
  • mkdocs.yml
  • tests/v2/test_capability_matrix.py (new)

@manishmandia133 manishmandia133 marked this pull request as draft July 5, 2026 14:53
@manishmandia133 manishmandia133 marked this pull request as ready for review July 5, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant