콘텐츠로 이동

19. 반복문(While)과 File search

Tips

  • File Search는 가급적 노드를 생성하는 것 보다는 Agent의 Tool로 추가하는 것을 권장
  • 노드로 File Search를 구현할 경우 로직이 복잡해질 수 있음
  • 아래 실습 내용은 File Search 노드와 While 노드를 사용하는 방법에 대한 이해를 돕기 위한 예시임

실습 내용

워크플로우

workflow

Start

  • State variables
    • var1
      • Type: Boolean
      • Name: loop_continue
      • Default value: true
    • var2
      • Type: Number
      • Name: loop_count
      • Default value: 0
    • var3
      • Type: List
      • Name: search_results

While

  • Start 노드와 연결
  • Expression: state.loop_continue && state.loop_count < 5

    loop_continue 변수가 true이고, loop_count 변수가 5 미만인 동안 반복

Embedding 텍스트 생성 (Agent)

  • While 내부의 첫번째 노드
  • Configurations
    • Name: Embedding 텍스트 생성
    • Instructions:
      당신은 벡터 임베딩을 위한 텍스트를 생성해야 합니다.
      사용자의 질문을 참고하여 관련된 문서가 잘 검색되도록 하는 텍스트를 생성하세요.
      (문서가 잘 검색되도록 하는 텍스트 외에는 어떤 말도 쓰지마시오.)
      
    • Output format: Text
    • Display response in chat: False
    • Write to conversation history: False
  • Embedding 텍스트 생성 노드와 연결
  • Configurations
    • Vector store: AWS DeepRacer 개발 가이드를 업로드한 Vector store의 id를 입력
    • Max results: 3

      검색 결과 최대 3개 반환

    • Query: {{input.output_text}}

Set state

  • File Search 노드와 연결
  • variables
    • var1
      • Assign value: input.results
      • To variable: search_results

검색된 텍스트 결과 점검 (Agent)

  • Set state (from File Search) 노드와 연결
  • Configurations

    • Name: 검색된 텍스트 결과 점검
    • Instructions:
      아래 내용을 보고 사용자의 질문과 관련된 문서 내용이 검색되었는지 판단하시오.
      
      [사용자의 질문]
      {{workflow.input_as_text}} 
      
      [문서에서 검색된 결과]
      {{state.search_results}}
      
    • Output format: JSON

      • Properties
        • property 1
          • Name: is_relevant
          • Type: BOOL
          • Description: 사용자의 질문과 관련된 문서 내용이 검색되었는지 여부
    • Display response in chat: False

    • Write to conversation history: False

IF / else

  • 검색된 텍스트 결과 점검 노드와 연결
  • Condition 1
    • Case Name: 관련 있는 문서
    • Condition: input.output_parsed.is_relevant

Set state

  • IF / else 노드의 관련 있는 문서 케이스와 연결
  • variables
    • var1
      • Assign value: false
      • To variable: loop_continue

Set state (IF / else의 관련 없는 문서 케이스)

  • IF / else 노드의 관련 없는 문서 케이스와 연결
  • variables
    • var1
      • Assign value: state.loop_count + 1
      • To variable: loop_count

Agent

  • While 노드와 연결
  • Configurations
    • Instructions:
      아래 내용을 기반으로 답변하시오.
      
      [사용자의 질문과 관련된 문서 내용]
      {{state.search_results}}
      
    • Include chat history: True
    • Output format: Text
    • Display response in chat: True
    • Write to conversation history: True

Set state

  • Agent 노드와 연결
  • variables
    • var1
      • Assign value: true
      • To variable: loop_continue
    • var2
      • Assign value: 0
      • To variable: loop_count

지문 예시

  1. User: 딥레이서의 불빛 색깔이 의미하는 바는 무엇인가요?
  2. User: 2002년 월드컵 당시 한국의 날씨는 어땠나요? (검색된 문서 내용이 없으므로 5회 반복 후 종료)