인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
summary 를. 시스템메세지에 추가하는 부분에 관하여
작성
·
27
·
수정됨
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 객체가 중복되어 붙을거 같아서요.
답변 2
1
아 아닙니다 강사님 코드를 잘못 읽었네요.. agent 함수내에서 messages는 새로운 리스트 객체를 참조하고 있었네요. 그래서 agent가 반복 호출되어도 systemMessage가 중복 누적되지 않는 것이었습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 유준모님. LangGraph를 활용한 강의 중 SystemMessage 의 반복 추가에 대한 질문을 주셨군요.
핵심 사항
질문에서 다루고 계신 부분에 대해 몇 가지 중요한 점을 정리해드리겠습니다.
문제 정의:
SystemMessage를 매번messages리스트의 앞부분에 추가하는 방식은, 에이전트가 호출될 때마다 동일한 시스템 메시지가 누적되는 구조입니다. 결과적으로, 반복적인 호출 시 동일한 내용의 시스템 메시지가 여러 번 추가될 수 있습니다.
예상되는 결과:
- 능동적인 반복 호출이 이루어지면, 중복된
SystemMessage객체가messages리스트에 누적될 것입니다. 이는 수신자 입장에서 필요 이상으로 많은 안내 메시지를 보게 될 수 있다는 것을 의미합니다.
- 능동적인 반복 호출이 이루어지면, 중복된
처리 방법:
- 중복된
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가 이미 포함되어 있는지를 확인하고, 중복된 메시지의 삽입을 방지합니다.- 중복된
추가 자료
이와 관련된 유사한 접근 방법이 논의된 자료를 확인해 보실 수 있습니다. 이러한 자료는 추가적인 학습에 도움을 줄 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





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