项目快照:xtekky/gpt4free,约 66,557 个 Star,13,520 个 Fork;最新推送时间 2026-08-13T12:29:10Z。本文基于仓库公开资料撰写。

项目地址:https://github.com/xtekky/gpt4free · https://t.me/g4f_channel

gpt4free 从代码、运行环境到实践流程的项目封面
gpt4free 的项目能力与实践流程示意。

项目速览(TL;DR)

gpt4free(GPT4Free,简称 g4f)是一个使用 Python 编写的多提供商语言模型与媒体模型接入项目。根据仓库描述,它聚合多个可访问的服务提供商,并提供 Python 客户端、异步客户端、本地 Web 图形界面、OpenAI 兼容的 REST API、浏览器 JavaScript 客户端,以及 Docker 部署方式。

仓库默认分支为 main,许可证为 GPL-3.0。GitHub 仓库资料显示该项目有 66,557 个 Star 和 13,520 个 Fork;这些数值属于资料提供时的仓库元信息,不代表当前实时数据,也不代表服务质量、可用性或接口稳定性。

“GPT4Free (g4f) is a community-driven project that aggregates multiple accessible providers and interfaces to make working with modern LLMs and media-generation models easier and more flexible.”
来源:README

定位与目标用户

本项目的定位不是单一模型服务,而是对多个提供商进行适配,并通过统一的客户端、图形界面和 API 暴露能力。使用者需要理解:具体模型、提供商、认证方式、浏览器依赖和可用功能取决于对应适配器,仓库资料没有承诺所有提供商始终可用。

它面向需要在本地试用多种语言模型或媒体生成功能的开发者、希望使用统一 Python 接口的应用开发人员、需要自托管 Web 界面或 API 的个人与团队,以及希望贡献新提供商适配器的开源参与者。对于生产系统,应在部署前单独验证目标提供商的授权条件、稳定性、数据处理方式和接口行为。

核心功能

核心价值在于把不同服务提供商包装到统一的使用入口中。功能是否可用由提供商适配器及其依赖决定,因此应用层不能把“项目支持某项能力”直接等同于“任意提供商都支持该能力”。

多提供商语言模型接入

README 将项目描述为多提供商适配集合,覆盖语言模型、媒体提供商和本地推理后端。调用流程由客户端选择模型或提供商,再由相应适配器处理请求、转换输入输出并返回结果;具体选择项、请求字段、认证要求和错误行为,资料中没有完整列出,使用前应查阅最新文档及对应实现。

这类设计适用于需要在不同提供商之间切换的本地开发场景。它不等于项目自身托管或训练了 README 描述中的模型,项目资料只说明其提供了访问多个提供商的接口集合。

Python 与异步客户端

Python 客户端用于在 Python 程序中调用项目能力,异步客户端用于异步执行场景。README 明确列出了同步文本示例、图像生成示例和异步客户端示例,但当前提供的资料没有包含这些示例的完整代码与函数签名,因此本文不补写未经资料验证的调用接口。

安装方式支持 PyPI 安装、源码安装和按功能选择可选依赖组。依赖组的详细名称应以仓库文档中的 docs/requirements.md 为准;资料未列出该文件的具体内容。

本地 Web 图形界面

项目提供可选的本地 Web 图形界面。README 给出的 Python 启动方式是调用 g4f.gui 中的 run_gui,命令行方式是使用 python -m g4f.cli gui --port 8080 --debug,启动后通过 http://localhost:8080/chat/ 访问。

图形界面主要解决本地交互入口问题;请求仍由项目内部的客户端和提供商适配器处理。启用调试参数前,应确认服务只绑定在受控网络环境中,避免把调试服务直接暴露到不受信任的网络。

FastAPI 与 OpenAI 兼容接口

