사전 준비 사항
apertus API를 사용하려면 계정과 API 키가 필요합니다. API 키 받기 페이지에서 Google 또는 이메일로 회원가입하세요. 키는 즉시 발급되며 전화번호는 필요하지 않습니다. 먼저 테스트하려면 모든 신규 계정에 7일 동안 유효한 $0.50의 무료 체험 크레딧이 제공됩니다. 시도에 카드는 필요하지 않습니다. 프로덕션에서는 암호화폐(USDT(TRC20) 또는 USDC(Base))로 충전하세요. 크레딧은 소멸하지 않으며, 오류는 잔액을 차감하지 않습니다. 계정당 활성 키는 하나만 가능하며, 새 키를 생성하면 기존 키가 대체됩니다. 키를 안전하게 보관하고 Authorization 헤더에 Bearer 토큰으로 전달하세요. 이 API는 순수 텍스트 기반이며, 콘텐츠 거부 없이 답변하는 데 최적화된 무검열 모델을 제공합니다.
기본 URL 및 인증
모든 요청을 https://api.apertus.cc/v1으로 보내세요. 이 기본 URL은 엔드포인트를 변경하기만 하면 공식 OpenAI SDK 및 호환 가능한 모든 클라이언트와 함께 작동합니다. 헤더에 API 키를 포함하세요: Authorization: Bearer YOUR_API_KEY. 지원되는 유일한 엔드포인트는 POST /v1/chat/completions입니다. 연결을 확인하기 위해 GET /v1/models 엔드포인트도 제공됩니다. 사용할 모델 ID는 uncensored입니다. 이는 GPT, Claude 또는 기타 벤더와 구별되는 서버에서 실행되는 오픈 웨이트 모델입니다. 텍스트 입력을 처리하고 텍스트 출력을 반환합니다. 임베딩, 이미지 또는 오디오는 기대하지 마세요. 이 API는 모델 라우팅 복잡성 없이 직관적인 통합을 원하는 개발자를 위해 설계되었습니다.
첫 번째 요청
설치가 제대로 작동하는지 확인하기 위해 기본 완료 요청을 보내세요. curl 명령을 사용하여 채팅 완료 엔드포인트로 POST하세요. 모델을 uncensored로 설정하고 간단한 메시지를 포함하세요. 이는 API 키가 작동하고 기본 URL이 정확함을 확인합니다. 필요에 따라 temperature 또는 max_tokens과 같은 매개변수를 조정할 수 있습니다. 응답에는 모델의 텍스트 출력이 포함됩니다. 401 오류가 발생하면 키를 확인하세요. 402 오류는 크레딧이 부족함을 나타냅니다. 429 오류는 속도 제한에 도달했음을 의미합니다. 이 간단한 요청은 미들웨어 없이 원시 API 접근을 보여줍니다. 더 복잡한 로직을 구축하기 전에 통합을 검증하는 가장 빠른 방법입니다.
Python 통합
공식 openai Python SDK를 사용하여 API와 상호 작용하세요. 기본 URL https://api.apertus.cc/v1과 API 키로 클라이언트를 초기화하세요. 모델을 uncensored로 설정하세요. 메시지 목록을 사전 형식으로 전달하세요. SDK는 직렬화 및 오류 분석을 자동으로 처리합니다. 이 접근 방식은 백엔드 서비스 또는 데이터 처리 스크립트에 이상적입니다. 응답을 스트리밍하거나 전체 블록을 받을 수 있습니다. 클라이언트 코드는 다른 기본 URL을 제외하면 OpenAI에서 사용하는 코드와 동일합니다. 이는 다른 제공업체로 전환할 때 마찰을 줄여줍니다. 최상의 호환성을 위해 최신 SDK 버전을 사용하세요. 통합은 기존 클라이언트 설정의 구성 변경만 필요하므로 최소한의 작업으로 완료됩니다.
Node.js 통합
JavaScript 또는 TypeScript 환경에서는 openai npm 패키지를 사용하세요. Python에서와 동일한 기본 URL과 키로 클라이언트를 구성하세요. chat.completions.create()를 uncensored 모델로 호출하세요. 표준 형식으로 메시지를 전달하세요. 이는 서버리스 함수 또는 Node.js 백엔드에 적합합니다. SDK는 HTTP 요청 및 응답 분석을 관리합니다. 응답 상태를 확인하여 오류를 우아하게 처리할 수 있습니다. 코드는 다양한 OpenAI 호환 서비스 간에 이식 가능합니다. 필요시 제공업체를 쉽게 교체할 수 있습니다. Node.js 통합은 동기식 및 비동기식 패턴을 모두 지원합니다. 무검열 텍스트 생성이 필요한 API, 봇 또는 자동화 워크플로우를 구축하는 데 사용하세요.
스트리밍 응답
요청에 stream: true을 설정하여 스트리밍을 활성화하세요. API는 생성되는 대로 텍스트 청크를 반환합니다. 이는 긴 응답의 지각된 지연 시간을 개선합니다. 각 청크에는 완료의 일부가 포함됩니다. 마지막 청크에는 토큰 사용량 통계가 포함됩니다. 스트리밍은 서버 전송 이벤트(SSE)를 통해 지원됩니다. SDK의 스트리밍 도우미를 사용하여 청크를 효율적으로 처리하세요. 이는 채팅 인터페이스 또는 실시간 애플리케이션에 유용합니다. 스트리밍은 스트리밍이 아닌 경우와 동일한 토큰을 소모한다는 점에 유의하세요. 스트리밍 중 오류가 발생할 수 있으므로 중단 처리를 해야 합니다. 무검열 모델은 기본적으로 스트리밍을 지원합니다. 이 기능은 텍스트를 단계적으로 표시할 수 있게 해줍니다. 이는 현대 LLM API의 표준 기능입니다. 클라이언트 코드가 부분 응답을 올바르게 처리하는지 확인하세요.
제한, 오류 및 컨텍스트
컨텍스트 창은 프롬프트와 completion을 포함해 총 100,000 토큰입니다. 요청당 최대 출력은 32,000 토큰이며, max_tokens이 설정되지 않으면 2,048 토큰입니다. 속도 제한은 분당 300 요청, 키당 동시 요청 8회입니다. 요청 본문 크기는 8 MB 미만이어야 합니다. 일반적인 오류로는 유효하지 않은 키에 대한 401, 크레딧 없음에 대한 402, 속도 제한에 대한 429가 있습니다. 모델은 미성년자가 포함된 성적인 콘텐츠는 거부합니다. 하지만 기타 합법적인 성인 콘텐츠, 허구적인 주제, 또는 논쟁적인 주제에는 거부하지 않습니다. 가격은 투명합니다: 입력 토큰 100만 토큰당 $0.25, 출력 토큰 100만 토큰당 $1.00입니다. 오류는 무료입니다. 크레딧은 선불 크레딧이며 소멸하지 않습니다. 이러한 제한을 사용하여 애플리케이션의 규모를 계획하세요. 이 API는 대용량, 비용 효율적인 텍스트 생성을 위해 설계되었습니다.
cURL
curl https://api.apertus.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.apertus.cc/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apertus.cc/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);스트리밍
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)