Python으로 AI 어드벤처 게임 만들기
요약
Telnyx AI Inference를 활용하여 Python과 Flask로 텍스트 기반의 '선택형 어드벤처 게임'을 만드는 방법을 소개합니다. LLM이 게임 마스터 역할을 수행하며 장면 생성과 상태 관리를 지원하는 구조를 구현합니다.
핵심 포인트
- Telnyx AI Inference를 통한 동적 게임 장면 생성
- Flask API를 이용한 게임 상태(체력, 인벤토리 등) 추적 및 관리
- LLM의 JSON 출력 유도를 통한 구조화된 데이터 파싱
- Python 기반의 간단한 게임 로직 구현 및 실행 방법 안내
대부분의 LLM (Large Language Model) 데모는 하나의 프롬프트와 하나의 답변으로 이루어집니다.
이 데모는 조금 더 재미있습니다. 바로 텍스트 기반의 '당신의 선택에 따라 진행되는(choose-your-own-adventure)' 게임입니다.
플레이어는 장르를 선택하고, 캐릭터 이름을 정하고, 생성된 장면을 읽은 뒤, 옵션 1, 2 또는 3 중 하나를 선택합니다. Telnyx AI Inference가 다음 장면을 생성하는 동안 앱은 게임 상태를 추적합니다.
코드: https://github.com/team-telnyx/telnyx-code-examples/tree/main/adventure-game-python
앱의 기능
Flask API는 다음을 노출합니다:
POST /game/start
POST /game/<id>/choose
GET /game/<id>
...
각 게임은 다음 항목을 추적합니다:
- 장르 (genre)
- 플레이어 이름 (player name)
- 현재 장면 (current scene)
- 선택 가능한 선택지 (available choices)
- 위치 (location)
- 체력 (health)
- 인벤토리 (inventory)
- 턴 횟수 (turn count)
- 상태 (status)
상태는 다음과 같을 수 있습니다:
ongoing (진행 중)
won (승리)
lost (패배)
...
Telnyx AI Inference 사용 방식
앱은 다음을 호출합니다:
POST /v2/ai/chat/completions
기본 모델:
AI_MODEL=moonshotai/Kimi-K2.6
시스템 프롬프트는 모델에게 게임 마스터 (game master) 역할을 수행하고 JSON만 반환하도록 요청합니다:
{
"scene": "장면 설명",
"choices": ["선택지 1", "선택지 2", "선택지 3"],
...
이러한 구조가 이 예제를 유용하게 만듭니다. 모델이 장면을 작성하지만, 앱은 여전히 결과를 파싱하고, 상태를 저장하며, 선택지를 검증하고, 게임을 계속할지 여부를 결정할 수 있습니다.
실행 방법
저장소를 클론(Clone)하세요:
git clone https://github.com/team-telnyx/telnyx-code-examples.git
cd telnyx-code-examples/adventure-game-python
.env 파일을 생성하세요:
cp .env.example .env
Telnyx API 키를 추가하세요:
TELNYX_API_KEY=your_telnyx_api_key
AI_MODEL=moonshotai/Kimi-K2.6
HOST=127.0.0.1
...
설치 및 시작:
pip install -r requirements.txt
python app.py
상태 확인 (Health check):
curl http://localhost:5000/health
판타지 어드벤처 시작:
curl -X POST http://localhost:5000/game/start \
-H "Content-Type: application/json" \
-d '{
...
다음 행동을 선택하세요:
curl -X POST http://localhost:5000/game/game-<id>/choose \
-H "Content-Type: application/json" \
-d '{"choice":1}' | python3 -m json.tool
다른 장르 시도하기:
curl -X POST http://localhost:5000/game/start \
-H "Content-Type: application/json" \
-d '{"genre":"cyberpunk","player_name":"Void"}'
사용 가능한 장르:
fantasy(판타지)sci-fi(공상과학)mystery(미스터리)horror(공포)cyberpunk(사이버펑크)post-apocalyptic(포스트 아포칼립스)
이 패턴이 유용한 이유
이 게임은 유희적이지만, 애플리케이션 패턴은 실용적입니다.
이 패턴은 다음과 같은 방법을 보여줍니다:
- 백엔드 (backend)에서 상태 (state) 유지하기
- 최근 이력 (history)을 모델 (model)로 다시 전달하기
- 구조화된 JSON 요청하기
- 사용자 선택 검증하기
- 모델 출력에 따라 세션 (session)을 계속하거나 종료하기
동일한 패턴을 훈련 시뮬레이션, 지원 흐름 (support flows), 온보딩 튜토리얼 (onboarding tutorials), 가이드형 문제 해결 (guided troubleshooting) 또는 대화형 학습 도구에 적용할 수 있습니다.
모델은 창의적인 생성 (generation)을 담당합니다. 여러분의 애플리케이션은 규칙을 소유합니다.
리소스
코드: https://github.com/team-telnyx/telnyx-code-examples/tree/main/adventure-game-python
Telnyx AI 기술 및 툴킷 (toolkits): https://github.com/team-telnyx/ai
Telnyx AI 추론 (Inference) 문서: https://developers.telnyx.com/docs/inference
Chat Completions API: https://developers.telnyx.com/api/inference/chat-completions
Telnyx 포털 (Portal): https://portal.telnyx.com/
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기