규정 에이전트 워크플로우
AX Leader Builder에서 유동성 규제/산출방법 전문 에이전트를
처음부터 끝까지 만드는 스텝-바이-스텝 가이드
예상 소요시간: 약 40~60분
노드 타입 안내
워크플로우 구성 요약
| 타입 | 개수 | 역할 |
| Input | 1 | 사용자 질문 입력 |
| Categorizer | 1 | 7개 규정 도메인 자동 분류 |
| Condition | 6 | 도메인별 조건 분기 |
| Retriever | 13 | 5개 지식파일 RAG 검색 |
| Generator | 8 | 전문 도메인 답변 + 보고서 정리 |
| Output | 1 | 최종 보고서 출력 |
STEP 1
전체 구조도
워크플로우의 6개 레이어 구조를 파악하고, 데이터가 어떻게 흐르는지 이해합니다.
▼
▼
n3 HQLA
n4 OUTFLOW
n5 INFLOW
n6 LCR
n7 NSFR
n8 LQR
▼ IF 매칭
별표3의6
BCBS
산출매뉴얼
NSFR기준서
방법론
폴백
▼ docs→context
HQLA
OUTFLOW
INFLOW
LCR산출
NSFR
관리방법론
UNKN
▼ content
데이터 흐름 요약
사용자 질문 → 도메인 분류(7개) → 조건분기(ELSE 캐스케이드)
→ 지식검색(RAG, 도메인당 2개) → 전문 답변 생성 → 보고서 정리 → 최종 출력
STEP 2
Builder 화면 안내
AX Leader Builder의 3패널 레이아웃과 기본 조작법을 익힙니다.
3패널 구조
| 위치 | 패널명 | 역할 |
| 좌측 (260px) | 사이드바 | 노드 팔레트 (드래그 앤 드롭) |
| 중앙 (나머지) | 캔버스 | 워크플로우 편집 영역 |
| 우측 (300px) | 속성 패널 | 선택 노드의 설정 편집 |
하단 버튼
| 버튼 | 위치 | 기능 |
| ▶ Run (초록) | 우상단 | 워크플로우 실행 |
| Connection Test | 우상단 | gpt-oss-20b 모듈 연결 테스트 |
| +/- / Fit | 하단 중앙 | 줌 제어 |
STEP 3
지식 파일 준비
Retriever 노드가 검색할 5개 .md 지식 파일을 확인하고 준비합니다.
1
아래 5개 파일이 Builder의 지식 폴더에 있는지 확인합니다.
사이드바 → 지식(Knowledge) 탭에서 업로드 상태를 점검합니다.
| # | 파일명 | 주요 내용 | 사용 도메인 |
| 1 | 3_6_regulation.md | [별표 3의6] LCR 산출기준 (81개 조문) | HQLA, OUTFLOW, INFLOW, LCR |
| 2 | bcbs_lcr_new.md | BCBS Basel LCR Framework + FAQ | HQLA, OUTFLOW, INFLOW |
| 3 | lcr_logic.md | LCR/NSFR 산출 매뉴얼 (실무) | LCR, NSFR, LIQUIDITY_MGMT |
| 4 | nsfr_logic.md | 바젤III NSFR 기준서 (ASF/RSF) | NSFR |
| 5 | lqr_manual_new.md | 유동성리스크 관리 방법론 | LIQUIDITY_MGMT |
파일이 없으면 Builder의 지식 관리 화면에서 업로드합니다. 업로드 후 임베딩(Dense 인덱싱)이 완료될 때까지 기다려주세요.
STEP 4
API / 모델 설정
은행 내부 LLM 모듈 gpt-oss-20b 연결을 설정하고, 연결 테스트로 정상 동작을 확인합니다.
gpt-oss-20b 모듈 연결
1
은행 내부 LLM 모듈 gpt-oss-20b가 정상 가동 중인지 확인합니다
(내부 API 엔드포인트 및 인증 토큰 확인)
2
Builder의 Settings → API Configuration에서 API 엔드포인트를 gpt-oss-20b 모듈 주소로 설정합니다
Builder에서 연결
3
Builder 우상단의 Connection Test 버튼을 클릭합니다
4
연결 상태 팝업에서 LLM API의 상태 점이 초록색(OK)인지 확인합니다
5
모델 목록에서 gpt-oss-20b가 표시되는지 확인하고 팝업을 닫습니다
연결 테스트가 실패(빨간색)이면 gpt-oss-20b 모듈이 정상 가동 중인지, API 엔드포인트와 인증 토큰이 올바른지 확인하세요. 내부 네트워크 방화벽 설정도 점검합니다.
STEP 5
입력 노드 만들기 (n1)
Input 노드를 생성하여 사용자 질문을 받는 시작점을 만듭니다.
노드 생성
1
좌측 팔레트에서 Input을 캔버스 좌측 중앙으로 드래그합니다
2
노드를 클릭하여 선택 → 우측 속성 패널에서 설정합니다
속성 설정
4
설명(Description):
유동성 규제(LCR/NSFR), 산출방법, 유동성리스크 관리 방법론에 대한 질문을 입력합니다.
이 query 포트는 나중에 조건 노드, Retriever, Generator, Output 등 거의 모든 노드에 연결됩니다. 이 워크플로우에서 가장 많이 연결되는 포트입니다.
STEP 6
분류기 노드 만들기 (n2)
Categorizer 노드를 생성하고, 7개 규정 도메인 카테고리를 등록합니다.
노드 생성
1
팔레트에서 Categorizer를 n1 오른쪽에 드래그합니다
카테고리 7개 추가
3
속성 패널의 Categories 섹션에서 + Add Category를 7번 반복하여 아래 카테고리를 추가합니다
| # | 이름 | 색상 | 의미 |
| 1 | HQLA | #3fb950 | 고유동성자산 분류/요건/할인율 |
| 2 | OUTFLOW | #f85149 | 현금유출 항목/이탈률 |
| 3 | INFLOW | #58a6ff | 현금유입 항목/유입률 |
| 4 | LCR_FORMULA | #ffa657 | LCR 산출공식/절차 |
| 5 | NSFR | #d2a8ff | NSFR 산출/ASF/RSF |
| 6 | LIQUIDITY_MGMT | #79c0ff | 유동성리스크 관리방법론 |
| 7 | UNKNOWN | #8b949e | 미분류 |
분류 프롬프트 입력
4
설명(Description)에 분류 규칙 프롬프트를 붙여넣습니다.
핵심 규칙:
- HQLA/Level1/Level2 관련 → HQLA
- 이탈률/소매예금/도매자금/담보부 → OUTFLOW
- 유입률/유입상한 → INFLOW
- LCR 산출/공식/보고 → LCR_FORMULA
- NSFR/ASF/RSF → NSFR
- 유동성관리/VaR/갭/위기상황 → LIQUIDITY_MGMT
- 해당 없으면 → UNKNOWN
STEP 7
조건 노드 6개 + 체인 연결
Condition 노드 6개를 만들고, ELSE 캐스케이드 체인을 구성합니다.
조건 노드 6개 생성
1
팔레트에서 Condition을 캔버스에 6번 드래그하여 세로로 배치합니다
| ID | 이름 | Type | Op | Value |
| n3 | HQLA 분기 | string | == | HQLA |
| n4 | OUTFLOW 분기 | string | == | OUTFLOW |
| n5 | INFLOW 분기 | string | == | INFLOW |
| n6 | LCR_FORMULA 분기 | string | == | LCR_FORMULA |
| n7 | NSFR 분기 | string | == | NSFR |
| n8 | LIQUIDITY_MGMT 분기 | string | == | LIQUIDITY_MGMT |
연결 (총 14개)
2
n1.query → n2.query (입력→분류기)
3
n2.selected → n3.value (분류결과→첫 조건)
4
ELSE 캐스케이드 5개 + n1.query → 각 조건.query 6개를 연결합니다
n2.selected → n3.value
n3.ELSE → n4.value (HQLA 아니면 → OUTFLOW 확인)
n4.ELSE → n5.value (OUTFLOW 아니면 → INFLOW 확인)
n5.ELSE → n6.value (INFLOW 아니면 → LCR 확인)
n6.ELSE → n7.value (LCR 아니면 → NSFR 확인)
n7.ELSE → n8.value (NSFR 아니면 → LQR 확인)
n8.ELSE → n22.query (모두 아니면 → 폴백 검색)
STEP 8
Retriever 13개 만들기
각 도메인에 2개씩의 Retriever를 배치하여 다중 RAG 검색을 구성합니다.
1
팔레트에서 Retriever를 13번 드래그하여 조건 노드 오른쪽에 배치합니다
| ID | 이름 | Knowledge | k | Threshold |
| n10 | HQLA 별표3의6 | 3_6_regulation.md | 5 | 0.15 |
| n11 | HQLA BCBS | bcbs_lcr_new.md | 3 | 0.2 |
| n12 | OUTFLOW 별표3의6 | 3_6_regulation.md | 5 | 0.15 |
| n13 | OUTFLOW BCBS | bcbs_lcr_new.md | 3 | 0.2 |
| n14 | INFLOW 별표3의6 | 3_6_regulation.md | 5 | 0.15 |
| n15 | INFLOW BCBS | bcbs_lcr_new.md | 3 | 0.2 |
| n16 | LCR 산출매뉴얼 | lcr_logic.md | 5 | 0.15 |
| n17 | LCR 별표3의6 | 3_6_regulation.md | 3 | 0.2 |
| n18 | NSFR 기준서 | nsfr_logic.md | 5 | 0.15 |
| n19 | NSFR 산출매뉴얼 | lcr_logic.md | 3 | 0.2 |
| n20 | 유동성방법론 | lqr_manual_new.md | 5 | 0.15 |
| n21 | 유동성산출매뉴얼 | lcr_logic.md | 3 | 0.2 |
| n22 | 통합 폴백 검색 | lcr_logic.md | 8 | 0.12 |
각 도메인마다 주 검색(k=5, threshold=0.15) + 보강 검색(k=3, threshold=0.2) 2개 Retriever 구성입니다. 폴백(n22)은 k=8, threshold=0.12로 더 넓게 검색합니다.
STEP 9
조건 IF → Retriever 연결
각 조건 노드의 IF 포트를 해당 Retriever 2개의 query에 연결합니다.
| 조건 노드 | IF → Retriever 1 | IF → Retriever 2 |
| n3 HQLA | n10 별표3의6 | n11 BCBS |
| n4 OUTFLOW | n12 별표3의6 | n13 BCBS |
| n5 INFLOW | n14 별표3의6 | n15 BCBS |
| n6 LCR_FORMULA | n16 산출매뉴얼 | n17 별표3의6 |
| n7 NSFR | n18 NSFR기준서 | n19 산출매뉴얼 |
| n8 LIQUIDITY_MGMT | n20 방법론 | n21 산출매뉴얼 |
1
각 조건 IF → 2개 Retriever.query 연결 (총 12개)
2
n8.ELSE → n22.query (UNKNOWN 폴백, 이미 Step 7에서 연결)
이 단계에서 총 12개 연결을 만듭니다. 각 도메인이 2개 지식소스에서 동시에 검색하므로 더 정확한 답변이 가능합니다.
STEP 10
Generator 8개 만들기
Generator 노드 8개를 만들어 전문 답변 생성기 + 보고서 정리기를 구성합니다.
1
팔레트에서 Generator를 8번 드래그하여 Retriever 오른쪽에 배치합니다
| ID | 이름 | 입력포트 | 역할 |
| n30 | HQLA 답변기 | query, context | 고유동성자산 Level별 분류/할인율/요건 답변 |
| n31 | OUTFLOW 답변기 | query, context | 현금유출 항목/이탈률 규정 답변 |
| n32 | INFLOW 답변기 | query, context | 현금유입 항목/유입률/상한 답변 |
| n33 | LCR 산출 답변기 | query, context | LCR 산출공식/절차/보고 답변 |
| n34 | NSFR 답변기 | query, context | NSFR/ASF/RSF 가중치 답변 |
| n35 | 유동성관리방법론 답변기 | query, context | 관리원칙/VaR/위기상황 답변 |
| n36 | UNKNOWN 안내 | query, context | 미분류 시 안내 + 폴백 답변 |
| n40 | 보고서 정리기 | query, context | 전문 답변을 보고서로 정리 |
Generator 공통 설정
| 설정 | 값 | 설명 |
| model | (비워둠) | gpt-oss-20b 기본 모델 사용 |
| tools | false | 도구 사용 안함 |
| mcp | false | MCP 사용 안함 |
STEP 11
프롬프트 입력 가이드
각 Generator에 시스템 프롬프트와 Fewshot 예시를 입력합니다.
프롬프트 입력 방법
1
Generator 노드를 클릭 → 우측 속성 패널의 Prompt 텍스트 영역에 프롬프트를 입력합니다
2
Fewshot 텍스트 영역에 Q&A 예시를 입력합니다
3
프롬프트가 길면 메모장에 미리 작성 후 복사-붙여넣기하는 것을 권장합니다
프롬프트 구조 패턴
당신은 바젤III [영역명] 규정 전문가입니다.
[전문 영역]
... 영역 설명 ...
[핵심 규정 구조 - 별표 3의6]
| 항목 | 수치 | 근거 조문 |
|---|---|---|
| ... | ... | ... |
[답변 규칙]
1. 검색된 규정 원문 기반으로 답변
2. 근거 조문번호 반드시 인용
3. 수치(이탈률/할인율) 정확히 명시
4. 한국어로 답변
Fewshot 예시 구조
Q: 소매예금의 이탈률은?
A: ## 소매예금 이탈률 [별표 3의6 근거]
### 이탈률 요약
| 구분 | 이탈률 | 근거 조문 |
|---|---:|---|
| 안정적 소매예금 | 5% | 제27조 |
| 불안정 소매예금 | 10% | 제28조 |
JSON 파일(regulation_agent.json)에 모든 프롬프트 원문이 있습니다. 각 노드의 config.prompt와 config.fewshot을 그대로 복사하면 됩니다.
STEP 12
Retriever → Generator 연결
각 Retriever의 docs를 Generator의 context에, n1.query를 각 Generator의 query에 연결합니다.
A) docs → context (13개)
| Retriever.docs → | Generator.context |
| n10 + n11 (HQLA 2개) | n30 HQLA 답변기 |
| n12 + n13 (OUTFLOW 2개) | n31 OUTFLOW 답변기 |
| n14 + n15 (INFLOW 2개) | n32 INFLOW 답변기 |
| n16 + n17 (LCR 2개) | n33 LCR 산출 답변기 |
| n18 + n19 (NSFR 2개) | n34 NSFR 답변기 |
| n20 + n21 (LQR 2개) | n35 유동성관리방법론 답변기 |
| n22 (폴백 1개) | n36 UNKNOWN 안내 |
B) n1.query → Generator.query (7개)
1
n1.query를 n30~n36 각각의 query 입력 포트에 연결합니다
이 단계에서 총 20개 연결 (docs→context 13개 + query 7개)을 만듭니다.
STEP 13
보고서 정리기 연결
모든 전문 Generator의 content를 n40(보고서 정리기)의 context에 연결합니다.
1
아래 7개 Generator의 content 출력을 n40의 context 입력으로 연결합니다
| # | Generator.content → | 대상 |
| 1 | n30 HQLA 답변기 | n40 보고서 정리기 .context |
| 2 | n31 OUTFLOW 답변기 |
| 3 | n32 INFLOW 답변기 |
| 4 | n33 LCR 산출 답변기 |
| 5 | n34 NSFR 답변기 |
| 6 | n35 유동성관리방법론 답변기 |
| 7 | n36 UNKNOWN 안내 |
n1.query → n40.query (1개)
2
n1.query → n40.query를 연결합니다
(원본 질문을 정리기에도 전달)
n40 보고서 정리기 프롬프트
당신은 유동성 규제 답변 보고서 작성 전문가입니다.
[보고서 작성 규칙]
1. 핵심 내용 유지, 중복 제거
2. 마크다운 형식 (## 헤더, 표, 리스트)
3. 규정 근거(조문번호) 반드시 유지
4. 수치(이탈률/할인율/가중치) 정확 보존
5. 산출 공식은 코드 블록 표시
6. 한국어 작성
7. 참조 데이터에 없는 정보는 추가하지 않음
STEP 14
최종 출력 노드 + 마무리 연결
Output Chat 노드를 만들고 워크플로우를 완성합니다.
1
팔레트에서 Output Chat를 캔버스 맨 오른쪽에 드래그합니다
템플릿 설정
3
Template 필드에 출력 템플릿을 입력합니다
**[규정 도우미]**
**질의:** {{query}}
**영역:** {{domain}}
---
{{key}}
최종 연결 (3개)
4
n40.content → n50.key (보고서 → 출력 key)
5
n1.query → n50.query (원본 질문 → 출력 query)
6
n2.selected → n50.domain (분류 결과 → 출력 domain)
[n40 보고서 정리기] ── content ──→ key ── [n50 최종 답변]
[n1 사용자 질문] ── query ───→ query ─ [n50 최종 답변]
[n2 도메인 라우터] ─ selected ──→ domain [n50 최종 답변]
연결 총 집계
| 단계 | 연결 수 | 설명 |
| Step 7 | 14 | n1→n2 + n2→n3 + ELSE 5개 + query 6개 + ELSE→폴백 |
| Step 9 | 12 | 조건 IF → Retriever (도메인당 2개) |
| Step 12 | 20 | Retriever→Generator 13개 + n1→Generator 7개 |
| Step 13 | 8 | Generator→n40 7개 + n1→n40 1개 |
| Step 14 | 3 | n40→n50, n1→n50, n2→n50 |
| 합계: 57개 | |
STEP 15
전체 점검 / 테스트
워크플로우 전체를 체크리스트로 점검하고, 테스트 질문으로 동작을 확인합니다.
테스트 질문 예시
| 영역 | 테스트 질문 | 기대 동작 |
| HQLA | "HQLA Level2B 할인율은?" | HQLA 분기 → n10+n11 → n30 |
| OUTFLOW | "소매예금 이탈률은?" | OUTFLOW 분기 → n12+n13 → n31 |
| INFLOW | "현금유입 상한 규칙은?" | INFLOW 분기 → n14+n15 → n32 |
| LCR | "LCR 산출 공식은?" | LCR 분기 → n16+n17 → n33 |
| NSFR | "ASF 가중치 100% 항목은?" | NSFR 분기 → n18+n19 → n34 |
| LQR | "유동성리스크 정의는?" | LQR 분기 → n20+n21 → n35 |
| UNKNOWN | "오늘 날씨 어때?" | ELSE → n22 폴백 → n36 |
테스트 실행
2
입력 창에 테스트 질문을 입력하고 전송합니다
3
각 노드가 순서대로 활성화(초록색)되며 처리되는지 확인합니다
4
최종 출력에 "[규정 도우미]" 헤더와 보고서가 나타나면 성공!
STEP 16
저장 및 완성!
완성된 워크플로우를 저장하고 축하합니다!
워크플로우 저장
1
Builder의 저장 기능으로 워크플로우를 저장합니다
Ctrl+S 또는 상단 메뉴 → 저장
2
필요 시 JSON으로 내보내기도 할 수 있습니다
(Export 기능 사용)
🎉
축하합니다!
규정 에이전트 워크플로우를
성공적으로 완성했습니다!
완성된 워크플로우 요약
| 항목 | 수량 |
| 총 노드 수 | 30개 (6종류) |
| 총 연결 수 | 57개 |
| 지식 파일 | 5개 .md 파일 |
| 지원 도메인 | 7개 (HQLA/OUTFLOW/INFLOW/LCR_FORMULA/NSFR/LIQUIDITY_MGMT/UNKNOWN) |
| 다중 RAG | 도메인당 2개 Retriever |
핵심 특장점
1
규정 전문 라우팅: LCR/NSFR 규정 질문을 6개 세부 도메인으로 자동 분류
2
다중 RAG: 각 도메인마다 2개 지식소스(국내규정+글로벌기준)를 동시 검색
3
조문 인용: 별표 3의6 근거 조문번호를 반드시 인용하여 정확성 보장
4
보고서 포맷팅: 전문 답변을 수치/표/산식 중심의 깔끔한 보고서로 자동 정리
참조 파일
| 파일 | 위치 | 용도 |
regulation_agent.json | process/ | 워크플로우 JSON (Import용) |
3_6_regulation.md | 루트 | 별표3의6 LCR 규정 |
bcbs_lcr_new.md | 루트 | BCBS Basel LCR Framework |
lcr_logic.md | 루트 | LCR/NSFR 산출 매뉴얼 |
nsfr_logic.md | 루트 | NSFR 기준서 |
lqr_manual_new.md | 루트 | 유동성리스크 관리 방법론 |