spicyapi문서
앱과 플러그인
본문

롤플레이 앱(RisuAI, Agnai, Chub, KoboldAI Lite, Janitor AI)

SpicyAPI 텍스트 모델을 RisuAI, Agnai, Chub, KoboldAI Lite, Janitor AI에 연결하세요. 앱별 정확한 입력칸, 롤플레이에 맞는 모델, 추론 모델 다루는 법, 지출 한도 설정법을 안내합니다.

롤플레이 앱에서는 캐릭터와 대화할 수 있고, 대부분 OpenAI 호환 연결로 내가 고른 AI 모델을 가져와 쓸 수 있습니다. SpicyAPI는 그 프로토콜을 지원하므로, 이런 앱을 SpicyAPI로 연결해 SpicyAPI 텍스트 모델을 아무거나 고르고 SpicyAPI 잔액으로 결제할 수 있습니다.

이 페이지는 웹과 데스크톱 앱 다섯 가지, 즉 RisuAI, Agnai, Chub, KoboldAI Lite, Janitor AI를 다룹니다. SillyTavern은 SillyTavern을 보세요. 이 앱들은 다른 사람들이 만들고 화면도 수시로 바뀝니다. 아래의 입력칸 이름은 각 앱이 공개한 소스 코드와 도움말 페이지에서 가져왔으며, 각 항목에 무엇을 확인했고 무엇을 확인하지 못했는지 적어 두었습니다.

한눈에 보기

  1. spicyapi.ai/console/keys에서 앱 전용 API 키를 따로 만들고 일일 지출 한도를 설정하세요.
  2. 앱에서 OpenAI 호환 연결이나 "reverse proxy" 연결을 고르세요. 주소로 https://api.spicyapi.ai/v1을 입력하고(Janitor AI만 더 긴 https://api.spicyapi.ai/v1/chat/completions를 요구합니다), 키를 붙여 넣고, 모델은 실시간 카탈로그에서 복사한 /chat으로 끝나는 채팅 ID로 설정하세요.
  3. 추론 모델이라면 Max tokens를 1,000 이상으로 설정한 뒤 메시지를 보내세요.

준비물

  • 잔액이 있는 SpicyAPI 계정. 계정 설정과 과금을 보세요.
  • sk-spicy-로 시작하는 API 키. 인증을 보세요.
  • 모델 ID. 텍스트 모델의 이름은 <maker>/<model>/chat 형식이며, 여기서는 MODEL_ID_FROM_CATALOG로 표기합니다. MODEL_ID_FROM_CATALOG는 실시간 카탈로그(GET /api/v1/models)에서 복사한 채팅 모델 ID를 대신하는 표기이므로, 이 자리표시자 자체를 입력해서는 안 됩니다. ID는 끝의 /chat까지 정확히 입력해야 합니다. 전체 목록은 spicyapi.ai/models에 있고, 키로 GET https://api.spicyapi.ai/v1/models를 호출해도 받을 수 있으며, 채팅 ID는 /chat으로 끝나는 것들입니다. 모델을 보세요.

앱별 입력칸 한눈에 보기

앱입력할 주소키를 넣는 곳모델요청을 보내는 쪽
RisuAIhttps://api.spicyapi.ai/v1(전체 경로 .../v1/chat/completions도 가능)Key/PasswordRequest Model에 직접 입력웹사이트에서는 RisuAI 서버, 데스크톱 앱에서는 내 컴퓨터
Agnaihttps://api.spicyapi.ai/v1(전체 경로는 안 됨)API Key프리셋에서 선택, SpicyAPI에서 받아 온 목록Agnai 서버
Chubhttps://api.spicyapi.ai/v1(전체 경로는 안 됨)Reverse Proxy KeySpicyAPI에서 받아 온 드롭다운내 브라우저
KoboldAI Litehttps://api.spicyapi.ai/v1OpenAI 연결의 API key 칸SpicyAPI에서 받아 온 드롭다운내 브라우저
Janitor AIhttps://api.spicyapi.ai/v1/chat/completions(전체 경로)API KeyModel Name에 직접 입력확인되지 않음, Janitor AI 항목 참고

짧은 주소와 전체 주소의 차이는 중요합니다. /chat/completions를 스스로 붙이는 앱은 이를 포함하면 오작동하고, Janitor AI는 전체 경로를 적어야 합니다.

모델 고르기

롤플레이에는 캐릭터를 유지하고, 긴 답변을 쓰고, 일반적인 이야기 요청을 거부하지 않는 모델이 필요합니다. 롤플레이·LLM 리더보드는 SpicyAPI 텍스트 모델을 이런 기준으로 순위를 매기고 현재 가격을 보여 줍니다. 모델과 순위는 바뀌므로 여기에 적힌 목록에 의존하지 말고 리더보드를 확인하세요.