README 将该接口称为 Interference API,并说明它基于 FastAPI,目标是提供 OpenAI-compatible API。启动命令为 python -m g4f --port 8080 --debug;Docker slim 示例把容器端口映射到主机的 1337,文档地址为 http://localhost:1337/docs,接口前缀示例为 http://localhost:1337/v1

“兼容”表示项目提供面向 OpenAI API 使用方式的接口形态,不表示所有 OpenAI 参数、模型、流式行为或错误码均已被资料确认。接入现有程序前,应以 Swagger 文档和当前代码为准,并在测试环境验证请求与响应。

媒体生成与持久化

README 提到图像、音频和视频生成工具,以及媒体持久化目录。Docker 示例将宿主机目录挂载到容器的 /app/generated_media,用于保存生成媒体;媒体具体格式、命名规则、生命周期和清理策略,官方仓库资料未提供该信息,建议以最新 README 为准。

系统架构与关键模块

从 README 展示的能力边界看,系统可以按“调用入口、统一客户端、提供商适配器、浏览器或本地后端、媒体持久化”理解。该分层是对资料中功能关系的结构化概括,并非仓库正式架构图;模块之间的精确调用关系应以源码为准。

  • 调用入口:包括 Python 客户端、异步客户端、本地 Web GUI、FastAPI API、CLI 和浏览器 JavaScript 客户端。
  • 统一访问层:负责把上层调用转交给具体模型或提供商。资料未提供完整的公共接口签名。
  • 提供商适配层:针对不同 LLM、媒体服务和本地推理后端处理协议差异。部分适配器需要 Chrome 或 Chromium。
  • 浏览器自动化与登录环境:Docker 暴露 7900 端口,用于可选的类 VNC 桌面和提供商登录场景。
  • 持久化层:har_and_cookies 用于挂载 HAR 与 Cookie 相关数据目录,generated_media 用于生成媒体目录。

当一个提供商依赖浏览器自动化时,运行环境不仅需要 Python 包,还需要 Chrome 或 Chromium 以及对应平台工具。若使用 Docker,容器的共享内存大小会影响浏览器任务的运行条件;完整镜像示例使用 --shm-size="2g",compose 文件则使用 shm_size: 2gb

依赖与运行环境

README 建议使用 Python 3.10 或更高版本。项目支持 Docker 部署,并注明适用于 x86_64 和 arm64;其中 slim 镜像资料明确标注支持这两种架构。

  • Python 运行方式需要 Python 3.10+。
  • 部分提供商需要 Google Chrome 或 Chromium。
  • 容器化运行需要 Docker。
  • 具体提供商可能还需要平台专用工具,README 要求根据提供商文档检查细节。
  • 本地推理后端的具体安装条件,资料未完整列出。

依赖安装不宜脱离使用目标。若只需要基础客户端,可先查看可选 extras;若要启用全部能力,README 给出的安装命令是 pip install -U g4f[all]。可选依赖组的完整清单未出现在所给资料中。

快速开始

最小闭环可以采用 Python 安装、本地 GUI 启动、浏览器访问三步完成。下面的命令均来自 README 或其明确给出的启动方式,未引入未在资料中出现的服务端参数。

方式一:使用 PyPI 安装并启动 GUI

Bash
python -m pip install -U "g4f[all]"
python -m g4f.cli gui --port 8080 --debug

安装完成后,在本机浏览器打开 http://localhost:8080/chat/。这一步即为验证:如果页面能够打开,说明本地 Web GUI 进程已在 8080 端口提供访问;具体模型请求是否成功,还需要在界面中选择可用提供商并执行测试。

方式二:使用 Python 启动 GUI

Python
from g4f.gui import run_gui

run_gui()

该代码来自 README 的 GUI 示例。README 没有在该代码片段中给出主机地址、端口参数或返回值,因此不应在应用代码中假定这些细节;启动后仍使用项目文档指定的本地访问地址进行验证。

方式三:源码安装

Bash
git clone https://github.com/xtekky/gpt4free.git
cd gpt4free
pip install -r requirements.txt
pip install -e .

