텍스트 모델 쿼리 (Chat Completions)

텍스트 모델 쿼리 (Chat Completions)

Fireworks에서 오픈소스 텍스트 모델을 실제로 호출해 보려면 어디서 시작해야 할지 막막할 수 있겠죠. 다행히 Fireworks는 OpenAI 호환 API를 제공해서 익숙한 채팅 완성 방식 그대로 모델에 질문을 던질 수 있어요. 서버리스 추론이나 전용 배포(deployment) 어느 쪽이든 같은 API를 쓰고, 그중에서도 Chat Completions API가 대부분의 경우에 권장 경로예요.

출처: https://docs.fireworks.ai/guides/querying-text-models

기본 호출

Fireworks SDK든 OpenAI SDK든 클라이언트를 초기화하고 chat.completions.create를 호출하면 돼요. 모델 식별자는 accounts/fireworks/models/<모델명> 형태를 사용해요.

from fireworks import Fireworks

client = Fireworks()

response = client.chat.completions.create(
    model="accounts/fireworks/models/<MODEL_ID>",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)

서버리스가 아닌 전용 배포를 쓰고 싶다면, 같은 API에 배포 식별자만 넣으면 돼요. 이때 성능을 일정하게 유지하거나, 용량을 보장받거나, 처리량을 높이고 싶은 경우에 적합해요.

자주 쓰는 패턴

멀티턴 대화는 이전 메시지를 전부 함께 보내면 모델이 전체 대화 맥락을 참고해 답해요. 시스템 프롬프트는 첫 메시지의 role"system"으로 두면 기본값을 덮어쓰고, 빈 문자열로 두면 시스템 프롬프트를 아예 생략할 수 있어요.

스트리밍은 토큰이 생성되는 대로 받아서 실시간·대화형 UX를 만드는 데 사용해요. 스트림을 중단하고 싶으면 연결을 끊으면 되고, 아직 생성되지 않은 토큰에 대한 과금은 발생하지 않아요. 비동기 클라이언트를 쓰면 여러 요청을 동시에 보내 처리량을 높일 수 있어요.

사용량·성능 추적

모든 응답에는 토큰 사용량 정보가 들어 있어요. 토큰 사용량(프롬프트·완성·전체)은 요청 본문에, 성능 메트릭(지연 시간, 첫 토큰까지의 시간 등)은 비스트리밍 요청의 응답 헤더에 포함돼요. 스트리밍 요청에서 성능 메트릭까지 본문에 받고 싶다면 perf_metrics_in_response 파라미터를 사용해요.

토큰 이해하기

언어 모델은 텍스트를 토큰이라는 조각 단위로 처리해요. 영어에서 토큰 하나는 한 글자부터 한 단어까지 될 수 있고, 모델 계열마다 토크나이저가 달라서 같은 텍스트라도 토큰 수가 달라질 수 있어요. 토큰이 중요한 이유는 모델의 최대 컨텍스트 길이가 토큰으로 측정되고, 요금이 토큰 사용량 기준으로 부과되며, 응답 시간에도 영향을 주기 때문이에요. 실제 사용량은 모든 API 응답의 usage 필드에서 정확히 확인할 수 있어요.

더 알아보기

  • 도구 호출: 모델이 외부 도구를 골라 쓰도록 하는 함수 호출 가이드
  • 구조화 출력: 일관된 JSON 스키마 강제
  • 컴플리션 API: 프롬프트 형식을 직접 제어해야 할 때
  • 배포: 전용 GPU에 모델 배포
  • OpenAI 호환성 가이드: OpenAI에서 이전하기