핵심 포인트
- 무검열 API는 표준 OpenAI 구문을 따르지만 임베딩이나 여러 모델 라우팅과 같은 고급 기능이 없으므로 클라이언트는 단일 엔드포인트에 맞게 구성해야 합니다.
- 스트리밍 응답에는 특정 SSE 처리가 필요합니다. SDK가 JSON 파싱을 기본값으로 사용하면 대용량 무검열 출력에서 파싱 오류가 발생할 수 있습니다.
- 함수 호출은 지원되지만 모델이 지시어 조정 모델보다 더 자주 인수를 환각할 수 있으므로 엄격한 JSON 스키마 준수가 필요합니다.
- 분당 300개의 요청과 8MB 본문 크기로 제한되므로 대용량 애플리케이션에는 신중한 배치 전략이 필요합니다.
무검열 AI API 엔드포인트 이해
무검열 AI API를 통합할 때 첫 번째 실수는 표준 상용 모델과 동일하게 동작한다고 가정하는 것입니다. 저희 엔드포인트는 호스팅된 OpenAI 호환 채팅 완료 서비스입니다. 단일 전용 무검열 대형 언어 모델을 제공합니다. 이는 모델 라우팅이나 버전 관리를 관리할 필요가 없다는 의미입니다. POST /v1/chat/completions로 요청을 보내면 텍스트를 받습니다.
이미지, 비디오 및 여러 벤더를 번들로 제공하는 집계 서비스와 달리 이 서비스는 순수하게 고성능 무제한 텍스트 생성에 중점을 둡니다. 이 모델은 오픈 웨이트 모델이며 합법적인 성인 사용에 대해 콘텐츠 거부 없이 답변하도록 조정되었습니다. 그러나 이는 GPT, Claude, Gemini 또는 기타 벤더의 모델이 아닙니다. 자체 GPU 서버에서 실행됩니다.
베이스 URL은 https://api.uncensoredgptapi.com/v1입니다. 사용하려면 기존 OpenAI SDK나 OpenAI 호환 클라이언트의 base_url을 변경하고 API 키를 제공하세요. 전송해야 할 모델 ID는 단순히 "uncensored"입니다. 이 단순성은 통합 시간을 줄이지만, 폴백을 기대하지 않고 단일 모델 엔드포인트를 처리할 수 있는지 클라이언트를 확인해야 합니다.
일반 인증 오류
인증 오류는 일반적으로 헤더 구성 오류나 만료된 키에서 비롯됩니다. API는 표준 Bearer 토큰 인증을 사용합니다. 모든 요청에 Authorization 헤더에 API 키를 포함해야 합니다.
일반적인 실수는 키의 유효성을 확인하지 않고 API 키를 캐싱하는 것입니다. 키를 재생성하면 이전 키가 즉시 무효화됩니다. 새 키를 사용하도록 클라이언트 구성을 업데이트해야 합니다. 401 Unauthorized 오류가 발생하면 다음 두 가지를 확인하세요. 첫째, 키가 선행 또는 후행 공백 없이 올바르게 복사되었는지 확인하세요. 둘째, 올바른 Base URL을 사용하고 있는지 확인하세요. 도메인이나 경로가 약간만 벗어나도 인증 실패가 발생합니다.
다른 흔한 문제는 잘못된 모델 ID를 사용하는 것입니다. 엔드포인트는 "uncensored"를 기대합니다. "gpt-4" 또는 다른 표준 모델 ID를 전송하면 엔드포인트가 요청을 거부하거나 단일 모델만 제공하기 때문에 오류를 반환할 수 있습니다. 요청 페이로드의 model 필드를 항상 다시 확인하십시오.
curl https://api.uncensoredgptapi.com/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."}]
}'
스트리밍 응답 올바르게 처리
서버 전송 이벤트(SSE)를 통한 스트리밍 응답은 지원되지만, 동기식 JSON 응답에 익숙한 개발자들이 종종 잘못 처리합니다. 요청에 "stream": true를 설정하면 API는 단일 완전한 JSON 응답이 아닌 부분 JSON 객체의 스트림을 반환합니다.
클라이언트가 전체 응답을 한 번에 JSON으로 구문 분석하려고 하면 실패합니다. 스트림을 줄 단위로 읽어야 합니다. 각 줄은 data: 로 시작하며 부분 JSON 객체를 포함합니다. 마지막 줄은 data: [DONE]입니다. 코드는 이러한 청크를 집계하여 최종 텍스트를 복원해야 합니다.
일부 SDK는 이를 자동으로 처리하지만 사용자 정의 구현은 명시적인 SSE 파싱이 필요합니다. 클라이언트 버퍼가 시간 초과 없이 대용량 출력을 처리할 수 있는지 확인하세요. 무검열 모델은 긴 응답을 생성할 수 있으며 스트리밍은 메모리 사용량을 관리하는 데 도움이 됩니다. 연결이 끊기는 경우 재시도 로직에 지수 백오프를 구현하는 것을 고려하세요.
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)
함수 호출 구성 오류
함수 호출이 지원되지만 무검열 모델은 지시어 조정 모델보다 더 자주 인수를 환각할 수 있습니다. 이는 클라이언트 측에서 더 엄격한 검증을 필요로 합니다. 도구를 정의할 때 JSON 스키마가 정확해야 합니다. 모델은 인수를 채우려고 시도하지만 필수 필드를 생략하거나 잘못된 유형을 제공할 수 있습니다.
함수를 실행하기 전에 항상 도구 호출 인수를 검증하세요. 모델이 인수에 대해 잘못된 JSON을 반환하면 오류를 우아하게 처리해야 합니다. 출력이 완벽하게 구조화될 것이라고 가정하지 마세요. 인수를 정리하기 위해 재시도 메커니즘이나 후처리 단계를 구현해야 할 수 있습니다.
또한 무검열 모델이 프롬프트가 복잡할 경우 도구 정의를 무시할 수 있다는 점에 유의하세요. 문제가 발생하면 도구 설명을 단순화하고 시스템 프롬프트가 적절한 경우 도구를 사용하도록 모델에 명확히 지시하는지 확인하세요. 동작을 확인하기 위해 몇 가지 샘플 입력으로 테스트하세요.
컨텍스트 창 제한 (100k 토큰)
무검열 API는 프롬프트와 완성을 결합한 100,000 토큰의 컨텍스트 창을 지원합니다. 이는 많은 표준 모델보다 훨씬 크며 광범위한 대화나 대용량 문서 처리를 허용합니다. 그러나 무한하지는 않습니다. 입력이 이 제한을 초과하면 API가 오류를 반환합니다.
이 한도에 도달하지 않도록 토큰 사용량을 모니터링하세요. 대부분의 SDK에는 토큰을 세는 유틸리티가 제공됩니다. 대화 기록의 누적 토큰을 추적하세요. 대용량 문서를 처리 중이라면 컨텍스트 공간을 확보하기 위해 청크로 나누거나 대화의 이전 부분을 요약하는 것을 고려하세요.
컨텍스트 창에는 messages 배열의 모든 메시지가 포함됩니다. 각 메시지는 총량에 기여합니다. 많은 작은 메시지를 보내면 오버헤드가 누적될 수 있습니다. 불필요한 토큰을 최소화하기 위해 프롬프트 구조를 최적화하세요. 예를 들어, 시스템 지시문이 일정하게 유지된다면 모든 대화 턴에서 반복하지 마세요.
속도 제한 설명 (분당 300회)
API는 키당 분당 300개의 요청에 대한 속도 제한을 시행합니다. 이는 모든 사용자에게 공정한 사용을 보장하기 위한 하드 제한입니다. 이 제한을 초과하면 429 Too Many Requests 오류가 발생합니다. 클라이언트는 재시도 전략을 구현하여 이를 처리해야 합니다.
일반적인 실수는 버스트 트래픽을 고려하지 않는 것입니다. 짧은 시간에 300개의 요청을 보내면 평균 속도가 낮더라도 제한에 도달할 수 있습니다. 요청을 분당 고르게 분산하세요. 대용량 데이터를 처리하는 경우 요청을 배치하거나 큐를 사용하여 흐름을 관리하세요.
속도 제한은 각 API 키에 대해 적용됩니다. 여러 서비스가 동일한 키를 사용하는 경우 제한을 공유합니다. 용량을 늘리기 위해 새 키를 생성할 수 있지만 계정당 활성 키는 하나만 있습니다. 키는 언제든지 재생성할 수 있지만 이전 키가 무효화되므로 모든 클라이언트를 업데이트해야 합니다.
요청 본문 크기 제한 (8MB)
각 요청 본문의 크기는 8 MB로 제한됩니다. 이 제한은 messages 배열 및 모든 도구 정의를 포함한 JSON 페이로드에 적용됩니다. 요청 크기가 이 한도를 초과하면 API는 413 Payload Too Large 오류로 이를 거부합니다.
대용량 파일을 base64 인코딩 데이터로 보내거나 광범위한 대화 기록을 포함할 때 이 제한이 중요합니다. 대용량 문서를 다루는 경우 텍스트를 압축하거나 보내기 전에 불필요한 공백을 제거하세요. 스트리밍을 사용하여 메모리 사용량을 줄일 수 있지만 초기 요청 본문은 여전히 8MB 제한 내에 있어야 합니다.
개발 중 요청 크기를 모니터링하십시오. 이 오류가 발생하면 프롬프트 구조를 검토하고 중복된 정보를 제거하십시오. 예를 들어, 모든 메시지에 전체 시스템 프롬프트를 포함하는 경우 system 역할로 한 번에 이동하고 참조하십시오.
API 키 관리 및 재생성
각 계정은 하나의 API 키로 제한됩니다. 이 키는 가입 시 생성되며 즉시 표시됩니다. 대시보드에서 언제든지 키를 재생성할 수 있습니다. 재생성하면 이전 키가 즉시 무효화됩니다. 이전 키를 사용하는 모든 클라이언트는 401 Unauthorized 오류를 받습니다.
이를 효과적으로 관리하려면 키를 재생성하기 전에 모든 클라이언트를 업데이트하세요. 키를 사용하는 여러 서비스나 장치가 있는 경우 모두 동시에 업데이트해야 합니다. 필요한 만큼 새 키를 생성할 수 있지만 동시에 활성인 키는 하나만 있습니다.
API 키는 이메일과 비밀번호에 연결됩니다. 키를 분실하면 재생성할 수 있습니다. 재생성 횟수에는 제한이 없습니다. 그러나 빈번한 재생성은 보안 문제를 나타낼 수 있으므로 필요한 경우에만 사용하세요. 키를 안전하게 보관하고 공개적으로 공유하지 마세요.
콘텐츠 필터 문제 해결
무검열 모델은 합법적인 성인 대상의 픽션, 보안 연구, 또는 논쟁적인 주제를 거부하지 않습니다. 그러나 항상 적용되는 하나의 콘텐츠 제한이 있습니다: 미성년자가 포함된 성 콘텐츠는 차단됩니다. 해당 콘텐츠가 포함된 요청은 차단됩니다.
예상치 못한 거부를 마주한다면, 프롬프트에 금지된 콘텐츠의 미묘한 신호가 있는지 확인하십시오. 모델은 제한 없는 사용을 위해 조정되었지만, 여전히 기본 안전 필터를 적용할 수 있습니다. 엣지 케이스로 테스트하는 경우 모델의 한계를 이해하기 위해 동작을 문서화하십시오.
또 다른 일반적인 문제는 환각입니다. 무검열 모델은 그럴듯하지만 잘못된 정보를 생성할 수 있습니다. 특히 도구 호출을 사용하거나 코드를 생성할 때 중요한 출력을 항상 검증하세요. 모델은 경우에 따라 엄격한 사실적 정확성보다 유창함을 우선시합니다.