GPT4Free:免费聚合各大 LLM 到一个 OpenAI 兼容的 API
【免费下载链接】gpt4freeThe official gpt4free repository | various collection of powerful language models | opus 4.6 gpt 5.3 kimi 2.5 deepseek v3.2 gemini 3项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4free
上次月度账单弹出来的时候,我盯着那行数字愣了好一会儿。后来团队干脆试了 GPT4Free 的免费聚合 API,同一套调用代码,底层换成了免费可用的模型源,账单那行数字直接归零。
它解决了什么问题
我们组接大模型这事,一直是这样的:想测 A 家的模型,注册账号、填 key;想换 B 家的,改一遍 base_url 和参数格式。provider 那边一限流,线上任务就开始掉。说白了,大家的时间都耗在"维护一堆入口"上,而不是真正调模型。
GPT4Free 的定位很直接:把一堆可用的模型源聚合成一个统一的、OpenAI 兼容的接口。你的代码只对一个接口说话,哪家可用、怎么降级,它自己处理。
核心机制,一句话说清
你可以把它理解成一个智能前台:所有请求按同一套 OpenAI 格式递进来,前台按可用性和配额把单子分给最合适的后端,某家挂了或没额度,就顺着配置好的名单顺延给下一家。
路由规则可以在config.yaml里声明:按 quota、错误计数这些条件排顺序,条件不满足就跳下一个。
跟我一步步来
第 1 步:装好环境
先确认 Python 3.10+,然后用 pip 装主包。这条命令会拉下完整依赖(含 API 服务所需的 FastAPI/uvicorn)。
pip install -U g4f[all]装完后python -c "import g4f"不报错就算齐活。
第 2 步:用 Python 客户端发第一个请求
这一段在做什么:用一个 OpenAI 风格的客户端发同步请求,不传任何 key,provider 由 g4f 自己挑。
from g4f.client import Client client = Client() response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "一句话介绍你自己"}], ) print(response.choices[0].message.content) # ← 关键:和 OpenAI 返回结构一致跑完你会直接看到模型的回复文本打印出来。
第 3 步:开成流式输出
长回答别干等,加一个stream=True,逐块接收。
stream = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "写段项目周报"}], stream=True, # ← 关键:开启流式 ) for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True)终端里文字会一个字一个字蹦出来。
第 4 步:跑起 OpenAI 兼容的 API 服务
这一条命令把 GPT4Free 起成本地服务,之后 curl、OpenAI SDK 都能指着它用。
python -m g4f --port 8080 --debug服务起来后,http://localhost:8080/v1就是 OpenAI 兼容端点,把现有项目里的base_url改成它、清掉 key 就能跑。
第 5 步:用 config.yaml 声明自定义路由
最后这段是给路由文件加一条自定义模型名,客户端按这个名字请求,g4f 会按条件依次尝试各个 provider。
models: - name: "my-gpt4" providers: - provider: "OpenaiAccount" model: "gpt-4o" condition: "balance > 0 or error_count < 3" # ← 关键:有额度才走它 - provider: "PollinationsAI" # ← 兜底,无条件可用 model: "openai-large"保存后请求model="my-gpt4",路由就生效了。
不同场景怎么选
| 场景 | 推荐配置 | 延迟 | 成本 |
|---|---|---|---|
| 团队共享一个端点 | Docker 全量镜像,映射 8080 的 OpenAI 兼容 API | 中等 | 免费,只占一台常开机器 |
| 私有内网 / 数据不出域 | 本地 Ollama +OLLAMA_HOST/OLLAMA_PORT指向本机 | 取决于本机硬件 | 免费,用你自己的显存 |
| 偶尔调用 / 脚本内嵌 | pip 装g4f[all],直接用 Python 客户端 | 最低(无中间服务) | 免费,零额外运维 |
如果你要的是"给全组一个稳定的 base_url",Docker 方案最合适,持久目录挂好 cookie 和生成媒体就行。如果数据绝对不能出内网,本地 Ollama 更合适,g4f/Provider/local/Ollama.py会优先查本机localhost:11434的模型列表。如果只是自己脚本里偶尔调一下,pip + Python 客户端最省,省掉容器和端口维护,注意装的是g4f[all]才有完整依赖。
新手容易踩的 3 个坑
❌ 直接写一个"听起来很高大上"的模型名,不管 provider 支不支持 ✅ 先确认可用列表(g4f.models或 API 的/v1/models)再写死名字
原因:同一个名字在不同 provider 下含义不同,名字对不上就直接空响应或报错。
❌ 本地 Ollama 不在默认端口,却指望 g4f 自动找到 ✅ 显式设置OLLAMA_HOST/OLLAMA_PORT环境变量
原因:provider 默认去localhost:11434查本机模型,查不到就会走公网代理路线。
❌ 把config.yaml随手丢在项目根目录 ✅ 放到 cookie 目录(~/.config/g4f/cookies/或./har_and_cookies/)
原因:路由文件只在读取 cookie 目录时自动加载,放错地方会被静默忽略。另外 quota 缓存有 5 分钟 TTL,改完配置稍等一会儿再验证,别误判成没生效。
接下来可以做什么
- 先跑通
etc/examples/messages.py这个最小同步例子,确认自己环境里至少有一条 provider 通 - 把代码里硬编码的模型名,替换成
config.yaml里的自定义路由,加上 quota / 错误数条件,让降级逻辑自动接管 - 在 API 服务启动命令里加
--debug,观察请求实际走了哪个 provider,再决定要不要收紧路由
延伸阅读:
- 路由配置说明:
docs/config-yaml-routing.md - 一份可直接抄的示例配置:
etc/examples/config.yaml - Ollama provider 实现:
g4f/Provider/local/Ollama.py - API 服务实现:
g4f/api/run.py
有坑欢迎在 issue 里蹲一个,provider 挂了、路由不生效这种,基本都有人踩过。
【免费下载链接】gpt4freeThe official gpt4free repository | various collection of powerful language models | opus 4.6 gpt 5.3 kimi 2.5 deepseek v3.2 gemini 3项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4free
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考