Get Started

추론 행동 노드 사용하기

추론 행동 노드 사용하기

추론 행동 노드 사용하기

응용 가이드의 튜토리얼은 에이전트리아(Agentria)를 통해 구성할 수 있는 보다 다양한 워크플로 제작 과정을 다룹니다.

본 튜토리얼은 리액트(ReAct) 노드를 사용해 에이전트(Agent)를 구성하고 챗 테스트(Chat Test)를 진행합니다.

이를 통해 스스로 판단하고 실행하는 리액트 에이전트 워크플로(Workflow)를 만들어 볼 수 있습니다.


리액트 노드


리액트 노드는 언어 모델의 추론과 행동 연구를 기반으로 구현된 노드입니다.

리액트 노드는 연결된 리액트 도구(Tools) 중에서 적절한 노드를 선택하고 스스로 판단하여 실행합니다.


연구 논문은 다음 링크의 PDF를 참고하시길 바랍니다.




사전 준비


시작을 위해, 에이전트리아에서 프로젝트(Project)를 생성한 후, 에이전트 캔버스(Canvas)로 진입합니다.

캔버스 진입 절차는 3단계 핵심 가이드의 1단계(프로젝트 생성 및 컴포저 선택)를 참고하시기 바랍니다.


본 튜토리얼을 완료하면 다음과 같은 작업을 수행할 수 있습니다.

  1. 리액트 노드 사용하기

  2. 노드 두 개 이상 연결하기

  3. 리액트 도구 노드 연결하기

  4. 에이전트 워크플로 구성하기

  5. 챗 테스트를 통해 워크플로 실행 결과 검증하기


1단계: 인풋 변수 선언



에이전트리아 캔버스에는 기본적으로 스타트 노드(Start Node)엔드 노드(End Node)가 하나씩 배치되어 있습니다.


  • 스타트 노드는 전체 흐름을 시작합니다.

  • 엔드 노드는 전체 흐름을 종료합니다.


따라서 ‘리액트 에이전트’ 워크플로를 구성하기 위해서는 먼저 스타트 노드에서 필요한 변수를 선언해야 합니다.

스타트 노드를 더블 클릭하면 노드 편집기가 팝업 형태로 열리며, 이곳에서 자료형과 이름, 설명을 설정하여 변수를 선언할 수 있습니다.



에이전트 스타트 노드는 챗 테스트를 위해 인풋 변수가 기본값으로 설정되어 있습니다.

임의로 필요한 변수를 추가할 수 있습니다.

본 튜토리얼에서는 추가 변수 설정 없이 기본 변수만 사용합니다.

다시 캔버스로 돌아갑니다.


2단계: 드래그 앤 드롭으로 노드 추가



스스로 판단하고 실행할 노드를 추가할 차례입니다.

리액트(ReAct) 노드를 사용하면 사용자의 에이전트가 사용자의 입력 정보를 기억할 수 있습니다.

캔버스 하단의 +노드 추가(Add Node) 버튼을 클릭하여, AI Agent 카테고리에서 리액트 노드를 드래그 앤 드롭(Drag and drop) 방식으로 배치합니다.


3단계: 리액트 도구 노드 추가



리액트 노드는 연결한 도구 중에서 작업에 필요한 도구를 선택하고 실행합니다.

도구 노드로 사용할 노드를 추가합니다.

본 튜토리얼은 다음 세 가지 노드를 사용합니다.


  • 웹 도구(Web Tools) : DuckDuckGo 웹 서치(Web Search) 노드

  • 어빌리티(Ability)

  • AI 에이전트(Agent) : 장기 기억 메모리(Long-term Memory Reader) 노드


어빌리티 노드는 기존에 만들어 둔 어빌리티를 API로 배포한 후에 불러와 사용할 수 있습니다.

본 튜토리얼은 AI 노드 활용하기 워크플로를 사용합니다.


4단계: 엣지로 노드 연결하기


1) 기본 구조



스타트 노드에서 입력받은 변수들을 리액트 노드에서 사용하기 위해서는 두 노드를 연결해야 합니다.

이 연결선을 엣지(Edge)라고 부릅니다.

스타트 노드의 오른쪽에 있는 아웃 핀(Out-Pin)을 리액트 노드 왼쪽에 있는 인 핀(In-Pin)과 엣지로 연결하면, 스타트 노드의 입력값이 리액트 노드로 전달됩니다.


2) 리액트 구조



리액트 노드는 리액트 도구를 연결하여 어떤 도구를 사용할지 판단하고 실행합니다.

리액트 노드는 아웃 핀 아래에 툴 핀(Tool-Pin)이 있습니다.

툴 핀과 각 도구 노드의 인 핀을 연결합니다.


5단계: 도구 노드 설정


도구 노드는 단일 노드만 가능합니다.

