해결된 질문
작성
·
76
0
강사님 안녕하세요!
엣지 연결 마치고 계속 테스트하는데 중간에 interrupt가 되지 않고 'attention is all you need'논문을 바로 긁어와서 요약을 합니다 ㅜ
def should_continue(state: MessagesState):
"""
주어진 state에 따라 다음 단계로 진행할지를 결정합니다.
Args:
state (AgentState): 메시지와 도구 호출 정보를 포함하는 state.
Returns:
Literal['tools', 'summarize_messages']: 다음 단계로 'tools' 또는 'summarize_messages'를 반환합니다.
"""
# state에서 메시지를 가져옵니다.
messages = state['messages']
# 마지막 AI 메시지를 확인합니다.
last_ai_message = messages[-1]
# 마지막 AI 메시지가 도구 호출을 포함하고 있는지 확인합니다.
if last_ai_message.tool_calls:
# 도구 호출이 있으면 'tools'를 반환합니다.
print('도구 호출이 있습니다 human_review로 이동합니다')
return 'human_review'
print('도구 호출이 없습니다 summarize_messages로 이동합니다')
# 도구 호출이 없으면 'summarize_messages'를 반환합니다.
return 'summarize_messages'
프린트 찍어보니 도구호출이 없습니다 로 바로 들어갑니다
그래서 쿼리를 '동탄역 맛집을 알려주세요' 하니
도구 호출이 있습니다. 하고 interrupt가 되더라구요
저 논문에 대한 정보를 LLM에서 이미 갖고있어서 Tool call을 안한거라고 보면 될까요?
답변 1
1
안녕하세요! 좋은 질문 감사합니다.
말씀하신 부분이 맞는 것 같습니다. 도구를 꼭 사용하길 희망하신다면 SystemMessage
를 선언하실 때 도구 사용을 꼭 해야한다고 명시하는 방법이 있을 것 같습니다
LLM이 도구를 사용하지 않고 직접 답변을 생성한다면, 토큰 사용량이 줄어들고, 답변이 더 빨리 나올거라서 사용자 경험 측면에서는 유리할 것 같아요. 하지만 사내 문서를 활용한 답변이 필요하시다거나, 개발하실 때 도구를 꼭 사용해야 한다고 판단하신다면 프롬프트에 도구 사용을 구체적으로 명시하는 편이 좋을 것 같습니다.