본문 바로가기
AI/LangChain

[#LangChain] 04. 외부 모델(Gemini) 연동 및 활용

by dopal2 2026. 2. 26.
반응형

외부모델 연동부터 .env 환경 변수 관리까지

1. Gemini 사용 환경 구축

로컬 모델보다 뛰어난 추론 능력이 필요할 때 유용한 Google Gemini를 연동해 보겠습니다. 먼저 필요한 패키지를 설치합니다.

pip install langchain_google_genai

가용 모델 확인하기

사용 가능한 모델 리스트를 확인하여 내 환경에 맞는 모델명을 파악합니다.

import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")

for m in genai.list_models():
    if 'generateContent' in m.supported_generation_methods:
        print(m.name)
⚠️ 중요 알림: All support for the `google.generativeai` package has ended.
기존에 사용되는 'google.generativeai'패키지는 지원이 종료되어, 향후 업데이트를 위해 `google.genai` 패키지로 전환을 고려해야 합니다.

✅ 현재 사용 가능한 주요 모델 예시:
models/gemini-2.0-flash, models/gemini-pro-latest, models/gemini-3-flash-preview 등
00. 활용가능한 모델 목록

2. 기본 연동 테스트

Ollama와 유사한 방식으로 코드를 작성하여 정상적으로 답변이 오는지 확인합니다.

from langchain_google_genai import ChatGoogleGenerativeAI llm = ChatGoogleGenerativeAI( model="gemini-flash-latest", google_api_key="YOUR_API_KEY" ) print(llm.invoke("What is the capital of the moon?"))
답변이 출력되는 것을 확인할 수 있습니다.
content=[{'type': 'text', 'text': 'The Moon does not have a capital. \n\nThis is because the Moon is not a country or a sovereign state; it has no government, no permanent human population, and no political boundaries. \n\nUnder the **Outer Space Treaty of 1967**, which has been signed by all major spacefaring nations, no nation can claim sovereignty over the Moon or any other celestial body. It is considered the "province of all mankind."', 'extras': {'signature': 'EvQFCvEFAb4+9vutfA9pmUM+kLgcSIumb+0pfi+5ElWMQYMfL1GISknQai33z/h+DXwf/Bl+xgcQBz7bUzjVU7Kd6On0BNKramF4kr4TRvJHOP1oi8xGFn6jNwg120dqdXWSec7Nmolbh3h0IL9RM86NBrckzMhrUS89kVYRmHh58b1rzUPfbi8fStOzzuit36pnDYX73J6vwaCWuKbgo1ddJoJdjeASNAJg7UbzPT9ZutdeyLz1XUieAlaRYsb7CeC6xhLmjSosMuyHijgopS13EcWkXCsFCq5FPILII5e6SZdv34pyvUaXxwxGPazh4e4HAnKjQMLEJB2cjD0umYlSGcooo8o2hT4MkMCkWUZB+9Yc3AjXXgzHjDuatYh5EkRbchQxHcYSSnlAxgmLQLgt9R+eYQEHGzTyH4rjgLa/samgq4MUC0ucnzW11o3CHDJcu5zTal3uhOXLNKbt8qF1zOXiow9vLrwtXs59g/32MNqwvbIcK72OyeupHZ3/uVqMb4Pp5R7NjPF85rbwxNd/Po0DEJ3A10QaaAJSzvXHtgnZR/u4J/5bEd+meYnKuZvjPd8bEVRjvh+oS3ADAIu8goKk5ViUCq0YQ9p7JgrojhpTBmvdzd4nfjgBEA1oYC2a3pFyzW4ZXS2WiUc8ub9VcYdatRpPeRFPYizqRXTGkHysH2Dabc/6dX+s/94puv9EI7hmCDv1k/fdh4KIOS8gm3AYjgaf2/5ownUKR3sag+1p/7OUc0VrcGpwAj40GW6eVj+gjVQdz/z7a65K3la3ngFU2faS4ZoZzHc0pEgLQFrn3rPLd1cKz+HDKe7IzZwbu0OyD9IEjoDBf0Uzsb0msN5Fq5UXAzgzh7qlV07NJzoreouSML/2nDLJysuGZeeSgVwCQJhfh8Fl2bCPPS7IdzWPLVLjKbfUqRDPjwxnxLm6LaUTyVGfsZQk22L0oBCYne+dSaSO4b2VyUiqh68E0qPUKTdLyqK2j0NEHojP140imYVr'}}] additional_kwargs={} response_metadata={'finish_reason': 'STOP', 'model_name': 'gemini-3-flash-preview', 'safety_ratings': [], 'model_provider': 'google_genai'} id='lc_run--019c98e5-93c9-7c43-b763-e1b68225a4fc-0' tool_calls=[] invalid_tool_calls=[] usage_metadata={'input_tokens': 9, 'output_tokens': 264, 'total_tokens': 273, 'input_token_details': {'cache_read': 0}, 'output_token_details': {'reasoning': 174}}F

3. 환경 변수(.env)로 보안 강화하기

코드 내에 API Key를 직접 입력하는 것은 보안상 매우 위험합니다. .env 파일을 통해 관리해 보겠습니다.

Step 1. 라이브러리 설치 및 파일 생성

pip install python-dotenv를 통해 doenv 라이브러리를 설치합니다.
pip install python-dotenv

 

프로젝트 루트에 .env 파일을 만들고 아래 내용을 저장합니다.

GOOGLE_API_KEY=내_API_KEY_입력
GOOGLE_MODEL_NAME=gemini-2.0-flash

 

Step 2. 환경 변수 로드 및 테스트

import os
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI

load_dotenv()

llm = ChatGoogleGenerativeAI(
    model=os.getenv("GOOGLE_MODEL_NAME"),
    google_api_key=os.getenv("GOOGLE_API_KEY")
)

print(llm.invoke("What is the capital of the moon?"))

 

위 코드와 같이 실행하면 정상적으로 작동하는 것을 확인할 수 있습니다. 
💡 랭체인의 자동 감지 기능:
랭체인은 환경 변수에 GOOGLE_API_KEY가 설정되어 있다면, 코드에서 명시하지 않아도 자동으로 키를 찾아 사용합니다.
import os
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI

load_dotenv()

# 모델명도 환경 변수에서 가져오도록 설정
llm = ChatGoogleGenerativeAI(
    model=os.getenv("GOOGLE_MODEL_NAME") 
)

print(llm.invoke("What is the capital of the moon?"))​

 

또는 기본값 설정을 통해 활용할 수 있습니다.

import os
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI

load_dotenv()

target_model = os.getenv("GOOGLE_MODEL_NAME")

llm = ChatGoogleGenerativeAI(model=target_model )

print(llm.invoke("What is the capital of the moon?"))


위와 같이 훨씬 깔끔하게 코드를 작성할 수 있습니다.

02. 환경변수 설정 후 코드 작성


📝 마무리 및 향후 계획

지금까지 로컬 LLM 서버 구축부터 외부 API를 활용한 연동, 그리고 보안을 위한 환경 변수 설정까지 마쳤습니다. 이제 어떤 모델이든 자유롭게 랭체인에 연결할 준비가 끝났습니다.

다음 포스팅부터는 AI의 답변 품질을 결정짓는 핵심 기술인 프롬프트(Prompt) 작성 전략에 대해 본격적으로 학습해 보겠습니다!

반응형

댓글