Files
wehub-resource-sync 97e91a83f3
Ruff / Ruff (push) Has been cancelled
Test / Core Tests (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.10) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.11) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.12) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.13) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.9) (push) Has been cancelled
Test / Full Coverage (Python 3.11) (push) Has been cancelled
Test / Core Provider Tests (OpenAI) (push) Has been cancelled
Test / Core Provider Tests (Anthropic) (push) Has been cancelled
Test / Core Provider Tests (Google) (push) Has been cancelled
Test / Core Provider Tests (Other) (push) Has been cancelled
Test / Anthropic Tests (push) Has been cancelled
Test / Gemini Tests (push) Has been cancelled
Test / Google GenAI Tests (push) Has been cancelled
Test / Vertex AI Tests (push) Has been cancelled
Test / OpenAI Tests (push) Has been cancelled
Test / Writer Tests (push) Has been cancelled
Test / Auto Client Tests (push) Has been cancelled
ty / type-check (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:36:38 +08:00

115 lines
2.8 KiB
Markdown

---
title: Mode Migration Guide
description: Migrate from provider-specific modes to the core modes in Instructor.
---
# Mode Migration Guide
This guide helps you move from provider-specific modes to the core modes.
Core modes work across providers and are the recommended choice for new code.
!!! note "V2 Preview"
Provider-specific modes are deprecated in v2. They still work, emit warnings, and map to core modes.
## Core Modes
These are the core modes you should use:
- `TOOLS`: Tool or function calling
- `JSON_SCHEMA`: Native schema support when a provider has it
- `MD_JSON`: JSON extracted from text or code blocks
- `PARALLEL_TOOLS`: Multiple tool calls in one response
- `RESPONSES_TOOLS`: OpenAI Responses API tools
## Quick Mapping
Use this table to replace legacy modes:
| Legacy Mode | Core Mode |
|------------|-----------|
| `FUNCTIONS` | `TOOLS` |
| `TOOLS_STRICT` | `TOOLS` |
| `ANTHROPIC_TOOLS` | `TOOLS` |
| `ANTHROPIC_JSON` | `MD_JSON` |
| `COHERE_TOOLS` | `TOOLS` |
| `COHERE_JSON_SCHEMA` | `JSON_SCHEMA` |
| `XAI_TOOLS` | `TOOLS` |
| `XAI_JSON` | `MD_JSON` |
| `MISTRAL_TOOLS` | `TOOLS` |
| `MISTRAL_STRUCTURED_OUTPUTS` | `JSON_SCHEMA` |
| `FIREWORKS_TOOLS` | `TOOLS` |
| `FIREWORKS_JSON` | `MD_JSON` |
| `CEREBRAS_TOOLS` | `TOOLS` |
| `CEREBRAS_JSON` | `MD_JSON` |
| `WRITER_TOOLS` | `TOOLS` |
| `WRITER_JSON` | `MD_JSON` |
| `BEDROCK_TOOLS` | `TOOLS` |
| `BEDROCK_JSON` | `MD_JSON` |
| `PERPLEXITY_JSON` | `MD_JSON` |
| `VERTEXAI_TOOLS` | `TOOLS` |
| `VERTEXAI_JSON` | `MD_JSON` |
| `VERTEXAI_PARALLEL_TOOLS` | `PARALLEL_TOOLS` |
## Example: Anthropic
**Before:**
```python
import instructor
from instructor import Mode
client = instructor.from_provider(
"anthropic/claude-3-5-haiku-latest",
mode=Mode.ANTHROPIC_TOOLS,
)
```
**After:**
```python
import instructor
from instructor import Mode
client = instructor.from_provider(
"anthropic/claude-3-5-haiku-latest",
mode=Mode.TOOLS,
)
```
## Example: Bedrock
**Before:**
```python
import instructor
from instructor import Mode
client = instructor.from_provider(
"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
mode=Mode.BEDROCK_TOOLS,
)
```
**After:**
```python
import instructor
from instructor import Mode
client = instructor.from_provider(
"bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
mode=Mode.BEDROCK_TOOLS,
)
```
## Notes
- Legacy modes still work but show a deprecation warning.
- Use core modes for new code and docs.
- Core tests are parameterized by provider and mode for consistent coverage.
- Streaming extraction is now handled by provider handlers instead of the DSL.
- Legacy `ResponseSchema.parse_*` helpers are deprecated. Use `process_response` or
`ResponseSchema.from_response` with core modes so the v2 registry handles parsing.
- See [Mode Comparison](../modes-comparison.md) for details.