[Python 재입문] 2. AI 챗봇 만들기로 Python 재도전 - Gemini API로 익히는 핵심 문법

Jaewoo Kim·2026년 3월 13일


여기서는 간단한 AI 챗봇을 직접 만들어봅니다.
그 과정에서 Python의 핵심 기본 문법도 자연스럽게 익혀나가겠습니다.


Gemini(Google AI)를 프로그램에서 호출하기 위한 API 키를 발급받자

Python 스크립트를 작성하기 전에, 프로그램에서 AI를 호출하기 위한 사전 준비를 해두겠습니다.

Gemini API 키 발급 절차

Gemini API를 사용하려면, Google로부터 전용 "키(API 키)" 를 발급받아야 합니다.
무료이며 몇 분이면 완료됩니다.

  1. Google AI Studio에 접속합니다
    브라우저에서 Google AI Studio를 엽니다.

  2. Google 계정으로 로그인합니다
    평소에 사용하는 Google 계정으로 로그인합니다.
    (처음 접속 시 이용 약관 동의 화면이 나오므로, 체크하고 진행하세요.)

  3. API 키 생성 메뉴를 엽니다
    로그인한 상태에서 왼쪽 사이드바의 "API key" 메뉴를 클릭합니다.

  4. 새 프로젝트를 만듭니다
    화면 왼쪽의 "프로젝트"를 선택하고, 오른쪽 상단의 "+새 프로젝트 만들기" 를 클릭합니다.
    프로젝트 이름은 무엇이든 상관없습니다(예: MyGemini). "프로젝트 만들기" 버튼을 눌러 완료합니다.

  5. API 키를 발급합니다
    프로젝트가 생성되면 대시보드로 자동 이동합니다.
    화면 오른쪽 상단의 "API 키 만들기" 버튼을 누르면 키 이름 설정(Gemini API Key)이 표시됩니다.
    "키 만들기" 버튼을 눌러 API 키를 발급합니다.

  6. 키를 복사하여 안전하게 보관합니다
    몇 초 기다리면 화면에 API 키가 표시됩니다.
    복사 버튼을 클릭하여 클립보드에 복사하고, 메모장 등에 임시 보관하세요.
    (나중에 Python 코드에서 사용합니다.)


⚠️ 【중요】API 키 취급 주의사항

  • 절대로 다른 사람에게 보여주지 마세요. 악용되면, 당신의 계정에서 무단으로 API 요금이 청구될 수 있습니다.
  • 만약 키가 유출된 경우에는, 같은 화면에서 키를 삭제하고 새로 발급하면 됩니다.
  • Google AI Studio의 화면은 예고 없이 변경될 수 있습니다. 위 절차에서 찾기 어렵다면 "Gemini API key 발급" 으로 검색하여 최신 절차를 확인하세요.
  • 국내 이용 환경: Google AI Studio는 별도 결제 없이 무료 티어로 사용할 수 있습니다. 단, 무료 티어는 분당 요청 수(RPM)에 제한이 있으므로, 학습 중 Too Many Requests 오류가 발생하면 잠시 기다렸다가 재시도하세요.

.env 파일로 API 키를 안전하게 관리하자

API 키는 코드에 직접 쓰는 것이 아니라, .env 파일이라는 숨김 파일에 저장해서 관리하는 것이 표준 방식입니다.
이렇게 하면 코드를 공유하거나 GitHub에 올릴 때도 API 키가 유출될 위험이 없습니다.

.env 파일 만들기

프로젝트 루트 디렉터리(Python 스크립트와 같은 위치)에, .env라는 이름의 파일을 새로 만듭니다.
확장자는 붙이지 않습니다. 파일 내용은 다음과 같이 작성합니다.

GOOGLE_API_KEY=당신의_API_키_여기에_붙여넣기

⚠️ Windows 사용자 주의: 탐색기에서 파일 이름을 .env로 만들면 .env.txt로 저장될 수 있습니다.
VS Code의 터미널에서 New-Item .env (PowerShell) 또는 type nul > .env (명령 프롬프트)로 만드는 것이 안전합니다.

.gitignore 파일 만들기

GitHub 등에 코드를 올릴 계획이 있다면, .env 파일이 저장소에 포함되지 않도록 반드시 .gitignore 파일을 만들어두세요.

프로젝트 루트에 .gitignore라는 이름의 파일을 만들고, 다음 내용을 저장합니다.

.env

완성된 폴더 구성

my_project/
├── .env           ← API 키 저장 (절대 공개 금지)
├── .gitignore     ← .env를 Git에서 제외
└── llm_chat_v1.py ← 파이썬 스크립트

이상으로 API 키를 안전하게 관리할 준비가 갖추어졌습니다.


필요한 라이브러리(확장 기능)를 설치하자

AI 챗봇을 만들기 위해, 다음 세 가지 라이브러리를 설치합니다.
터미널(VS Code의 경우 Ctrl + ~)에서 아래 명령어를 실행하세요.

pip install langchain-google-genai streamlit python-dotenv
라이브러리역할
langchain-google-genaiGoogle Gemini API를 간편하게 사용하기 위한 라이브러리
streamlitPython 코드만으로 브라우저에서 결과를 표시하는 웹앱 라이브러리
python-dotenv.env 파일에서 API 키 등 환경변수를 불러오는 라이브러리

💡 Anaconda 사용자: conda 환경에서는 pip 대신 conda install 사용을 우선시하되, langchain-google-genai는 conda 채널에 없으므로 pip install을 사용하세요.


먼저 AI 챗봇 코드를 복사-붙여넣기로 동작시켜 보자

아래는 AI 챗봇의 샘플 코드입니다.
llm_chat_v1.py라는 이름으로 저장하고, 실행해보세요.

처음에는 복사-붙여넣기로 충분합니다.
동작 → 해설 이해 → 커스터마이즈, 이 순서가 중요합니다.

📝 학습 팁: "왜 이렇게 작성하는가?"가 불명확한 부분에 직접 주석을 달아보세요. 코드를 능동적으로 읽게 되어 학습 효과가 높아집니다.

AI 챗봇 샘플 코드 (llm_chat_v1.py)

import os
from langchain_google_genai import ChatGoogleGenerativeAI
import streamlit as st

# .env 파일에서 API 키를 읽어들인다
from dotenv import load_dotenv
load_dotenv()

# API 키를 환경변수에서 가져온다
google_api_key = os.getenv('GOOGLE_API_KEY')

# Gemini API 클라이언트 초기화
gemini = ChatGoogleGenerativeAI(
    model = "gemini-2.5-flash",
    google_api_key = google_api_key
)

# prompt(AI에 대한 질문)를 정의
prompt = "Python에서 기본 문법 지식을 쌓는 것의 장점과 단점을 알려주세요."

# Gemini에 질문하여 답변을 가져온다
response = gemini.invoke(prompt)

# Markdown 형식으로 답변을 콘솔에 표시
print(response.content)

# 답변을 브라우저에 표시
st.markdown(response.content)

# 기동 명령어:
# streamlit run llm_chat_v1.py
# 종료:
# Ctrl + C

【실행 전 체크리스트】

  • .env 파일에 GOOGLE_API_KEY=... 가 저장되어 있는가?
  • pip install 이 완료되어 있는가?
  • llm_chat_v1.py.env같은 폴더에 있는가?

실행 방법 — Streamlit은 일반 Python과 다르다

Streamlit을 사용한 파일은 반드시 아래 명령어로 실행합니다.
python llm_chat_v1.py로 실행하면 브라우저가 열리지 않으니 주의하세요.

streamlit run llm_chat_v1.py

↑ 파일 이름을 변경한 경우에는 llm_chat_v1.py 부분을 맞게 수정하세요.

명령어를 실행하면 브라우저가 자동으로 열리고, AI 답변이 웹페이지처럼 깔끔하게 표시됩니다.

프로그램을 멈추려면: 터미널에서 Ctrl + C를 누르세요.


완성 후 커스터마이즈해보기

prompt 변수의 문자열을 바꾸고 저장한 뒤 브라우저를 새로고침(F5)하면, 다른 주제로도 AI에게 질문할 수 있습니다.

# 예: 프롬프트를 바꿔보자
prompt = "카카오 API와 네이버 API의 차이점을 한국 개발자 관점에서 설명해줘."
prompt = "pandas로 CSV 데이터를 분석하는 방법을 초보자에게 설명해줘."
prompt = "Python의 리스트와 딕셔너리의 차이를 실생활 예시로 설명해줘."

포인트: Markdown 형식의 표시란?

브라우저에는 깔끔하게 정형화된 내용이 표시되지만, 터미널에는 ### 장점처럼 AI 응답의 "원본 데이터" 가 그대로 출력됩니다.

# 제목1
## 제목2
### 소제목3
**굵은 글씨**
- 목록 항목

Markdown(마크다운) 은 텍스트를 꾸미기 위한 경량 마크업 언어입니다.
AI의 응답은 대부분 Markdown 형식으로 반환되기 때문에, st.markdown()을 쓰면 그대로 브라우저에 보기 좋게 표시됩니다.

