엔터테인먼트 분야의 LLM: 시작을 위한 가이드
요약
OpenAI 호환 SDK와 Oxlo.ai를 사용하여 분기형 스토리 엔진을 구축하는 가이드를 제공합니다. 플레이어의 선택에 따라 장면이 생성되는 인터랙티브 픽션(Interactive Fiction) 프로토타이핑 방법을 다룹니다.
핵심 포인트
- Oxlo.ai API를 활용한 인터랙티브 픽션 엔진 구축 방법
- 일관된 출력을 위한 엄격한 시스템 프롬프트 설계
- 플레이어 선택에 따른 대화 히스토리 관리 및 루프 구현
- 컨텍스트 유지를 위한 효율적인 토큰 및 비용 관리 전략
우리는 분기되는 스토리 장면을 생성하고 매 턴마다 플레이어에게 세 가지 선택지를 제공하는 명령줄 인터랙티브 픽션 (Interactive Fiction) 엔진을 구축할 것입니다. 이는 게임 작가, 1인 개발자, 또는 게임 엔진을 관리하지 않고 서사 경험을 프로토타이핑하려는 모든 이들에게 실질적인 시작점이 될 것입니다. 우리는 OpenAI 호환 SDK를 사용하여 Oxlo.ai에서 이 모든 것을 실행할 것입니다.
필요한 사항
- Python 3.10 이상
- OpenAI Python SDK:
pip install openai - https://portal.oxlo.ai에서 발급받은 Oxlo.ai API 키
1단계: Oxlo.ai에 연결하기
저는 로직을 추가하기 전에 항상 엔드포인트(Endpoint)와 자격 증명을 확인하는 것부터 시작합니다. story_engine.py라는 이름의 파일을 생성하고 클라이언트를 초기화하세요.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
...
2단계: 시스템 프롬프트 (System Prompt) 정의하기
시스템 프롬프트 (System Prompt)는 모델이 갖게 되는 유일한 크리에이티브 디렉터입니다. 저는 출력 형식이 일관되게 유지되고 나중에 파싱(Parse)하기 쉽도록 이를 엄격하게 유지합니다.
SYSTEM_PROMPT = """당신은 인터랙티브 픽션 엔진입니다. 당신의 임무는 2~3문단 길이의 짧은 장면을 작성하고, 플레이어에게 A, B, C로 표시된 정확히 세 가지 선택지를 제공하는 것입니다.
규칙:
...
3단계: 오프닝 장면 생성하기
이제 API 호출을 작은 함수로 감쌉니다. 시스템 프롬프트와 새로운 이야기를 요청하는 사용자 메시지를 전달합니다. 어시스턴트(Assistant)의 답변이 첫 번째 장면이 됩니다.
def generate_scene(client, history, user_input):
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
messages.extend(history)
...
4단계: 플레이어의 선택 처리하기
플레이어가 장면을 읽은 후, A, B 또는 C로 답합니다. 우리는 그 선택을 히스토리(History)에 추가하고 다음 장면을 생성합니다. 이 단일 턴은 Oxlo.ai에 대한 하나의 요청입니다.
player_choice = "B" # 실제 세션에서는 input()으로부터 들어옵니다
user_input = f"플레이어가 {player_choice} 옵션을 선택했습니다."
...
5단계: 플레이 루프 (Play Loop) 구축하기
실제 세션을 위해서는 루프(loop)가 필요합니다. 또한 컨텍스트 윈도우 (context window)가 무한히 커지지 않도록 히스토리 (history)를 제한합니다. Oxlo.ai는 요청당 고정 가격제 (flat per-request pricing)를 사용하므로, 더 긴 트랜스크립트 (transcript)를 보내더라도 각 턴 (turn)의 비용이 더 비싸지지는 않습니다. 토큰 미터 (token meters)가 올라가는 것을 걱정하지 않고 전체 내러티브 (narrative)를 컨텍스트 (context)에 유지할 수 있습니다. 요금제에 대한 자세한 내용은 https://oxlo.ai/pricing을 참조하세요.
class StoryEngine:
def __init__(self, client):
self.client = client
...
실행하기 (Run it)
python story_engine.py를 실행한 후의 세션 모습은 다음과 같습니다.
새로운 이야기를 시작합니다.
네온 비가 레벨 9에 위치한 당신의 아파트 깨진 창문에 부딪히며 쉿 소리를 냅니다. 당신은 서명 없이 도착한 홀로그래픽 메모를 응시하고 있습니다: "화물창. 자정. 키카드를 가져올 것." 유리창에 비친 당신의 모습은 지쳐 보이지만, 책상 위의 총은 깨끗합니다.
...
마무리 및 다음 단계 (Wrap-up and next steps)
이제 엔진은 최소한의 프로토타입 (prototype)으로서 작동합니다. 두 가지 구체적인 다음 단계는 다음과 같습니다: 모델을 kimi-k2.6 또는 qwen-3-32b로 교체하여 서로 다른 추론 스타일 (reasoning styles)이 내러티브 보이스 (narrative voice)를 어떻게 변화시키는지 테스트하거나, UI가 장면 텍스트 (scene text)와 선택지 (choices)를 자동으로 분리하여 웹 프론트엔드 (web frontend)에 렌더링할 수 있도록 JSON 스키마 (JSON schema) 응답 형식을 추가하는 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기