源码安装适合需要检查实现、开发提供商适配器或提交补丁的场景。执行前应准备 Python 3.10+;Chrome、Chromium 等额外依赖只在对应提供商需要时安装,具体条件以提供商文档为准。

配置说明

资料中明确提供的配置主要来自 docker-compose.yml 和 Docker 运行命令。下表只列出真实出现的字段、端口和挂载路径;“默认值”表示资料明确写出的值,未在资料中给出的内容不作推断。

字段名 类型 默认值 作用
image 字符串 hlohaus789/g4f:latest Docker Compose 使用的容器镜像。
shm_size 字符串 2gb 设置容器共享内存大小,compose 文件用于浏览器相关任务。
build.context 路径字符串 . Docker 构建上下文,指向当前目录。
build.dockerfile 路径字符串 docker/Dockerfile 指定 Docker 构建文件路径。
volumes 字符串列表 .:/app 将当前目录挂载到容器内的 /app
ports 字符串列表 8080:80801337:80807900:7900 映射 GUI/API、Interference API 示例入口和可选桌面端口。
OLLAMA_HOST 环境变量字符串 host.docker.internal Docker Compose 为容器设置的 Ollama 主机地址。

端口映射需要区分“主机端口”和“容器端口”。compose 文件中的 1337:8080 表示主机侧使用 1337,容器侧仍为 8080;README 的 slim 示例也说明 Interference API 可以通过 http://localhost:1337/v1 访问。

进阶用法

进阶使用的重点是根据入口、依赖和持久化需求选择部署形态,而不是盲目启用全部组件。README 同时提供完整 Docker 镜像、slim 镜像、Windows 可执行文件、源码安装和 Python 调用方式。

Docker 完整镜像

Bash
mkdir -p ${PWD}/har_and_cookies ${PWD}/generated_media
sudo chown -R 1200:1201 ${PWD}/har_and_cookies ${PWD}/generated_media

docker pull hlohaus789/g4f

docker run -p 8080:8080 -p 7900:7900 \
  --shm-size="2g" \
  -v ${PWD}/har_and_cookies:/app/har_and_cookies \
  -v ${PWD}/generated_media:/app/generated_media \
  hlohaus789/g4f:latest

该命令把配置与生成媒体目录保留在宿主机,并暴露 GUI/API 的 8080 端口和可选桌面端口 7900。README 将 7900 描述为可用于提供商登录的 VNC-like desktop;是否需要登录取决于具体提供商。

slim 镜像

slim 镜像示例同时映射主机 1337 到容器 8080,并保留主机 8080 到容器 8080 的映射。README 说明该镜像支持 x64 与 arm64,并可在启动时更新 g4f 包、按需安装额外依赖;这些行为意味着启动过程的网络访问和运行时依赖应纳入运维评估。

Windows 启动器

README 指向独立的 Windows launcher 仓库,并说明可从当前项目的最新 Release 下载 g4f.exe.zip,解压运行 g4f.exe,再访问 http://localhost:8080/chat/。资料没有给出该可执行文件的内部实现、更新策略或兼容性列表,使用时应以 Release 说明为准。

可观测性与运维

所给资料没有提供指标名称、日志格式、健康检查接口、告警规则、性能数据或 SLA。能够从 README 确认的运维入口包括 GUI/API 端口、FastAPI Swagger UI、持久化目录和命令行的 --debug 参数。

  • 调试阶段可使用 --debug 观察启动和请求问题,但资料未说明日志字段与日志级别。
  • API 部署应记录实际使用的主机端口、容器端口、提供商、模型和失败请求,具体日志接入方式由部署方决定。
  • har_and_cookiesgenerated_media 是挂载目录,应纳入备份、权限控制和磁盘容量管理。
  • 浏览器自动化任务需要关注共享内存配置,完整 Docker 示例显式设置了 2g
  • 升级前应检查 Releases 和 README,因为提供商适配器与外部服务之间存在运行时依赖。

