Dify(디파이) 노코드 AI구축 기초부터 실무 가이드
이번에는 생성형 AI가 어떻게 답변해주는지에 대한 메커니즘을 간단하게 설명하고 "Dify"(디파이)라는 마법지팡이를 사용하여 독자의 아이디어를 AI앱을 현실로 구현하는 방법으로 알아봅시다.
독자가 ChatGPT를 사용하고 있다면 지금 바로 접속해서 첫마디를 아래와 같이 입력해 봅시다.
"안녕하세요"
"안녕하세요! 오늘은 어떤 걸 도와드릴까요? �"
와 같이 답변을 받게 되면 옆에 있는 사람과 대화하는 것처럼 자연스럽고, 매끄럽게 대화가 이어집니다.
이것 때문에 사람들은 많이 놀랬습니다.
"이것이 AI인가?"라고 의문을 가진 것은 독자만이 아닙니다. ChatGPT, Gemini Claude와 같은 AI는 한순간에 필자와 독자 모두의 상식을 뒤엎어버렸습니다.
하지만 겉보기에는 마법과 같은 메커니즘은 정말로 단순합니다. 아래 그림을 보면 독자가 화면에 입력한 질문은 API라는 다리를 통해 마법의 본체인 LLM(대규모언어모델) 서버로 전달됩니다. 그리고 LLM이 생성해서 생성한 답변이 다시 같은 다리를 통해 독자가 보고 있는 화면에 표시됩니다.
"그렇다면 그 LLM(대규모언어모델)의 내부는 어떻게 되어 있을까요"라는 의문을 가질 수 있습니다.
LLM(Large Language Model, 대규모언어모델)이란, 컴퓨터가 방대한 텍스트 데이터를 학습하여 인간처럼 자연스러운 문장을 생성하는 메커니즘입니다.
예를 들어, 독자가 친구에게 "오늘 점심 뭐 먹을까?"라고 상담하면 친구는 자신의 지식과 경험을 바탕으로 답을 내놓습니다. 마찬가지로 LLM은 과거의 방대한 텍스트로부터 "다음 나올 단어"를 예측하여 적절한 답변을 만들어냅니다. 이렇게 들으면 단순해 보입니다. 왜 그렇게 똑똑하게 답변할까요? 사실 LLM은 "다음 단어를 예측하는" 단순한 주문체계(Transformer)만을 사용함에도 불구하고 똑똑하게 행동할 수 있는 것입니다. 이 원리는 솔직히 말하면 전세계 학자들이나 개발자들도 완벽하게 이해하지 못하고 있습니다.
하지만 독자는 이제 마법사처럼 이 신비로운 주문체계를 당연하게 다루게 되었습니다.
"저기, LLM아! 프레젠테이션 기획서를 작성해줘!"라고 말하면, "네, 알겠습니다"라는 식으로 깔끔한 답변이 돌아옵니다. 단, 독자나 필자는 아직 100년도 못살았기 때문에 이 구조의 진정한 모습을 설명하는 것이 앞으로의 과제입니다.
"그런데 나는 그런 전문적인 내용은 알고 싶지 않고 나만의 챗봇을 만들고 싶어요!"
라고 말한다면 정말로 간단합니다. 대략적으로 아래와 같이 그림을 확인해 보세요.
프론트엔드(사용자가 직접 접하는 화면)의 애플리케이션을 만들어서 API를 호출하는 형태이지만 말로는 쉬워보이지만 실행하는 것은 어렵다는 것입니다. 그런데 "API"는 멀까요? 개발자가 아닌 독자라면 어려운 용어가 하나 나왔습니다. 하지만 크게 어렵지 않습니다. API는 우리 일상에서도 자주 사용되고 있습니다. 예를 들어, 독자의 스마트폰에서 날씨 앱을 실행하면 오늘 날씨가 표시됩니다. 그러나, 그 앱 자체가 날씨 정보를 만들어 내는 것이 아니라, 외부 기상기관으로부터 최신 날씨정보를 받아옵니다. 이처럼 상호작용을 가능하게 하는 것이 API입니다. API는 Application Programming Interface 약어로 서로 다른 프로그램들이 정보를 주고 받기 위한 메커니즘입니다.
챗봇 플로우를 생각해보면 다음과 같습니다.
당신이 질문을 입력한다 (프론트엔드)
그 질문이 API를 통해 LLM으로 전송된다
LLM이 답변을 생성하고, API를 통해 독자의 앱에 반환한다.
앱이 답변을 표시한다 (프론트엔드)
즉, API는 우리 질문을 LLM에 전달하고, LLM의 답변을 독자에게 전달하는 훌륭한 전달자와 같은 존재입니다. 하지만, 이 API를 자유롭게 활용하는 것은 어렵습니다. 올바르게 호출하고 반환된 데이터를 알맞게 처리하기 위해서는 그에 사응하는 지식과 프로그래밍 스킬이 필요합니다. 정말 "말은 쉽고 행동하는 것은 어렵다"는 말 그대로입니다. 이것을 개념도로 정리하면 아래와 같습니다.
프론트엔드에서 사용자와 상호작용하는 화면을 만들고, 백엔드에서 데이터를 처리하며 LLM과 통신하는 구조입니다. 좀 어렵지요? 실제로 간단한 챗봇을 만들기 위해서도 이정도의 메커니즘이 필요합니다. 프로그래밍 지식도 물론 필요하고 프론트엔드, 백엔드, 데이터베이스, 인증 등과 클라우드에 배포하기 위한 인프라 지식까지 필요하게 됩니다. 이를 모두 혼자하려면 상당한 시간이 걸리겠지요? 프로그래밍만 해도 Python이 쉽다고 하지만, 제대로 활용해서 자유롭게 사용할 수 있는 수준까지 끌어올리려면 몇년이 걸립니다.
그렇다면 이렇게 복잡한 메커니즘을 간단하게 만들 수 있는 방법이 있을까요?
ChatGPT를 사용해본 독자라면 "GPTs를 사용하면 되지 않을까?"라고 생각할지도 모릅니다. GPTs는 노코드로 자신만의 방식으로 사용자지정할 수 있는 OpenAI 서비스로 이를 사용하면 빠르게 챗봇을 만들 수 있습니다. 단순 챗봇이라면 GPTs는 틀림없이 유력한 선택지입니다.
하지만 GPTs는 한계가 있습니다. 우선 GPTs는 OpenAI 내부사이트에서 블랙박스화되어 있습니다. 다른 회사의 언어모델이나 오픈소스 언어모델을 사용하고자 할 경우에는 쉽게 접근을 할 수 없습니다.
예를 들어,
"일반적인 웹앱처럼 챗봇을 만들고 싶습니다"
"사내 기밀문서를 다루기 떄문에 로컬환경에서만 실행하고 싶습니다"
"여러가지 LLM을 테스트해보고 용도에 맞는 것을 선택하고 싶습니다"
이런 요구사항이 발생할 경우 GPTs는 이를 해결하기 어렵습니다. 그렇다면 어떻게 해야 할까요?
프로그래밍 기술이 없어도 자유롭게 커스터마이징할 수 있고 다양한 LLM을 사용할 수 있으며, 로컬환경에서도 실행할 수 있는 솔루션이 무엇이 있을까요?
여기서 나온 것이 바로 Dify입니다. 앞에서 설명한 애플리케이션 구성도를 기억하시는지요? 그 메커니즘은 Dify(디파이)를 사용하면 사용자가 일일이 준비할 필요가 없습니다. 프론트엔드와 백엔드 모두가 전부 Dify(디파이)에 내장되어 있기 때문입니다.
앞서 봤던 구조가 엄청 단순화됩니다. 이것은 프로그래밍 기술이 없어도 챗봇 웹화면을 만들 수 있습니다. 프론트엔드나 백엔드에 대한 지식이 없이도 API와의 상호작용을 할 수 있습니다. 인증, 세선관리, 데이터베이스에 대한 걱정도 필요없습니다. 모든 것을 Dify(디파이)가 준비해줍니다.
이제 생각을 전환해봅시다. "어떻게 만들까?에서 "무엇을 만들고 싶은가?"로 바꿔봅시다.
예를 들어, 이런 요구사항은 없습니까?
사내 문서를 기반으로 답변해주는 챗봇
창구업무를 자동화하는 응대시스템
전문문서를 쉽게 설명해주는 AI선생
테마만 주면 제안서를 만들어주는 자동집필시스템
회의록 작성의 자동화
만약, 독자가 숙련된 개발자라면, 이런 요구를 듣자마자, 머리속으로 "RAG를 구현하고 벡터DB를 구축하며, PDF문서를 토큰화하고 .... Fast API로 벡엔드를 만들고 프론트엔드는 Next.js로 하자"라는 생각이 떠오를 것입니다. 개발자는 이것이 정답입니다. 하지만,
"도대체 무슨 말인지 모르겠어?"라고 하는 일반인 대부분은 AI애플리케이션 개발 전문가가 아닙니다. 그러나 괜찮습니다. 처음에는 React, TypeScript, Next.js, FastAPI, Redis등은 몰라도 됩니다. 왜냐하면 AI앱 개발의 본질은 훨씬 단순한 곳에 있기 때문입니다.
AI 앱은 실제 말하는 것처럼 어렵지 않습니다. 본질적으로는 "질문에 대해 답변을 내놓는" 매우 단순한 메커니즘입니다. 그러나 이것이 중요한 포인트가 있습니다.
"인간은 프롬프트를 생성하고 AI는 결과물을 생성합니다"
이것은 매우 중요한 개념입니다. AI가 열심히 결과물을 만들어내는 동안, 우리 인간은 무엇을 해야 할까요? 그것은 바로 프롬프트를 생성하는 것입니다.
여기서 말하는 프롬프트는 단순한 질문만 의미하지 않습니다. '무엇을 하고 싶은지', '무엇을 해결해야 하는지'와 같이 해결하고자 하는 과제를 AI에게 던져 답변을 얻기 위한 지시문입니다. 그리고 그 과제가 해결되었는지 여부를 검증하고 개선하는 이 전체 프로세스를 설계하는 것이 바로 우리 인간의 일입니다.
이를 하고 싶은 일에 맞춘 개발이라고 말하며 '하고 싶은 것 중심'이나 '해야 할 것 중심'이라고도 할 수 있겠지만, 조금 쉽게 풀어서 하고 싶은 일에 맞춘 개발이 더 비즈니스적이고 적합해 보입니다. 이 개발스타일에서는 우리 인간이 '무엇을 해주길 원하는지'라는 지시(프롬프트)를 만들고, AI가 그 지시에 따라 결과를 생성합니다. 즉, 해결하고자 하는 문제나 만들고자 하는 것을 명확하게 전달하는 것이 핵심입니다.
"하지만 프롬프트가 왠지 귀찮을 것 같은데"라고 생각해도 상관없습니다.
프롬프트는 단순히 지시문입니다. 독자가 누군가에게 해주길 원하는 것을 한글로 표현하면 그것이 바로 프롬프트(prompt)입니다. 사람에게 지시하는 경우와 크게 다르지 않습니다. 물론 약간의 요령이 필요하지만 그것은 나중에 설명합니다.
이제 Dify(디파이)에 집중합시다. Dify(디파이)를 사용하면 이 프롬프트 부분을 수정하는 작업을 직관적으면서 시각적으로 수행할 수 있습니다. 생성형 AI의 메커니즘을 이해했지만 AI앱 구축은 어렵다고 느끼는 독자도 Dify(디파이)라면 포기하지 않고 앱을 만들 수 있습니다.
즉, Dify(디파이)는 '프롬프트 개선'에 집중하 수 있는 도구라고 할 수 있습니다. 이것은 하고 싶은 일에 맞추 개발의 이상적인 형태라고 할 수 있습니다. AI가 결과물을 생성하는 한편 우리 인간은 Dify(디파이)를 사용하여 프롬프트를 정의하고 개선합니다. 이 새로운 작업방식이 앞으로 AI 애플리케이션 개발의 해답중 하나가 될수도 있습니다.
그럼 이제 실제로 Dify(디파이)를 사용해서 쉽게 애플리케이션을 만들어 봅시다. 프롬프트를 생성하고 AI가 결과물을 생성하는 이 새로운 개발형태를 직접 경험해 봅시다.
©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.
GAEBAL AI 개발사: https://gaebalai.com
GAEBAL AI 개발사: https://gaebalai.com
AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5
AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5