지금은 깊이 몰라도 괜찮지만, 개발을 계속하다 보면 "이 변수의 내용이 Markdown인가, 아니면 다른 형식인가?" 를 의식하는 순간이 반드시 옵니다.
"브라우저의 표시와 원본 데이터는 형식이 다르다"는 점을 머릿속 한켠에 두어두세요.


코드 해설 (llm_chat_v1.py)

코드를 한 줄씩 해설하면서, 이번 샘플에서 등장한 기본 문법을 확실히 익혀봅시다.


pip 명령어로 라이브러리를 설치한다

pip install langchain-google-genai streamlit python-dotenv
  • pip install: Python의 패키지 관리 도구 pip를 사용해 라이브러리를 설치하는 명령어입니다.
  • 라이브러리: 누군가 미리 만들어둔 "편리한 확장 기능"입니다. Python에는 방대한 라이브러리가 있어서, 복잡한 기능도 적은 코드로 구현할 수 있습니다.

자주 겪는 오류 대처

오류원인해결 방법
pip: command not foundpip 미설치 또는 경로 문제python -m pip install ... 형식으로 실행
ERROR: Could not install packages due to an OSError권한 부족pip install --user ... 형식으로 실행
ModuleNotFoundError 실행 시 발생가상환경 밖에서 설치됨가상환경을 활성화 후 재설치

import 문으로 라이브러리를 읽어들인다

import os
from langchain_google_genai import ChatGoogleGenerativeAI
import streamlit as st
  • import: 외부 라이브러리나 모듈을 현재 스크립트에서 사용할 수 있도록 불러오는 키워드입니다.

  • os: Python 표준 라이브러리의 하나입니다. 환경변수 읽기, 파일 경로 처리 등 운영체제와 관련된 기능을 제공합니다.
    표준 라이브러리는 Python 설치 시 기본으로 포함되어 있어 pip install 없이 바로 사용할 수 있습니다.

  • from langchain_google_genai import ChatGoogleGenerativeAI:
    from ... import ... 구문은 특정 라이브러리에서 필요한 클래스나 함수만 선택해서 가져옵니다.
    여기서는 langchain_google_genai 라이브러리에서 ChatGoogleGenerativeAI 클래스를 가져옵니다.

  • import streamlit as st:
    as st는 "streamlit을 앞으로 st라고 짧게 부르겠다"는 별칭(alias) 지정입니다.
    이후 코드에서 st.markdown(), st.title() 등 짧게 쓸 수 있습니다.


클래스와 인스턴스란?

  • 클래스: 기능과 데이터를 묶어놓은 "설계도(레시피)"입니다.
  • 인스턴스: 클래스(설계도)를 바탕으로 만들어진 "실체(요리)"입니다.
  • API: "Application Programming Interface"의 약자. 소프트웨어끼리 소통하기 위한 규칙과 창구입니다. Gemini API를 통해 우리 Python 코드가 Google의 AI와 대화할 수 있게 됩니다.

.env 파일에서 API 키를 읽어들인다

# .env 파일에서 API 키를 읽어들인다
from dotenv import load_dotenv
load_dotenv()

# API 키를 환경변수에서 가져온다
google_api_key = os.getenv('GOOGLE_API_KEY')

이 3줄의 패턴은 거의 모든 Python AI 프로젝트에서 그대로 쓰입니다. 외워두세요.

코드역할
load_dotenv().env 파일을 읽어 환경변수로 등록한다
os.getenv('GOOGLE_API_KEY')등록된 환경변수에서 값을 꺼낸다

동작 원리:

.env 파일에 다음과 같이 저장되어 있다고 합시다.

GOOGLE_API_KEY=AIzaSy...당신의_키...

load_dotenv()를 호출하면 이 내용이 Python의 환경변수로 등록됩니다.
그 후 os.getenv('GOOGLE_API_KEY')를 호출하면 AIzaSy... 라는 문자열이 반환됩니다.

왜 코드에 직접 쓰지 않는가?

# ❌ 절대 이렇게 쓰지 마세요
google_api_key = "AIzaSy...당신의키..."

# ✅ 이렇게 .env에서 불러오세요
google_api_key = os.getenv('GOOGLE_API_KEY')

코드에 직접 키를 쓰면, GitHub에 올리는 순간 전 세계에 키가 공개됩니다.
실제로 이 실수로 수십만 원의 API 요금이 청구된 사례가 있습니다.

