import gradio as gr from openai import OpenAI import os # 디버깅: 환경변수 확인 print("=== 환경변수 디버깅 ===") print(f"UPSTAGE_API_KEY 존재 여부: {'UPSTAGE_API_KEY' in os.environ}") api_key = os.environ.get("UPSTAGE_API_KEY") if api_key: print(f"API 키 길이: {len(api_key)}") print(f"API 키 시작: {api_key[:10]}...") else: print("API 키가 없습니다!") print("사용 가능한 환경변수들:") for key in os.environ.keys(): if "KEY" in key or "SECRET" in key: print(f" - {key}") # 시스템 프롬프트 SYSTEM_PROMPT = "발표 대본을 만들어주는 챗봇입니다. 발표할 내용을 입력하면 '왜냐하면 ~이기 때문입니다'로 대본을 만들어줍니다" def chat(message, history): # API 키 다시 확인 api_key = os.environ.get("UPSTAGE_API_KEY") if not api_key: return f"""❌ API 키가 설정되지 않았습니다. **해결 방법:** 1. Hugging Face Space의 ⚙️ Settings 탭으로 이동 2. 'Repository secrets' 섹션 찾기 3. 'New secret' 버튼 클릭 4. Name: `UPSTAGE_API_KEY` (정확히 이렇게 입력) 5. Value: 당신의 Upstage API 키 붙여넣기 (up_으로 시작) 6. 'Save' 클릭 7. Space를 재시작 (Settings → Factory reboot) 현재 상태: API 키가 {'있음' if api_key else '없음'} """ try: # Solar API 클라이언트 설정 client = OpenAI( api_key=api_key, base_url="https://api.upstage.ai/v1" ) # 대화 기록 변환 - Solar API는 OpenAI 형식 사용 messages = [{"role": "system", "content": SYSTEM_PROMPT}] # 이전 대화 기록 추가 for human, assistant in history: if human: messages.append({"role": "user", "content": human}) if assistant: messages.append({"role": "assistant", "content": assistant}) # 현재 메시지 추가 messages.append({"role": "user", "content": message}) # Solar API 호출 response = client.chat.completions.create( model="solar-pro2-preview", # solar-pro 또는 solar-mini 사용 가능 messages=messages, stream=False # stream=True로 하면 실시간 스트리밍 가능 ) return response.choices[0].message.content except Exception as e: error_msg = str(e) if "401" in error_msg or "Unauthorized" in error_msg: return "❌ API 키가 유효하지 않습니다. 올바른 Upstage API 키인지 확인하세요. (up_로 시작해야 함)" elif "quota" in error_msg.lower() or "limit" in error_msg.lower(): return "❌ API 사용량 한도를 초과했습니다. 나중에 다시 시도하거나 요금제를 확인하세요." else: return f"❌ 오류 발생: {error_msg}" # Gradio 인터페이스 demo = gr.ChatInterface( fn=chat, title="🤖 논리적으로 말하는 발표도우미 Solar 챗봇", description=f"""논리적으로 발표하는 방법을 도와줍니다. **상태**: API 키가 {'✅ 설정됨' if api_key else '❌ 설정되지 않음'} **사용 모델**: Solar Pro (Upstage AI) [API 키 받기](https://console.upstage.ai/) 💡 **AI Initiative 프로그램 참여자라면 solar-pro를 무료로 사용할 수 있습니다!** [AI Initiative 신청하기](https://www.upstage.ai/events/ai-initiative-2025-ko) """ ) if __name__ == "__main__": demo.launch()