根据本文作者的经验判断,若将 API 接入内部应用,至少应在反向代理或网络策略层限制访问范围,并为不同提供商建立独立的回归测试;仓库资料没有提供官方运维基线,因此这些属于部署侧工程建议,不是项目承诺。

安全与合规边界

该项目会连接外部模型提供商,并且部分适配器涉及浏览器自动化、Cookie、HAR 文件或登录桌面,因此安全边界不仅是本地代码本身,还包括凭据、会话数据、用户输入和生成内容的流向。

  • 只在已获授权的账户、网络和服务环境中使用提供商适配器,不针对未授权目标进行访问、自动化或数据采集。
  • 不要把真实密码、Cookie、访问令牌或包含个人信息的 HAR 文件提交到 Git 仓库,也不要把挂载目录暴露给无关用户。
  • 在企业或组织环境中,应先确认目标提供商的服务条款、数据跨境要求、个人信息处理依据和内容安全要求。
  • 将本地 GUI、Swagger UI 和可选桌面端口限制在受控网络内,不把调试服务和登录桌面直接公开到互联网。
  • 对外提供 API 时,应在项目外部补充身份认证、访问控制、限流、审计、密钥轮换和数据留存策略;资料没有说明 g4f 自带这些完整能力。

仓库资料没有给出安全审计结论、CVE 列表、隐私政策、数据保留期限或合规认证。不得依据项目提供了本地部署方式,就推断请求数据必然不会离开本机;实际数据路径取决于所选提供商和调用方式。

许可证与商用条款

仓库元信息和 README 均标明项目采用 GNU General Public License version 3(GNU GPL v3,GNU 通用公共许可证第三版)。LICENSE 文件说明该许可证是自由软件许可证,并授予运行、复制、分发和修改等权利,但这些权利以许可证条件为前提。

能否商用

GPL v3 并不以“免费使用”为唯一含义,许可证文本允许在满足条款的前提下分发并收费,因此不能简单表述为“禁止商用”。如果将项目或其受 GPL v3 约束的修改版本进行分发,应遵守对应的版权声明、许可证文本、源代码或相应源代码提供义务,以及修改版本标识等条款。

分发与责任

LICENSE 明确包含无担保声明,并要求修改版本标明变更,以避免问题被错误归因于原作者。具体哪些组件属于项目覆盖作品、如何处理组合分发、对应源代码如何提供,应结合实际分发方式逐项判断,以仓库 LICENSE 为准;本文不替代法律意见。

局限性与已知限制

该项目的多提供商模式带来灵活入口,也带来外部依赖。README 已明确提示部分适配器需要 Chrome 或 Chromium,且不同提供商可能需要平台专用工具;资料没有给出统一的可用性、响应时间、并发量或版本兼容承诺。

  • 提供商接口、认证流程和页面行为可能随外部服务变化,仓库资料未提供固定可用性保证。
  • 不同模型或媒体功能的输入输出能力不应视为完全一致,具体差异需要查看对应提供商文档和实现。
  • Python、Docker、Chrome/Chromium 与平台工具之间存在组合依赖,资料没有给出完整兼容性矩阵。
  • OpenAI 兼容 API 的具体兼容范围未在所给资料中完整列出,不能据此保证现有 OpenAI 客户端无需调整即可运行。
  • 项目没有在所给资料中公布 Benchmark、SLA、并发上限、错误率或生产支持承诺。
  • 官网、文档和 README 之间的内容可能随仓库更新而变化,部署时应以最新版本资料为准。

适合谁