각 모델 페이지에는 콘텐츠 정책 라벨(예: unrestricted, borderline, filtered)도 표시됩니다. 이 라벨은 모델이 얼마나 자유롭게 답하는지를 알려 주니, 쓰려는 이야기에 맞는 라벨의 모델을 고르세요.

처음 써 볼 모델로는 DeepSeek V4.1 Flash가 좋습니다. 리더보드 상위권에 있고 가장 저렴한 모델 중 하나입니다. ID(/chat으로 끝남)는 기억에 의존해 입력하지 말고 spicyapi.ai/models의 실시간 카탈로그에서 복사하세요.

알아 둘 한도가 두 가지 있습니다.

  • 일부 모델은 요청당 최대 256개의 메시지만 받습니다. 아주 긴 채팅에서 대화 기록 전체를 보내는 앱은 이 한도를 넘을 수 있습니다. 앱에서 보낼 기록의 양이나 컨텍스트 크기를 정하는 설정을 찾아 낮추세요. 모델의 한도는 해당 모델 페이지에 있습니다.
  • 이미지 입력은 이미지를 읽는 모델에서만 작동합니다. 일반적인 롤플레이 채팅에는 필요하지 않습니다.

샘플링 설정

롤플레이 앱은 메시지마다 temperature, top-p, top-k, min-p, top-a, frequency, presence, repetition penalty 등 많은 샘플링 설정을 함께 보냅니다. 어떤 설정을 받는지는 모델마다 다릅니다.

SpicyAPI는 모델이 쓰지 않는 설정을 메시지를 거부하지 않고 무시합니다. n: 1, 빈 stop 목록, stop 시퀀스가 없는 모델에 보낸 stop 문자열도 무시합니다. 무언가를 무시하면 응답에 버려진 설정 이름을 담은 X-Spicy-Ignored-Params 헤더가 붙으므로, 무엇이 적용되지 않았는지 정확히 알 수 있습니다.

모델이 어떤 설정은 받지만 보낸 값은 받지 않을 때는, SpicyAPI가 모델이 받는 가장 가까운 값을 씁니다. 모델의 최댓값을 넘는 temperature는 최댓값이 되고, 모델이 허용하는 것보다 긴 stop 문자열 목록은 앞에서부터 그 개수만큼만 남깁니다. 이런 변경은 X-Spicy-Adjusted-Params 헤더에 나열되며, 예를 들면 temperature=1, stop=kept 1 of 3처럼 표시됩니다. 그래서 평소 쓰던 프리셋을 그대로 두어도 됩니다.

샘플링 설정이 아닌 필드는 다릅니다. 앱이 모델이 전혀 모르는 값을 보내면 SpicyAPI는 해당 필드 이름을 담은 400 오류로 응답합니다.

추론 모델과 Max tokens

일부 모델은 답하기 전에 생각합니다. 생각에도 토큰이 쓰이고, 그 토큰은 Max tokens(앱에 따라 Max output, Response length, max_new_tokens로도 표시됨)에 포함됩니다.

  • Max tokens는 넉넉하게 설정하세요. 20이나 200처럼 아주 작으면 추론 모델이 예산 전부를 생각에 쓰고 텍스트를 반환하지 않을 수 있습니다. 출력 예산을 추론에 다 썼다는 upstream_failed 오류가 납니다. 1,000 이상으로 시작하고 답이 잘리면 올리세요.
  • 생각에는 비용과 시간이 듭니다. 추론 토큰도 다른 출력처럼 요금이 부과되고, 첫 단어가 나오기까지 더 오래 걸립니다. 일부 모델은 reasoning_effort 설정으로 덜 생각하게 할 수 있습니다. 단계는 모델마다 다르며, 모델이 제공하지 않는 단계는 그 모델에 있는 가장 가까운 단계로 바뀌고, OpenRouter 방식의 추론 설정(Agnai가 보냅니다)은 reasoning_effort로 변환됩니다. Additional Parameters나 사용자 지정 파라미터 상자가 있는 앱에서는 이를 전달할 수 있습니다. 예를 들어 reasoning_effort에 더 낮은 값을 넣으세요. 아래 앱 대부분은 이 값을 스스로 보내지 않습니다.
  • 일부 앱은 생각 과정을 채팅에 출력합니다. Janitor AI는 이를 <think> 태그로 감쌉니다. Chub는 아예 표시하지 않습니다.

