가이드
프로토콜 및 SDK
OpenAI-compatible, Responses, Anthropic Messages 프로토콜을 streaming, tool calls, 마이그레이션과 함께 사용하세요.
Model API는 세 가지 전송 프로토콜을 지원합니다. 기존 SDK를 유지하고 base URL, API key, 모델 ID만 바꾸세요.
Endpoint 표
| 프로토콜 | Endpoint | 일반적인 클라이언트 |
|---|---|---|
| OpenAI Chat Completions | POST https://openapi.felo.ai/api/v1/chat/completions | OpenAI SDK, 대부분의 OpenAI-compatible 도구 |
| OpenAI Responses | POST https://openapi.felo.ai/api/v1/responses | Responses API 기능을 쓰는 OpenAI SDK |
| Anthropic Messages | POST https://openapi.felo.ai/api/v1/messages | Anthropic SDK, Claude Code, Claude 네이티브 도구 |
Base URL
| 클라이언트 | Base URL | 이유 |
|---|---|---|
| OpenAI SDK | https://openapi.felo.ai/api/v1 | SDK가 /chat/completions 또는 /responses를 덧붙입니다 |
| Anthropic SDK | https://openapi.felo.ai/api | SDK가 /v1/messages를 덧붙입니다. /v1을 직접 추가하지 마세요 |
두 클라이언트 모두 SDK API key로 Felo API key를 사용합니다.
import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";
const openai = new OpenAI({
apiKey: process.env.FELO_API_KEY,
baseURL: "https://openapi.felo.ai/api/v1",
});
const anthropic = new Anthropic({
apiKey: process.env.FELO_API_KEY,
baseURL: "https://openapi.felo.ai/api",
});프로토콜 선택
- 도구나 SDK가 익숙한
messages배열과choices[0].message.content를 기대하면 Chat Completions를 사용하세요. - OpenAI의 Responses 객체,
input,instructions,output_text가 필요하면 Responses를 사용하세요. - Anthropic SDK나 Claude 네이티브 도구를 쓰면 Messages를 사용하세요.
모든 프로토콜이 동작한다고 가정하기 전에 모델을 확인하세요. 카탈로그는 supported_protocols, supported_parameters, recommended_protocol을 제공합니다. recommended_protocol은 클라이언트 권장 사항이며 제한이 아닙니다. 모델이 다른 프로토콜을 받아들일 수도 있습니다.
스트리밍
stream: true를 설정하면 Server-Sent Events를 받습니다.
- Chat Completions는 OpenAI 형식의 chat chunk를 보냅니다.
- Responses는 Responses SSE event를 보내고 완료된 response 객체로 끝납니다.
- Messages는 Anthropic message stream event를 보냅니다.
이벤트 스트림을 점진적으로 읽고 연결을 닫기 전에 종료 이벤트를 처리하세요. 연결이 끊긴 것은 완료된 응답과 다릅니다.
도구 호출 및 구조화된 출력
tools는 프로토콜의 원래 형태로 전달하세요. 지원 여부는 모델마다 다르므로 도구 호출, JSON 모드, 구조화된 출력에 의존하기 전에 카탈로그의 supported_parameters를 확인하세요. 필드를 받아들이면서도 지원하지 않는 옵션을 무시하는 모델이 있습니다.
채널 라우팅
세 endpoint 모두 공급자를 고정할 때 X-Felo-Channel을 받습니다. 헤더 규칙과 예시는 채널 및 공급자 라우팅을 참고하세요.
공식 API에서 마이그레이션
- base URL을 대응하는 Felo URL로 바꿉니다.
- API key를
FELO_API_KEY로 바꿉니다. - 모델 이름을 공개된 Felo 모델 ID로 바꿉니다.
- 나머지 요청 형태는 그대로 둡니다.
| 증상 | 가능한 원인 |
|---|---|
| 모든 요청에서 404 | base URL에 이미 /v1이 포함되어 있거나, Anthropic base URL에 /v1을 직접 추가함 |
| 401 | Felo key가 없거나 클라이언트가 이전 key를 계속 보냄 |
400 model 오류 | 모델 ID가 공개되지 않았거나 선택한 endpoint를 지원하지 않음 |
| Messages 요청 거부 | Messages 프로토콜은 max_tokens를 요구함 |
| 도구 호출 무시됨 | 모델이 해당 기능을 제공하지 않음 |