강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

김재연님의 프로필 이미지
김재연

작성한 질문수

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

Agent 관련 질문

작성

·

201

0

안녕하세요. LangGraph 공부하면서 질문이 생겨 이렇게 질문을 남기게 되었습니다.

 

  1. add_messages를 사용하여 데이터를 append하거나, MessageState를 사용하여 append 하거나 결국 같은 결과를 얻을 것 같은데 정확한 차이가 궁금합니다.

# 기본 State 초기화 방법을 사용
class GraphState(TypeDict):
	messages : Annotated[list[AnyMessage], add_messages]

-> MemorySaver 기능도 있다.

from langgraph.graph import MessageState

class GraphState(MessageState):
	# messages 키는 기본 제공 - 다른 키를 추가하고 싶을 경우 아래 주석과 같이 적용 가능
	documents : List[Document]
	grade : float
	num_generation : int
  1. create_react_agent 관련 질문

https://rudaks.tistory.com/entry/langgraph-Multi-agent-supervisor

위 URL만 보면 create_react_agent는 conditional_edge의 역할을 똑똑한 에이전트가 대체한다는 느낌인 것 같은데 맞을까요?

 

답변 부탁드리겠습니다.

 

감사합니다.

답변 3

1

판다스 스튜디오님의 프로필 이미지
판다스 스튜디오
지식공유자

안녕하세요. 판다스 스튜디오입니다.

1. add_messages는 TypeDict를 상속해서 구현되는 GraphState에서 메시지를 추가할 때 사용하는 메소드입니다. 이와 같은 GraphState를 상속해서 구현되는 MessageState는 messages 필드가 기본으로 제공되기 때문에 메시지 관리를 위해 별도의 메소드 구현을 할 필요가 없는 장점이 있습니다.

2. create_react_agent는 ReAct (Reasoning and Acting) 패턴을 구현한 에이전트를 생성하는 기능으로, 단순히 조건에 따른 라우팅 로직을 제공 conditional_edge 보다는 복잡한 의사결정이 가능합니다.

 

감사합니다.

0

TOOLS간에 우선순위는 LLM 에 의해서만 정의 되는지요

판다스 스튜디오님의 프로필 이미지
판다스 스튜디오
지식공유자

안녕하세요. 판다스 스튜디오입니다.

LangGraph에서 도구(Tools) 간의 우선순위는 기본적으로 LLM이 컨텍스트와 사용자의 요청을 기반으로 결정합니다.


하지만, 개발자가 직접 라우팅 로직을 설계하거나 LLM에 입력하는 프롬프트에 도구 사용 순서를 직접 명시하는 방법 등을 사용하여 별도로 정의할 수 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김재연님.

LangGraph 관련하여 질문해 주셔서 감사합니다. 두 가지 질문에 대해 설명 드리겠습니다.

  1. add_messagesMessageState의 차이점:

    • add_messages는 LangGraph에서 메시지를 추가할 때 주로 사용하는 기능으로, 메시지 흐름을 다루기 위해 설계되었습니다. 이 기능은 메시지가 추가될 때 특정한 규칙이나 변형이 필요할 때 유용합니다.

    • MessageState는 LangGraph에서 상태 관리 기능을 제공합니다. 상태 관리는 메시지 외에도 여러 속성을 포함할 수 있고, 상태의 지속성과 관리 측면에서 이점을 제공합니다. 예를 들어, documents, grade, num_generation 등의 추가적인 상태 정보를 함께 관리하는 데 유용하게 사용됩니다.

간단히 말해, add_messages는 메시지 자체의 처리를 위주로 하고, MessageState는 보다 폭넓은 상태 관리를 수행합니다.

  1. create_react_agentconditional_edge의 관계:

    • create_react_agent는 주어진 환경에서 조건에 따라 동적으로 동작하는 에이전트를 생성합니다. 이를 통해 조건부 논리를 코드에서 구현할 수 있는 기능을 제공합니다.

    • 반면, conditional_edge는 그래프 구조상에서 조건에 따라 경로를 변경하거나 분기할 수 있도록 하는 기능입니다.

두 개념은 목적이 비슷할 수 있으나, 접근 방식이 다릅니다. create_react_agent는 복잡한 논리와 적응형 동작을 가능하게 하고, conditional_edge는 조건에 따른 경로 지정을 위해 사용됩니다. 따라서, 전체적인 기능은 유사하지만 사용하는 방식과 범위가 다릅니다.

추가적으로, 해당 링크를 통해 더 자세히 확인하실 수도 있습니다: LangGraph Multi-agent Supervisor

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김재연님의 프로필 이미지
김재연

작성한 질문수

질문하기