여러 단계의 흐름을 도구화하고 싶다면 어빌리티 형태로 만들어 노드를 단일화 해야 합니다.


리액트 노드는 도구 노드의 이름과 설명을 기반으로 사용 여부를 판단합니다.

따라서 노드의 이름과 설명을 자세하고 명확하게 작성할수록 성능을 기대할 수 있습니다.



노드에 마우스를 올리고 편집 아이콘을 클릭하면 노드 제목과 설명을 수정할 수 있습니다.

각 노드에 적절한 이름과 설명을 추가합니다.

예시:


  • DuckDuckGo Web Search Node

    • Use this when you need to search the web.

  • Today’s Fortune Ability Node

    • Use this ability when you want to generate today’s fortune. It serves as a tool for a ReAct Agent, implemented in the form of an ability node.

  • Retrieve Long-term Memory

    • Retrieve the stored memory by topic to summarize previous conversations for the purpose of grounding the user's input or thoughts. If the previous conversation doesn't have the information you need, you can fill in the gaps in long-term memory. Query must be input in the same language as user input.



6단계: 리액트 노드 변수 바인딩



에이전트리아에서는 별도의 코드를 작성하지 않고, 드래그 앤 드롭으로 변수를 손쉽게 연결할 수 있습니다.


  • user_input: input_message

  • chat_histories: input_files



7단계: 도구 노드 변수 바인딩


각 노드의 어댑터 변수에 인풋 변수를 연결합니다.


1) DuckDuckGo 웹 검색 노드



  • search_query: input_message



2) 어빌리티 노드 (AI 노드 활용하기)



  • Name: input_message

  • BirthDay: input_message



3) 장기 기억 메모리 노드



  • embedding_model: input_message

  • query: input_message



8단계: 엔드 노드 연결하기



이제 생성된 리액트 아웃풋을 엔드 노드로 전달합니다.

다시 캔버스로 돌아와서 리액트 노드와 엔드 노드를 엣지로 연결합니다.

엔드 노드를 더블클릭하여 노드 편집기를 열면 기본값으로 String 타입의 output_message 어댑터 변수를 확인할 수 있습니다.

여기에 리액트 노드에서 생성한 final_answer 변수를 선택 또는 드래그앤 드롭 방식으로 연결합니다.

이로써 ‘리액트 노드를 활용한 판단형 에이전트’ 워크플로가 완성되었습니다.


9단계: 챗 테스트로 워크플로 점검하기



캔버스 우측 하단에서 CHAT TEST 버튼을 클릭하여 완성된 전체 워크플로를 실행할 수 있습니다.

에이전트 테스트는 대화 형식으로 진행됩니다.

원활한 상호작용이 이루어지는지 점검하며 노드를 수정하고 기능을 향상할 수 있습니다.


오늘의 운세를 확인하기 위해 메시지를 전송합니다.

예시:

내 이름은 홍길동이고, 내 생일은 1999년 10월 10일이야. 내 이름과 생일에 기반해서 오늘의 운세를 알려줘.

운세의 정의를 검색해줘.


10단계: 대화 생성 과정 확인



에이전트 챗 테스트는 에이전트의 대화 생성 로직을 확인할 수 있습니다.

에이전트의 답변을 클릭하면 우측에 답변 생성 과정이 담긴 노드별 로직이 나옵니다.

해당 기능은 에이전트의 세부 성능 개선 작업에 활용할 수 있습니다.


리액트 노드 > 아웃풋 변수 > reasonings 에서 리액트 노드가 스스로 생각하고 판단하고 있음을 확인할 수 있습니다.


1) 어빌리티 노드 사용



리액트 노드가 사용자 메시지를 오늘의 운세를 생성해달라는 요청으로 인식합니다.

추론과 행동의 과정으로 어빌리티 노드를 사용해 첫 번째 메시지에 대한 작업을 수행합니다.


2) 웹 서치 노드 사용



리액트 노드가 사용자 메시지를 운세의 정의를 검색해달라는 요청으로 인식합니다.

추론과 행동의 과정으로 웹 서치 노드를 사용해 두 번째 메시지에 대한 작업을 수행합니다.


다음 단계



🎉 축하합니다! 에이전트리아를 사용해 ‘리액트 에이전트’를 완성했습니다.

이제 챗 테스트에서 다양한 메시지를 입력해 결과를 확인해보고, 노드를 수정하며 워크플로의 성능을 개선해 보세요.


에이전트리아는 아이디어를 현실로 바꾸는 가능성의 공간입니다.

당신의 상상력으로 워크플로는 무한히 확장될 수 있습니다.



  • 어빌리티 예제가 궁금하다면 입문 가이드 페이지를 확인하세요.

  • 더 많은 에이전트 예제를 원한다면 응용 가이드 페이지를 확인하세요.