开源项目怎么免费接入 AI?用 GitHub 自带的就行

内容纲要

原文: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 的大模型。

baseURLhttps://models.github.ai/inference/chat/completions
GITHUB_TOKEN获取地址https://github.com/settings/tokens


三、开源项目接入 AI 最大的三个门槛

在没有 GitHub Models 之前,AI 功能在开源项目里常见这三大门槛:

  1. 付费密钥门槛

    OpenAI/Anthropic 等主流服务基本都收费,对学生和爱好者极不友好。

  2. 本地模型运行负担大

    即使是参数较小的模型,也可能占满内存,CI/CD 中几乎无法使用。

  3. 模型镜像和权重太大

    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 吧。

📚 查看 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

  1. 在 Playground 页面中,从下拉菜单中选择至少一个模型。
  2. 使用 Chat 界面测试不同的提示词(prompt),并比较各模型的响应效果。
  3. 使用 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 编辑器或评估工具中直接运行。

  1. 在你的仓库中创建文件 summarize.prompt.yml,可放在任意目录。
  2. 写入以下内容:
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>

提交并推送文件。

打开你的仓库页面,点击 ModelsPrompts,选择该文件。

点击“Run”按钮,右侧将弹出输入框,输入任意文本后再次点击“Run”以测试。

💡 提示:Prompt 编辑器不会自动传入仓库内容,你需手动填写输入内容。


第五步:配置你的首次评估

评估功能可以帮助你比较不同模型对同一输入的响应效果,便于选型。

  1. 回到你之前创建的 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

提交并推送更新。

在仓库页面,点击 ModelsPrompts,重新打开该 prompt 文件。

在左上角切换视图为 Compare,点击 “Run” 开始运行评估。

💡 小技巧:你可以点击 “Add prompt” 同时对多个模型或不同写法进行测试,查看其响应差异并对比选择最佳模型。


后续步骤:

十、附3 - 账单费率

GitHub Models billing

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward