LangChain artifact 분리
·
AI4C
툴 실행 결과 중 일부는 모델에는 숨기고, 체인이나 후속 툴에서는 활용할 수 있도록 따로 관리하고 싶을 수 있다.예를 들어, 전체 Document 대신 모델에는 요약만 보여주고, 실제 데이터는 내부적으로 유지하고 활용하고자 할 수 있다. Tool과 Tool Message 인터페이스를 사용하면, 모델에게 보여줄 툴 출력 부분(TooleMessage.content)과 모델 외부에서 사용할 출력 부분(ToolMessage.artifact)을 구분할 수 있다. 해당 기능은 langchain-core 0.2.19 이상 버전에서 도입되었으며, 사용하려면 최신 버전이 설치되어 있어야 한다.툴에서 메시지 내용과 그 외 데이터를 구분해서 반환하고 싶다면 툴을 정의할 때 response_format="content_and..
LangChain Handling Tool Errors
·
AI4C
LangChain의 에이전트가 툴 사용 중 에러를 만나도 멈추지 않고 적절히 처리하고 계속 실행되게 하려면, 에러 핸들링 전략이 필요하다. Tool Exception일반적인 raise Exception이 아니라 Tool Exception을 던져야 LangChain이 에이전트 차원에서 인식할 수 있다. 툴 객체 생성 시 handle_tool_error 옵션을 반드시 줘야 한다. handle_tool_error=False(default)이면 ToolException이 던져져도 그냥 예외로 끝나게 된다.from langchain_core.tools import StructuredToolfrom langchain_core.tools import ToolExceptiondef get_weather(city: st..
LangChain tool 등록
·
AI4C
Creating tools from functions@tool decoratormultiply 함수를 LangChain이 쓸 수 있도록 툴로 등록한다. LangChain은 함수를 내부적으로 Tool 객체로 감싸면서 이름, 설명, 입력 파라미터 정보를 자동으로 추출한다. @tool 데코레이터는 기본적으로 함수명을 툴 이름으로 사용하고, 함수에 붙은 docstring을 툴의 description으로 사용한다. 또한 LangChain은 이 함수의 파라미터 시그니처를 읽어서, 각 인자의 이름, 타입, 설명 등을 JSON-like 구조로 자동 분석하여 툴의 입력 스키마를 구성한다.from langchain_core.tools import tool@tooldef multiply(a: int, b: int) -> i..
LangGraph Persistence Layer 동작 원리
·
AI4C
Persistent Layer 역할LangGraph에는 내장된 Persistence Layer가 있어 체크포인터를 통해 상태를 지속적으로 저장한다. Graph 실행 중 각 단계마다 그래프 상태를 스냅샷으로 저장하며, 실행 후에도 해당 상태를 유지/조회할 수 있게 해준다. 이 기능을 통해 대화 메모리, 실행 재개, 시간 여행 등의 고급 기능을 구현할 수 있다.MemorySaver는 체크포인터 인터페이스의 구현체 중 하나로 일종의 메모리 기반 Persistence Layer 역할을 수행한다.checkpointer = MemorySaver()graph = workflow.compile(checkpointer=checkpointer) 스레드 ID로 사용자 세션 매핑LangGraph는 각 대화 세션을 스레드라는 ..
LangGraph 코드 예제
·
AI4C
LangGraph 코드 예제예제 시나리오는 에이전트가 어떤 결정 노드에서 멈출지 계속할지를 판단하고, 멈추지 않을 경우 툴 실행 노드(tools)를 호출한 뒤 다시 결정 노드로 돌아오는 루프를 구현하는 것이다. 노드는 간단히 print로 동작을 표시하고, 상태의 all_actions에 수행한 액션을 기록하도록 하겠다.from langgraph.graph import StateGraph, ENDfrom typing import TypedDict, List, Annotatedimport operator# 1. 상태 정의 및 그래프 초기화class State(TypedDict): input: str all_actions: Annotated[List[str], operator.add]graph = S..
LangGraph 아키텍처
·
AI4C
LangGraph 개요LangChain이 체인과 에이전트 개념을 통해 언어 모델 활용을 지원했다면, LangGraph는 노드와 엣지로 이루어진 그래프 구조를 통해 복잡한 워크 플로우를 구현한다. LangCahin의 기존 체인은 주로 비순환 유향 그래프(DAG) 형태였지만, LangGraph를 사용하면 루프를 포함한 순환 그래프 형태의 논리 흐름을 손쉽게 구축할 수 있다.이러한 사이클 지원을 통해 에이전트가 LLM을 반복 호출하며 추론하는 상태 기계(state machine)를 구현할 수 있으며, 개발자는 워크플로우의 흐름과 상태를 세밀하게 제어할 수 있다. 또한 LangGraph는 중앙 집중식 상태 관리와 Persistence(상태 지속) 레이어를 제공하여 대화 메모리 및 Human-in-the-loop..
LangGraph Agent 실행
·
AI4C
LangGraph Agent 코드LangGraph 프레임워크는 대화형 에이전트를 그래프 형태의 워크플로우로 구성하도록 설계되었다. 각 노드는 개별 기능이나 단계를 수행하며, 노드들이 연결되어 전체 대화 흐름(그래프)을 형성한다. 예를 들어, 하나의 노드는 사용자 입력을 처리하고, 다음 노드는 AI 모델을 통해 응답을 생성하며, 또 다른 노드는 그 응답을 사용자에게 출력하는 식이다. 가장 기본적인 상호작용 기능에 초점을 맞춘 간단한 버전으로, 사용자 입력을 받아 응답을 생성하는 최소한의 흐름만 구현되어 있다. 더보기simple_agent.pyimport sysimport ossys.path.insert(0, os.path.abspath("."))from typing import Annotatedfrom t..