LangChain과 LangGraph: 더 스마트한 AI 워크플로우 구축을 위한 초보자 가이드
인공지능은 빠르게 움직이고 있다.
매주 대규모 언어 모델로 구동되는 앱을 더 쉽게 구축할 수 있는 새로운 도구가 등장합니다.
그러나 많은 초보자들은 여전히 한 가지 질문에 갇혀 있습니다. AI 애플리케이션의 로직을 어떻게 구성합니까? 프롬프트, 메모리, 도구, API를 깔끔하게 연결하려면 어떻게 해야 할까요?
다음과 같은 인기 있는 오픈 소스 프레임워크가 바로 여기에 있습니다. 랭체인 그리고 랭그래프 들어와.
둘 다 동일한 생태계의 일부입니다. 이는 바퀴를 다시 개발하지 않고도 복잡한 AI 워크플로를 구축하는 데 도움이 되도록 설계되었습니다.
LangChain은 체인이라고 불리는 일련의 단계를 구축하는 데 중점을 두는 반면, LangGraph는 메모리, 분기 및 피드백 루프를 추가하여 AI를 더욱 지능적이고 유연하게 만드는 방식으로 한 단계 더 발전합니다.
이 가이드는 이러한 도구의 기능, 차이점, 도구를 사용하여 자신만의 AI 프로젝트를 구축하는 방법을 이해하는 데 도움이 됩니다.
랭체인이란 무엇인가요?
LangChain은 언어 모델 기반 애플리케이션을 구축하는 데 도움이 되는 Python 및 JavaScript 프레임워크입니다. GPT, 데이터 소스, 도구와 같은 모델을 단일 흐름으로 연결하기 위한 구조를 제공합니다.
긴 프롬프트 템플릿이나 하드 코딩 논리를 작성하는 대신 체인, 도구, 에이전트와 같은 구성 요소를 사용합니다.
간단한 예는 프롬프트를 서로 연결하는 것입니다.
예를 들어 먼저 모델에 텍스트를 요약하도록 요청한 다음 요약을 사용하여 제목을 생성할 수 있습니다. LangChain을 사용하면 두 단계를 모두 정의하고 코드로 연결할 수 있습니다.
다음은 Python의 기본 예입니다.
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
prompt = PromptTemplate.from_template("Summarize the following text:\n{text}")
chain = LLMChain(prompt=prompt, llm=llm)
result = chain.run({"text": "LangChain helps developers build AI apps faster."})
print(result)
이 간단한 체인은 텍스트를 가져와서 OpenAI 모델을 통해 실행하여 요약을 얻습니다. 두 번째 체인과 같은 더 많은 단계를 추가하여 해당 요약을 제목이나 질문으로 바꿀 수 있습니다.
LangChain은 원시 API 로직을 관리하지 않고도 워크플로를 구축할 수 있도록 프롬프트 템플릿, 모델, 검색기 및 도구에 대한 모듈을 제공합니다.
전체 LangChain 문서는 다음과 같습니다.
LangChain이 충분하지 않은 이유
LangChain을 사용하면 직선적인 작업 흐름을 쉽게 구축할 수 있습니다.
그러나 대부분의 실제 응용 프로그램은 선형이 아닙니다. 챗봇, 요약기 또는 자율 에이전트를 구축할 때 루프, 메모리 및 조건이 필요한 경우가 많습니다.
예를 들어 AI가 잘못된 가정을 한 경우 다시 시도하기를 원할 수 있습니다. 더 많은 데이터가 필요하면 검색 도구를 호출해야 합니다. 또는 사용자가 상황을 변경하면 AI는 앞서 논의한 내용을 기억해야 합니다.
LangChain의 체인과 에이전트는 이 중 일부를 수행할 수 있지만 흐름을 시각화하고 관리하기가 어려웠습니다. 결정을 처리하려면 중첩된 체인을 작성하거나 콜백을 사용해야 했습니다.
개발자들은 AI 시스템이 실제로 생각하는 방식을 표현하는 더 나은 방법을 원했습니다. 직선이 아니라 출력이 다른 경로로 이어질 수 있는 그래프입니다.
이것이 LangGraph의 탄생으로 이어졌습니다.
랭그래프란 무엇인가요?
LangGraph는 AI 워크플로우에 그래프 기반 접근 방식을 도입하는 LangChain의 확장입니다.
한 방향으로 단계를 연결하는 대신 LangGraph를 사용하면 순서도와 같은 노드와 에지를 정의할 수 있습니다. 각 노드는 작업, 작업 또는 모델 호출을 나타낼 수 있습니다.
이 구조에서는 루프, 분기 및 병렬 경로가 허용됩니다. 모델이 추론하고, 결정하고, 행동하는 에이전트와 같은 시스템을 구축하는 데 적합합니다.
다음은 간단한 LangGraph 설정의 예입니다.
from langgraph.graph import StateGraph, END
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain.agents import Tool
def multiply(a: int, b: int):
    return a * b
