본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

OpenAI 호환 엔드포인트

~22 min · inference, openai-compat

Level 0스카우트
0 XP0/50 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

OpenAI 호환 형식은 연결 비용을 낮춰

LangChain, LlamaIndex, OpenAI SDK와 수많은 내부 도구가 OpenAI 요청 형식을 이해해. HF는 https://router.huggingface.co/v1/...에 호환 끝점을 제공하므로 SDK의 base URL과 인증 토큰을 바꾸는 것만으로 HF가 연결한 모델을 호출할 수 있어.

같은 부분과 다른 부분을 함께 기억해

chat completions, embeddings, 일부 이미지 끝점의 messages·tools·response_format·스트리밍 조각은 같은 모양을 따라. 인증에는 HF 토큰을 Bearer 값으로 넣어.

하지만 모델 이름은 HF 저장소 ID이고, provider 고유 메타데이터가 모두 전달되지는 않아. 요청 제한과 과금도 OpenAI가 아니라 HF와 선택한 provider의 정책을 따라. 형식 호환이 서비스 의미까지 같다는 뜻은 아니야.

Code

OpenAI SDK 로 HF 치기·python
from openai import OpenAI
import os

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.environ["HF_TOKEN"],
)

resp = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",  # HF 레포 id
    messages=[{"role": "user", "content": "Hi from the OpenAI SDK pointed at HF."}],
    max_tokens=60,
)
print(resp.choices[0].message.content)
OpenAI SDK 통한 streaming·python
from openai import OpenAI
import os

client = OpenAI(base_url="https://router.huggingface.co/v1", api_key=os.environ["HF_TOKEN"])

stream = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[{"role": "user", "content": "List three open-source LLMs."}],
    max_tokens=200,
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

External links

Exercise

OpenAI 호출하는 기존 코드 (또는 새로 짜) 가져와. Llama-3 instruct 모델로 HF router 호출하게 스위치. diff: 몇 줄 바뀜 (2 줄: base_url 과 model). 둘 버전 같은 프롬프트로 돌려 출력 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.