feat(providers): add Mistral embedding provider, route registry through dynaconf
Adds a hosted Mistral embedding option (mistral-embed, 1024-dim) alongside the existing Bedrock / OpenAI / Ollama / Simple providers. Implementation mirrors OpenAIProvider: lazy dimension detection with a known-models lookup, chunked batch requests, defensive index sort, and a 429-aware retry decorator. In the same change, ProviderRegistry switches from os.getenv to the dynaconf-backed Settings dataclass so all five providers share a single configuration path. config.py gains the previously-uncovered Bedrock keys, the new Mistral keys, the missing OPENAI_GENERATION_MODEL / OLLAMA_GENERATION_MODEL, and SIMPLE_EMBEDDING_DIMENSION. Auto-detection priority: Bedrock → OpenAI → Mistral → Ollama → Simple. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
61cadf7935
commit
3268a13d11
@@ -118,10 +118,16 @@ class ProviderRegistry:
|
||||
@staticmethod
|
||||
def create_provider() -> Provider:
|
||||
# 1. Bedrock (AWS_REGION or BEDROCK_*_MODEL)
|
||||
# 2. Ollama (OLLAMA_BASE_URL)
|
||||
# 3. Simple (fallback)
|
||||
# 2. OpenAI (OPENAI_API_KEY)
|
||||
# 3. Mistral (MISTRAL_API_KEY)
|
||||
# 4. Ollama (OLLAMA_BASE_URL)
|
||||
# 5. Simple (fallback)
|
||||
```
|
||||
|
||||
Configuration is sourced via the dynaconf-backed `Settings` dataclass in
|
||||
`config.py`; the registry reads `get_settings()` rather than `os.getenv`
|
||||
directly, so settings files and env vars share one resolution path.
|
||||
|
||||
**Environment Variables:**
|
||||
|
||||
**Bedrock:**
|
||||
@@ -131,6 +137,17 @@ class ProviderRegistry:
|
||||
- `BEDROCK_EMBEDDING_MODEL`: Model ID for embeddings (e.g., "amazon.titan-embed-text-v2:0")
|
||||
- `BEDROCK_GENERATION_MODEL`: Model ID for text generation (e.g., "anthropic.claude-3-sonnet-20240229-v1:0")
|
||||
|
||||
**OpenAI:**
|
||||
- `OPENAI_API_KEY`: OpenAI API key (or `GITHUB_TOKEN` for GitHub Models)
|
||||
- `OPENAI_BASE_URL`: Optional base URL override for OpenAI-compatible APIs
|
||||
- `OPENAI_EMBEDDING_MODEL`: Embedding model (default: "text-embedding-3-small")
|
||||
- `OPENAI_GENERATION_MODEL`: Generation model (e.g., "gpt-4o-mini")
|
||||
|
||||
**Mistral (embeddings only):**
|
||||
- `MISTRAL_API_KEY`: Mistral API key from console.mistral.ai
|
||||
- `MISTRAL_EMBEDDING_MODEL`: Embedding model (default: "mistral-embed", 1024-dim)
|
||||
- `MISTRAL_BASE_URL`: Optional server URL override (proxies, on-prem)
|
||||
|
||||
**Ollama:**
|
||||
- `OLLAMA_BASE_URL`: Ollama API base URL (e.g., "http://localhost:11434")
|
||||
- `OLLAMA_EMBEDDING_MODEL`: Model for embeddings (default: "nomic-embed-text")
|
||||
|
||||
Reference in New Issue
Block a user