tools = [Tool(name="multiply", func=multiply, description="Multiply two numbers")]
llm = ChatOpenAI(model="gpt-4o-mini")
agent_executor = create_react_agent(llm, tools)
graph = StateGraph()
graph.add_node("agent", agent_executor)
graph.set_entry_point("agent")
graph.add_edge("agent", END)
app = graph.compile()
response = app.invoke({"input": "Use the multiply tool to get 8 times 7"})
print(response)
이 예에서는 기본 에이전트 그래프를 보여줍니다.
AI는 요청을 받고 그에 대한 이유를 설명하고 도구 사용을 결정하고 작업을 완료합니다. AI가 재시도하거나, API를 호출하거나, 새로운 정보를 가져올 수 있는 더 복잡한 그래프로 이를 확장하는 것을 상상할 수 있습니다.
LangGraph를 사용하면 AI가 상태 간에 이동하는 방식을 완벽하게 제어할 수 있습니다. 각 노드에는 조건이 있을 수 있습니다. 예를 들어 답변이 불완전한 경우 해당 답변을 다른 노드로 다시 보내 구체화할 수 있습니다.
따라서 LangGraph는 문서 분석 봇, 코드 검토자 또는 연구 보조자와 같은 여러 추론 단계가 필요한 시스템을 구축하는 데 이상적입니다.
전체 LangGraph 문서는 다음과 같습니다.
LangChain 대 LangGraph
LangChain과 LangGraph는 동일한 기반을 공유하지만 작업 흐름에 다르게 접근합니다.
LangChain은 선형입니다. 각 체인이나 에이전트는 한 단계에서 다음 단계로 순서대로 이동합니다. 특히 신속한 엔지니어링, 검색 증강 생성 및 구조화된 파이프라인의 경우 시작하기가 더 간단합니다.
LangGraph는 동적입니다. 이는 워크플로우를 루프, 분기 및 자체 수정이 가능한 그래프로 나타냅니다. 추론, 계획 또는 기억이 필요한 에이전트를 구축할 때 더욱 강력합니다.
좋은 비유는 이것이다. LangChain은 작업 목록을 순서대로 작성하는 것과 같습니다. LangGraph는 결정이 다른 행동으로 이어지거나 이전 단계로 돌아갈 수 있는 흐름도를 그리는 것과 같습니다.
대부분의 개발자는 기본 사항을 배우기 위해 LangChain으로 시작한 다음, 보다 대화형이거나 자율적인 AI 시스템을 구축하고 싶을 때 LangGraph로 이동합니다.
각각을 사용하는 경우
텍스트 요약기, 챗봇, 문서 검색기와 같은 간단한 도구를 구축하고 있다면 LangChain이면 충분합니다. 시작하기 쉽고 GPT, Anthropic Claude 및 Gemini와 같은 인기 모델과 잘 통합됩니다.
다단계 에이전트나 생각하고 적응하는 앱을 구축하고 싶다면 LangGraph를 선택하세요. AI가 다양한 결과에 반응하는 방식을 정의할 수 있으며 재시도 논리, 컨텍스트 전환 및 피드백 루프를 더 효과적으로 제어할 수 있습니다.
실제로 많은 개발자가 두 가지를 결합합니다. LangChain은 빌딩 블록을 제공하고 LangGraph는 이러한 블록이 상호 작용하는 방식을 구성합니다.
메모리와 지속성 추가
LangChain과 LangGraph는 모두 메모리를 지원하므로 AI가 상호 작용 간의 컨텍스트를 기억할 수 있습니다. 예를 들어, 사용자가 이전에 말한 내용을 기억하는 챗봇은 보다 자연스럽게 응답할 수 있습니다.
LangChain에서는 다음을 사용할 수 있습니다. ConversationBufferMemory 또는 ConversationSummaryMemory. LangGraph에서는 메모리를 그래프 상태의 일부로 포함하여 노드 간에 지속되도록 할 수 있습니다.
다음은 LangChain의 메모리에 대한 간단한 예입니다.
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain_openai import ChatOpenAI
memory = ConversationBufferMemory()
llm = ChatOpenAI(model="gpt-4o-mini")
conversation = ConversationChain(llm=llm, memory=memory)
conversation.predict(input="Hello, I am Manish.")
conversation.predict(input="What did I just tell you?")
모델은 첫 번째 메시지에서 자신을 소개했다는 사실을 알고 응답합니다. 이와 동일한 개념은 LangGraph 내에서도 작동하지만 더 큰 규모에서는 메모리가 그래프의 일부인 상태 저장 워크플로를 가능하게 합니다.
LangSmith를 사용한 모니터링 및 디버깅
LangSmith는 LangChain 생태계의 또 다른 중요한 도구입니다. AI 애플리케이션을 시각화, 모니터링 및 디버깅하는 데 도움이 됩니다.
워크플로를 구축할 때 모델이 어떻게 작동하는지, 비용은 얼마나 되는지, 어디에서 문제가 발생하는지 확인하고 싶은 경우가 많습니다.
LangSmith는 체인과 에이전트의 모든 통화를 기록합니다. 입력 및 출력 데이터, 타이밍, 토큰 사용 및 오류를 볼 수 있습니다. 여러 실행에서 시스템의 성능을 보여주는 대시보드를 제공합니다.
환경 변수를 설정하여 LangSmith를 쉽게 통합할 수 있습니다.
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="your_api_key_here"
그러면 실행하는 모든 LangChain 또는 LangGraph 프로세스가 자동으로 LangSmith에 기록됩니다. 이를 통해 개발자는 버그를 찾고, 프롬프트를 최적화하고, 워크플로가 각 단계에서 어떻게 작동하는지 이해하는 데 도움이 됩니다.
Langchain과 LangGraph는 오픈 소스인 반면 Langsmith는 유료 플랫폼입니다. Langsmith는 AI 워크플로를 구축하는 데 꼭 필요한 도구는 아니지만 있으면 좋은 도구입니다.
LangChain 생태계
LangChain은 단지 하나의 라이브러리가 아닙니다. 함께 작동하는 도구 생태계로 성장했습니다.
- 랭체인 코어: 체인, 프롬프트 및 메모리의 기본 프레임워크입니다.
 - 랭그래프: 적응형 워크플로 구축을 위한 그래프 기반 확장입니다.
 - 랭스미스: AI 앱을 위한 디버깅 및 모니터링 플랫폼입니다.
 - 랭서브: 하나의 명령으로 체인과 그래프를 API로 변환할 수 있는 배포 레이어입니다.
 
