模型系统负责在 g4f 架构中管理模型定义、提供者映射和模型选择逻辑。它提供了一个统一的来自各种提供者的 AI 模型注册表,并根据模型的可用性和优先级处理请求到适当提供者的路由。
有关提供者实现的信息,请参阅提供者系统。有关核心编排逻辑的详细信息,请参阅核心组件。
模型系统围绕一个分层的类结构构建,该结构定义了不同类型的 AI 模型及其功能。
基础的 Model 类被定义为一个数据类,具有三个核心属性:用于模型标识符的 name、指示原始提供者的 base_provider,以及可以是单个提供者或用于回退逻辑的 IterListProvider 的 best_provider。
注册表系统维护多个数据结构:ModelUtils.convert 作为主要的查找字典,__models__ 提供模型到可用提供者的映射,而 _all_models 包含所有可用模型名称的完整列表。
来源: g4f/models.py981-1275 g4f/models.py1264-1275
模型选择过程涉及多层回退和提供者优先级,以确保可靠地访问 AI 服务。
选择逻辑首先尝试在 ModelUtils.convert 中查找请求的模型。如果找到,它会评估 best_provider 字段,该字段可能包含单个提供者或一个带有多个回退选项的 IterListProvider。
来源: g4f/models.py83-96 g4f/models.py121-125
系统定义了两个主要的默认模型:一个通用型的 default 模型和一个用于视觉能力的 default_vision 模型。它们都使用 IterListProvider,并根据可靠性和能力对不同的提供者列表进行排序。
模型系统按提供者、功能和模型家族组织模型,以便于发现和选择。
| 提供商 | 文本模型 | 视觉模型 | 图像模型 | 音频模型 |
|---|---|---|---|---|
| OpenAI | gpt_4, gpt_4o_mini, o1, o3_mini | gpt_4o | dall_e_3 | gpt_4o_audio |
| Meta | llama_3_3_70b, llama_4_scout | llama_3_2_11b | - | - |
gemini_2_0_flash, gemma_3_12b | - | - | - | |
| Anthropic | claude_3_5_sonnet, claude_3_7_sonnet | - | - | - |
| DeepSeek | deepseek_r1, deepseek_v3 | janus_pro_7b | - | - |
| Stability AI | - | - | sdxl_turbo, sd_3_5 | - |
| Black Forest Labs | - | - | flux_pro, flux_dev | - |
每种模型类型都继承自基础的 Model 类,但会指示特定的能力。VisionModel 实例可以处理图像,ImageModel 实例生成图像,而 AudioModel 实例处理音频。
来源: g4f/models.py67-77 g4f/models.py153-169 g4f/models.py928-980
系统支持模型别名以方便用户使用,并与提供者特定的模型映射集成。
各个提供者维护其自身的模型别名映射,以处理模型命名约定的差异并提供向后兼容性。
来源: g4f/Provider/Blackbox.py234-287 g4f/Provider/DDG.py36-44
demo_models 注册表定义了为演示目的而优化的特定模型-提供者组合,通常使用免费或易于访问的提供者。
系统维护对跨提供者的模型可用性进行动态跟踪,以确保可靠的服务交付。
__models__ 字典生成会根据提供者的 working 状态过滤提供者,确保只有可用的提供者被包含在最终的模型到提供者映射中。