콘텐츠로 건너뛰기
H-A

Hangbok Archive

  • Wiki
  • NEWS
  • Wiki
  • NEWS

AI 코딩 에이전트 Wiki

  • AI 코딩 에이전트
  • AI 하네스
    • AI 하네스란 무엇인가
    • AI 코딩 에이전트의 주요 구성요소
    • Claude Skills
    • Claude Memory
    • Claude Hook
    • Claude Subagents
    • Claude Rules (Claude.md)
    • 참고) Claude Hook Matcher
  • Claude Code
    • Claude Code 입문
    • VS Code에서 Claude Code 사용하기
    • settings.json으로 권한과 실행 환경 제어하기

LangChain/LangGraph

  • 채팅 시작하기
    • LangChain • LangGraph wiki

OpenSearch

  • OpenSearch wiki
View Categories
  • Home
  • wiki
  • init_chat_model

init_chat_model

윤후 이
Updated on 5월 28, 2026

6 min read

init_chat_model로 시작하기 #

LangChain을 처음 쓰다 보면 프로바이더마다 다른 클래스를 import하는 일이 생깁니다.

# 🔴 과거 방식: 프로바이더마다 다른 클래스
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI

openai_model = ChatOpenAI(model="gpt-4.1")
anthropic_model = ChatAnthropic(model="claude-sonnet-4-5-20250929")
google_model = ChatGoogleGenerativeAI(model="gemini-2.5-flash-lite")

모델을 바꿀 때마다 import 문도, 클래스 이름도, 파라미터 구조도 달라집니다.

init_chat_model은 이 불편함을 해소하기 위해 도입된 통합 팩토리 함수입니다.

💡 LangChain v1 공식 권장 방식

LangChain 공식 문서는 init_chat_model을 “The easiest way to get started with a standalone model” 로 소개하며, v1부터 표준 진입점으로 권장합니다. 프로바이더 전환이 쉽고, 런타임에 모델을 동적으로 변경할 수 있어 프로덕션 환경에 특히 유용합니다.

1. 기본 사용법 #

모델 이름 하나만 넘기면 됩니다.

from langchain.chat_models import init_chat_model

# OPENAI_API_KEY 환경변수가 설정되어 있으면 바로 사용 가능
model = init_chat_model("gpt-4.1")

response = model.invoke("한국의 수도는 어디인가요?")
print(response.content)  # 서울입니다.

ChatOpenAI, ChatAnthropic 같은 클래스 이름을 외울 필요 없이, 모델 이름만 알면 됩니다.

2. 다양한 프로바이더 사용하기 #

프로바이더를 지정하는 방법은 두 가지입니다.

방법 A — 프로바이더:모델명 형식

from langchain.chat_models import init_chat_model

# gpt- 접두사는 자동으로 OpenAI로 인식
openai_model = init_chat_model("gpt-4.1")
# claude- 접두사는 자동으로 Anthropic으로 인식
claude_model = init_chat_model("claude-sonnet-4-5-20250929")
# 콜론(:)으로 프로바이더를 명시
gemini_model = init_chat_model("google_genai:gemini-2.5-flash-lite")

방법 B — model_provider 파라미터

# AWS Bedrock처럼 자동 감지가 안 되는 경우
bedrock_model = init_chat_model(
    "anthropic.claude-3-5-sonnet-20240620-v1:0",
    model_provider="bedrock_converse"
)

지원 프로바이더 목록 #

프로바이더설치 패키지필요 환경변수모델 예시
OpenAIlangchain-openaiOPENAI_API_KEYgpt-4.1, gpt-4.1-mini
Anthropiclangchain-anthropicANTHROPIC_API_KEYclaude-sonnet-4-5-20250929
Googlelangchain-google-genaiGOOGLE_API_KEYgoogle_genai:gemini-2.5-flash-lite
AWS Bedrocklangchain-awsAWS 자격증명bedrock_converse:anthropic.claude-3-5-sonnet
Azure OpenAIlangchain-openaiAZURE_OPENAI_API_KEYazure_openai:gpt-4

3. 파라미터 설정 #

temperature, max_tokens 등 기존 클래스에서 쓰던 파라미터를 그대로 사용할 수 있습니다.

from langchain.chat_models import init_chat_model

model = init_chat_model(
    "gpt-4.1",
    temperature=0.7,     # 창의성 조절 (0~1)
    max_tokens=1000      # 최대 응답 토큰 수
)

