請啟用 JavaScript 來查看內容

GitHub Models 讓你免費玩 GPT、Llama、Phi,還提供 API 串接

    前言

    我前陣子才發現,原來 GitHub 上面也有可以免費使用的 LLM,像是 GPT-4o、Llama-3.3、Phi-3.5…等等,甚至還提供 API 可串接程式!

    雖然 GitHub Models 主要是讓我們在開發生成式 AI 應用程式測試用,算是試用性質,所以有 速率 & Token 數量限制,但我覺得用作個人專案還蠻不錯的,每日請求上限也不算太少 (50~150 次,依模型而定),有需求的網友可以試試~

    GitHub Models
    GitHub Models

    如果你發現還不能使用,可加入候補名單:https://github.com/marketplace/models/waitlist



    速率限制

    在開始使用之前,首先來看看它速率限制到底是多少。

    GitHub Models 使用速率限制
    GitHub Models 使用速率限制

    GitHub Models 是依照模型分成 Low、High、Embedding 等級去做限制,
    在 模型介紹 和 Playground 頁面都有寫此模型是採用哪個限制等級 ("Rate limit tier")。

    * 表格底下雖然還有 Azure OpenAI o1-preview 和 Azure OpenAI o1-mini,但我好像沒辦法使用。


    例如 GPT-4o 是 "High",那它的限制就是:

    • 每分鐘請求數:10 次
    • 每天的請求數:50 次
    • 每個請求的 Tokens:輸入 8000, 輸出 4000
    • 並發請求:2 個

    * 當然假如你是 Copilot Business 或 Copilot Enterprise,那可使用次數就會更多。


    模型清單

    GitHub Models 有提供哪些模型讓我們試用呢?

    這邊有完整支援的模型清單:https://github.com/marketplace/models/catalog

    GitHub Models 支援模型清單
    GitHub Models 支援模型清單

    例如聊天的模型有:

    • OpenAI GPT-4o
    • OpenAI GPT-4o mini
    • Llama-3.3-70B-Instruct
    • Llama-3.2-90B-Vision-Instruct
    • Phi-3.5-MoE instruct
    • Phi-3.5-vision instruct
    • Mistral Large
    • Cohere Command R+
    • AI21 Jamba 1.5
    • JAIS 30b Chat
    • …(更多)

    還有 Embedding 嵌入模型:

    • OpenAI Text Embedding 3
    • Cohere Embed v3 Multilingual
    • …(更多)

    點選任一個模型後,會進入模型介紹頁面。

    會有模型的相關說明介紹、測試評估分數、License 等等,右邊區塊還有像是 簡介、Context (模型"本身" 輸入、輸出 tokens 限制)、訓練資料日期、速率限制等級 (Rate limit tier)、提供者、支援語言 等等資訊。

    模型介紹頁面
    模型介紹頁面

    Playground

    從剛剛 "模型介紹頁面" 點擊右上角「Playground」,或在 GitHub Marketplace 左上角選擇一個模型。
    即可進入 Playground 頁面跟它聊天。

    * 例如 GPT-4o 的 Playground

    模型 Playground 頁面
    模型 Playground 頁面

    先看右側區塊可以切換 "Parameters" 和 "Details":

    • Parameters:設定、調整模型參數 (System prompt、Response format、Max Tokens、Temperature……)。
    • Details:模型的相關說明 (就跟剛剛的模型介紹頁面差不多)。

    再來看左側區塊分為 "Chat"、"Code"、"Raw":

    • Chat:如同使用 ChatGPT、Gemini 一樣,可以與模型做多輪的聊天。
    • Code:展示 API 如何使用,有不同程式語言的範例,下一節 API 還會介紹。
    • Raw:你與模型對話紀錄的原始資料。

    另外,
    在頁面左上方還可以看到「Compare」按鈕,用於比較兩種不同模型的回答,在你輸入問題(prompt)後,它會同時送給兩個模型,讓你方便比較兩種模型哪個回覆比較好。

    比較兩種不同模型的回答
    比較兩種不同模型的回答

    如果你想將目前調整好的參數、聊天記錄儲存起來 (甚至分享),可以使用右上角的「Preset」功能。


    API

    如同文章標題提到的,除了在網頁使用 Playground 介面,GitHub Models 還提供 API 供我們串接自己的程式做測試。


    創建 GitHub Token

    在開始使用 API 之前,我們要先去 GitHub 建立 Token,用作身份驗證。

    * 關於 GitHub 的 Token 介紹,可以參考這篇官方文件:Managing your personal access tokens


    Settings > 左側最下方 Developer settings > Personal access tokens > Fine-grained tokens

    點選 Generate new token。


    Repository access 欄位維持 "Public Repositories (read-only)" 即可。

    填寫完欄位後,最下方點擊 Generate token 按鈕。

    創建新的 Token
    創建新的 Token

    將 token 複製並保存好,之後忘記就只能再重新產生了。

    Fine-grained personal access token 會長的類似這樣:github_pat_11AHxxxxxxxxxxxxxxxxxxxxxxxxxCp7pLSr3a

    將 Token 複製存起來,之後就沒辦法再看到了
    將 Token 複製存起來,之後就沒辦法再看到了

    使用範例

    回到剛剛 Playground 頁面的 "Code" 分頁 (像是 GPT-4o 的 Playground)。

    右上角可以下拉清單選擇不同的程式語言、SDK (OpenAI SDK 或 Azure AI Inference SDK)。


    切到 REST 語言,可以看到實際發送請求的 URL、Headers、Body 等等,API 格式是跟 OpenAI API 一樣的,所以如果你使用的套件、框架、軟體有支援 OpenAI API 格式,那就可以直接切換來用,或者以後 GitHub Models 測試完要換到穩定的付費 Azure OpenAI、OpenAI 也很簡單。

    官方範例程式碼
    官方範例程式碼


    這邊我使用 Postman 來示範如何發送請求。

    API URL、Headers 的設定
    API URL、Headers 的設定

    Request URL: https://models.inference.ai.azure.com/chat/completions
    Request Method: POST
    Request Headers:

    Content-Type: application/json
    Authorization: Bearer github_pat_11AHxxxxxxxxxxxxxxxxxxxxxxxxxCp7pLSr3a
    

    * Authorization 內 Bearer 後面那串就是剛剛創建的 personal access token。


    API Body 的設定
    API Body 的設定

    Body (JSON 格式):

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    {
        "messages": [
            {
                "role": "system",
                "content": ""
            },
            {
                "role": "user",
                "content": "你是誰?"
            }
        ],
        "model": "Llama-3.3-70B-Instruct",
        "temperature": 0.8,
        "max_tokens": 2048,
        "top_p": 0.1
    }
    

    * 只有 messages 和 model 欄位是必要的


    回傳資料範例:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    {
        "choices": [
            {
                "finish_reason": "stop",
                "index": 0,
                "message": {
                    "content": "我是一個人工智慧語言模型,稱為LLaMA。LLaMA是Meta開發的一種人工智慧模型,旨在處理和生成類似人類的語言。",
                    "role": "assistant",
                    "tool_calls": null
                }
            }
        ],
        "created": 1734225172,
        "id": "cmpl-6c7bdcda-1211-4f5a-b9fc-2f2526465445",
        "model": "Llama-3.3-70B-Instruct",
        "object": "chat.completion",
        "usage": {
            "completion_tokens": 47,
            "prompt_tokens": 39,
            "total_tokens": 86
        }
    }
    

    * 不過我在猜它是不是還會塞入其他 prompt,因為 usage > prompt_tokens 看起來明顯大於我下的 prompt token 數量。知道的網友可以留言幫我解惑~🙏



    結語

    如果你剛好在開發 LLM 應用專案,或使用量不多,推薦可以嘗試 GitHub Models。


    如果對於 生成式 AI 有興趣的讀者,記得追蹤『IT空間』FB 粉專,才不會錯過最新的發文通知呦~🔔




    參考:
    GitHub Marketplace Models
    GitHub Models 說明文件


    我不是最好的那個,但我想成為最努力的那個。

    —— 李洋 (台灣羽球國手)


    🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~
    分享

    Jia
    作者
    Jia
    軟體工程師 - Software Engineer