以下信号表明该项目与使用目标较匹配,但仍需完成提供商授权和功能验证。判断依据是项目已公开的入口、依赖和部署形式。

  • 团队已有 Python 技术栈,需要同步或异步客户端,而不是重新为每个提供商维护一套调用代码。
  • 需要在本地运行 Web GUI,或需要在内网提供一个统一的 FastAPI/OpenAI 兼容入口。
  • 能够接受 Docker、Chrome/Chromium 和提供商专用工具等运行依赖,并具备维护这些依赖的能力。
  • 需要同时试验语言模型、图像生成或其他媒体能力,并愿意针对每个提供商做单独验证。
  • 希望通过源码理解适配器实现、维护提供商接口或参与开源贡献。

不适合谁

以下信号说明应谨慎采用,或者需要在项目外部增加完整的服务治理层。它们并非对项目质量的否定,而是对资料中未承诺部分的边界说明。

  • 要求固定模型、固定供应商、长期稳定接口和明确 SLA,却没有能力自行监控外部提供商变化。
  • 处理高敏感个人信息、受严格监管的数据,且组织无法完成数据流向、授权和跨境合规审查。
  • 需要官方保证的高并发、低延迟、故障赔偿或企业级技术支持,而仓库资料没有提供这些承诺。
  • 运行环境无法安装 Docker、Python 3.10+、Chrome/Chromium 或提供商要求的其他工具。
  • 只允许使用单一官方 SDK,且不接受多提供商适配、外部页面变化或社区维护组件带来的维护工作。

常见问题与排查(FAQ / Troubleshooting)

排查顺序应从环境、入口、提供商和数据目录逐层缩小范围。下面的结论只使用 README 和 compose 文件中明确出现的端口、命令与路径。

安装后无法启动

先确认 Python 版本满足 README 的 Python 3.10+ 要求,并核对是否执行了 pip install -U "g4f[all]" 或源码安装步骤。若报错来自浏览器或特定提供商,应根据该提供商文档检查 Chrome/Chromium 和平台工具;仓库资料未提供统一错误码表。

浏览器打不开页面

Python CLI GUI 示例使用 8080 端口,访问路径为 /chat/。Docker 运行时确认主机端口没有冲突,并检查实际映射;slim 示例将主机 1337 映射到容器 8080,不能把两个端口的含义混为一谈。

提供商登录或浏览器任务失败

完整 Docker 示例暴露 7900,README 将其列为可选的 VNC-like desktop 入口。检查 --shm-size="2g"、Chrome/Chromium 依赖和 har_and_cookies 挂载目录;Cookie 与 HAR 属于敏感数据,应同时检查目录权限和授权范围。

API 地址如何确认

Python 启动方式是 python -m g4f --port 8080 --debug。slim Docker 示例给出的 Interference API 地址为 http://localhost:1337/v1,Swagger UI 为 http://localhost:1337/docs;其他部署方式的实际地址应依据端口映射计算并以启动日志或文档为准。

项目是否保证某个模型始终可用

资料只说明项目聚合多个提供商和模型接口,没有给出模型可用性、配额、响应时间或 SLA。若某模型调用失败,应先查看当前提供商实现、项目 Issues 与最新 README,再在授权的测试环境中切换已验证的提供商。

贡献与维护边界

README 将贡献章节列为项目文档的一部分,并包含“如何创建新的提供商”和“AI 如何帮助编写代码”等主题。所给资料没有提供贡献模板、测试命令、代码风格、提交规范或审核时限,因此贡献前应以仓库当前贡献指南和 Issue 讨论为准。

  1. 先阅读当前 README、文档和相关提供商实现,确认新增适配器的输入输出约定。
  2. 在已获授权的服务环境中验证请求流程,不提交真实账户凭据、Cookie 或个人数据。
  3. 补充与变更相匹配的测试、文档和错误处理;具体测试框架与命令,官方仓库未提供该信息。
  4. 提交前检查 GPL v3 及第三方服务条款,确保分发内容具备必要的许可证信息。

项目地址与资源

以下链接均来自仓库元信息、README 或所给项目资料。文档内容与社区入口可能随项目维护状态变化,使用前应核验页面当前说明。