response = model.invoke("짧은 SF 소설의 도입부를 써주세요.")
print(response.content)

4. 런타임에 모델 바꾸기 #

init_chat_model의 핵심 기능입니다. 코드 수정 없이 호출 시점에 모델을 바꿀 수 있습니다.

from langchain.chat_models import init_chat_model

# 모델명 없이 생성 → 호출 시 지정
configurable_model = init_chat_model(temperature=0)

# 같은 인스턴스로 GPT 호출
response_gpt = configurable_model.invoke(
    "당신의 이름은 무엇인가요?",
    config={"configurable": {"model": "gpt-4.1-nano"}}
)

# 같은 인스턴스로 Claude 호출
response_claude = configurable_model.invoke(
    "당신의 이름은 무엇인가요?",
    config={"configurable": {"model": "claude-sonnet-4-5-20250929"}}
)

print(f"GPT 응답:    {response_gpt.content}")
print(f"Claude 응답: {response_claude.content}")

이 패턴은 A/B 테스트, 모델 성능 비교, 사용자별 모델 선택 시나리오에서 유용합니다.

5. 고급: 여러 모델을 체인에서 독립적으로 설정 #

하나의 체인 안에 모델이 여러 개라면, configurable_fields와 config_prefix로 각각 다른 설정을 주입할 수 있습니다.

from langchain.chat_models import init_chat_model

# 요약 전용 모델 (낮은 temperature)
summary_model = init_chat_model(
    model="gpt-4.1-mini",
    temperature=0,
    configurable_fields=("model", "model_provider", "temperature", "max_tokens"),
    config_prefix="summary"   # config 키 앞에 붙을 접두사
)

# 창작 전용 모델 (높은 temperature)
creative_model = init_chat_model(
    model="gpt-4.1",
    temperature=0.9,
    configurable_fields=("model", "model_provider", "temperature"),
    config_prefix="creative"
)

# 런타임에 summary_model만 Claude로 교체, temperature도 조정
response = summary_model.invoke(
    "다음 회의록을 3줄로 요약해주세요: ...",
    config={
        "configurable": {
            "summary_model": "claude-sonnet-4-5-20250929",
            "summary_temperature": 0.2,
            "summary_max_tokens": 500
        }
    }
)
print(response.content)

config_prefix 덕분에 summary_model, creative_model 설정이 서로 충돌하지 않습니다.

6. 실무 패턴: 환경변수로 모델 분기 #

개발·스테이징·프로덕션 환경마다 다른 모델을 쓰는 가장 간단한 방법입니다.

import os
from langchain.chat_models import init_chat_model

# 환경변수가 없으면 기본값으로 저렴한 모델 사용
MODEL_NAME = os.getenv("LLM_MODEL", "gpt-4.1-mini")

model = init_chat_model(MODEL_NAME, temperature=0)
response = model.invoke("이번 주 할 일 목록을 정리해줘.")
print(response.content)
# 개발 환경 (.env 또는 shell)
export LLM_MODEL="gpt-4.1-mini"

# 프로덕션 환경
export LLM_MODEL="gpt-4.1"

코드는 그대로 두고, 환경변수 하나만 바꾸면 됩니다.

개별 클래스 방식 vs init_chat_model #

항목개별 클래스 (ChatOpenAI 등)init_chat_model (v1 권장)
import프로바이더마다 별도 importfrom langchain.chat_models import init_chat_model 하나
프로바이더 전환클래스·파라미터 모두 수정모델명 문자열만 변경
런타임 설정불가config로 동적 변경
여러 모델 관리인스턴스를 각각 따로 관리config_prefix로 한 곳에서 관리
적합한 상황단일 프로바이더 고정 사용멀티 프로바이더, A/B 테스트, 환경별 분기

글이 도움이 되셨나요?
공유하기
  • Facebook
  • X
  • LinkedIn
  • Pinterest
Updated on 5월 28, 2026
View Categories
  • Home
  • wiki
  • 채팅 시작하기

채팅 시작하기

윤후 이
Updated on 5월 28, 2026

< 1 min read

글이 도움이 되셨나요?
공유하기
  • Facebook
  • X
  • LinkedIn
  • Pinterest
Updated on 5월 28, 2026

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Hangbok Archive

모든 권리 보유