Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back

shinelearning

#python
2주일 전
60
1
import os
from openai import OpenAI

# OpenAI 클라이언트 초기화 (실제 사용 시 API 키 설정 필요)
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY", "YOUR_API_KEY"))

# 1. SHINE 모델의 핵심 원칙을 담은 시스템 프롬프트 정의
SHINE_SYSTEM_PROMPT = """
당신은 'SHINE 러닝 모델'을 따르는 최고의 교육 AI 코치입니다. 
학생이 스스로 생각하고 성장할 수 있도록 아래의 5단계 원칙과 규칙을 철저히 지켜야 합니다.

[SHINE 단계별 행동 지침]
1. S (Self Think): 학생이 먼저 문제를 풀거나 의견을 낼 때까지 기다립니다. 절대 먼저 정답을 말하지 마세요.
2. H (Hint from AI): 학생이 어려워하거나 답이 틀렸을 때, '절대 정답을 직접 주지 마세요'. 대신 생각을 유도하는 '단계별 힌트'나 '질문'만 제공합니다.
3. I (Improve): 학생이 힌트를 보고 답을 수정하면, 그 과정의 논리를 칭찬하거나 부족한 점을 다시 짚어줍니다.
4. N (Note): 학생이 개념을 이해했을 때(또는 최종 정답에 도달했을 때), 왜 틀렸었는지 이유와 핵심 학습 포인트를 일목요연하게 정리해 줍니다.
5. E (Expand): 마지막으로 오늘 배운 내용과 관련된 비슷한 표현, 혹은 응용 문제를 하나 출제하여 학습을 확장시킵니다.

[핵심 규칙]
- 당신은 정답 제공자가 아니라 '학습 코치(Coach)'입니다.
- 친절하고 격려하는 어조를 유지하되, 주도권은 항상 학생이 쥐도록 유도하세요.
"""

def chat_with_shine_coach(user_input, chat_history):
    """
    SHINE 코치와 대화를 나누는 함수
    """
    # 시스템 프롬프트와 이전 대화 기록을 합쳐 메시지 구성
    messages = [{"role": "system", "content": SHINE_SYSTEM_PROMPT}]
    
    # 이전 대화 내용 반영 (컨텍스트 유지)
    for role, text in chat_history:
        messages.append({"role": role, "content": text})
        
    # 현재 학생의 입력 추가
    messages.append({"role": "user", "content": user_input})
    
    # AI 응답 생성
    response = client.chat.completions.create(
        model="gpt-4o", # 또는 사용하려는 다른 LLM 모델
        messages=messages,
        temperature=0.7 # 창의성과 규칙 준수의 균형
    )
    
    ai_message = response.choices[0].message.content
    return ai_message

# --- 실행 시뮬레이션 예시 ---
if __name__ == "__main__":
    # 대화 기록을 저장할 리스트 [(역할, 메시지)]
    history = []
    
    print("🤖 SHINE AI 코치가 작동 시작했습니다. 문제를 입력하거나 대화를 시작하세요.")
    print("(종료하려면 '종료'를 입력하세요.)\n" + "-"*50)
    
    # 시뮬레이션을 위해 고정된 대화 흐름을 예시로 들어봅니다.
    # 실제로는 input()을 통해 자유롭게 대화할 수 있습니다.
    
    example_turns = [
        "선생님, 'I have graduated university'가 왜 틀린 문장인가요?", # S 단계: 학생의 질문
        "음... 'graduate' 뒤에 전치사가 빠진 것 같은데, 'at' 인가요?", # H 단계를 유도하는 학생의 오답
        "아! 'from'이군요! 'I have graduated from university' 가 맞아요.", # I 단계: 힌트를 보고 수정
    ]
    
    for user_say in example_turns:
        print(f"👨‍🎓 학생: {user_say}")
        
        # AI 응답 받기
        ai_say = chat_with_shine_coach(user_say, history)
        print(f"🤖 AI 코치:\n{ai_say}\n" + "-"*50)
        
        # 대화 기록에 저장
        history.append(("user", user_say))
        history.append(("assistant", ai_say))
1 comment