inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

2.1 LangChain vs LangGraph (feat. LangGraph 개념 설명)

AgentState의 messages 확인해주세요.

2

도비두바

작성한 질문수 1

0

강의에서

class AgentState(TypeDict):
    messages: list[Annotated[AnyMessage, add_messages]]

라고 하셨는데, 위와 같이 하면 AIMessage만 결과로 출력되게 된 걸로 보아 덮어진 것 같습니다.

 

class AgentState(TypedDict):
    messages: Annotated[list[AnyMessage], add_messages]

위와 같이

Annotated 가 밖으로 나와야 하는 것이 맞는지 확인해주세요.

이때는 결과가 HumanMessage, AIMessage 둘 다 출력되더라구요.

프롬프트엔지니어링 llm ai-agent langgraph mcp

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 도비두바님.

LangGraph를 활용한 AI Agent 개발 강의에서 AgentState 클래스 내의 messages 필드 정의에 대해 질문해 주셨군요. 두 가지 코드 예제를 비교하시면서 Annotated 사용 방식에 대해 의문을 가지신 것 같습니다.

차이점 분석

  1. 초기 방식:

    class AgentState(TypeDict):
        messages: list[Annotated[AnyMessage, add_messages]]
    
    • 이 방식에서는 list 타입이 Annotated 로 감싸져 있고, add_messages 가 각각의 AnyMessage 항목에 적용됩니다. Annotated 는 일반적으로 추가 메타데이터를 전달하기 위해 사용됩니다. 이 경우 AnyMessage 에서만 적용되는 것으로 보입니다.

    • 결과적으로, AIMessage 만 출력되는 이유는, add_messages 주석이 제대로 작동하지 않아 예상하지 못한 방식으로 메시지를 덮어쓸 수 있기 때문입니다.

  2. 수정된 방식:

    class AgentState(TypedDict):
        messages: Annotated[list[AnyMessage], add_messages]
    
    • 여기서는 Annotated 가 전체 리스트에 적용되므로, add_messages 주석이 리스트 전체에 영향을 미칩니다. 이 방식은 HumanMessageAIMessage 모두를 결과로 출력하게 해 줄 수 있습니다.

    • 즉, messages 리스트에 포함된 각 AnyMessageadd_messages 메타데이터와 함께 적절히 처리될 수 있도록 합니다.

결론

따라서, Annotated 를 리스트 전체에 적용하여 add_messages 를 사용하시려는 의도가 맞다면, 아래 수정된 방식이 적절해 보입니다. 각 메시지 타입을 포함하여 상태와 기록을 관리하려면 Annotatedlist 위에 위치시키는 것이 더 적합합니다.

이와 같은 코딩 방법의 차이는 타입 힌팅과 주석 사용의 차이에서 비롯된 것으로 보입니다.

추가적으로 참고할 수 있는 자료가 필요하시다면, 인프런 내의 유사한 토론 링크를 추천해드립니다:

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

2.3 Agentic RAG 관련 질문이 있습니다.

0

32

2

깃허브 레포지토리 확인 요청

0

47

2

제공해주신 레포가 Windows 환경에 너무 비친화적입니다.

0

79

2

마크다운을 텍스트 파일로 변환하기

0

79

1

max token을 제한하는게 왜 성능을 개선하게 되는걸까요?

0

78

2

pyzerox 유니코드 에러

0

99

2

영상 메타데이터 생성 관련 LLM 활용 질문

0

93

1

종합부동산세 부분 tool 사용 질문 드립니다.

0

90

2

uv sync 파이썬 버전문제 onnxruntime

-1

150

2

MCP를 활용해서 간단한 에이전트를 만들어보세요

0

124

1

PDF 형식

0

86

1

5.3 langchain-mcp-adpater를 활용한 MCP 도구 사용 tool_list 지연 사유

0

107

2

3.6 human_in_the_loop 3rd case

0

97

1

summary 를. 시스템메세지에 추가하는 부분에 관하여

0

100

3

병렬 처리 중 retrieve 관련 궁금한 사항

0

89

1

query 에 대한 answer 결과값이 나오지 않습니다.

0

109

2

사람과 관련된 표현이 없는데 rewrite 로 이동하지 않는경우

0

85

1

retriever 관련 질문

0

70

1

인터룹 관련 질문

0

52

2

2.4 Self-RAG 결과가 달라요!

0

91

2

md vs txt 차이..

0

190

2

OpenAI API 호출 때문에 발생하는 Error code: 429 문제

0

139

2

단순 도구 사용과 도구를 가진 에이전트를 사용하는 것의 차이가 궁금합니다.

0

95

1

LangChain과 LangGraph v1

0

144

1