간소화된 패키지
langchain 패키지 네임스페이스는 v1에서 에이전트의 핵심 빌딩 블록에 집중하도록 크게 축소되었습니다. 간소화된 패키지는 코어 기능을 더 쉽게 발견하고 사용할 수 있도록 합니다.
Namespace
| Module | What’s available | Notes |
|---|---|---|
langchain.agents | create_agent, AgentState | 핵심 에이전트 생성 기능 |
langchain.messages | Message 타입, content blocks, trim_messages | langchain-core에서 재-export됨 |
langchain.tools | @tool, BaseTool, 주입 헬퍼 | langchain-core에서 재-export됨 |
langchain.chat_models | init_chat_model, BaseChatModel | 통합된 모델 초기화 |
langchain.embeddings | init_embeddings, Embeddings | Embedding 모델 |
langchain-classic
langchain 패키지에서 아래 항목들을 사용 중이었다면 langchain-classic을 설치하고 import를 업데이트해야 합니다:
- 레거시 체인 (
LLMChain,ConversationChain등) - Retriever (예:
MultiQueryRetriever또는 기존langchain.retrievers모듈의 모든 것) - Indexing API
- Hub 모듈(프롬프트를 프로그래밍 방식으로 관리)
- Embeddings 모듈(예:
CacheBackedEmbeddings및 community embeddings) langchain-community재-export- 기타 deprecated 기능
create_agent로 마이그레이션
v1.0 이전에는 에이전트를 만들 때 langgraph.prebuilt.create_react_agent 사용을 권장했습니다. 이제는 에이전트를 만들 때 langchain.agents.create_agent 사용을 권장합니다.
아래 표는 create_react_agent에서 create_agent로 변경된 기능을 요약합니다:
| Section | TL;DR - What’s changed |
|---|---|
| Import path | 패키지가 langgraph.prebuilt에서 langchain.agents로 이동 |
| Prompts | 파라미터가 system_prompt로 변경, 동적 prompts는 middleware 사용 |
| Pre-model hook | before_model 메서드를 가진 middleware로 대체 |
| Post-model hook | after_model 메서드를 가진 middleware로 대체 |
| Custom state | TypedDict만 지원, state_schema 또는 middleware로 정의 가능 |
| Model | middleware를 통한 동적 선택, 사전 바인딩된 모델은 미지원 |
| Tools | Tool 에러 처리 로직이 wrap_tool_call이 있는 middleware로 이동 |
| Structured output | prompted output 제거, ToolStrategy/ProviderStrategy 사용 |
| Streaming node name | 노드 이름이 "agent"에서 "model"로 변경 |
| Runtime context | config["configurable"] 대신 context 인자를 통한 의존성 주입 |
| Namespace | 에이전트 빌딩 블록에 집중하도록 간소화, 레거시 코드는 langchain-classic로 이동 |
Import path
에이전트 prebuilt의 import 경로가langgraph.prebuilt에서 langchain.agents로 변경되었습니다.
함수 이름도 create_react_agent에서 create_agent로 변경되었습니다:
Prompts
정적 프롬프트 이름 변경
prompt 파라미터가 system_prompt로 변경되었습니다:
SystemMessage를 문자열로
시스템 프롬프트에서 SystemMessage 객체를 사용 중이라면 문자열 content를 추출하세요:
동적 프롬프트
동적 프롬프트는 핵심 컨텍스트 엔지니어링 패턴으로, 현재 대화 state에 따라 모델에 전달하는 내용을 적응시킵니다. 이를 위해@dynamic_prompt 데코레이터를 사용하세요:
Pre-model hook
Pre-model hook은 이제before_model 메서드를 가진 middleware로 구현됩니다.
이 새로운 패턴은 확장성이 높아 모델 호출 전에 실행할 여러 middleware를 정의할 수 있으며,
여러 에이전트에서 공통 패턴을 재사용할 수 있습니다.
일반적인 사용 사례:
- 대화 이력 요약
- 메시지 트리밍
- PII 마스킹 같은 입력 가드레일
Post-model hook
Post-model hook은 이제after_model 메서드를 가진 middleware로 구현됩니다.
이 새로운 패턴은 확장성이 높아 모델 호출 후에 실행할 여러 middleware를 정의할 수 있으며,
여러 에이전트에서 공통 패턴을 재사용할 수 있습니다.
일반적인 사용 사례:
- Human in the loop
- 출력 가드레일
Custom state
Custom state는 기본 에이전트 state에 추가 필드를 확장합니다. 커스텀 state를 정의하는 방법은 두 가지입니다:create_agent의state_schema로 - 도구에서 사용하는 state에 최적- middleware로 - 특정 middleware hooks와 해당 middleware에 연결된 도구가 관리하는 state에 최적
middleware로 custom state를 정의하면 관련 middleware와 도구에 개념적으로 범위가 맞춰져 유지되므로,
create_agent의 state_schema로 정의하는 것보다 선호됩니다.state_schema는 여전히 create_agent에서 하위 호환을 위해 지원됩니다.state_schema로 state 정의
커스텀 state를 도구에서 접근해야 할 때 state_schema 파라미터를 사용하세요:
middleware로 state 정의
Middleware는state_schema 속성을 설정하여 custom state를 정의할 수도 있습니다.
이는 state 확장을 관련 middleware와 도구에 개념적으로 범위를 맞출 수 있도록 돕습니다.
State 타입 제한
create_agent는 state 스키마로 TypedDict만 지원합니다. Pydantic 모델과 dataclass는 더 이상 지원되지 않습니다.
BaseModel 상속이나 dataclass 데코레이터 대신 langchain.agents.AgentState를 상속하세요.
검증이 필요하다면 middleware hooks에서 처리하세요.
Model
동적 모델 선택을 사용하면 런타임 context(예: 작업 복잡도, 비용 제약, 사용자 선호)에 따라 다른 모델을 선택할 수 있습니다.langgraph-prebuilt의 v0.6에서 릴리스된 create_react_agent는 model 파라미터에 전달한 callable을 통해 동적 모델/도구 선택을 지원했습니다.
이 기능은 v1에서 middleware 인터페이스로 이식되었습니다.
동적 모델 선택
사전 바인딩된 모델
구조화된 출력 지원을 강화하기 위해,create_agent는 도구나 설정이 사전 바인딩된 모델을 더 이상 허용하지 않습니다:
동적 모델 함수는 구조화된 출력을 사용하지 않는 경우 사전 바인딩된 모델을 반환할 수 있습니다.
Tools
create_agent의 tools 인자는 다음의 리스트를 받을 수 있습니다:
- LangChain
BaseTool인스턴스(@tool로 데코레이트된 함수) - 적절한 타입 힌트와 docstring을 갖춘 callable 객체(함수)
- 내장 provider 도구를 나타내는
dict
ToolNode 인스턴스를 허용하지 않습니다.
도구 에러 처리
이제wrap_tool_call 메서드를 구현한 middleware로 도구 에러 처리 방식을 구성할 수 있습니다.
Structured output
노드 변경
이전에는 구조화된 출력이 메인 에이전트와 분리된 노드에서 생성되었습니다. 이제는 그렇지 않습니다. 메인 루프에서 구조화된 출력을 생성하여 비용과 지연을 줄입니다.도구/프로바이더 전략
v1에서는 두 가지 새로운 구조화된 출력 전략이 도입되었습니다:ToolStrategy는 인공적인 도구 호출을 사용하여 구조화된 출력을 생성ProviderStrategy는 provider 고유의 구조화된 출력 생성을 사용
Prompted output 제거
response_format 인자를 통한 prompted output은 더 이상 지원되지 않습니다. 인공 도구 호출이나 provider 고유의 구조화된 출력과 같은 전략에 비해, prompted output은 특히 신뢰성이 높지 않은 것으로 나타났습니다.
Streaming node name 변경
에이전트에서 이벤트를 스트리밍할 때, 노드 이름이 노드의 목적을 더 잘 반영하도록"agent"에서 "model"로 변경되었습니다.
Runtime context
에이전트를 호출할 때, 보통 두 가지 유형의 데이터를 전달해야 할 수 있습니다:- 대화 내에서 지속적으로 변하는 동적 state(예: 메시지 이력)
- 대화 중 변하지 않는 정적 context(예: 사용자 메타데이터)
invoke와 stream에 context 파라미터를 설정하여 정적 context를 지원합니다.
기존
config["configurable"] 패턴은 하위 호환을 위해 계속 동작하지만, 새로운 애플리케이션 또는 v1로 마이그레이션하는 애플리케이션에서는 새로운 context 파라미터 사용을 권장합니다.표준 콘텐츠
v1에서는 메시지가 provider-agnostic 표준 content blocks를 지원합니다. provider 간 일관되고 타입이 지정된 보기를 위해 @[message.content_blocks][content_blocks]를 통해 접근하세요. 기존 message.content 필드는 문자열 또는 provider 고유의 구조에 대해 변경되지 않습니다.
변경 사항
- 정규화된 content에 대한 새로운
content_blocks메시지 속성 추가 - Messages에 문서화된 표준화된 블록 형태
LC_OUTPUT_VERSION=v1또는output_version="v1"을 통해 표준 블록을content로 직렬화하는 옵션
표준화된 콘텐츠 읽기
멀티모달 메시지 만들기
블록 형태 예시
표준 콘텐츠 직렬화
표준 content blocks는 기본적으로content 속성에 직렬화되지 않습니다. content 속성에서 표준 content blocks에 접근해야 하는 경우(예: 클라이언트로 메시지를 보낼 때), 이를 content로 직렬화하도록 옵트인할 수 있습니다.
더 알아보기: Messages, Standard content blocks, Multimodal.
간소화된 패키지
langchain 패키지 네임스페이스는 v1에서 에이전트의 핵심 빌딩 블록에 집중하도록 크게 축소되었습니다. 간소화된 패키지는 코어 기능을 더 쉽게 발견하고 사용할 수 있도록 합니다.
Namespace
| Module | What’s available | Notes |
|---|---|---|
langchain.agents | create_agent, AgentState | 핵심 에이전트 생성 기능 |
langchain.messages | Message 타입, content blocks, trim_messages | langchain-core에서 재-export됨 |
langchain.tools | @tool, BaseTool, 주입 헬퍼 | langchain-core에서 재-export됨 |
langchain.chat_models | init_chat_model, BaseChatModel | 통합된 모델 초기화 |
langchain.embeddings | init_embeddings, Embeddings | Embedding 모델 |
langchain-classic
langchain 패키지에서 아래 항목들을 사용 중이었다면 langchain-classic을 설치하고 import를 업데이트해야 합니다:
- 레거시 체인 (
LLMChain,ConversationChain등) - Retriever (예:
MultiQueryRetriever또는 기존langchain.retrievers모듈의 모든 것) - Indexing API
- Hub 모듈(프롬프트를 프로그래밍 방식으로 관리)
- Embeddings 모듈(예:
CacheBackedEmbeddings및 community embeddings) langchain-community재-export- 기타 deprecated 기능
변경 사항(호환성 파괴)
Python 3.9 지원 중단
모든 LangChain 패키지는 이제 Python 3.10 이상이 필요합니다. Python 3.9는 2025년 10월에 수명 종료(EOL)에 도달합니다.Chat 모델 반환 타입 업데이트
Chat 모델 호출의 반환 타입 시그니처가BaseMessage에서 AIMessage로 수정되었습니다. bind_tools를 구현하는 커스텀 chat 모델은 반환 시그니처를 업데이트해야 합니다:
OpenAI Responses API의 기본 메시지 형식
Responses API와 상호작용할 때,langchain-openai는 이제 응답 항목을 메시지 content에 저장하는 것이 기본입니다. 이전 동작을 복원하려면 LC_OUTPUT_VERSION 환경 변수를 v0로 설정하거나, ChatOpenAI 인스턴스화 시 output_version="v0"를 지정하세요.
langchain-anthropic의 기본 max_tokens
langchain-anthropic의 max_tokens 파라미터는 이제 선택한 모델에 따라 더 높은 값으로 기본 설정됩니다(이전 기본값 1024 대신). 이전 기본값에 의존하던 경우, 명시적으로 max_tokens=1024로 설정하세요.
레거시 코드의 langchain-classic 이동
표준 인터페이스와 에이전트의 초점을 벗어나는 기존 기능은 langchain-classic 패키지로 이동했습니다. 코어 langchain 패키지에서 제공되는 항목과 langchain-classic으로 이동한 항목에 대한 자세한 내용은 간소화된 네임스페이스 섹션을 참조하세요.
Deprecated API 제거
이미 deprecated 되었고 1.0에서 제거 예정이었던 메서드, 함수 및 기타 객체가 삭제되었습니다. 대체 API는 이전 버전의 deprecation 공지를 확인하세요..text()는 이제 프로퍼티
메시지 객체에서 .text() 메서드를 사용할 때 괄호를 제거해야 합니다:
.text())은 계속 동작하지만 이제 경고를 발생시킵니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.