지출 관리하기

롤플레이 채팅은 길고, 앱은 메시지마다 대화 전체를 다시 보내므로 채팅이 길어질수록 메시지당 비용이 커집니다.

앱마다 콘솔에서 전용 키를 만드세요. 만들 때 Advanced를 열고 일일 지출 한도(원한다면 월 한도도)를 설정하세요. 앱이 오작동하거나, 무한 반복에 빠지거나, 키가 유출되더라도 피해는 한도에서 멈추고, 다른 것은 건드리지 않고 그 키 하나만 폐기할 수 있습니다. 키는 특정 모델만 쓰도록 제한할 수도 있습니다. 인증을 보세요.

이 앱들은 내 키를 각자의 서버나 내 브라우저에 저장합니다. RisuAI 웹사이트, Agnai, Janitor AI는 키와 채팅을 해당 서버를 거쳐 보내고, Chub와 KoboldAI Lite는 내 브라우저에서 곧바로 요청을 보냅니다. 어느 경우든 한도를 건 별도의 키를 쓰는 것이 올바른 대비책입니다.

RisuAI

RisuAI는 risuai.xyz, 데스크톱 앱, 또는 직접 운영하는 서버에서 실행됩니다. RisuAI 소스 코드(버전 2026.8.250)를 기준으로 확인했습니다.

Custom API 모델 고르기

봇 설정에서 모델 드롭다운을 열고 Custom API를 선택하세요.

세 칸 채우기

  • URL("Reverse Proxy"로 표시됨): https://api.spicyapi.ai/v1. 주소가 /v1로 끝나면 RisuAI가 /chat/completions를 스스로 붙이며, 전체 경로 https://api.spicyapi.ai/v1/chat/completions도 작동합니다.
  • Key/Password: sk-spicy- 키. bearer 토큰으로 전송됩니다.
  • Request Model: 모델 ID, MODEL_ID_FROM_CATALOG. RisuAI는 사용자 지정 주소에 대한 모델 목록이 없으므로 직접 입력하세요.

Format 드롭다운은 OpenAI Compatible로 설정하세요.

Max tokens를 설정하고 메시지 보내기

추론 모델을 골랐다면 최대 응답 길이를 올린 뒤(위 내용 참고) 채팅하세요.

요청이 오는 곳. risuai.xyz에서는 RisuAI가 보통 자체 서버를 통해 요청을 중계하므로 내 키와 채팅이 그 서버를 거칩니다. 데스크톱 앱과 직접 운영하는 서버는 내 컴퓨터에서 곧바로 요청을 보냅니다. 권장되지 않는 설정 속에 숨어 있는 웹사이트의 "Force Plain Fetch" 옵션만 브라우저에서 요청을 보내며, SpicyAPI는 그런 요청도 받습니다.

샘플링. RisuAI의 기본 Custom API 설정은 frequency, presence, repetition penalty, min-p, top-a를 보냅니다. SpicyAPI는 모델이 쓰지 않는 값을 무시하므로 기본 설정 그대로 작동합니다.

Agnai

Agnai는 agnai.chat에 있습니다. Agnai 소스 코드(dev 브랜치, 2026-10-06)를 기준으로 확인했습니다. SpicyAPI는 Agnai의 기본 제공 프로바이더 목록에 없으므로 사용자 지정 OpenAI 호환 연결로 추가합니다.

프로바이더 추가하기

Settings에서 프로바이더 관리 페이지를 열고 OpenAI Compat 유형의 프로바이더를 추가하세요(또는 Remotely Hosted를 고른 뒤 Other (Generic OpenAI)). 라벨은 아무거나 지정해도 됩니다.

주소와 키 입력하기

  • URL: https://api.spicyapi.ai/v1(또는 https://api.spicyapi.ai. /v1이 없으면 Agnai가 붙입니다). .../chat/completions 전체 경로를 입력하면 Agnai가 경로를 두 번 붙이니 입력하지 마세요.
  • API Key: sk-spicy- 키.

프리셋에서 모델 고르기

채팅에 쓰는 프리셋에서 목록의 모델을 고르세요. Agnai는 SpicyAPI의 모델 목록으로 이 목록을 채웁니다. /chat으로 끝나는 ID를 고르세요.

요청이 오는 곳. 이렇게 추가한 프로바이더에서는 Agnai 서버가 요청을 보내므로 내 키가 Agnai에 저장됩니다.

샘플링. Agnai는 항상 temperature와 top-p를 보내는데, 일부 모델은 이를 받지 않습니다. SpicyAPI는 그런 모델에서 이 값을 무시하므로 DeepSeek V4, Kimi K3 같은 모델도 작동합니다.

