原文:Solving the inference problem for open source AI projects with GitHub Models
本文介绍如何利用 GitHub 免费提供的 AI 推理 API,为你的开源项目“无痛”接入大模型,免配置、免付费、即插即用。
一、AI 能让开源项目焕发光彩——除非你让用户填密钥
给开源项目加个 AI 功能,听起来再好不过。直到你要求用户自己填写一串 OpenAI 的 API 密钥为止:
$ my-cool-ai-tool
Error: OPENAI_API_KEY not found
这一刻,90% 的用户直接关闭窗口。
毕竟不是所有人都愿意为试用一个开源工具去开通付费账户。另一方面,本地部署模型的硬件要求对笔记本甚至 GitHub Actions 的默认 runner 来说都太高。
这时候,GitHub Models 登场了。
二、GitHub Models 是什么?一句话概括:
它是一个免费、兼容 OpenAI 接口的 AI 推理服务,任何 GitHub 用户都可以直接用,不用再配置密钥或自己部署模型。
特性 | 内容 |
---|---|
支持模型 | GPT-4o、LLaMA 3、DeepSeek-R1 等 |
调用方式 | 完全兼容 OpenAI API,只需替换 baseURL |
适用用户 | 拥有 GitHub 账号的开发者,或 GitHub Actions 中的 GITHUB_TOKEN |
费用说明 | 免费用于个人账户与开源项目,支持升级为付费高配版(高并发 + 长上下文) |
也就是说,只要你用的是支持 OpenAI 的 SDK,无需改代码,只需换个地址,就能直接调用 GitHub 的大模型。
baseURL:https://models.github.ai/inference/chat/completions
GITHUB_TOKEN获取地址:https://github.com/settings/tokens
三、开源项目接入 AI 最大的三个门槛
在没有 GitHub Models 之前,AI 功能在开源项目里常见这三大门槛:
-
付费密钥门槛
OpenAI/Anthropic 等主流服务基本都收费,对学生和爱好者极不友好。
-
本地模型运行负担大
即使是参数较小的模型,也可能占满内存,CI/CD 中几乎无法使用。
-
模型镜像和权重太大
Docker 镜像一大几十 GB,部署/安装速度直接劝退用户。
这正是 GitHub Models 想要解决的问题:给你一个免费、轻量、零配置的推理入口。
四、如何使用 GitHub Models?只需三步
✅ Step 1:使用你熟悉的 SDK
以 OpenAI JavaScript SDK 为例:
import OpenAI from "openai";
const openai = new OpenAI({
baseURL: "https://models.github.ai/inference/chat/completions",
apiKey: process.env.GITHUB_TOKEN // 或使用你的 GitHub PAT
});
const res = await openai.chat.completions.create({
model: "openai/gpt-4o",
messages: [{ role: "user", content: "Hi!" }]
});
console.log(res.choices[0].message.content);
✅ Step 2:本地调试时使用 GitHub PAT
只要你有 GitHub 账号,就能创建一个 Personal Access Token(PAT),用于本地调试。
✅ Step 3:CI/CD 中直接用 GITHUB_TOKEN
如果你的项目运行在 GitHub Actions 中,只需要在 workflow 文件里声明权限:
permissions:
contents: read
issues: write
models: read # 👈 这一行开启 GitHub Models 访问权限
你无需再配置密钥,Actions 的内建 GITHUB_TOKEN
就能自动调用大模型。
五、真正“开箱即用”的 GitHub Actions
你可以打造完全零配置、支持 AI 的 GitHub Actions。例如:
# .github/workflows/triage.yml
permissions:
contents: read
issues: write
models: read
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 智能问题分类
run: node scripts/triage.js
这个 Action 能在无需用户设置密钥的情况下:
- 自动总结 Pull Request
- 智能分类和打标签 issue
- 每周生成仓库报告
想怎么编,就怎么用 —— 所有 AI 推理功能都可打包进你的工作流中,无需任何额外配置。
六、如果你要上量?GitHub Models 也能扩展
当你的项目社区逐渐壮大,可以开启 GitHub Models 的 付费版本 来提升能力上限:
项目 | 免费版 | 付费版 |
---|---|---|
请求速率(RPM) | 默认限流 | 提高数倍 |
上下文窗口 | 标准模型限制 | 支持最长 128k tokens |
响应延迟 | 与免费用户共享队列 | 独立部署,响应更快 |
开启方式也很简单:前往 GitHub Org 或 Enterprise 的 Settings > Models 页面即可启用。
七、结语:最好的密钥,是不需要密钥
LLM 正在彻底改变开发流程,但“要用就得填 API 密钥”这一点,一直是开源项目推广 AI 功能的最大阻力。
GitHub Models 提供了一个简单但强大的选择:
默认可用,人人可用,直接用 GitHub 账号就行。
- 不再劝退用户
- 不再劝退贡献者
- 更容易构建 AI 功能、更容易传播、也更容易收到 star
想让你的 AI 项目被更多人使用和贡献?现在就接入 GitHub Models 吧。
八、附1 - Python HTTP调用脚本
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
GitHub Models API 调用 - 纯HTTP版本
不依赖OpenAI库,直接使用requests
"""
import requests
import json
def call_github_models(prompt, token):
"""
调用GitHub Models API
Args:
prompt (str): 用户输入的问题
token (str): GitHub Token(需要有models:read权限)
Returns:
str: AI回复内容
"""
# GitHub Models API端点
url = "https://models.github.ai/inference/chat/completions"
# 请求头
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json"
}
# 请求数据
data = {
"model": "openai/gpt-4o",
"messages": [
{"role": "user", "content": prompt}
],
"max_tokens": 500,
"temperature": 0.7
}
try:
print(f"🚀 发送请求到GitHub Models...")
print(f"问题: {prompt}")
# 发送POST请求
response = requests.post(url, headers=headers, json=data, timeout=30)
print(f"状态码: {response.status_code}")
if response.status_code == 200:
# 解析响应
result = response.json()
content = result['choices'][0]['message']['content']
print("✅ 请求成功!")
return content
elif response.status_code == 401:
print("❌ 认证失败:Token无效")
return "错误:GitHub Token无效,请检查Token是否正确"
elif response.status_code == 403:
print("❌ 权限不足:Token缺少models:read权限")
return "错误:Token缺少models:read权限,请访问 https://github.com/settings/tokens 创建新的Token并选择models:read权限"
elif response.status_code == 404:
print("❌ 端点不存在")
return "错误:API端点不存在"
else:
print(f"❌ 请求失败: {response.status_code}")
print(f"响应: {response.text}")
return f"错误:HTTP {response.status_code} - {response.text}"
except requests.exceptions.Timeout:
print("❌ 请求超时")
return "错误:请求超时,请稍后重试"
except requests.exceptions.ConnectionError:
print("❌ 连接错误")
return "错误:网络连接失败,请检查网络连接"
except Exception as e:
print(f"❌ 其他错误: {e}")
return f"错误:{str(e)}"
def main():
"""主函数"""
print("🔧 GitHub Models API - HTTP版本")
print("=" * 50)
# 您的GitHub Token(需要有models:read权限)
GITHUB_TOKEN = "GITHUB_TOKEN" # 请替换为您的Token
# 测试调用
test_prompt = "Hello! 请用中文回答:什么是GitHub Models?它有什么优势?"
response = call_github_models(test_prompt, GITHUB_TOKEN)
print("\n" + "=" * 50)
print("🤖 AI回复:")
print(response)
# 交互式对话
print("\n" + "=" * 50)
print("💬 开始交互式对话(输入 'quit' 退出):")
while True:
user_input = input("\n您: ").strip()
if user_input.lower() in ['quit', 'exit', '退出', 'q']:
print("👋 再见!")
break
if user_input:
response = call_github_models(user_input, GITHUB_TOKEN)
print(f"\nAI: {response}")
if __name__ == "__main__":
main()
九、附2 - QuickStart - GitHub Models 快速入门
几分钟内运行你的第一个 GitHub Models 模型。
本文内容:
- 简介
- 第一步:在 Playground 中试用模型
- 第二步:发起一次 API 调用
- 第三步:在 GitHub Actions 中运行模型
- 第四步:保存你的第一个 Prompt 文件
- 第五步:配置你的首次评估
- 后续步骤
简介
GitHub Models 是由 GitHub 提供的 AI 推理 API,允许你使用 GitHub 账号即可运行 AI 模型。你可以选择来自 OpenAI、Meta、DeepSeek 等多种模型,应用于脚本、应用程序甚至 GitHub Actions,无需额外身份认证流程。
本指南将引导你快速在 Playground 中试用模型,然后通过 API 或工作流运行你的第一个模型。
第一步:在 Playground 中试用模型
访问:https://github.com/marketplace/models
- 在 Playground 页面中,从下拉菜单中选择至少一个模型。
- 使用 Chat 界面测试不同的提示词(prompt),并比较各模型的响应效果。
- 使用 Parameters(参数)视图自定义模型参数,观察其对响应结果的影响。
💡 提示:
如果你已登录 GitHub,Playground 将直接可用。它会使用你的 GitHub 账户访问权限,无需配置或 API 密钥。
第二步:发起一次 API 调用
详细字段、请求头和格式请参考 GitHub Models 的 API 文档。
你需要准备以下内容:
- 一个 GitHub 账号
- 一个带有
models
权限范围的个人访问令牌(PAT),可在 GitHub 设置中创建。
使用如下命令发起 API 请求(将 YOUR_GITHUB_PAT
替换为你的 token):
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_GITHUB_PAT" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Content-Type: application/json" \
https://models.github.ai/inference/chat/completions \
-d '{"model":"openai/gpt-4.1","messages":[{"role":"user","content":"What is the capital of France?"}]}'
返回示例:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "The capital of France is **Paris**."
}
}
]
}
如需尝试其他模型,只需更改 JSON 中 model
字段的值即可。
第三步:在 GitHub Actions 中运行模型
在你的仓库中创建工作流文件:.github/workflows/models-demo.yml
并粘贴以下内容:
name: Use GitHub Models
on: [push]
permissions:
models: read
jobs:
call-model:
runs-on: ubuntu-latest
steps:
- name: Call AI model
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl "https://models.github.ai/inference/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-d '{
"messages": [
{
"role": "user",
"content": "Explain the concept of recursion."
}
],
"model": "openai/gpt-4o"
}'
⚠️ 注意:工作流需在 permissions 块中显式声明 models: read 权限。GitHub 托管的运行器会自动提供 GITHUB_TOKEN。
提交并推送代码以触发工作流。
你可以借此方式将 AI 模型嵌入持续集成(CI)流程,例如:自动摘要 issue、检测 bug 报告缺失信息、自动回复 PR 等等。
第四步:保存你的第一个 Prompt 文件
GitHub Models 支持在仓库中定义可复用的 .prompt.yml
提示词文件,写入后会出现在仓库的 Models 页面,可在 Prompt 编辑器或评估工具中直接运行。
- 在你的仓库中创建文件
summarize.prompt.yml
,可放在任意目录。 - 写入以下内容:
name: Text Summarizer
description: Summarizes input text concisely
model: gpt-4o-mini
modelParameters:
temperature: 0.5
messages:
- role: system
content: You are a text summarizer. Your only job is to summarize text given to you.
- role: user
content: |
Summarize the given text, beginning with "Summary -":
<text>
{{input}}
</text>
提交并推送文件。
打开你的仓库页面,点击 Models → Prompts,选择该文件。
点击“Run”按钮,右侧将弹出输入框,输入任意文本后再次点击“Run”以测试。
💡 提示:Prompt 编辑器不会自动传入仓库内容,你需手动填写输入内容。
第五步:配置你的首次评估
评估功能可以帮助你比较不同模型对同一输入的响应效果,便于选型。
- 回到你之前创建的
summarize.prompt.yml
文件,更新内容如下:
name: Text Summarizer
description: Summarizes input text concisely
model: gpt-4o-mini
modelParameters:
temperature: 0.5
messages:
- role: system
content: You are a text summarizer. Your only job is to summarize text given to you.
- role: user
content: |
Summarize the given text, beginning with "Summary -":
<text>
{{input}}
</text>
testData:
- input: |
The quick brown fox jumped over the lazy dog.
The dog was too tired to react.
expected: Summary - A fox jumped over a lazy, unresponsive dog.
- input: |
The museum opened a new dinosaur exhibit this weekend. Families from all
over the city came to see the life-sized fossils and interactive displays.
expected: Summary - The museum's new dinosaur exhibit attracted many families with its fossils and interactive displays.
evaluators:
- name: Output should start with 'Summary -'
string:
startsWith: 'Summary -'
- name: Similarity
uses: github/similarity
提交并推送更新。
在仓库页面,点击 Models → Prompts,重新打开该 prompt 文件。
在左上角切换视图为 Compare,点击 “Run” 开始运行评估。
💡 小技巧:你可以点击 “Add prompt” 同时对多个模型或不同写法进行测试,查看其响应差异并对比选择最佳模型。
后续步骤:
- 了解 GitHub Models
- 浏览 模型目录
- 学习 如何在仓库中存储 prompts
- 了解 如何评估 AI 模型
- 阅读 如何将模型集成进开发流程