nps_test / debug_api.py
haepa_mac
Fix chat API integration - use global persona_generator with API settings
1660aff
#!/usr/bin/env python3
"""
API 연결 디버깅 스크립트
대화 기능이 작동하지 않는 원인을 진단합니다.
"""
import os
import sys
sys.path.append('modules')
from persona_generator import PersonaGenerator
import google.generativeai as genai
def test_api_connections():
"""API 연결 상태 테스트"""
print("🔍 API 연결 진단을 시작합니다...\n")
# 1. 환경변수 확인
print("1️⃣ 환경변수 확인:")
gemini_key = os.getenv("GEMINI_API_KEY")
openai_key = os.getenv("OPENAI_API_KEY")
print(f" GEMINI_API_KEY: {'✅ 설정됨' if gemini_key else '❌ 없음'}")
print(f" OPENAI_API_KEY: {'✅ 설정됨' if openai_key else '❌ 없음'}")
if not gemini_key and not openai_key:
print("\n❌ API 키가 설정되지 않았습니다!")
print("\n해결 방법:")
print("1. .env 파일 생성:")
print(" echo 'GEMINI_API_KEY=your_gemini_key_here' > .env")
print(" echo 'OPENAI_API_KEY=your_openai_key_here' >> .env")
print("\n2. 또는 환경변수 직접 설정:")
print(" export GEMINI_API_KEY=your_gemini_key_here")
print(" export OPENAI_API_KEY=your_openai_key_here")
return False
# 2. PersonaGenerator 초기화 테스트
print("\n2️⃣ PersonaGenerator 초기화 테스트:")
# Gemini 테스트
if gemini_key:
try:
generator_gemini = PersonaGenerator(api_provider="gemini")
print(f" Gemini 초기화: ✅ 성공")
print(f" API 키 길이: {len(gemini_key)} 문자")
except Exception as e:
print(f" Gemini 초기화: ❌ 실패 - {str(e)}")
# OpenAI 테스트
if openai_key:
try:
generator_openai = PersonaGenerator(api_provider="openai")
print(f" OpenAI 초기화: ✅ 성공")
print(f" API 키 길이: {len(openai_key)} 문자")
except Exception as e:
print(f" OpenAI 초기화: ❌ 실패 - {str(e)}")
# 3. 실제 API 호출 테스트
print("\n3️⃣ 실제 API 호출 테스트:")
if gemini_key:
try:
generator = PersonaGenerator(api_provider="gemini")
test_result = generator._generate_text_with_api("안녕하세요! 간단히 인사해주세요.")
print(f" Gemini API 호출: ✅ 성공")
print(f" 응답 길이: {len(test_result)} 문자")
print(f" 응답 미리보기: {test_result[:100]}...")
except Exception as e:
print(f" Gemini API 호출: ❌ 실패 - {str(e)}")
if openai_key:
try:
generator = PersonaGenerator(api_provider="openai")
test_result = generator._generate_text_with_api("안녕하세요! 간단히 인사해주세요.")
print(f" OpenAI API 호출: ✅ 성공")
print(f" 응답 길이: {len(test_result)} 문자")
print(f" 응답 미리보기: {test_result[:100]}...")
except Exception as e:
print(f" OpenAI API 호출: ❌ 실패 - {str(e)}")
# 4. 페르소나 대화 테스트
print("\n4️⃣ 페르소나 대화 테스트:")
# 간단한 테스트 페르소나 생성
test_persona = {
"기본정보": {"이름": "테스트봇", "유형": "테스트"},
"성격특성": {
"온기": 70,
"능력": 50,
"외향성": 60,
"친화성": 65,
"성실성": 55,
"신경증": 40,
"개방성": 60,
"창의성": 55,
"유머감각": 65,
"공감능력": 70
}
}
available_apis = []
if gemini_key:
available_apis.append("gemini")
if openai_key:
available_apis.append("openai")
for api in available_apis:
try:
generator = PersonaGenerator(api_provider=api)
response = generator.chat_with_persona(test_persona, "안녕하세요!")
if "API 연결이 설정되지 않아" in response or "뭔가 문제가 생긴 것 같아" in response:
print(f" {api.upper()} 페르소나 대화: ❌ 실패 - API 오류")
print(f" 오류 응답: {response}")
else:
print(f" {api.upper()} 페르소나 대화: ✅ 성공")
print(f" 응답: {response[:100]}...")
except Exception as e:
print(f" {api.upper()} 페르소나 대화: ❌ 실패 - {str(e)}")
print("\n🔍 진단 완료!")
return True
def quick_fix_suggestions():
"""빠른 수정 제안"""
print("\n💡 빠른 해결 방법:")
print("1. API 키 설정 (.env 파일 생성):")
print(" GEMINI_API_KEY=your_actual_api_key_here")
print(" OPENAI_API_KEY=your_actual_api_key_here")
print()
print("2. Gemini API 키 발급: https://makersuite.google.com/app/apikey")
print("3. OpenAI API 키 발급: https://platform.openai.com/api-keys")
print()
print("4. API 키 형식 확인:")
print(" - Gemini: AIza... (약 40자)")
print(" - OpenAI: sk-... (약 60자)")
if __name__ == "__main__":
success = test_api_connections()
if not success:
quick_fix_suggestions()
print("\n✨ 문제가 해결되지 않으면 다음 명령어로 재테스트:")
print(" python debug_api.py")