# RAG 워크플로우 만들기 (Agentflow 3.0.0)

> 이 페이지에서는 Agentflow 3.0.0 버전 기반으로 RAG (Retrieval-Augmented Generation) 워크플로우를 구성하는 방법에 대해 설명합니다.

**RAG 워크플로우 동영상 \[**[**바로가기**](https://youtu.be/aoldQ1liwD4)**]**

## [1. 워크플로우 생성](/default/v1.7.5.1/basic-tutorials/guides/workflow/openapi.md#id-1)

## 2. 워크플로우 편집

### 2.1 리비전 정보 설정

* **리비전 정보** 탭을 클릭합니다.
* **도커 이미지**, **인스턴스 타입**, **복제본** 등을 설정합니다. 이는 워크플로우가 실행될 환경을 결정합니다.

  * **도커 이미지**: 워크플로우 실행에 필요한 환경과 라이브러리가 포함된 컨테이너 이미지를 선택합니다.
  * **인스턴스 타입**: 워크플로우 실행에 할당할 컴퓨팅 리소스(CPU, 메모리)를 선택합니다.
  * **복제본**: 워크플로우를 실행할 인스턴스의 개수를 설정합니다. 복제본 수를 늘리면 병렬 처리 및 부하 분산이 가능합니다.
  * **GPU 할당량** (선택사항): GPU가 필요한 워크플로우의 경우 GPU 리소스를 할당할 수 있습니다.
  * **최대 큐 크기** (선택사항): 동시에 대기할 수 있는 최대 요청 수를 설정합니다.
  * **최대 동시 실행 수** (선택사항): 동시에 실행할 수 있는 최대 워크플로우 인스턴스 수를 제한합니다.
  * **환경 변수** (선택사항): 워크플로우 실행 시 필요한 환경 변수를 키-값 쌍으로 설정할 수 있습니다.
  * 도커 이미지 : `llmops-workflow-api:latest`
  * 인스턴스 타입: `micro (0.2 CPU Core, 500 Mb Memory)`
  * 복제본: `1`

  <figure><img src="/files/HrWBZwSdDQsIngS12itq" alt="워크플로우 리비전 정보 설정 화면"><figcaption><p>워크플로우 리비전 정보 설정 화면</p></figcaption></figure>

### 2.2 Flow 생성

* **Flowise Step 추가 버튼**을 클릭합니다.

  <figure><img src="/files/L56uwSqisR88jnKPRrxy" alt=""><figcaption></figcaption></figure>
* 드롭박스 중에서 **Agentflow 3.0.0**을 클릭합니다.

  <figure><img src="/files/SRm6qb09qjyQM1FXT8MD" alt=""><figcaption></figcaption></figure>

**Flowise 창**에서 세부 설정을 조정합니다.

* 각 노드와 Flow State에 대한 설명은 [여기](/default/v1.7.5.1/flowise-nodes/components/agentflow3-1-intro.md)서 확인할 수 있습니다.
* (참고) 현재 **Retriever 노드**는 사용할 수 **없음**

### **2.3 세부 설정**

**Flowise 창의 캔버스**에서 세부 설정을 조정합니다. 이번엔 멀티턴 노드 구성에 대해서 설명합니다.

* **전체 워크플로우:**

  Start 노드와 LLM 노드를 가져온 다음, 두 노드를 연결해줍니다.

  Start노드의 오른쪽에 마우스 hover시 나오는 화살표를 끌어 LLM 노드 왼편에 붙여줍니다.

  <figure><img src="/files/JZ2cbmRyAIsUfaa6isfk" alt=""><figcaption></figcaption></figure>

#### **2.3.1 Start 노드**

<figure><img src="/files/2ycaIHDkTiOlEBx8bOFZ" alt=""><figcaption></figcaption></figure>

워크플로우의 진입점이 되는 노드입니다.

* Input Type : Chat Input
* Ephemeral Memory : 비활성화
* Flow State
  * Key : current\_date
  * Value : None

#### 2.3.2 Tool Node : CurrentDateTime(이 도구는 별도의 파라미터 설정이 필요하지 않습니다)

<figure><img src="/files/TUhHWytOnFtzsxleUDsy" alt=""><figcaption></figcaption></figure>

현재 시간을 불러오는 Tool Node 입니다

* Tool Input Arguments
  * CurrentDateTime은 파라미터를 받지 않는 도구입니다. 실행 시점의 현재 시간을 자동으로 반환합니다.
* **Update Flow State**

  * Start 노드에서 선언해준 current\_date 의 값을, 현재 노드(’Get datetime’ Tool 노드)의 결과값으로 받습니다. 동적 변수인 `{{ output }}` 을 Value에 작성합니다.

  (참고) `{{ output }}` 변수는 현재 노드의 결과값을 받는 변수입니다.

#### 2.3.3 Custom Function Node

<figure><img src="/files/iSQH4vAS858c3tmHnXJo" alt=""><figcaption></figcaption></figure>

* **Input Variables**
  * Variable Name: `current_date`
  * Variable Value: `{{ $flow.state.current_date }}` ← Flow State에서 데이터 읽기
* Javascript Function: JSON 파싱하여 원하는 형식으로 변환합니다.
* **Update Flow State**: 가공된 결과를 다시 저장합니다.

#### 2.3.4 Agent Node

\*\* 언급되지 않은 기능 및 노드는 디폴트 상태로 진행합니다 \*\*

* Model : ChatMnc

  <figure><img src="/files/2xJlMEVvxqgEkC7KB4La" alt=""><figcaption></figcaption></figure>

  * Parameters

    * Serving : Qwen2.5-72B-Instruct
    * Max Tokens : 512
    * Temperature : 0.9
    * Streaming : 활성화 (파란색 토글)

    나머지 parameter들은 디폴트 상태로 진행합니다.
* Messages

  <figure><img src="/files/n9zqA4BkkykJCMPdkBKo" alt=""><figcaption></figcaption></figure>

  * System 메세지로 역할 지정과 함께 `{{ $flow.state.current_date }}`를 이용할 것을 지침으로 제공합니다.

  ```markdown
  You are a GenOS Agent, an advanced reasoning assistant with various tool capabilities.
  Knowledge cutoff: 2025-01
  Current date: {{ $flow.state.current_date }}
  ```
* Knowledge(Vector Embeddings)

  <figure><img src="/files/x1nXOJhNoEvPYerNODtp" alt=""><figcaption></figcaption></figure>

  <figure><img src="/files/SQDR2R2yIkIzKEEpFgTa" alt=""><figcaption></figcaption></figure>

  * Vector Store : DeepSearfing
    * Weaviate Host : 사용할 벡터 데이터베이스(DB)를 선택합니다. 이 모델은 문서의 의미를 벡터로 변환하는 데 사용됩니다. 이번 예시에서는 ‘부산시 RAG \[2차]’를 이용했습니다.

  <figure><img src="/files/xQfroguorD4Vuy2jvdvS" alt=""><figcaption></figcaption></figure>

  * Embedding Model : Mnc Interface Embeddings
    * 사용할 임베딩 모델을 선택합니다. 이 모델은 문서의 의미를 벡터로 변환하는 데 사용됩니다.

  <figure><img src="/files/HsJowG0zUNDa4QiUCTQO" alt=""><figcaption></figcaption></figure>

  * Knowledg Name : 해당 DB를 식별할 이름을 지어줍니다.
  * Describe Knowledge : 에이전트가 언제 이 지식 소스를 활용해야 하는지 결정하는 가이드를 작성해줍니다
  * Return Source Documents : 활성화
* Memory

  <figure><img src="/files/NBuWtcd3T9ato2kZpJEl" alt=""><figcaption></figcaption></figure>

  * Enable Memory : 활성화
  * Memory Type : All messages로 설정해줍니다.
* Return Response As : Assistant Message

  <figure><img src="/files/gnIKj0jE6CEt8kKeI3Xv" alt=""><figcaption></figcaption></figure>

## [3. 워크플로우 배포](/default/v1.7.5.1/basic-tutorials/guides/workflow/openapi.md#id-3)

## 4. 워크플로우 테스트

### [4.1 테스트 버튼 클릭](https://genos-docs.gitbook.io/default/v1.7.5.1/basic-tutorials/guides/workflow/pages/RPizEdzx8v8D2KO2L4p1#id-4.1)

### 4.2 질문 입력

테스트 창에 질문을 입력하여 워크플로우의 응답을 확인합니다.

(테스트 창에 질문을 입력하고 "실행" 버튼을 클릭하여 워크플로우의 응답을 확인하세요.)

<figure><img src="/files/AtlF3ZWBsqD15I1QAi3B" alt=""><figcaption></figcaption></figure>

* 질문을 입력하면, 결과창이 나옵니다. 결과창의 우측 상단의 확대 아이콘을 누르면 전체 화면으로 코드를 볼 수 있습니다.

### 4.3 응답 확인

워크플로우가 입력된 질문에 대해 적절한 응답을 생성하는지 확인합니다.

응답이 정확하지 않은 경우, 설정을 다시 확인하고 필요한 조정을 합니다.

(워크플로우가 생성한 응답이 화면에 표시됩니다. 응답의 정확성을 확인하세요.)

아래는 이번 예시의 결과 코드 화면입니다.

<figure><img src="/files/IZcvxn4WSFInC6c8vEc6" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/x3ulCPJkmJX91xWrakbM" alt=""><figcaption></figcaption></figure>

* 각 노드(빨간색 박스)와 그에 따른 결과인 output, 그리고 state (파란색 박스)가 정상적으로 진행되는 것을 확인할 수 있습니다.

<figure><img src="/files/j321c0RPk4OqV5KjrK8t" alt=""><figcaption></figcaption></figure>

* 마찬가지로 agent 노드에서도 정상적으로 tool call이 진행되며 결과가 출력되는 것을 확인할 수 있습니다 .


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://genos-docs.gitbook.io/default/v1.7.5.1/basic-tutorials/guides/workflow/agentflow3-2-rag.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
