nl-sql / src /nl_sql /llm /providers /github_models.py
liovina's picture
Deploy NL_SQL HEAD to HF Space
942050b verified
"""GitHub Models provider — frontier slot in $0-budget bakeoff.
Endpoint: https://models.github.ai/inference (OpenAI-compatible REST shape).
Model names use the publisher/name form, e.g. ``openai/gpt-4o-mini``.
Auth: GitHub Personal Access Token with ``models:read`` permission
(fine-grained PAT). Free for personal GitHub accounts with daily rate limits.
"""
from __future__ import annotations
from openai import OpenAI
from nl_sql.llm.providers._openai_compat import chat_complete
from nl_sql.llm.providers.base import (
GenerateRequest,
GenerateResponse,
ProviderError,
)
class GitHubModelsProvider:
name: str = "github_models"
def __init__(
self,
token: str,
model: str = "openai/gpt-4o-mini",
base_url: str = "https://models.github.ai/inference",
) -> None:
if not token:
raise ProviderError("GitHubModelsProvider requires non-empty GitHub PAT")
self.model = model
self._client = OpenAI(api_key=token, base_url=base_url)
def generate(self, req: GenerateRequest) -> GenerateResponse:
return chat_complete(self._client, self.model, req)