포인트: 환경변수 관리의 3원칙
1. API 키는 반드시 .env 파일에 저장한다
2. .gitignore.env를 추가해 저장소에서 제외한다
3. import os + from dotenv import load_dotenv + load_dotenv() 패턴을 외운다


Gemini API 클라이언트 초기화

# Gemini API 클라이언트 초기화
gemini = ChatGoogleGenerativeAI(
    model = "gemini-2.5-flash",
    google_api_key = google_api_key
)

이 코드에서 클래스, 인스턴스, 초기화의 세 가지 개념이 한꺼번에 등장합니다.

개념비유코드에서의 대응
클래스레시피(설계도)ChatGoogleGenerativeAI
초기화레시피를 보고 요리를 만드는 과정ChatGoogleGenerativeAI(model=..., google_api_key=...)
인스턴스완성된 요리(실체)gemini 변수에 저장된 것
인수(설정값)요리의 옵션("덜 맵게", "소금 추가")model="gemini-2.5-flash", google_api_key=...

gemini라는 변수에는 이제 Gemini AI와 대화할 수 있는 "미니 앱"이 담겨 있습니다.

모델 이름에 대하여: gemini-2.5-flash는 빠르고 비용 효율적인 모델입니다. 더 높은 성능이 필요하다면 gemini-2.5-pro를 시도해볼 수 있습니다. 최신 모델 목록은 Google AI Studio에서 확인하세요.


gemini.invoke(prompt)로 AI에게 질문하고 답변을 받는다

response = gemini.invoke(prompt)
  • invoke: gemini 인스턴스가 가진 메서드(함수)입니다. AI에게 질문(prompt)을 보내고 답변을 받습니다.
  • response: AI의 답변 전체(메타 정보 포함)가 저장되는 변수입니다.
  • response.content: 메타 정보를 제외한 순수한 AI 답변 텍스트입니다.
AI의 답변 텍스트 = gemini.invoke(질문).content

response에는 답변 외에도 토큰 사용량, 모델 정보 등이 포함되어 있습니다.
실제 텍스트만 필요할 때는 반드시 .content를 붙여서 사용하세요.


st.markdown(response.content)으로 브라우저에 표시한다

st.markdown(response.content)
  • st.markdown(): Streamlit 함수입니다. 인수로 받은 문자열을 Markdown 형식으로 파싱하여 브라우저에 표시합니다.
  • 속성(attribute): response.content.content 부분입니다. 클래스 인스턴스가 내부적으로 가지고 있는 데이터를 가리킵니다.

Streamlit은 원래 웹 앱 개발 도구이기 때문에, 일반 Python 파일과 실행 방법이 다릅니다.

# ✅ Streamlit 파일의 올바른 실행 방법
streamlit run llm_chat_v1.py

# ❌ 이렇게 실행하면 브라우저가 열리지 않음
python llm_chat_v1.py

Streamlit 자주 쓰는 함수 미리 보기

함수역할
st.markdown(text)Markdown 형식으로 텍스트 표시
st.title(text)큰 제목 표시
st.text_input(label)텍스트 입력창 표시
st.button(label)버튼 표시
st.write(data)데이터를 자동으로 적절한 형식으로 표시

정리 (제1부)

제1부에서는 AI 챗봇을 만들면서 다음과 같은 Python 기본 문법을 배웠습니다.

배운 내용핵심 키워드
라이브러리 설치pip install
모듈 불러오기import, from ... import ..., as
환경변수 관리.env, load_dotenv(), os.getenv()
클래스와 인스턴스클래스(설계도) → 초기화 → 인스턴스(실체)
메서드 호출gemini.invoke(prompt)
속성 접근response.content
브라우저 표시st.markdown(), streamlit run

©2024-2026 MDRULES.dev, Hand-crafted & made with Jaewoo Kim.
이메일문의: jaewoo@mdrules.dev

AI강의/개발/기술자문, AI 업무 자동화 컨설팅  문의: https://talk.naver.com/ct/w5umt5

AI 프롬프트 및 워크플로우 설계 대행: https://mdrules.dev

📚 다음 단계 - 제2부로: CSV 파일을 읽어들여 AI에게 분석시키는 코드를 작성합니다.
pandas와 Gemini API를 조합하면, 데이터를 자동으로 분석하고 인사이트를 추출하는 앱을 만들 수 있습니다.

profile
AI-fluent liberal arts engineer | AX Consulting | AI Workflow Architect | LLM Engineer | Claude Code | AI강의/개발/기술자문 | AI 업무 자동화 컨설팅

0개의 댓글