← 인사이트 목록으로
2026.07.23

23화 | [AI와 1인기업] AI 비즈니스 에이전트 이식: OpenAI Assistants RAG 엔진 기반의 텔레그램 무인 기술지원(CS) 자동 챗봇 구축

글 · Art Gourmet — 한 명의 인간(David)과 AI 에이전트 크루가 함께 1인 회사를 실제로 운영하며 남기는 기록입니다. 팀 소개 →

 

AI 비즈니스 에이전트 이식: OpenAI Assistants RAG 엔진 기반의 텔레그램 무인 기술지원(CS) 자동 챗봇 구축 (23화)

안녕하세요! AI 크루들과 무자본 IT 1인 기업을 꾸려가고 있는 크리에이티브 디렉터 DAVID입니다.

지난 22화에서는 텔레그램 봇 API와 우리 Next.js API 백엔드를 양방향 웹훅(Webhook)으로 매핑하고, 관리자 계정 보안 인증을 입혀 스마트폰 메신저로 0.1초 만에 Firestore 데이터베이스의 라이선스를 정지하거나 갱신하는 '모바일 통합 원격 관제 제어탑'을 장착했습니다.

이제 모바일에서 시스템을 다스릴 손가락은 준비되었습니다. 하지만 1인 창업가는 자거나 쉬는 시간에도 끊임없이 날아오는 유저들의 단순 봇 설정 법, 실행 오류 질문에 일일이 모바일 답장을 보낼 수 없습니다. 이 최후의 백오피스 리소스를 완벽히 무인화하려면, 인공지능 비서가 텔레그램 채팅방에 대기하고 있다가 유저의 질문에 스스로 기술 설명서 PDF 파일을 탐색하여 1초 만에 정확한 처방전을 돌려주는 지능형 챗봇이 투입되어야 합니다. 오늘 OpenAI Assistants RAG(File Search) 엔진 기반의 텔레그램 무인 기술지원(CS) 자동 챗봇 설계의 정석을 낱낱이 공개합니다!





1. 왜 단순 프롬프트 지시가 아닌 'RAG (Retrieval-Augmented Generation)'인가?

우리가 개발한 퀀트 트레이딩 봇의 복잡한 세팅 가이드나 API 연동 FAQ 정보를 그냥 GPT-4o 프롬프트(System Prompt)에 수십 페이지 분량의 텍스트로 다 구겨 넣으면 다음과 같은 심각한 인프라 낭비와 장애가 발생합니다.

  • 비싼 API 비용 (Token Bleeding): 사용자가 "안녕?" 한 마디를 던질 때마다 수만 줄의 전체 설명서 텍스트를 매번 API로 다시 쏘아 보내야 하므로, 질문 몇 개에 수십 달러의 API 청구서 폭탄을 맞게 됩니다.
  • 환각 현상 (Hallucination): 프롬프트 문서가 너무 길어지면 인공지능이 설명서 구석에 있는 세밀한 옵션(예: 슬리피지 허용 한도 설정법)을 잊어버리고 엉뚱한 가짜 사용법을 지어내어 유저를 혼란에 빠뜨립니다.

이를 원천 차단하는 기술이 바로 **RAG (검색 증강 생성)**입니다. 설명서 파일(.pdf or .txt)을 Vercel 백엔드나 벡터 스토어에 통째로 올려두고, 사용자가 질문한 키워드와 밀접하게 관련 있는 1~2개 문단만 실시간 조각으로 발췌하여 모델에 주입하기 때문에, **비용은 90% 이상 절감하면서 대답의 신뢰도는 100%**에 수렴하게 됩니다.


2. 텔레그램 AI CS 에이전트의 3단계 구동 구조

유저가 텔레그램 봇으로 에러 문의를 보냈을 때 AI 비서가 RAG를 통해 무인 기술지원을 내보내는 메커니즘은 다음과 같습니다.

작동 시퀀스 OpenAI Assistants & Vector Store 메신저 최종 렌더링
1단계: 설명서 파일 업로드 manual.pdf를 OpenAI Vector Store에 바인딩합니다. 업로드 즉시 OpenAI 임베딩 엔진이 PDF 텍스트 조각들을 수백 개의 고차원 수학적 벡터 좌표로 쪼개어 영구 저장합니다.
2단계: 유저 질문 매칭 openai.beta.vectorStores.files 유저가 텔레그램으로 "MT5에서 슬리피지 에러가 떠"라고 보내면, Assistants의 File Search 툴이 자동으로 가동되어 Vector Store 내에서 'MT5', '슬리피지', '에러' 관련 의미적 좌표가 가장 가까운 텍스트 문단을 0.2초 만에 색인합니다.
3단계: 최종 CS 답변 송출 sendMessage (axios) 색인된 실측 정보 문서만 발췌해 GPT 모델에 넘겨 조립된 최종 가이드를 완성하고, 텔레그램 봇 API를 통해 사용자의 텔레그램 채팅창으로 즉각 정중하게 답변을 돌려보냅니다.

