# 프롬프트 생성기 개발 V6: 유니코드 에러 해결 및 코드 리팩토링 > 2025년 12월 3일 ## 문제 발생 및 원인 분석 V5 스크립트 테스트 중, 터미널에 한글과 같은 비-ASCII 문자를 입력했을 때 `UnicodeDecodeError`가 발생하는 문제를 발견했다. - **에러:** `UnicodeDecodeError: 'utf-8' codec can't decode bytes...` - **원인:** 이 문제는 Python 스크립트 자체의 버그가 아니다. 스크립트를 실행하는 셸(터미널) 환경의 기본 인코딩 설정이 UTF-8이 아닐 경우, `input()` 함수가 시스템 기본 인코딩으로 문자를 읽으려다 멀티바이트 문자를 해석하지 못해 발생하는 환경 문제다. ## 해결 방안 가장 확실하고 간단한 해결책은 스크립트 실행 시 `PYTHONIOENCODING` 환경 변수를 `UTF-8`로 명시적으로 설정하는 것이다. 이는 Python이 표준 입/출력(stdin, stdout, stderr)을 항상 UTF-8로 처리하도록 강제하여, 다양한 언어의 입력에 대응할 수 있게 한다. **수정된 실행 명령어:** ```bash PYTHONIOENCODING=UTF-8 python main.py ``` ## 코드 리팩토링 버그 수정과 더불어, 코드의 가독성과 유지보수성을 향상시키기 위해 간단한 리팩토링을 진행했다. - `setup_generative_ai`: API 클라이언트를 설정하고 모델 객체를 반환하는 함수를 분리했다. - `main`: 전체적인 흐름을 조율하는 역할에 더 집중하도록 코드를 정리했다. 이러한 변경은 `main.py`의 각 부분이 더 명확한 단일 책임을 갖도록 도와준다. ## `main.py` 업데이트 ```python import os import sys import google.generativeai as genai from dotenv import load_dotenv def setup_generative_ai(api_key): """Configures the generative AI client and returns the model.""" try: genai.configure(api_key=api_key) return genai.GenerativeModel('gemini-1.5-pro-latest') except Exception as e: print(f"Error configuring the AI client: {e}") sys.exit(1) def get_intent(model, user_input): # ... (내용 변경 없음) ... def generate_detailed_prompt(model, user_input, intent): # ... (내용 변경 없음) ... def main(): """Main function to run the prompt generator.""" load_dotenv() api_key = os.getenv("GOOGLE_API_KEY") if not api_key: print("Error: GOOGLE_API_KEY not found in .env file.") sys.exit(1) model = setup_generative_ai(api_key) # 1. Get user input from the terminal user_input = input("Enter your simple prompt idea: ") try: # ... (이하 로직 변경 없음) except Exception as e: print(f"\nAn error occurred: {e}") if __name__ == "__main__": main() ``` *(주: `get_intent`와 `generate_detailed_prompt` 함수의 내용은 이전과 동일하므로 생략)* ## 다음 단계 다음 단계(`V7`)에서는 사용자가 입력했던 복잡한 코드 생성 요청에 실제로 대응할 수 있도록, `[Code Generation]` 의도를 위한 2단계 특화 프롬프트를 설계하고 `main.py`에 구현할 것이다. ```