챗봇1.py

Google Gemini를 활용한 대화형 챗봇 구현


개요

항목 내용
API Google Generative AI
모델 gemini-2.5-flash
기능 대화 세션 관리, 시스템 지침 설정

전체 소스 코드

import os
from google import genai
from google.genai import types

# --- 설정 (실제 API 키로 대체) ---
MyKey = "YOUR_GEMINI_API_KEY"
MODEL_NAME = 'gemini-2.5-flash'

try:
    client = genai.Client(api_key=MyKey)
except Exception as e:
    print(f"클라이언트 초기화 오류: {e}")
    client = None

# 챗봇을 위한 시스템 지침
SYSTEM_INSTRUCTION = (
    "당신은 친절하고 유머러스한 한국어 챗봇입니다. "
    "사용자의 질문에 대해 간결하고 명확하게 답변해 주세요."
)

def run_chatbot_session():
    if not client:
        print("\n[SKIP] 클라이언트 초기화 실패")
        return

    # 1. 챗 세션 생성
    # ⭐️ system_instruction을 통해 챗봇의 성격과 역할을 정의합니다.
    chat = client.chats.create(
        model='gemini-2.5-flash',
        config=types.GenerateContentConfig(
            system_instruction=SYSTEM_INSTRUCTION
        )
    )

    print("="*50)
    print("🤖 챗봇 시작: '종료'를 입력하면 대화가 끝납니다.")
    print("="*50)

    # 2. 무한 루프를 돌며 사용자 입력 대기
    while True:
        try:
            user_input = input("👤 나: ")

            if user_input.lower() == '종료':
                print("🤖 챗봇: 대화를 종료합니다. 다음에 또 만나요!")
                break

            if not user_input.strip():
                continue

            # 3. 메시지 전송 및 응답 받기
            response = chat.send_message(user_input)

            # 4. 응답 출력
            print(f"🤖 챗봇: {response.text}")

        except Exception as e:
            print(f"\n[오류 발생]: {e}")
            break

# 5. 대화 기록 출력 함수 (옵션)
def print_history(chat):
    print("\n--- 대화 기록(History) ---")
    for message in chat.get_history():
        role = message.role
        text = message.parts[0].text
        print(f"[{role.upper()}]: {text}")

# 챗봇 세션 실행
if __name__ == '__main__':
    run_chatbot_session()

핵심 개념

1. 챗 세션 생성

chat = client.chats.create(
    model='gemini-2.5-flash',
    config=types.GenerateContentConfig(
        system_instruction=SYSTEM_INSTRUCTION
    )
)

시스템 지침 (System Instruction)

  • 챗봇의 성격, 역할, 행동 방식 정의
  • 모든 대화에 일관되게 적용

2. 메시지 전송

response = chat.send_message(user_input)
print(response.text)

send_message()는 자동으로 대화 기록(History)을 관리


3. 대화 흐름

┌─────────────────┐
│  챗 세션 생성    │  ← System Instruction 설정
└────────┬────────┘
         ↓
┌─────────────────┐
│  사용자 입력     │  ← input()
└────────┬────────┘
         ↓
┌─────────────────┐
│ send_message()  │  ← 이전 대화 기록 자동 포함
└────────┬────────┘
         ↓
┌─────────────────┐
│   AI 응답 출력   │
└────────┬────────┘
         ↓
      반복 (종료 전까지)

실행 방법

pip install google-generativeai
python 챗봇1.py

실행 예시

==================================================
🤖 챗봇 시작: '종료'를 입력하면 대화가 끝납니다.
==================================================
👤 나: 안녕하세요!
🤖 챗봇: 안녕하세요! 반가워요~ 오늘 뭐 도와드릴까요? 😊

👤 나: 오늘 날씨 어때?
🤖 챗봇: 저는 실시간 날씨 정보는 확인할 수 없어요!
      하지만 기상청 앱이나 포털에서 확인해 보시면 좋을 것 같아요~ ☀️

👤 나: 종료
🤖 챗봇: 대화를 종료합니다. 다음에 또 만나요!

시스템 지침 예시

# 전문가 챗봇
SYSTEM_INSTRUCTION = "당신은 10년 경력의 파이썬 개발자입니다."

# 친근한 챗봇
SYSTEM_INSTRUCTION = "당신은 친구처럼 대화하는 반말 챗봇입니다."

# 교육용 챗봇
SYSTEM_INSTRUCTION = "당신은 초등학생을 가르치는 선생님입니다. 쉽게 설명해주세요."