LangChain - Standard Message Content

TMT

https://blog.langchain.com/standard-message-content/

TLDR: 우리는 추론, 인용, 서버 사이드 도구 호출, 그리고 기타 최신 LLM 기능을 공급자 전반에 걸쳐 표준화하는 메시지 콘텐츠의 새로운 뷰를 도입했습니다. 이는 각 공급자의 최신 기능을 활용하면서도 추론 제공자에 구애받지 않는 애플리케이션을 더 쉽게 구축하도록 합니다. 이 기능은 기존 메시지 콘텐츠로부터 지연(lazy) 계산될 수 있으므로 완전히 하위 호환됩니다.

동기

LangChain의 핵심 강점 중 하나는 대형 언어 모델을 위한 “한 번 작성, 어디서나 실행” 추상화를 제공하는 것입니다. 이 추상화는 개발자가 코드를 재작성하지 않고도 서로 다른 LLM 공급자 간에 애플리케이션을 원활하게 전환할 수 있게 해줍니다.

OpenAI, Anthropic, Google Gemini 등 주요 추론 제공자가 제공하는 기능의 풍부함과 다양성이 최근 폭발적으로 증가했습니다. LLM은 이제 질의에 응답하기 위해 여러 구별된 단계를 수행할 수 있습니다. 예를 들어, 추론을 전개하고, 웹 검색과 코드 인터프리터를 호출하고, 인용과 잠재적으로 이미지 같은 멀티모달 데이터를 포함하는 최종 응답을 생성하는 것입니다. 각 공급자가 지원하는 기능의 집합은 유사하지만, 그들의 API는 서로 달라졌고, 호환성 레이어(각 공급자가 제공하는 Chat Completions API 등)는 제공자 고유 기능의 전체 집합을 지원하는 데 뒤처지거나 아예 지원하지 않는 경우가 일반적입니다.

LangChain 1.0의 표준 콘텐츠

우리는 최신 LLM 기능을 위한 새로운 표준 타입을 도입하고, 모든 LangChain 메시지 객체에 노출하여, 공급자에 구애받지 않는 애플리케이션을 더 쉽게 구축하면서도 사용 가능한 기능 지원을 포기하지 않도록 했습니다. 이러한 기능은 ‎⁠langchain⁠ 1.0에서 제공되며 PythonJS 모두에서 사용할 수 있습니다.

표준 콘텐츠 블록 은 동일한 능력이 공급자 간에 동일하게 표현되도록 보장합니다. 실제로, 이는 모든 LLM 공급자에 걸쳐 메시지 콘텐츠를 정규화하는 타입 지정된 데이터 구조의 집합입니다. 여기에는 다음이 포함됩니다:

  • 모델의 표준 텍스트 출력(인용 포함)
  • 모델의 추론 및 체인 오브 소트(chain-of-thought) 출력
  • 어떤 소스(URL, base64, 버킷 파일 ID)에서 온 이미지, 오디오, 비디오, 문서
  • 도구/함수 호출 및 실행
  • 제공자 특화 도구(내장 웹 검색 기능 및 코드 실행 포함)

상세

모든 LangChain 메시지 객체는 이제 기존 메시지 콘텐츠로부터 새로운 표현을 지연 로드하는 ‎⁠.content_blocks⁠ 속성을 구현합니다. 다음은 Anthropic의 Claude와 OpenAI의 Responses API의 결과를 고려한 예시입니다. 이 예에서는 그들의 추론 및 웹 검색 기능을 사용합니다. 원시 ‎⁠.content⁠는 제공자 고유 포맷을 그대로 전달합니다:

Anthropic:

from langchain.chat_models import init_chat_model

llm = init_chat_model(
    "anthropic:claude-sonnet-4-20250514",
    thinking={"type": "enabled", "budget_tokens": 5_000},
).bind_tools([
    {
        "type": "web_search_20250305",
        "name": "web_search",
        "max_uses": 1,
    }
])

response = llm.invoke("When was LangChain created?")

response.content
# [
#   {
#     "type": "thinking",
#     "thinking": "...",
#     "signature": "...",
#   },
#   {
#     "type": "server_tool_use",
#     "name": "web_search",
#     "input": {...},
#     "id": "...",
#   },
#   {
#     "type": "web_search_tool_result",
#     "content": [...],
#     "tool_use_id": "...",
#   }
#   {
#     "type": "text",
#     "text": "...",
#     "citations": [...],
#   }

OpenAI:

from langchain.chat_models import init_chat_model

llm = init_chat_model(
    "openai:gpt-5-nano",
    reasoning={"effort": "low", "summary": "auto"},
).bind_tools([{"type": "web_search_preview"}])

response = llm.invoke("When was LangChain created?")

response.content
# [
#   {
#     "type": "reasoning",
#     "summary": [...],
#     "id": "...",
#   },
#   {
#     "type": "web_search_call"
#     "action": {...},
#     "id": "...",
#     ...
#   },
#   {
#     "type": "text",
#     "text": "...",
#     "annotations": [...],
#     "id": "...",
#   }

이 응답들의 콘텐츠는 유사하지만, API의 작은 차이들이 두 공급자 간 교체 가능한 애플리케이션을 구축하는 데 누적적인 마찰을 더합니다.

새로운 ‎⁠.content_blocks⁠ 속성은 두 응답을 일관된 표현으로 파싱합니다:

response.content_blocks
# [
#   {
#     "type": "reasoning",
#     "reasoning": "...",
#   },
#   {
#     "type": "web_search_call",
#     "query": "...",
#     "id": "...",
#     "extras": {...},
#   },
#   {
#     "type": "web_search_result",
#     "urls": [...],
#     "id": "...",
#     "extras": {...},
#   },
#   {
#     "type": "text",
#     "text": "...",
#     "annotations": [...],
#   }

‎⁠.content_blocks⁠의 출력에는 추론, 인용, 웹 검색, 코드 인터프리터 호출을 위한 새로운 타입이 포함되며, 또한 클라이언트 사이드 도구 호출과 이미지, PDF 문서, 오디오 같은 멀티모달 데이터에 대한 LangChain 타입도 포함됩니다.

표준 콘텐츠 블록은 현재 알파로 제공되며 다음을 포함합니다

  • 채팅 컴플리션 API를 구현하는 공급자(OpenAI 포함)
  • OpenAI Responses API
  • Anthropic(Claude)

‎⁠langchain⁠ 1.0은 모든 주요 공급자를 지원할 것입니다.

하위 호환성

  • 중단적인 변경 없음; 기존 LangChain 애플리케이션과 100% 호환
  • ‎⁠.content_blocks⁠는 캐시에 저장된 레거시를 포함한 모든 메시지 타입에서 작동

앞으로의 방향

표준 콘텐츠 블록은 더 신뢰할 수 있고 유지관리 가능한 LLM 애플리케이션을 향한 근본적인 단계입니다.

공급자 간 일관된 인터페이스를 제공함으로써, 다음을 할 수 있습니다:

  • 안심하고 구축: 타입 안정성이 프로덕션 이전에 오류를 잡습니다
  • 공급자 간 확장: 애플리케이션 로직을 재작성하는 데 시간을 들이지 않고 모델을 교체
  • 애플리케이션 미래 대비: 새로운 제공자 기능이 기존 코드를 깨뜨리지 않고 즉시 작동

바로 사용해 보시겠어요? 우리의 마이그레이션 가이드기술 문서 를 확인하세요.

Edit this page

On this Page