LangChain¶
SchemaRouter는 LangChain 런타임의 대체제가 아니라 선택적으로 추가할 수 있는 실행 경계로 통합됩니다.
설치¶
배포 패키지를 사용하는 경우:
저장소에서 직접 개발하는 경우:
핵심 패키지는 LangChain에 의존하지 않습니다.
기존 LangChain 도구 가져오기¶
기존 LangChain BaseTool 또는 StructuredTool 객체를 SchemaRouter의 정본 기능 모델로 컴파일하여 일반적인 실행 파이프라인에 연결할 수 있습니다.
from langchain_community.tools import DuckDuckGoSearchRun
from schemarouter import SchemaRouter
router = SchemaRouter()
key = router.add_langchain_tool(
DuckDuckGoSearchRun(),
provider="duckduckgo",
read_only=True,
remote=True,
)
가져오기 기능은 도구가 선언한 입력 스키마를 읽고, 출력 스키마가 선언되어 있으면 그것도 사용합니다. 구조화된 결과 목록은 레코드 형태를 보존합니다. 예를 들어 results: list[{title, url}]의 항목이 선언되어 있으면 results[].title과 results[].url 필드를 서로 무관한 배열로 분리하지 않고 그대로 노출할 수 있습니다.
도구 설명을 근거로 읽기·쓰기 권한을 추론하지 않습니다. read_only, destructive, remote, provider, access_mode는 신뢰된 로컬 환경에서 분류해야 합니다.
이 방식은 공급자별로 SchemaRouter 전용 어댑터를 하나씩 작성하지 않아도 기존 LangChain 생태계의 도구를 SchemaRouter 기능으로 사용할 수 있게 합니다. 웹 검색, 학술 검색, 금융, 데이터베이스, SaaS 도구 등이 해당합니다.
등록된 엔드포인트 내보내기¶
등록된 각 엔드포인트는 SchemaRouter 입력 스키마를 유지하는 LangChain StructuredTool이 됩니다.
엔드포인트 하나만 내보내려면:
from schemarouter.integrations import to_langchain_tool
tool = to_langchain_tool(
router,
"weather",
"current",
)
AuthorizationPolicy를 구성했다면 호스트 애플리케이션에서 검증한 동일한 신뢰 실행 설정을 전달합니다.
from schemarouter import PrincipalContext, RunConfig
employee = PrincipalContext(
subject="alice",
roles=("employee",),
attributes={"department": "sales"},
)
tools = to_langchain_tools(
router,
run_config=RunConfig(principal=employee),
)
Principal에게 노출이 허가된 엔드포인트만 내보냅니다. LangChain에 도구 스키마를 제공하기 전에 DataScope에 따른 필드·파라미터 투영을 적용합니다. 호출은 SchemaRouter.execute(..., config=...)로 다시 들어오기 때문에 신뢰된 행·테넌트 필터와 실행 시점 권한 관리가 유지됩니다.
실시간 내보내기 계약¶
StructuredTool은 내보낸 시점에 해당 주체에게 허가된 엔드포인트 스키마를 캡처합니다. 호출할 때마다 SchemaRouter가 현재 엔드포인트를 다시 해석하고 권한 및 DataScope 보기를 재적용합니다. 스키마, 도구 지문 또는 허가된 투영 계약이 변경되었다면 실행 전에 StaleExportedToolError로 실패합니다.
스키마를 새로고침하거나 권한 정책이 변경된 경우에는 to_langchain_tool(...)을 통해 다시 내보내거나 to_langchain_tools(...)로 카탈로그를 재구성하십시오. 오래된 프레임워크 에이전트가 이전보다 권한이 넓거나 다른 라이브 계약을 조용히 실행하는 일을 막습니다.
실행 가능한 예제¶
저장소에 최소한의 실행 가능한 통합 예제가 있습니다.
CI에서는 별도의 통합 테스트 외에도 이 예제를 실행해 문서의 연동 방법이 계속 동작하는지 확인합니다.
실행은 계속 SchemaRouter를 경유합니다¶
이 통합은 원래 전송 계층을 직접 호출하지 않습니다.
LangChain StructuredTool
-> SchemaRouter ToolCall
-> current schema validation
-> AuthorizationPolicy / DataScope
-> ExecutionPolicy
-> binding-drift check
-> trusted invoker
-> output validation
따라서 LangChain 에이전트도 SchemaRouter를 직접 사용하는 경우와 같은 안전하게 거부하는 실행 계약의 보호를 받습니다.
책임 분리¶
권장하는 책임 구성은 다음과 같습니다.
| 관심 영역 | 담당 주체 |
|---|---|
| 에이전트 그래프 및 대화 | LangChain 또는 LangGraph |
| 모델 호출 | 상위 프레임워크·애플리케이션 |
| 도구 카탈로그 스키마 | SchemaRouter |
| 엔드포인트·인자·필드 실행 계획 | SchemaRouter |
| 부작용 정책 | SchemaRouter 로컬 정책 |
| 도구 실행 검증 | SchemaRouter |
| 체크포인트 및 메모리 | 상위 프레임워크 |
통합을 위해 SchemaRouter가 그래프 런타임을 중복 구현해서는 안 됩니다.
직접적인 StateGraph 통합은 LangGraph 문서를 참고하십시오.
패키징¶
현재 브리지는 기본 배포판의 langchain extra로 유지합니다. 별도의 langchain-schemarouter 패키지는 독립적인 릴리스 주기, 의존성 부담의 실질적 증가, 상위 생태계의 요구가 있을 때까지 보류합니다.
지원 범위와 유지보수 정책은 호환성 테스트를 참고하십시오.