章节 01
导读 / 主楼:model-providers:简洁的 LLM 与 Embedding 多提供商架构
model-providers 是一个基于简单 OOP 继承的 LLM 和 Embedding 模型提供商系统,支持通过环境变量或配置灵活切换不同提供商,实现模型的混合搭配使用。
正文
model-providers 是一个基于简单 OOP 继承的 LLM 和 Embedding 模型提供商系统,支持通过环境变量或配置灵活切换不同提供商,实现模型的混合搭配使用。
章节 01
model-providers 是一个基于简单 OOP 继承的 LLM 和 Embedding 模型提供商系统,支持通过环境变量或配置灵活切换不同提供商,实现模型的混合搭配使用。
章节 02
model-providers 是一个设计简洁的模型提供商系统,专注于解决一个具体问题:如何在不同 LLM 和 Embedding 提供商之间灵活切换,而无需修改业务代码。
它采用基于继承的面向对象设计,没有魔法装饰器或元类,一切清晰可见。这种设计理念使得代码易于理解、测试和扩展。
章节 03
项目明确拒绝使用装饰器或元类,所有功能通过普通类实现:
class BaseLLMProvider:
@classmethod
def create(cls, cfg: LLMProviderConfig) -> ResolvedProvider:
raise NotImplementedError
class OllamaProvider(BaseLLMProvider):
@classmethod
def create(cls, cfg):
# 构建并返回 ResolvedProvider
...
这种设计的优势:
章节 04
通过统一的工厂函数获取提供商实例:
from model_providers import get_llm_provider, LLMProviderConfig
# 使用环境配置
resolved = get_llm_provider()
# 或显式配置
cfg = LLMProviderConfig(provider="azure", model_name="gpt-4o-2")
resolved = get_llm_provider(cfg)
# 构建聊天模型
from pydantic_ai.models.openai import OpenAIChatModel
model = OpenAIChatModel(
model_name=resolved.model_name,
provider=resolved.provider,
)
章节 05
| 提供商 | 默认模型 | 最大 Token | 上下文窗口 |
|---|---|---|---|
| Ollama | qwen3-vl:32b | 131072 | 131072 |
| Azure | gpt-4o-2 | 8192 | 8192 |
| Grok | grok-2-latest | 8192 | 8192 |
| Groq | llama-3.3-70b-versatile | 32768 | 32768 |
章节 06
| 提供商 | 默认模型 |
|---|---|
| Ollama | nomic-embed-text |
| Azure | text-embedding-3-large |
章节 07
model-providers 的设计带来了六个关键好处:
章节 08
扩展 model-providers 非常简单,只需四步: