inflearn logo
강의

Course

Instructor

AI Agent Development Using LangGraph (feat. MCP)

How to Manage the History of 3.5 Agent

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

70

작성자 없음

0 asked

0



 agent(state:AgentState) ->AgentState: 
    messages =state['messages']
    summary = state.get('summary',None)
    if summary:
        messages =[SystemMessage(content='Here is the summary of the earil   er conversation : {summary}')]+messages
    response = llm_with_tools.invoke(messages) 
    return {'messages':[response]}

안녕하세요 강사님, 강의 재밌게 듣고 있습니다.

수강중 궁금한 사항이 있어 질문 남깁니다.

위와 같이 코드를 알려주셨는데요,

이런 흐름이라면, messages 에 동일한 내용의 SystemMessage가 여러번 들어가게되는 걸까요?

예를 들어 사용자 질의 한개를 처리하는데,

agent <-> tool 간의 반복 작업이 3번 있었다면

agent 가 3번 호출될 때마다 messages 리스트 앞에 동일한 SystemMessage 객체가 중복되어 붙을거 같아서요.

 

 

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

Answer 3

1

hellonewworld

아 아닙니다 강사님 코드를 잘못 읽었네요.. agent 함수내에서 messages는 새로운 리스트 객체를 참조하고 있었네요. 그래서 agent가 반복 호출되어도 systemMessage가 중복 누적되지 않는 것이었습니다.

0

jasonkang

답변을 달려고 들어왔는데 파악하셨군요!

0

fnfgame938

맞습니다, 지금 구조라면 agent()가 다시 호출될 때마다 현재 턴의 messages 앞에 같은 요약용 SystemMessage를 계속 덧붙이게 됩니다. 보통은 state["messages"] 자체를 직접 늘리지 않도록 분리해서 LLM 호출용 입력만 임시로 만들거나, 요약 메시지가 이미 들어있는지 체크해서 한 번만 붙이도록 처리합니다.

https://www.inflearn.com/en/community/questions/1761567/summary-%EB%A5%BC- fnf

 

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 유준모님. LangGraph를 활용한 강의 중 SystemMessage 의 반복 추가에 대한 질문을 주셨군요.

핵심 사항

질문에서 다루고 계신 부분에 대해 몇 가지 중요한 점을 정리해드리겠습니다.

  1. 문제 정의:

    • SystemMessage 를 매번 messages 리스트의 앞부분에 추가하는 방식은, 에이전트가 호출될 때마다 동일한 시스템 메시지가 누적되는 구조입니다. 결과적으로, 반복적인 호출 시 동일한 내용의 시스템 메시지가 여러 번 추가될 수 있습니다.
  2. 예상되는 결과:

    • 능동적인 반복 호출이 이루어지면, 중복된 SystemMessage 객체가 messages 리스트에 누적될 것입니다. 이는 수신자 입장에서 필요 이상으로 많은 안내 메시지를 보게 될 수 있다는 것을 의미합니다.
  3. 처리 방법:

    • 중복된 SystemMessage 를 방지하려면, 추가하기 전에 이미 messages 리스트에 해당 메시지가 포함되어 있는지 확인하는 로직이 필요합니다.
    • 예를 들어, 시스템 메시지가 리스트에 없을 경우에만 추가하는 조건문을 삽입합니다:
    if summary and not any(isinstance(msg, SystemMessage) and 'Here is the summary' in msg.content for msg in messages):
       messages = [SystemMessage(content=f'Here is the summary of the earlier conversation: {summary}')] + messages
    

    이 코드는 SystemMessage 가 이미 포함되어 있는지를 확인하고, 중복된 메시지의 삽입을 방지합니다.

추가 자료

이와 관련된 유사한 접근 방법이 논의된 자료를 확인해 보실 수 있습니다. 이러한 자료는 추가적인 학습에 도움을 줄 수 있습니다:

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

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

0

11

1

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

0

42

2

pyzerox 유니코드 에러

0

75

2

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

0

72

1

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

0

74

2

uv sync 파이썬 버전문제 onnxruntime

-1

106

2

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

0

97

1

PDF 형식

0

66

1

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

0

91

2

3.6 human_in_the_loop 3rd case

0

81

1

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

0

76

1

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

0

96

2

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

0

77

1

retriever 관련 질문

0

65

1

인터룹 관련 질문

0

49

2

2.4 Self-RAG 결과가 달라요!

0

78

2

md vs txt 차이..

0

140

2

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

0

115

2

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

0

88

1

LangChain과 LangGraph v1

0

137

1

2.4 강의 관련 질문(답변을 검증하는 self rag)

0

75

2

후속강의 문의

0

74

2

3.6 강의 관련 질문(interrupt 관련)

0

51

1

그래프 구현 조언 부탁드립니다!

0

77

2