3. Next.js 및 OpenAI Assistants File Search 연동 핵심 소스코드

텔레그램 웹훅을 받아 OpenAI Assistants RAG 엔진을 찔러 문서를 검색하고 답변을 릴레이하는 Next.js Route Handler 백엔드 소스코드입니다.

import { NextResponse } from 'next/server';
import OpenAI from 'openai';
import axios from 'axios';

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const TELEGRAM_TOKEN = process.env.TELEGRAM_BOT_TOKEN;
const TOSS_API_URL = `https://api.telegram.org/bot${TELEGRAM_TOKEN}`;
const ASSISTANT_ID = process.env.OPENAI_ASSISTANT_ID; // File Search(RAG) 툴이 활성화된 Assistant ID

export async function POST(request) {
    try {
        const body = await request.json();
        if (!body.message) return NextResponse.json({ success: true }, { status: 200 });

        const { chat, text } = body.message;
        const chatId = chat.id.toString();

        // 1. [RAG 구동] OpenAI Assistants용 신규 대화방(Thread) 생성 및 메시지 추가
        const thread = await openai.beta.threads.create();
        
        await openai.beta.threads.messages.create(thread.id, {
            role: 'user',
            content: text
        });

        // 2. 파일 검색(File Search) 기능 활성화 옵션과 함께 어시스턴트 실행(Run)
        let run = await openai.beta.threads.runs.create(thread.id, {
            assistant_id: ASSISTANT_ID,
            tools: [{ type: "file_search" }]
        });

        // 3. 파일 검색 연산 완료 대기 (Polling)
        while (true) {
            run = await openai.beta.threads.runs.retrieve(thread.id, run.id);
            if (run.status === 'completed') break;
            if (run.status === 'failed') {
                throw new Error("Assistant Run Failed");
            }
            await new Promise((resolve) => setTimeout(resolve, 500));
        }

        // 4. OpenAI RAG가 설명서 파일에서 추출하여 재조립한 최종 답변 획득
        const messages = await openai.beta.threads.messages.list(thread.id);
        const aiReply = messages.data[0].content[0].text.value;

        // 5. 텔레그램 봇을 통해 기술지원 답변 메시지 발송
        await axios.post(`${TOSS_API_URL}/sendMessage`, {
            chat_id: chatId,
            text: aiReply,
            parse_mode: 'Markdown'
        });

        return NextResponse.json({ success: true }, { status: 200 });

    } catch (error) {
        console.error("텔레그램 RAG CS 봇 장애:", error);
        return NextResponse.json({ error: 'INTERNAL_SERVER_ERROR' }, { status: 500 });
    }
}

4. 23화를 마치며: 1인 비즈니스의 최종 지능화 완성

OpenAI Assistants RAG 파일 검색과 텔레그램 봇 API의 상호 이식이 완벽히 마감되었습니다. 이제 대장님의 무인 1인 쇼핑몰은 밤이나 주말, 휴가철 등 언제 어느 때라도 고객들이 던지는 까다로운 가이드 질문이나 오류 문의에 대해, **인공지능 비서가 서버 백그라운드에서 조용히 수십 페이지의 매뉴얼 PDF 파일을 다이렉트로 뒤져가며 1초 만에 카운터 응대를 날리는 완전 무인 CS 자동화 요새**로 완벽하게 런칭되었습니다.

이로써 6부 AI 지능화 이식의 첫 기둥이 무결하게 서게 되었습니다. 기술지원과 DB 원격 관제는 해결되었습니다. 하지만 우리의 트레이딩 봇이나 E-Book을 유저들이 구매하게 만들고 지속해서 유입을 끌어오기 위해서는, 매일 아침 전 세계 금융 시장의 동향과 나스닥/비트코인의 변동성을 분석하여 정밀한 리포트 뉴스를 블로그에 무인 포스팅하고, 이 글을 읽은 유저들을 우리의 숍으로 유입시키는 **'AI 자율 블로그 에이전트 마케터'**의 투입이 절실합니다.

다음 24화에서는 매일 새벽 지정된 시간에 작동하여 그날의 주가/코인 시세 데이터를 수집하고 분석 리포트를 작성하여 구글/네이버 블로그에 포스팅을 자동으로 찔러 넣는 "AI 비즈니스 에이전트 이식: 매일 새벽 금융 변동성 데이터를 수집 및 분석하여 블로그 리포트를 작성하는 자동 포스팅 에이전트 개발"을 완성도 높게 정복해 보겠습니다.

24시간 지치지 않고 전문 기술 가이드를 전담하는 든든한 AI 사원을 메신저에 직접 배치해 보세요. 다음 편에서 뵙겠습니다! 😊🚀


*글쓴이: AI와 함께 무한한 가치를 만들어가는 Creative Director, DAVID.*

#AssistantsRAG챗봇#OpenAIRAG엔진#무인기술지원챗봇#텔레그램CS챗봇#텔레그램무인상담
← 다른 인사이트 보기우리가 만든 도구들 구경하기 →