데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      RAG 기반 AI Agent 서비스 개발 - n8n 체험기

      widekdus62 25.08.27
      207 2 0
      DEVOTEE 요약
      2회차 온라인 모임에서 RAG(정보 검색 기반 생성)와 AI 에이전트 개념을 배우고 실습 사례를 공유받았습니다. RAG는 외부 데이터베이스에서 정보를 검색해 LLM에 전달하여 최신성과 정확성을 높이며, 간단한 실습 도구(Langflow, EmfAI 등)를 통해 쉽게 이해하고 사용할 수 있습니다. 에이전트는 동적 작업 수행 능력을 가진 프로그램으로, 워크플로우와는 달리 자율성을 특징으로 하며, ERP 데이터 분석 챗봇 등 다양한 활용 사례가 소개되었습니다.
      DEVOTEE 추천 블로그

      2회차 온라인 모임에서의 RAG와 AI Agent 개념을 소개 및 진행하신 프로젝트 사례 발표를 통해 큰 도움을 받았습니다!

      발표를 통해서 크게 다음과 같은 내용을 알게 되었습니다.


      RAG의 개념과 작동 원리

      RAG의 정의와 기본 원리

      레그는 외부 저장소에서 정보를 검색해 LLM(Language Model)에게 제공하는 방식으로 작동하는 방식으로,

      사용자가 질문하면 저장소 내에서 검색을 수행하고, 검색 결과를 LLM에 프롬프트로 함께 전달해 답변을 생성합니다.

      이는 결국 복잡하고 어려운 기술처럼 보이지만 본질적으로는 단순한 검색과 답변 생성의 조합으로,

      레그를 사용하면 LLM의 할루시네이션 문제를 줄이고, 최신 정보나 실시간 데이터를 반영할 수 있습니다.

      RAG의 장점과 활용 이유

      • 자체 데이터베이스(DB)를 기반으로 답변을 제공해 정확성과 최신성을 확보할 수 있습니다.

      • 출처 정보를 함께 제공해 신뢰도를 높일 수 있습니다.

      • GPT 모델이 학습한 과거 데이터 외에 실시간 정보나 특정 도메인 지식을 반영할 수 있습니다.

      • 간단한 실습을 통해 누구나 쉽게 레그의 작동 방식을 이해하고 활용할 수 있습니다.

      RAG 기반 서비스 사례: 정치 공약 챗봇

      과거 학교 프로젝트 중 RAG 를 활용해 개발하신 경험 또한 공유주셨습니다.

      이는 20대 유권자들의 정책 인식과 투표 행태의 갭을 줄이기 위해 개발된 챗봇 서비스로,

      선관위 홈페이지에서 공약 관련 PDF 문서를 수집해 인베딩(embedding) 처리 후 벡터 DB에 저장하신 후,

      사용자가 후보자 공약에 대해 질문하면 관련 문서를 검색해 답변과 출처를 제공하는 방식으로 개발하셨으며

      답변은 텍스트뿐 아니라 표 형식 등 다양한 형태로 출력 가능하며, 비교 질문도 지원하도록 하셨습니다.


      에이전트(Agent)의 개념과 워크플로우와의 차이점

      에이전트(Agent)의 정의와 다양한 해석

      에이전트는 AI가 여러 도구를 활용하거나 여러 LLM을 연결해 동적으로 작업을 수행하는 프로그램으로,

      사람마다 에이전트에 대한 정의가 다르며, 도구 사용 능력, 자율성, 계획 수립 능력 등 다양한 관점이 존재한다고 합니다.

      • 결국 Agent 는 IT 마케팅 용어로 확산되면서 개념이 다소 변질되었으나, 본질은 LLM의 입출력을 워크플로우 내에서 제어하는 역할입니다.

      예를 들어 클로드(Claude) 모델에서는 에이전트를 LLM의 입출력을 통제하는 프로그램으로 정의합니다.

      워크플로우(Workflow)와 에이전트의 차이점

      • 워크플로우는 사전에 정의된 순차적 경로(A→B→C)를 따라 작업이 진행되는 반면, 에이전트는 LLM이 상황에 따라 동적으로 판단해 필요한 작업을 수행합니다.

      • 워크플로우의 제어 주체는 설계자이며, 에이전트는 LLM 자체의 자율적 판단 능력이 제어 주체가 됩니다.

      • 워크플로우는 안정성과 예측 가능성이 높고, 반복적이고 정형화된 작업에 적합합니다.

      • 에이전트는 유연성과 적응력이 뛰어나 복잡하거나 예측 불가능한 문제 해결에 적합하지만, 자율성으로 인해 리스크도 존재합니다.

      에이전트 활용 사례: ERP 데이터 분석 챗봇

      현재 기업 내부 데이터를 통합 관리하는 ERP 시스템(SAP, 네스위치 등)에서 데이터를 쉽게 조회하고 분석할 수 있도록 에이전트를 개발 중에 있으셔서 해당 에이전트에 대한 소개를 주셨습니다.

      사용자가 자연어로 질문하면 텍스트 SQL 변환을 통해 데이터베이스 쿼리를 생성하고, 결과를 시각화해 제공하는 에이전트로,

      질문 의도 분석, KPI 추출, 쿼리 생성, 데이터 조회, 시각화 등 복잡한 프로세스를 동적으로 수행하여 비개발자도 데이터 분석이 가능해져 업무 효율성이 크게 향상될 수 있어 보였습니다!


      RAG 및 에이전트 개발 도구와 실습 소개

      1. 랭플로우(Langflow)와 랭체인(Langchain) 프레임워크

      Langflow는 Langchain, LangGraph 등 레그와 에이전트 개발을 위한 프레임워크를 시각적 UI로 쉽게 구성할 수 있게 도와줍니다.

      이는 복잡한 코딩 없이 블록 단위로 AI 모델, 벡터 DB, 검색, 프롬프트 조합 등을 연결해 플로우를 설계할 수 있도록 하며

      실제로 벡터 DB에서 인베딩된 데이터를 검색하고, LLM에 프롬프트를 전달해 답변을 생성하는 기본적인 RAG 구조를 구현한다고 합니다.

      따라서 개발자뿐 아니라 비전문가도 빠르게 프로토타입을 만들고 테스트할 수 있습니다.

      2. 엠파이(EmfAI)와 블로우와이즈 AI(Blowwise AI)

      EmfAI는 자동화 툴로, 웹 페이지에서 문서와 링크를 수집해 중복 제거, 필터링 후 벡터 DB에 인베딩하는 플로우를 지원하며, Blowwise AI도 유사한 기능을 제공하며,

      커리 생성, 유효성 검사, 벡터 DB 검색, 시각화까지 자동화된 프로세스를 구축할 수 있습니다.


      즉, 두 도구 모두 UI 기반으로 쉽게 사용할 수 있으며, 복잡한 코딩 없이도 레그와 에이전트 기능을 구현할 수 있으며,

      다양한 출력 형식(텍스트, JSON 등)과 API 연동 기능도 지원해 확장성이 높습니다.


      오픈AI 어시스턴트 플랫폼을 활용한 실습

      마지막으로 다음 모임 전까지 각자가 관심 있는 주제로 프로그램을 하나씩 만들어보기로 했는데요!

      저는 다인님께서 말씀 주신 RAG 개발 도구 중 n8n 을 테스트해보았습니다.

      n8n은 시각적 인터페이스를 제공하여 사용자가 드래그 앤 드롭 방식으로 워크플로우를 설계할 수 있습니다.


      요즘 가장 생성형 AI 를 사람들이 많이 사용하는 방식이 감정상담이라는 기사를 얼마 전에 본 적이 있는데요,

      따라서 저는 채팅 내용 기반 심리분석 프롬프트를 만들고자 하였습니다.

      스크린샷 2025-08-27 오후 6.15.15.png

      첫번째로 입력 받을 방식을 설정해주었는데요, 저는 채팅 내용 기반으로, 파일을 업로드하고자 하여 Allow File Uploads 를 선택해주었습니다.

      스크린샷 2025-08-27 오후 6.19.35.png

      그 이후 Gemini 기반 Agent (Setup) 용 프롬프트를 작성해주었습니다. 제가 작성한 프롬프트는 다음과 같습니다.

      ## Steps to follow (채팅 입력 기반 심리 분석)
      
      {{ $agentInfo.memoryConnectedToAgent ? '1. Skip' : `1. STOP and output the following:
      "Welcome to n8n. Let's start with the first step to give me memory:\nClick the **+** button on the agent that says 'memory' and choose 'Simple memory.' Just tell me once you've done that."
      ----- END OF OUTPUT && IGNORE BELOW -----` }}
      
      2. If memory is connected, output the following:
      "Memory connected successfully. Let's move to the analysis setup."
      
      3. STOP and output the following:
      "Please set your **analysis preferences**:
      Depth: 간단 요약형 / 심층 분석형
      Focus: 감정 패턴 / 스트레스 요인 / 대인관계 / 자기인식
      Output Style: 보고서 / 피드백 / 조언
      Framework (선택): CBT / Plutchik / 애착이론
      예) Depth: 심층 분석형  Focus: 감정 패턴, 스트레스 요인  Output Style: 보고서  Framework: CBT"
      
      4. STOP and output the following:
      "윤리 고지: 이 분석은 의료적·임상적 진단이 아니며, 심리적 참고 자료일 뿐입니다. 위기 상황(자해·자살 위험 등)에서는 즉시 전문가 또는 지역 긴급 도움 자원에 연락하세요."
      
      5. If all steps are completed, output the following:
      "Perfect. 위 형식으로 옵션을 보낸 뒤, '/analyze' 또는 '분석:'으로 시작해 채팅 로그를 붙여주세요.
      예)
      Depth: 심층 분석형 Focus: 감정 패턴 Output Style: 보고서 Framework: CBT
      /analyze
      A: ...
      B: ..."

      이후 실제로 분석을 진행할 Agent (Analysis) 프롬프트를 다음 Step 으로 이어 붙여주었습니다.

      스크린샷 2025-08-27 오후 6.25.10.png

      실제 분석 실행용 프롬프트는 다음과 같이 입력해두었습니다.

      당신은 전문 심리 분석가이자 코치입니다.  
      아래의 **사용자 옵션**과 **채팅 대화**를 기반으로, 깊이 있는 심리 분석을 작성하세요.
      
      [사용자 옵션]
      {{$json["chatInput"]}}
      
      지침:
      1) **상세 옵션 적용**
      - Depth, Focus, Output Style, Framework(선택)을 사용자가 보낸 값에 맞춰 적용할 것.
      2) **윤리 고지 포함**
      - 이 분석은 의료적·임상적 진단이 아니며, 위기 상황 시 전문가/긴급 자원 안내를 짧게 포함할 것.
      3) **출력 형식 (보고서 톤)**
      - 요약 (3문장 이내)
      - 감정 패턴 분석 (Plutchik 분류 또는 선택된 Framework 반영)
      - 스트레스 요인 (내적/외적)
      - 대인관계 특성 (애착 시사점 포함 가능)
      - 자기인식 수준 (메타인지/감정 명명)
      - 인지 왜곡(CBT 기준) 탐지 시 사례 문장 인용
      - 종합 피드백: 행동 지향 조언 3~5개 (각 10~15분, 측정 가능 기준)
      - 윤리 고지(한 문단)
      
      [채팅 대화]
      - 위 옵션 블록 아래에 이어서 사용자가 붙인 전체 대화를 분석 대상으로 삼아라.
      - '/analyze' 또는 '분석:' 이후의 모든 줄을 **대화 본문**으로 간주한다.

      따라서 다음과 같은 답변 결과를 얻을 수 있었습니다!

      스크린샷 2025-08-27 오후 6.27.16.png


      [참고] n8n 사용 문법

      1) n8n Expression 기본

      표기: {{$ ... }} 내부에 JavaScript 표현식을 사용합니다

      자주 쓰는 빌트인들은 다음과 같았습니다.

      • $json: 현재 아이템의 JSON ({{$json.chatInput}})

      • $input.first() / $input.all(): 이전 노드 결과 접근

      • $node["노드명"].json: 특정 노드의 출력 참조

      • $env.VAR_NAME: 환경 변수

      • $vars.myVar: 워크플로 변수(Variables)

      • $now: 현재 시간 Date 객체 (e.g., {{$now.toISOString().slice(0,10)}})

      • $items(): 모든 아이템 배열 (멀티 아이템 처리할 때)

      • 안전 접근: {{$json?.user?.name ?? "unknown"}}

      • 문자열 합치기: {{$json.firstName + " " + $json.lastName}}

      • 배열 가공: {{$items().map(i => i.json.name).join(", ")}}

      • 정규식: {{/^foo/.test($json.title) ? "startsWithFoo" : "other"}}

      2) 조건/분기 쓰는 법 (가이드 STEP 만들 때)

      가이드는 보통 이런 패턴을 반복합니다:

      {{ 조건 ? 'X. Skip' : `X. STOP and output the following:
      "안내 메시지..."
      ----- END OF OUTPUT && IGNORE BELOW -----` }}

      3) 루프/리스트 출력

      {{ $agentInfo.memoryConnectedToAgent ? '1. Skip' : `1. STOP and output the following:
      "Click the **+** button on the agent that says 'memory' and choose 'Simple memory.'"
      ----- END OF OUTPUT && IGNORE BELOW -----` }}

      4) 입력 합성 & 전처리

      사용자 옵션:
      {{$json.chatInput.split('/analyze')[0].trim()}}
      
      대화 본문:
      {{$json.chatInput.split('/analyze').slice(1).join('/analyze').trim()}}

      몇번의 클릭만으로 손쉽게 RAG를 경험할 수 있어 뜻깊었습니다!

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      widekdus62 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기