菜单

提供者

相关源文件

本页面全面概述了 GPT4Free (g4f) 库中的提供商系统。提供商作为 g4f 库与其连接的各种 AI 服务之间的接口层。每个提供商实现都代表一个特定的 AI 服务或平台,提供对语言模型、图像生成和其他 AI 功能的访问。

有关与这些提供商交互的模型系统的信息,请参阅模型系统

提供商系统架构

提供商系统建立在分层的类结构之上,该结构定义了与外部 AI 服务通信的标准接口。

来源:g4f/Provider/base_provider.py g4f/Provider/__init__.py3-6

提供商基类

  • BaseProvider: 所有提供商的基础类,定义了通用接口。
  • AsyncProvider: 扩展 BaseProvider,增加了异步功能。
  • AsyncGeneratorProvider: 通过异步生成器实现流式响应。
  • CreateImagesProvider: 专门用于图像生成功能。
  • RetryProvider: 添加了重试功能以处理故障。
  • IterListProvider: 按顺序尝试多个提供商,直到有一个成功。

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.es
  • PollinationsAI: 用于 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 的 cookies
  • GeminiPro: 需要 Google API 密钥
  • Anthropic: 需要 Anthropic API 密钥
  • BingCreateImages: 需要 Microsoft Bing cookies

来源:g4f/Provider/needs_auth/__init__.py

HuggingFace & Space 提供商

专门用于访问 HuggingFace 平台上的模型和空间的提供商。

  • HuggingFace: 用于直接访问 HuggingFace 模型
  • HuggingChat: 用于访问 HuggingChat 界面
  • HuggingFaceAPI: 用于访问 HuggingFace 推理 API
  • 各种 HuggingFace Space 提供商(例如,DeepseekAI_JanusPro7b

来源:g4f/Provider/__init__.py14 g4f/Provider/__init__.py24-26

本地提供商

用于在用户机器本地运行模型的提供商。

  • Local: 通用本地提供商
  • Ollama: Ollama 本地模型服务器的接口

来源:g4f/Provider/__init__.py20-22

其他提供商类别

  • MiniMax 提供商: 访问 MiniMax 模型
  • 不工作的提供商: 当前无法使用的提供商
  • 已弃用的提供商: 为兼容性保留的旧提供商

来源: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 提供商展示了典型的实现模式

Blackbox 提供商包括

  • 基本元数据(URL、工作状态)
  • 功能支持标志
  • 模型定义和别名
  • 认证方法
  • API 请求处理

来源:g4f/Provider/Blackbox.py34-711

提供商响应处理

提供商根据其功能和底层 API 以不同方式处理响应

  1. 流式响应: 对于支持流式传输的提供商,响应会逐块返回。

  2. 图像响应: 对于图像生成提供商,返回图像 URL 或 Base64 数据。

  3. 错误处理: 提供商处理各种错误情况。

来源:g4f/Provider/Blackbox.py679-711 g4f/errors.py1-59

提供商模型支持

提供商通过几个类属性定义其支持的模型

  • default_model: 如果未指定模型,则使用的默认模型
  • models: 支持的模型名称列表
  • model_aliases: 将备用名称映射到规范模型名称的字典
  • vision_models: 支持图像输入的模型列表
  • image_models: 支持图像生成的模型列表

DeepInfraChat 提供商的示例

来源:g4f/Provider/DeepInfraChat.py10-58

创建自定义提供商

要创建自定义提供商,您需要

  1. 扩展其中一个基本提供商类(通常是 AsyncGeneratorProvider
  2. 实现所需的类属性和方法
  3. 通过将其添加到适当的模块中来注册您的提供商

以下是一个最小示例

来源:g4f/Provider/Blackbox.py34-711 g4f/Provider/ChatGptEs.py18-137

常见提供商问题和故障排除

提供商可能会遇到各种问题

问题类型描述错误类别
未找到提供商提供商不存在ProviderNotFoundError
提供商无法工作提供商被标记为无法工作ProviderNotWorkingError
不支持流式传输提供商不支持流式传输StreamNotSupportedError
未找到模型在提供商中未找到模型ModelNotFoundError
模型不被允许对模型的访问受限ModelNotAllowedError
重试提供商错误提供商重试期间出错RetryProviderError
缺少认证缺少认证凭据MissingAuthError
速率限制达到提供商的速率限制RateLimitError
超时请求超时TimeoutError

来源:g4f/errors.py1-59

提供商统计

下表总结了 g4f 中的提供商类别和计数

提供商类别数量身份验证
无需认证30+无需额外参数
需要认证25+API 密钥、cookies 等
HuggingFace & Space15+API 密钥或 cookies
本地2无(本地模型)
无法工作25+不确定(无法使用)

来源:g4f/Provider/__init__.py32-96 g4f/Provider/needs_auth/__init__.py1-30 docs/providers-and-models.md37-142

总而言之,g4f 中的提供商系统提供了一个灵活、可扩展的架构,用于连接各种 AI 服务,并内置支持不同的认证方法、模型类型和响应格式。该系统旨在优雅地处理故障并在所有提供商之间提供一致的接口。