GitHub Models Inference API로 무료 AI 모델 사용하기
GitHub의 무료 AI 모델 추론 API를 활용하여 GPT-4.1, DeepSeek R1 등 다양한 최신 AI 모델을 손쉽게 사용하는 방법
GitHub Models Inference API 소개
GitHub는 개발자들이 무료로 다양한 최신 AI 모델을 테스트하고 사용할 수 있는 GitHub Models 서비스를 제공합니다. 이 서비스는 OpenAI, Meta, Google, Anthropic 등의 주요 AI 모델을 GitHub의 인프라를 통해 접근할 수 있게 해줍니다.
이 글에서는 GitHub Models Inference API를 사용하여 실제로 AI 모델을 호출하고 응답을 받는 방법을 단계별로 알아보겠습니다.
주요 특징
- 무료 사용: GitHub 계정만 있으면 무료로 AI 모델 사용 가능
- 다양한 모델: GPT-4.1, DeepSeek R1, Llama, Phi 등 다양한 최신 모델 지원
- OpenAI 호환: OpenAI Python SDK를 그대로 사용 가능
- 간편한 인증: GitHub Personal Access Token으로 인증
사전 준비사항
1. GitHub Personal Access Token 발급
GitHub Models API를 사용하려면 먼저 Personal Access Token이 필요합니다:
- GitHub 설정 > Developer settings > Personal access tokens 이동
- "Generate new token" 클릭
- 필요한 권한 선택 (models 관련 권한 필요)
- 토큰 생성 및 안전하게 보관
2. Python 환경 설정
OpenAI Python 라이브러리를 설치합니다:
pip install openai필요한 라이브러리 버전:
openai>=1.52.2
사용 가능한 모델 조회
먼저 GitHub Models에서 제공하는 모델 목록을 확인할 수 있습니다:
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_GITHUB_TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://models.github.ai/catalog/models | jq이 명령어는 사용 가능한 모든 모델의 메타데이터를 JSON 형식으로 반환합니다.
환경 설정
Google Colab 또는 로컬 환경에서 GitHub Token을 환경변수로 설정합니다:
import os
# Colab을 사용하는 경우
from google.colab import userdata
os.environ['GITHUB_TOKEN'] = userdata.get('GITHUB_PERSONAL_ACCESS_TOKEN')
# 로컬 환경에서는 직접 설정
# os.environ['GITHUB_TOKEN'] = 'your_token_here'보안 주의사항: 토큰을 코드에 직접 하드코딩하지 말고, 환경변수나 비밀 관리 시스템을 사용하세요.
실전 예제 1: GPT-4.1 사용하기
OpenAI의 최신 GPT-4.1 모델을 GitHub Models를 통해 사용하는 예제입니다:
from openai import OpenAI
# GitHub Models 설정
GITHUB_PERSONAL_ACCESS_TOKEN = os.environ['GITHUB_TOKEN']
GITHUB_INFERENCE_URL = "https://models.github.ai/inference/"
GITHUB_MODEL = "openai/gpt-4.1"
# OpenAI 클라이언트 생성
client = OpenAI(
api_key=GITHUB_PERSONAL_ACCESS_TOKEN,
base_url=GITHUB_INFERENCE_URL,
)
# 채팅 완성 요청
completion = client.chat.completions.create(
model=GITHUB_MODEL,
messages=[
{"role": "system", "content": "한국어로 대답해"},
{"role": "user", "content": "에어컨 여름철 적정 온도는? 한줄로 답변해줘"},
],
)
print(completion.choices[0].message.content)출력 결과:
여름철 에어컨 적정 온도는 26~28도입니다.코드 설명
- API 엔드포인트:
https://models.github.ai/inference/를 base_url로 설정 - 모델 지정:
openai/gpt-4.1형식으로 모델 이름 지정 - 인증: GitHub Personal Access Token을 API 키로 사용
- 메시지 구조: OpenAI API와 동일한 형식 사용
system: AI의 역할과 행동 지침user: 사용자의 질문
실전 예제 2: DeepSeek R1 사용하기
DeepSeek R1은 추론 과정을 보여주는 특별한 AI 모델입니다:
from openai import OpenAI
# DeepSeek R1 모델 설정
GITHUB_PERSONAL_ACCESS_TOKEN = os.environ['GITHUB_TOKEN']
GITHUB_INFERENCE_URL = "https://models.github.ai/inference/"
GITHUB_MODEL = "deepseek/deepseek-r1"
client = OpenAI(
api_key=GITHUB_PERSONAL_ACCESS_TOKEN,
base_url=GITHUB_INFERENCE_URL,
)
completion = client.chat.completions.create(
model=GITHUB_MODEL,
messages=[
{"role": "system", "content": "한국어로 대답해"},
{"role": "user", "content": "에어컨 여름철 적정 온도는? 한줄로 답변해줘"},
],
)
print(completion.choices[0].message.content)출력 결과:
<think>
Okay, the user is asking about the appropriate temperature for an air conditioner
during summer, and they want a one-line answer in Korean. Let me start by recalling
the standard recommendations. I remember that energy efficiency guidelines often
recommend around 24-26 degrees Celsius. But I should also consider comfort and
health aspects. Setting it too low can cause issues like increased energy bills
and potential health problems from the temperature difference between indoors and
outdoors. Also, in Korea, there might be specific guidelines or common practices.
Let me verify if there's a commonly cited temperature in Korean sources. Yes, I
think the Korean government often suggests 26 degrees Celsius as the ideal setting
for energy conservation. So combining both efficiency and comfort, 26 degrees seems
right. I should present it concisely in one line.
</think>
여름철 에어컨 적정 온도는 에너지 효율과 쾌적함을 고려하여 26℃로 설정하는 것이 좋습니다.DeepSeek R1의 특징
DeepSeek R1 모델은 <think> 태그 안에 **추론 과정(Chain of Thought)**을 포함합니다:
- 질문 이해 과정
- 관련 정보 회상
- 여러 측면 고려 (에너지 효율, 쾌적함, 건강 등)
- 최종 답변 도출
이는 AI가 어떻게 생각하고 결론에 도달하는지 투명하게 보여주는 장점이 있습니다.
API 사용 패턴
기본 패턴
from openai import OpenAI
def create_github_client(token: str, model: str):
"""GitHub Models 클라이언트 생성"""
return OpenAI(
api_key=token,
base_url="https://models.github.ai/inference/",
)
def chat_completion(client: OpenAI, model: str, messages: list):
"""채팅 완성 요청"""
completion = client.chat.completions.create(
model=model,
messages=messages,
)
return completion.choices[0].message.content스트리밍 응답
긴 응답의 경우 스트리밍을 사용할 수 있습니다:
completion = client.chat.completions.create(
model=GITHUB_MODEL,
messages=[
{"role": "user", "content": "인공지능의 역사에 대해 설명해줘"},
],
stream=True, # 스트리밍 활성화
)
for chunk in completion:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")파라미터 조정
응답의 품질을 조정할 수 있는 다양한 파라미터:
completion = client.chat.completions.create(
model=GITHUB_MODEL,
messages=messages,
temperature=0.7, # 창의성 조절 (0.0~2.0)
max_tokens=1000, # 최대 토큰 수
top_p=0.9, # 핵심 샘플링
frequency_penalty=0, # 반복 페널티
presence_penalty=0, # 주제 다양성
)지원 모델 예시
GitHub Models에서 사용 가능한 주요 모델들:
OpenAI 계열
openai/gpt-4.1- 최신 GPT-4 모델openai/gpt-4-turbo- 빠른 GPT-4openai/gpt-3.5-turbo- 경량 모델
Meta 계열
meta/llama-3.1-405b-instruct- 초대형 Llama 모델meta/llama-3.1-70b-instruct- 대형 Llama 모델meta/llama-3.1-8b-instruct- 경량 Llama 모델
DeepSeek 계열
deepseek/deepseek-r1- 추론 과정을 보여주는 모델deepseek/deepseek-v3- 최신 DeepSeek 모델
Microsoft 계열
microsoft/phi-4- 효율적인 소형 모델
실용적인 활용 예제
1. 코드 리뷰 도우미
def code_review(code: str):
messages = [
{
"role": "system",
"content": "당신은 경험 많은 시니어 개발자입니다. 코드를 리뷰하고 개선점을 제안하세요."
},
{
"role": "user",
"content": f"다음 코드를 리뷰해주세요:\n\n{code}"
}
]
completion = client.chat.completions.create(
model="openai/gpt-4.1",
messages=messages,
)
return completion.choices[0].message.content2. 문서 요약
def summarize_document(text: str, lang: str = "ko"):
messages = [
{
"role": "system",
"content": f"{lang}으로 핵심 내용을 3-5개 불릿 포인트로 요약하세요."
},
{
"role": "user",
"content": text
}
]
completion = client.chat.completions.create(
model="openai/gpt-4.1",
messages=messages,
temperature=0.3, # 일관성 있는 요약을 위해 낮은 temperature
)
return completion.choices[0].message.content3. 다국어 번역
def translate(text: str, source_lang: str, target_lang: str):
messages = [
{
"role": "system",
"content": f"당신은 전문 번역가입니다. {source_lang}에서 {target_lang}로 자연스럽게 번역하세요."
},
{
"role": "user",
"content": text
}
]
completion = client.chat.completions.create(
model="openai/gpt-4.1",
messages=messages,
temperature=0.3,
)
return completion.choices[0].message.content비용과 제한사항
무료 티어 제한
GitHub Models는 무료로 사용할 수 있지만, 다음과 같은 제한이 있습니다:
- Rate Limiting: 분당 요청 수 제한
- 토큰 제한: 하루 최대 토큰 수 제한
- 모델별 제한: 모델에 따라 다른 제한 적용
프로덕션 사용
본격적인 프로덕션 환경에서는:
- GitHub Models는 개발/테스트 목적으로 사용
- 실제 서비스는 각 모델 제공자의 공식 API 사용 권장
- 높은 처리량이 필요한 경우 유료 서비스 고려
모범 사례 (Best Practices)
1. 에러 처리
from openai import OpenAI, OpenAIError
import time
def safe_completion(client, model, messages, max_retries=3):
"""재시도 로직이 포함된 안전한 API 호출"""
for attempt in range(max_retries):
try:
completion = client.chat.completions.create(
model=model,
messages=messages,
)
return completion.choices[0].message.content
except OpenAIError as e:
if attempt == max_retries - 1:
raise
print(f"오류 발생, 재시도 중... ({attempt + 1}/{max_retries})")
time.sleep(2 ** attempt) # Exponential backoff2. 토큰 관리
def count_tokens_approx(text: str) -> int:
"""대략적인 토큰 수 계산 (실제로는 tiktoken 라이브러리 사용 권장)"""
return len(text.split()) * 1.3 # 한국어는 영어보다 토큰 수가 많음
def truncate_text(text: str, max_tokens: int = 4000):
"""텍스트를 최대 토큰 수에 맞게 자르기"""
words = text.split()
if count_tokens_approx(text) > max_tokens:
# 토큰 수를 초과하면 단어 수를 줄임
target_words = int(max_tokens / 1.3)
return ' '.join(words[:target_words])
return text3. 프롬프트 엔지니어링
def create_structured_prompt(task: str, context: str, constraints: str):
"""구조화된 프롬프트 생성"""
return f"""
## 작업 (Task)
{task}
## 맥락 (Context)
{context}
## 제약사항 (Constraints)
{constraints}
위 내용을 바탕으로 응답해주세요.
"""
# 사용 예
prompt = create_structured_prompt(
task="파이썬 함수 작성",
context="리스트에서 중복을 제거하고 정렬된 결과를 반환",
constraints="타입 힌트 포함, docstring 작성, 시간복잡도 O(n log n)"
)참고 자료
마무리
GitHub Models Inference API는 다양한 최신 AI 모델을 무료로 테스트하고 실험할 수 있는 훌륭한 플랫폼입니다. OpenAI SDK와 호환되어 기존 코드를 쉽게 전환할 수 있으며, GPT-4.1, DeepSeek R1 등 최신 모델을 바로 사용할 수 있습니다.
개발 단계에서 다양한 모델을 비교하고 테스트하는 용도로 매우 유용하며, 프로토타입 개발이나 학습 목적으로도 적합합니다. 다만, 프로덕션 환경에서는 각 모델 제공자의 공식 API를 사용하는 것을 권장합니다.
이제 여러분도 GitHub Models API를 활용하여 AI 기반 애플리케이션을 쉽게 개발해보세요!