권장하지 않음: 브라우저 직접 모드. Agnai에는 Self-Host 연결 유형과, 오래된 프리셋의 Use Local Requests 스위치도 있는데, 이는 브라우저가 주소를 직접 호출하게 합니다. 소스를 보면 이 모드는 SpicyAPI가 받지 않는 think라는 필드를 추가하고, SpicyAPI는 모르는 필드에 400으로 응답합니다. SpicyAPI에서는 테스트하지 않았습니다. 거기서 400이 나면 위의 프로바이더 설정으로 돌아가세요.

Chub

Chub(chub.ai)는 내 브라우저에서 입력한 주소로 곧바로 요청을 보냅니다. Chub가 공개한 프런트엔드 코드(2026-06-28자 빌드)를 기준으로 확인했으며, 그 뒤 Chub의 화면이 바뀌었을 수 있습니다. SpicyAPI가 웹 페이지에서 오는 요청을 허용하기 때문에 브라우저 연결이 작동합니다.

Secrets에 reverse proxy 추가하기

Secrets를 열고 OpenAI 블록에서 My Own API Key 대신 Reverse Proxy를 선택하세요.

주소와 키 입력하기

  • Open AI Reverse Proxy: https://api.spicyapi.ai/v1. Chub가 /chat/completions를 스스로 붙이므로 포함하지 마세요.
  • Reverse Proxy Key: sk-spicy- 키.

Check Proxy를 누르세요. 확인이 성공하면 모델 목록도 함께 불러옵니다.

OpenAI / Proxy와 모델 선택하기

Configuration > Prompt Structure에서 API를 OpenAI / Proxy로 설정하고 드롭다운에서 모델(/chat으로 끝나는 ID)을 고르세요.

Chub는 자체 설정 페이지에서 reverse proxy를 쓰면 내 IP와 채팅 로그가 기록될 수 있다고 경고합니다. 이는 Chub의 안내이며 SpicyAPI의 것이 아닙니다.

소스에서 확인되는, 놀랄 수 있는 점들:

  • Chub는 스트리밍 응답을 120초 뒤에 읽기를 중단합니다. 오래 생각하는 추론 모델은 중간에 끊길 수 있으니 추론 강도를 낮추거나 더 빨리 답하는 모델을 고르세요.
  • Chub는 모델의 생각 과정을 표시하지 않고 답만 표시합니다.

KoboldAI Lite

KoboldAI Lite는 lite.koboldai.net에 있는 단일 웹 페이지입니다. 공개된 index.html을 기준으로 확인했습니다. 브라우저에서 주소를 직접 호출하며, SpicyAPI가 웹 페이지의 요청을 허용하기 때문에 작동합니다.

OpenAI 연결 선택하기

Settings를 열고 OpenAI API(사용자 지정 엔드포인트) 연결을 고르세요.

주소와 키 입력하기

주소에 https://api.spicyapi.ai/v1을, 키 칸에 sk-spicy- 키를 입력하세요. 끝에 /chat/completions를 붙여 넣으면 앱이 알아서 제거합니다.

모델 목록 가져오기

앱의 모델 가져오기 버튼을 누르고 /chat으로 끝나는 ID를 고른 뒤, 생성 설정에서 출력 길이를 설정하세요.

"CORS Proxy"는 꺼 두세요. KoboldAI Lite에는 제작자가 운영하는 프록시를 거쳐 요청을 보내는 옵션이 있습니다. SpicyAPI에는 필요하지 않으며, 켜면 내 키가 다른 사람의 서버를 거치게 됩니다.

샘플링. 반복 설정은 presence penalty로 API에 전송됩니다. SpicyAPI는 이를 쓰지 않는 모델에서는 무시합니다.

Janitor AI

확인되지 않음

Janitor AI가 SpicyAPI와 작동하는지는 확인하지 못했습니다. Janitor AI는 비공개 소스이고 테스트하려면 계정이 필요해서, 실제 채팅을 해 본 사람이 없습니다. 아래 내용은 Janitor의 도움말 센터와 공개된 페이지 코드에서 프록시 설정을 설명한 방식입니다. 보장이 아니라 시도해 볼 만한 방법으로 받아들이세요.

Janitor AI의 "proxy" 기능은 내가 고른 주소로 채팅을 보냅니다. Janitor의 도움말 센터에 따르면 입력칸은 채팅 페이지의 톱니바퀴 아이콘 아래 API Settings, 이어서 Add Configuration에 있습니다.

구성 추가하기

