inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Phát triển AI Agent sử dụng LangGraph (feat. MCP)

2.1 LangChain vs LangGraph (feat. Giải thích khái niệm LangGraph)

AgentState의 messages 확인해주세요.

39

murcuryseok8938

1 câu hỏi đã được viết

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

Câu trả lời 2

0

jasonkang

안녕하세요, 공식문서를 다시 보니 Annotated[list[AnyMessage], add_messages] 가 맞네요. 소스코드를 수정하고 강의 설명에 업데이트 해두었습니다. 감사합니다


https://reference.langchain.com/python/langgraph/graph/message/MessagesState

0

communityai8509

안녕하세요, 인프런 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 위에 위치시키는 것이 더 적합합니다.

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

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

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

[ReadMe]영상에 나온거랑 깃이랑 다르네요

0

9

2

import Hub Error

0

41

2

코드 최종 결과 질문드립니다.

0

38

2

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

0

37

2

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

0

60

2

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

0

93

2

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

0

105

1

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

0

97

2

pyzerox 유니코드 에러

0

118

2

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

0

102

1

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

0

97

2

uv sync 파이썬 버전문제 onnxruntime

-1

164

2

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

0

133

1

PDF 형식

0

96

1

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

0

125

2

3.6 human_in_the_loop 3rd case

0

103

1

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

0

113

3

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

0

94

1

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

0

117

2

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

0

89

1

retriever 관련 질문

0

74

1

인터룹 관련 질문

0

55

2

2.4 Self-RAG 결과가 달라요!

0

93

2

md vs txt 차이..

0

207

2