GetAiApiKey/프로덕션용 AI API 체크리스트
Discord 봇용 LLM API 키: 설정 가이드
Discord 봇은 LLM 제공업체로부터 세 가지가 필요합니다: OpenAI 호환 엔드포인트, 키, 그리고 바쁜 서버에 맞는 제한. 여기 작동하는 봇, 그 뒤의 설정, 그리고 메시지당 비용이 있습니다.
업데이트

주요 포인트
- base URL이 https://api.getaiapikey.com/v1이고 모델이 uncensored인 openai 패키지를 사용하세요.
- 채널별로 짧은 롤링 히스토리를 유지하세요. 컨텍스트 창은 100,000 토큰이지만, 다시 전송된 턴마다 비용이 증가합니다.
- 진행 중인 호출을 6개 정도로 제한하세요. 전체 키는 동시 요청 8개와 분당 300개의 요청을 허용하기 때문입니다.
- 입력 토큰 1,500개와 출력 토큰 200개의 채팅 응답에는 $0.000325가 듭니다.
Discord 봇용 LLM API 키의 역할
Discord 봇용 LLM API 키를 원한다면, 핵심 구성 요소는 단순합니다. Discord는 봇 게이트웨이를 통해 메시지를 코드에 전달합니다. 코드는 최근 대화 내용을 LLM 엔드포인트에 보내고 텍스트를 받아 채널에 다시 게시합니다. API 키는 LLM 제공업체에게 요청이 내 것임을 증명하고 잔액에 청구하는 역할을 합니다.
이 서비스는 OpenAI 호환이므로 봇은 표준 openai Python 패키지를 사용합니다. 베이스 URL과 모델 ID uncensored 두 가지 설정만 변경하면 나머지는 모두 일반적인 채팅 완성입니다. 신규 사용자는 먼저 시도할 수 있습니다: 가입 후 API 키 페이지에서 7일 동안 유효한 $0.50의 무료 체험 크레딧을 제공하며, 카드가 필요하지 않습니다.
먼저 정직한 경계 하나. 이것은 텍스트 모델입니다. 이미지, 음성 또는 비디오를 생성할 수 없으며, 첨부 파일을 자동으로 읽지 않습니다. 봇은 메시지에서의 텍스트를 전달할 수 있지만, 텍스트를 넘어선 모든 것은 이 API가 수행하는 범위를 벗어납니다.
코드 작성 전
- API 키를 얻으세요. Google 또는 이메일로 가입하고 키 페이지에서 키를 생성한 후 환경 변수에 보관하세요.
- Discord 애플리케이션을 생성하세요. Discord 개발자 포털에서 봇을 추가하고 토큰을 복사한 후, 봇이 메시지 텍스트를 읽을 수 있도록 Message Content 인텐트를 활성화하세요. 메시지 읽기 및 전송 권한을 부여하여 봇을 서버에 초대하세요.
- 라이브러리를 설치하세요.
discord.py와openai가 필요합니다.
python3 -m venv .venv
source .venv/bin/activate
pip install discord.py openai
export API_KEY="your-llm-key"
export DISCORD_TOKEN="your-discord-bot-token"
두 시크릿 모두 커밋하지 마세요. 토큰이 유출되면 해당 대시보드에서 재설정하세요. LLM 측면에서는 빠른 시작 문서에 curl과 Node.js의 동일한 호출 예시가 있으므로 다른 언어를 선호한다면 참조하세요.
약 50줄로 작동하는 봇 만들기
이 봇은 사용자가 자신을 호출할 때 응답합니다. 채널당 마지막 20개의 메시지를 유지하고, 페르소나 프롬프트와 함께 모델을 호출하며, 긴 답변을 Discord의 2,000자 메시지 제한에 맞게 분할합니다.
import os
import asyncio
from collections import defaultdict, deque
import discord
from openai import AsyncOpenAI, RateLimitError
ai = AsyncOpenAI(
base_url="https://api.getaiapikey.com/v1",
api_key=os.environ["API_KEY"],
)
SYSTEM = (
"You are Mara, the resident storyteller of a community server for adult "
"fiction writers. Keep replies under 150 words unless asked for more. "
"Stay in character, write in plain prose, and ask one question at the end."
)
history = defaultdict(lambda: deque(maxlen=20))
gate = asyncio.Semaphore(6)
intents = discord.Intents.default()
intents.message_content = True
bot = discord.Client(intents=intents)
@bot.event
async def on_message(message):
if message.author.bot or bot.user not in message.mentions:
return
text = message.clean_content.replace("@" + bot.user.display_name, "").strip()
if not text:
return
log = history[message.channel.id]
log.append({"role": "user", "content": message.author.display_name + ": " + text})
async with gate:
async with message.channel.typing():
try:
resp = await ai.chat.completions.create(
model="uncensored",
messages=[{"role": "system", "content": SYSTEM}, *log],
temperature=0.8,
max_tokens=500,
)
except RateLimitError:
await message.reply("I am busy right now. Try again in a few seconds.")
return
reply = resp.choices[0].message.content or ""
log.append({"role": "assistant", "content": reply})
for i in range(0, len(reply), 1900):
await message.reply(reply[i:i + 1900])
bot.run(os.environ["DISCORD_TOKEN"])
python bot.py로 실행하고 채널에서 봇을 호출하면 응답을 볼 수 있습니다. 요청이 처리되는 동안 타이핑 표시가 나타나므로 대기 시간이 짧게 느껴집니다.
페르소나를 유지하는 시스템 프롬프트 작성
시스템 프롬프트는 채팅 봇에서 대부분의 작업을 수행합니다. 좋은 프롬프트는 짧고 구체적이어야 합니다: 봇의 정체, 응답 길이, 대화 방향이 어긋났을 때의 행동입니다. 두 버전을 비교하세요.
약한 프롬프트는 "유용한 어시스턴트가 되어라"라고 말합니다. 더 강력한 프롬프트는 역할, 길이 제한, 습관을 제공합니다: "당신은 Mara라는 이야기꾼입니다. 150단어 미만으로 응답하세요. 장면의 진행을 돕는 질문 하나로 끝내세요." 두 번째 프롬프트는 수차례의 턴에 걸쳐 모델이 집중할 수 있는 지점을 제공하며, 길이 제한은 비용 예측을 가능하게 합니다.
채팅 봇 운영에서 얻은 실용적인 팁:
- 코드에서 하듯 각 사용자 턴 앞에 화자의 이름을 붙이세요. 공유 채널에서는 모델이 사람들을 구분할 수 없습니다.
- 서버의 규칙을 시스템 프롬프트에 넣으세요. 예를 들어 피해야 할 주제나 하우스 스타일 등. 이 모델은 합법적인 성인 사용에 대해 콘텐츠 거부 없이 응답하도록 조정되었으므로, 원하는 제한은 모델이 아닌 프롬프트와 모더레이션을 통해 적용해야 합니다.
- 페르소나를 일정하게 유지하세요. 자주 변경하면 히스토리의 이전 턴이 새로운 지시와 모순될 수 있습니다.
컨텍스트, 히스토리 및 100,000 토큰 창
컨텍스트 창은 프롬프트와 완료 텍스트를 합쳐 100,000 토큰입니다. 20개의 메시지가 돌아가는 히스토리는 그 정도에 훨씬 미치지 못하며, 이는 의도적인 것입니다. API는 상태가 없으므로 모든 요청은 모델이 볼 전체 대화 내용을 포함해야 합니다. 따라서 유지하는 각 추가 턴은 이후의 모든 호출에서 다시 지불됩니다.
봇이 필요한 메모리 양에 따라 히스토리 길이를 선택하세요. 캐주얼 채팅 봇은 10~20개의 메시지로 작동합니다. 장기적인 역할극은 더 많은 메모리가 필요할 수 있으며, 이 경우 일반적인 접근 방식은 오래된 턴을 요약하여 프롬프트 상단에 짧은 메모로 유지한 후 원본을 삭제하는 것입니다. 히스토리가 선택한 크기를 초과할 때 두 번째 모델 호출을 사용하여 요약을 작성하세요.
코드에서처럼 채널별 히스토리는 대화를 분리합니다. 채널 간 사용자별 메모리를 원한다면 데이터베이스에 메모를 저장하고 해당 사용자의 시스템 프롬프트에 추가하세요. 이 부분은 API 자체가 호출 간에 아무것도 유지하지 않으므로 애플리케이션의 역할입니다. 프라이버시를 위해, 이 API로 전송된 프롬프트는 학습에 사용되지 않음을 참고하세요. 자세한 내용은 프라이버시 페이지를 참조하세요.
활성 서버의 속도 제한
전체 키는 동시 요청 8개와 분당 요청 300개를 허용합니다. 체험 키는 각각 2개와 60개를 허용합니다. 조용한 서버는 이를 전혀 신경 쓰지 않지만, 인기 있는 채널은 한 번에 여러 언급을 보낼 수 있습니다.
코드에 있는 asyncio.Semaphore(6)은 봇이 진행 중인 호출을 6개로 제한하여 8개의 한계에 도달하지 않도록 하고, 같은 키를 사용하는 두 번째 스크립트를 위한 여유 공간을 남깁니다. 체험용 키의 경우 2로 설정하세요. 한도를 초과하면 API는 HTTP 429를 반환합니다: 분당 요청에는 rate_limited, 동시에 너무 많은 요청에는 concurrency. 일시적인 과부하도 Retry-After: 5와 함께 429를 반환합니다. OpenAI 클라이언트는 이러한 경우 중 일부를 기본적으로 다시 시도하며, 위의 코드는 재시도가 모두 소진되면 정중한 메시지로 응답합니다.
스트리밍에 대한 참고가 필요합니다. 토큰이 도착할 때 Discord 메시지를 편집하면 요청은 스트림이 끝날 때까지 동시성 슬롯을 유지하며, Discord는 메시지 편집 속도에 제한을 둡니다. 대부분의 봇은 전체 응답 후 단일 응답이 더 단순하고 신뢰할 수 있습니다.
Discord 봇 운영 비용
가격은 선불 크레딧 기준 입력 토큰 100만 개당 $0.15, 출력 토큰 100만 개당 $0.50입니다. 먼저 응답 하나당 비용을 계산하세요. 시스템 프롬프트와 20개의 메시지 히스토리가 입력 토큰 1,500개를 차지하고, 답변이 200 토큰이라고 가정합니다.
- 입력: 1,500 / 1,000,000 x $0.15 = $0.000225
- 출력: 200 / 1,000,000 x $0.50 = $0.0001
- 총합: 응답당 $0.000325, 따라서 1,000회 응답에는 $0.325가 듭니다.
이제 더 무거운 케이스를 살펴봅니다: 입력 3,000개, 출력 300개의 토큰. $0.00045 + $0.00015 = 응답당 $0.0006, 또는 1,000회 응답당 $0.60입니다. 하루에 500회 응답을 받는 서버는 그 크기로 하루 약 $0.30, 30일 동안 약 $9를 지출합니다.
최소 충전 금액은 $20이며, $500 이하의 정수 금액까지 충전할 수 있습니다. $50부터 5%, $100부터 10%, $200부터 15%의 보너스가 제공됩니다. 크레딧은 만료되지 않으며, 실패하거나 거부된 요청에는 요금이 부과되지 않습니다. 카드(Visa, Mastercard, Apple Pay, Google Pay) 또는 암호화폐(TRC20의 USDT, Base의 USDC)로 결제하세요. 자세한 내용은 가격 페이지를 참조하세요.
성인 커뮤니티를 위한 규칙 및 안전
이 모델은 합법적인 성인 사용에 적합하며, 미성년자가 관련된 성 콘텐츠는 절대 허용되지 않습니다. 서버에서 성인용 픽션이나 역할극을 호스팅한다면 성인만 참여하도록 하세요: Discord의 자체 설정에서 채널을 제한하고, 채널 주제에 규칙을 명시하며 모더레이션을 수행하세요. 모델이 무엇을 쓸지와 상관없이 봇에 적용되므로 출시 전 Discord의 최신 개발자 및 커뮤니티 정책을 읽으세요.
요청 ID를 기록하세요. 모든 API 응답에는 X-Request-Id가 포함되어 있어 특정 호출과 관련하여 support에 문의할 때 도움이 됩니다. X-Balance-USD 헤더는 크레딧이 부족해지면 봇이 관리자 채널에서 사용자에게 경고할 수 있게 하여, 사전 통보 없이 서비스가 중단되는 것을 방지합니다.
더 많은 가이드
질문과 답변
디스코드 봇에서 API를 호출하려면 어떤 라이브러리를 사용해야 하나요?
AsyncOpenAI와 함께 openai Python 패키지를 사용하고, base_url을 https://api.getaiapikey.com/v1로 설정한 후 uncensored 모델을 사용하세요. 모든 OpenAI 호환 클라이언트는 동일한 방식으로 작동합니다.
결제 없이 봇을 테스트할 수 있나요?
네. 신규 사용자는 API 키 페이지에서 한 번의 클릭으로 $0.50의 무료 체험 크레딧을 받을 수 있습니다. 유효 기간은 7일이며, 카드 등록이 필요 없고, 체험용 키는 동시 요청 2개, 분당 60개의 요청을 허용합니다.
봇이 기억할 수 있는 메시지의 수는 얼마인가요?
컨텍스트 창은 100,000 토큰이지만, 전송할 대화 기록의 양은 사용자가 선택할 수 있습니다. 비용 절감을 위해 대부분의 봇은 채널당 10~20개의 메시지만 유지합니다.
봇이 이미지를 읽거나 음성으로 응답할 수 있나요?
아니요. 이 API는 텍스트만 처리하며, 이미지, 오디오, 비디오 생성 및 임베딩 기능은 제공하지 않습니다.
많은 사람이 동시에 봇을 언급하면 어떻게 되나요?
동시 8개 또는 분당 300개를 초과하는 추가 요청은 HTTP 429를 반환합니다. 봇에 세마포어나 큐를 사용하여 해당 제한 내에 있도록 하세요.