다음을 입력하세요.

  • Config Name: SpicyAPI 등 아무 이름이나 입력합니다.
  • Model Name: 직접 입력하는 모델 ID, MODEL_ID_FROM_CATALOG.
  • Proxy URL: 전체 주소, https://api.spicyapi.ai/v1/chat/completions. https://api.spicyapi.ai/v1을 입력한 뒤 Janitor의 "Add /chat/completions" 버튼을 누르면 이를 대신 해 줍니다.
  • API Key: sk-spicy- 키.

저장한 뒤 메시지 보내기

Janitor의 Check Key/Model 버튼은 Janitor 도움말 센터에서 신뢰할 수 없다고 설명하므로, 실제 메시지를 보내 테스트하세요.

Janitor에 "A network error occurred" 같은 네트워크 또는 연결 오류가 표시된다면, Janitor 페이지가 OpenAI 외의 주소로 가는 요청을 막고 있을 가능성이 큽니다. Janitor의 웹 페이지에는 서드파티 AI 주소 하나, 즉 OpenAI로 가는 직접 요청만 허용하는 보안 정책이 있습니다. Janitor가 브라우저에서 요청을 보내면 SpicyAPI가 보기도 전에 브라우저가 거부하며, SpicyAPI는 이를 바꿀 수 없습니다. 이 오류가 나는데 콘솔에서 내 키의 사용 기록이 없다면 이것이 원인입니다.

이 문제가 생기면 SillyTavern이나 RisuAI를 대신 쓰세요.

Janitor의 도움말 센터와 페이지 코드에서 확인되는 그 밖의 사실은 다음과 같습니다.

  • 일부 Janitor 봇은 제작자가 프록시를 꺼 두었으므로, 무엇을 입력하든 그 봇은 프록시를 통한 채팅을 거부할 수 있습니다.
  • Janitor는 모델의 생각 과정을 <think> 태그로 감싸 표시합니다. 짧게 유지하려면 Max tokens를 더 크게 하거나 추론 강도를 낮추세요.
  • Janitor는 직접 입력하는 메시지 하나의 길이를 제한합니다.

문제 해결

증상해결 방법
401 또는 "invalid API key"콘솔에서 키를 다시 복사하세요. 폐기된 키는 즉시 작동을 멈추며, 계정 비밀번호가 아니라 sk-spicy- 키여야 합니다.
402 또는 "insufficient balance"콘솔에서 충전하거나 키의 일일 지출 한도에 도달하지 않았는지 확인하세요. 과금을 보세요.
404 또는 "model not found"모델 ID가 잘못되었습니다. /chat으로 끝나야 하고 https://api.spicyapi.ai/v1/models에 나온 철자와 같아야 합니다.
주소 자체에서 404가 나고 /chat/completions/chat/completions처럼 경로가 두 번 붙음앱이 경로를 스스로 붙입니다. https://api.spicyapi.ai/v1을 쓰세요(RisuAI, Agnai, Chub, KoboldAI Lite). 전체 경로가 필요한 것은 Janitor AI뿐입니다.
필드 이름을 지목하는 400앱이 샘플링 설정이 아니면서 모델이 받지 않는 값을 보냈습니다. 지목된 필드를 지우거나 끄세요.
메시지 수에 관한 400대화 기록이 모델의 메시지 한도보다 깁니다. 앱에서 기록이나 컨텍스트 크기를 줄이세요.
upstream_failed, "the output budget was spent on reasoning"Max tokens를 올리거나 모델의 추론 강도를 낮추세요. 추론 모델과 Max tokens를 보세요.
답이 문장 중간에 멈춤Max tokens가 너무 낮거나(Chub에서는) 120초 제한에 도달했습니다.
앱에 "Network error"나 "Failed to fetch"가 표시되고 콘솔 로그에 요청이 없음요청이 SpicyAPI에 도달하지 못했습니다. Janitor AI에서는 페이지가 주소를 막는 경우이고, 다른 앱에서는 주소의 오타와 사이트에 접속 가능한지 확인하세요.
429한꺼번에 너무 많은 요청이 왔습니다. 몇 초 기다리세요. 공용 앱은 한 주소에서 여러 사용자의 요청을 보낼 수 있습니다.

오류 코드는 오류에 설명되어 있습니다. 모든 오류는 끝에 request_id가 붙으며, 지원팀에 이를 알려 주면 해당 요청을 정확히 찾을 수 있습니다. 요청은 콘솔의 Logs에도 나타나며, 요청이 SpicyAPI에 도달했는지를 가장 빨리 구분하는 방법입니다.

이 페이지에서