이러한 도구는 함께 언어 모델 애플리케이션을 구축, 관리 및 배포하기 위한 완전한 스택을 형성합니다. 간단한 체인으로 시작하여 이를 그래프 기반 시스템으로 발전시키고 LangSmith로 테스트한 후 LangServe를 사용하여 배포할 수 있습니다.
결론
LangChain과 LangGraph를 사용하면 프롬프트에서 생산 가능한 AI 시스템으로 더 쉽게 이동할 수 있습니다. LangChain은 모델, 데이터 및 도구를 연결하는 선형 흐름을 구축하는 데 도움이 됩니다. LangGraph를 사용하면 추론하고 학습하는 적응형 지능형 워크플로를 구축하여 더 많은 발전을 이룰 수 있습니다.
초보자의 경우 LangChain으로 시작하는 것이 언어 모델이 다른 구성 요소와 상호 작용하는 방법을 이해하는 가장 좋은 방법입니다. 프로젝트가 성장함에 따라 LangGraph는 복잡한 논리와 장기 상태를 처리할 수 있는 유연성을 제공합니다.
챗봇, 에이전트, 지식 보조자를 구축하는 경우 이러한 도구를 사용하면 아이디어를 더 빠르고 안정적으로 구현하는 데 도움이 됩니다.
:::tip 이 기사가 즐거웠기를 바랍니다. 무료 뉴스레터에 가입하세요 TuringTalks.ai AI에 대한 더 많은 실습 튜토리얼을 확인하세요.
:::
\
								


                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
Post Comment