本页面全面概述了 GPT4Free (g4f) 库中的提供商系统。提供商作为 g4f 库与其连接的各种 AI 服务之间的接口层。每个提供商实现都代表一个特定的 AI 服务或平台,提供对语言模型、图像生成和其他 AI 功能的访问。
有关与这些提供商交互的模型系统的信息,请参阅模型系统。
提供商系统建立在分层的类结构之上,该结构定义了与外部 AI 服务通信的标准接口。
来源:g4f/Provider/base_provider.py g4f/Provider/__init__.py3-6
ProviderModelMixin 添加了模型管理功能,包括模型别名和验证。
来源:g4f/Provider/base_provider.py g4f/providers/retry_provider.py
库通过导入系统自动发现和注册提供商类
来源:g4f/Provider/__init__.py32-96
g4f 库根据其认证要求和实现状态将提供商分为几类。
这些提供商无需任何认证或凭证即可工作。它们通常访问免费或演示性质的 AI 服务。
示例包括
Blackbox: 连接到 blackbox.ai,可选择通过 HAR 文件认证DDG: 使用 DuckDuckGo 的 AI 聊天服务ChatGptEs: 连接到 chatgpt.esPollinationsAI: 用于 pollinations.ai 上的文本生成PollinationsImage: 用于 pollinations.ai 上的图像生成来源:g4f/Provider/__init__.py32-74 g4f/Provider/Blackbox.py g4f/Provider/DDG.py g4f/Provider/ChatGptEs.py g4f/Provider/PollinationsImage.py
这些提供商需要认证,例如 API 密钥、cookies 或其他凭证。
示例包括
OpenaiChat: 需要来自 chat.openai.com 的 cookiesGeminiPro: 需要 Google API 密钥Anthropic: 需要 Anthropic API 密钥BingCreateImages: 需要 Microsoft Bing cookies来源:g4f/Provider/needs_auth/__init__.py
专门用于访问 HuggingFace 平台上的模型和空间的提供商。
HuggingFace: 用于直接访问 HuggingFace 模型HuggingChat: 用于访问 HuggingChat 界面HuggingFaceAPI: 用于访问 HuggingFace 推理 APIDeepseekAI_JanusPro7b)来源:g4f/Provider/__init__.py14 g4f/Provider/__init__.py24-26
用于在用户机器本地运行模型的提供商。
Local: 通用本地提供商Ollama: Ollama 本地模型服务器的接口来源:g4f/Provider/__init__.py20-22
来源:g4f/Provider/__init__.py8-11 g4f/Provider/__init__.py16-18 g4f/Provider/__init__.py28-30
提供商根据其底层服务实现不同的功能
| 功能 | 描述 | 类属性 |
|---|---|---|
| 流式传输 | 支持流式响应 | supports_stream |
| 系统消息 | 支持系统指令 | supports_system_message |
| 消息历史 | 支持对话上下文 | supports_message_history |
| 视觉/图像输入 | 支持图像处理 | 因提供商而异 |
| 图像生成 | 支持创建图像 | 继承自 CreateImagesProvider |
每个提供商通过布尔类属性声明其功能。
来源:g4f/Provider/Blackbox.py38-42 g4f/Provider/Liaobots.py189-192 g4f/Provider/DDG.py47-51
提供商支持各种认证机制
Blackbox 提供商中的示例实现
来源:g4f/Provider/Blackbox.py423-475
在 g4f 中,模型通过 best_provider 属性与提供商关联
这种实现允许在提供商失败时优雅地回退。
来源:g4f/models.py88-108 g4f/models.py145-146 g4f/models.py150-153
请求通过提供商系统的典型流程
来源:g4f/Provider/Blackbox.py532-711 g4f/Provider/DDG.py316-709 g4f/Provider/Liaobots.py230-306
Blackbox 提供商展示了典型的实现模式
Blackbox 提供商包括
来源:g4f/Provider/Blackbox.py34-711
提供商根据其功能和底层 API 以不同方式处理响应
流式响应: 对于支持流式传输的提供商,响应会逐块返回。
图像响应: 对于图像生成提供商,返回图像 URL 或 Base64 数据。
错误处理: 提供商处理各种错误情况。
来源:g4f/Provider/Blackbox.py679-711 g4f/errors.py1-59
提供商通过几个类属性定义其支持的模型
default_model: 如果未指定模型,则使用的默认模型models: 支持的模型名称列表model_aliases: 将备用名称映射到规范模型名称的字典vision_models: 支持图像输入的模型列表image_models: 支持图像生成的模型列表DeepInfraChat 提供商的示例
来源:g4f/Provider/DeepInfraChat.py10-58
要创建自定义提供商,您需要
AsyncGeneratorProvider)以下是一个最小示例
来源:g4f/Provider/Blackbox.py34-711 g4f/Provider/ChatGptEs.py18-137
提供商可能会遇到各种问题
| 问题类型 | 描述 | 错误类别 |
|---|---|---|
| 未找到提供商 | 提供商不存在 | ProviderNotFoundError |
| 提供商无法工作 | 提供商被标记为无法工作 | ProviderNotWorkingError |
| 不支持流式传输 | 提供商不支持流式传输 | StreamNotSupportedError |
| 未找到模型 | 在提供商中未找到模型 | ModelNotFoundError |
| 模型不被允许 | 对模型的访问受限 | ModelNotAllowedError |
| 重试提供商错误 | 提供商重试期间出错 | RetryProviderError |
| 缺少认证 | 缺少认证凭据 | MissingAuthError |
| 速率限制 | 达到提供商的速率限制 | RateLimitError |
| 超时 | 请求超时 | TimeoutError |
下表总结了 g4f 中的提供商类别和计数
| 提供商类别 | 数量 | 身份验证 |
|---|---|---|
| 无需认证 | 30+ | 无需额外参数 |
| 需要认证 | 25+ | API 密钥、cookies 等 |
| HuggingFace & Space | 15+ | API 密钥或 cookies |
| 本地 | 2 | 无(本地模型) |
| 无法工作 | 25+ | 不确定(无法使用) |
来源:g4f/Provider/__init__.py32-96 g4f/Provider/needs_auth/__init__.py1-30 docs/providers-and-models.md37-142
总而言之,g4f 中的提供商系统提供了一个灵活、可扩展的架构,用于连接各种 AI 服务,并内置支持不同的认证方法、模型类型和响应格式。该系统旨在优雅地处理故障并在所有提供商之间提供一致的接口。