1. 왜 Gemini API인가? (비용 및 성능 우위)
주요 LLM API 비교
| 서비스 | 무료 여부 | 무료 제한 |
| Google Gemini | ✅ 무료 Tier | 신용카드 불필요, 일 250회 |
| OpenAI GPT-4o | ❌ 유료 | 가입 시 소량 크레딧 |
| Anthropic Claude | ❌ 유료 | - |
Free Tier 모델
| 모델 | 분당 요청 | 일 요청 | 특징 |
| gemini-2.5-flash | 10 | 250 | ✅ 추천! 빠르고 충분한 성능 |
| gemini-2.5-flash-lite | 15 | 1,000 | 가장 빠름, 간단한 과제 |
| gemini-2.5-pro | 5 | 100 | 가장 똑똑함, 제한 빡빡 |
2. Gemini 공식 SDK (google-genai) 기초 실무
2025년부터 기존 구버전(google-generativeai)은 Deprecated(비권장)되었으며, 한국어 인코딩 오류 등을 해결한 새로운 공식 SDK인 google-genai를 사용하는 것이 표준입니다.
💻 기본 호출 및 파라미터 제어 치트시트
Python
from google import genai
from google.genai import types
# 1. 클라이언트 인증 객체 생성
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
# 2. 텍스트 생성 및 Config 제어
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="리뷰: 이 영화 진짜 강력 추천합니다!",
config=types.GenerateContentConfig(
# 모델의 페르소나, 규칙, 행동 강제 지정
system_instruction="감성을 긍정/부정/중립 중 하나만 단어로 답변하세요.",
# 창의성 조절 (0: 결정론적/항상 같은 답, 0.7: 대화형, 1.0: 창작)
temperature=0,
# 최대 생성 길이 제한 (토큰 수)
max_output_tokens=100,
),
)
print(response.text) # 최종 응답 텍스트 파싱
| 파라미터 | 설명 | 추천값 |
| system_instruction | 모델의 역할/규칙 | 과제에 맞게 설정 |
| temperature | 창의성 (0~2) | 분류: 0, 대화: 0.7, 창작: 1.0 |
| max_output_tokens | 최대 생성 토큰 수 | 100~4000 |
3. 링체인(LangChain)의 핵심: LCEL 문법
🔹 1) 파이프라인 조립의 본질 (| 연산자)
LangChain은 내부적으로 google-genai SDK를 매핑하여 구동되지만, 데이터 전처리 및 구조화를 획기적으로 돕는 LCEL(LangChain Expression Language) 구조를 제공합니다.
PromptTemplate (프롬프트 틀) → LLM (Gemini 모델)} → OutputParser (출력 정제)
이 세 가지 컴포넌트를 리눅스 파이프라인 기호인 | 연산자로 직관적으로 연결하여 체인을 생성합니다.
- chain = prompt | llm | parser
- result = chain.invoke({"변수명": "입력값"})
🔹 2) 모델 불가지론(Model Agnostic) 아키텍처
LCEL 패턴을 사용하면 향후 비즈니스 요구사항에 따라 다른 모델(ex: OpenAI GPT, Claude 등)로 변경할 때, 하단의 파이프라인 구조를 전혀 건드리지 않고 단 한 줄의 모델 선언부만 교체하면 되므로 결합도가 매우 낮고 유지보수성이 극대화됩니다.
4. LangChain 실무형 심화 패턴
🛠️ 패턴 A: 구조화된 데이터 추출 (JsonOutputParser)
텍스트 형태의 답변이 아닌, 백엔드 API 시스템과 연동할 수 있도록 결과물을 파이썬 딕셔너리(JSON) 형태로 자동 파싱해주는 기법입니다.
from langchain_core.output_parsers import JsonOutputParser
chain = prompt | llm | JsonOutputParser()
result = chain.invoke({"review": "좋은데 비싸다"})
# result = {"sentiment": "중립", "keywords": ["좋다", "비싸다"]}
🛠️ 패턴 B: 고속 대량 처리 (batch)
단 건씩 루프를 돌며 호출하는 invoke와 달리, 여러 데이터셋을 리스트 형태로 묶어 병렬로 고속 처리하는 메서드입니다.
results = chain.batch([
{"review": "재미있다"},
{"review": "별로다"},
])
- ⚠️ 주의(꿀팁): 무료 티어 환경에서 batch를 너무 빡빡하게 돌리면 429 에러(RESOURCE_EXHAUSTED)가 발생할 수 있으므로, 요청 사이에 의도적인 지연 시간(time.sleep(1))을 두는 가드레일이 안전함
🛠️ 패턴 C: 다단계 연결 (Chaining 파이프라인)
앞선 체인의 출력(Output)을 다음 체인의 입력(Input)으로 유기적으로 연결하여 고도화된 태스크를 수행합니다.
# 1단계: 요약
summary = chain_summary.invoke({"text": long_text})
# 2단계: 1단계 결과로 번역
translation = chain_translate.invoke({"text": summary})
🔥 최종 핵심 요약
단순히 문장을 툭 던져서 답변을 받는 챗봇 형태의 가벼운 서비스라면 Gemini 공식 SDK만으로 충분하지만, "입력 데이터의 템플릿화(PromptTemplate), 출력의 구조화(JSON Parsing), 여러 AI 기능을 유기적으로 엮는 엔지니어링 파이프라인"을 안정적으로 구축해야 하는 백엔드/데이터 엔지니어링 실무 환경에서는 LangChain LCEL 패턴을 도입하는 것이 글로벌 표준 아키텍처입니다.
마무리
Gemini API 기본 패턴
from google import genai
from google.genai import types
client = genai.Client(api_key="KEY")
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="질문",
config=types.GenerateContentConfig(
system_instruction="역할",
temperature=0,
),
)
print(response.text)
LangChain LCEL 기본 패턴
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt = ChatPromptTemplate.from_messages([...])
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash")
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"변수": "값"})
AI_Agent/Text _Analysis_and_LLM/[BDA]_9주차_GeminiAPI_LangChain_실습.ipynb at main · 427paul/AI_Agent
Contribute to 427paul/AI_Agent development by creating an account on GitHub.
github.com
'AI Agent > 텍스트 분석과 LLM' 카테고리의 다른 글
| 8. GPT 모델 — 사전학습, 파인튜닝, 프롬프트 (0) | 2026.07.15 |
|---|---|
| 7. Transformer — Attention Is All You Need (0) | 2026.07.09 |
| 6. 텍스트 분석을 위한 딥러닝 기초 (1) | 2026.06.30 |
| 5. 단어 임베딩 — Word2Vec (0) | 2026.06.24 |
| 4. 텍스트 분류 — 긍정/부정 자동 판단 (0) | 2026.06.09 |