Phase 8 · 대규모 회계 플랫폼 구축

회계 데이터를 이해하고 답하는, AI 회계 Assistant 만들기

43단계에서 완성한 시스템 위에 AI 채팅 인터페이스를 올립니다.
"올해 상반기 광고비가 왜 늘었어?"라는 질문에 AI가 멋대로 숫자를 지어내지 않도록, 질문 이해 → 적절한 파이썬 함수 호출 → 정확한 SQL 계산 → AI의 자연어 요약이라는 완벽한 Function Calling 아키텍처를 구현합니다.

예상 학습 시간 : 450분
난이도 : ★★★★★
사전 단계 : DB + 웹 기반 회계 SaaS 완성 (Step 43)
다음 단계 : 45단계 - 회계 자동화 SaaS 구축 (예정)
01

제1원칙: 계산은 Python, 설명은 AI

회계 실무에서 AI를 쓸 때 가장 범하기 쉬운 치명적인 실수가 "AI에게 원본 데이터(엑셀 10만 건)를 통째로 주고 계산하라고 시키는 것"입니다. LLM(대형 언어 모델)은 글을 쓰는 능력이 뛰어날 뿐, 정확한 산술 연산기(계산기)가 아닙니다. 반드시 환각(Hallucination) 현상으로 숫자를 틀리게 됩니다.

❌ 잘못된 구조: 회계사 질문 ─> AI가 전체 엑셀 직접 읽고 계산 ─> 엉뚱한 답변 ⭕ 올바른 구조: 회계사 질문 ─> AI가 의도(Intent) 파악 ─> Python SQL 조회 지시 ─> Python이 DB 계산 ─> 결과 요약 ─> AI 답변
02

Function Calling: AI가 파이썬을 조종하는 마법

이 원칙을 실현하는 기술이 바로 Function Calling입니다. 회계사가 "작년보다 매출이 늘었나?"라고 물으면, AI가 스스로 판단하여 개발자가 미리 만들어둔 compare_sales(year1, year2)라는 함수를 호출(Call)하도록 설계합니다.

03

안전한 Python SQL 함수들 만들기

보안을 위해 AI가 DB에 직접 `SELECT * FROM...` 쿼리를 날리게 해서는 안 됩니다. 파이썬 단에서 **현재 로그인된 유저의 권한(company_id)**이 무조건 들어가도록 통제된 함수를 준비합니다.

🐍 python
def get_monthly_sales(db, company_id: int, year: int, month: int):
    """특정 월의 매출 합계를 반환합니다."""
    result = db.execute(
        """
        SELECT SUM(amount)
        FROM transactions
        WHERE company_id = :company_id  # <-- 권한 통제 필수!
          AND YEAR(transaction_date) = :year
          AND MONTH(transaction_date) = :month
        """,
        {"company_id": company_id, "year": year, "month": month}
    )
    return result.scalar() or 0

마찬가지로 get_high_risk_transactions(), get_customer_sales() 등도 미리 정의해 둡니다.

04

AI에게 건네주는 데이터는 최소한의 JSON으로

파이썬이 연산을 마쳤으면, 전체 DB 데이터가 아니라 딱 요약된 JSON 결과만 AI(OpenAI GPT-4 등)로 넘깁니다. 이는 프라이버시 보호와 토큰 비용 절약의 핵심입니다.

{
    "previous_sales": 286000000,
    "current_sales": 324000000,
    "growth_rate": 13.29
}

이 데이터를 받은 AI는 "올해 매출은 3억 2,400만원으로 전년 대비 약 13.3% 증가했습니다." 라고 자연스럽게 문장을 생성해 냅니다.

05

회계사용 특화 프롬프트(Prompt) 설계

일반 챗봇처럼 말하지 않도록, 시스템 프롬프트(System Prompt)에 회계 특화된 제약 조건을 엄격하게 부여합니다.

시스템 프롬프트 예시

1. 제공된 데이터만 근거로 답변하십시오.
2. 스스로 계산하려 하지 말고 Python의 결과를 그대로 사용하십시오.
3. "부정거래(Fraud)"라고 단정하지 말고 "우선 검토가 필요하다"고 표현하십시오.
4. 금액은 읽기 쉽게 '원' 단위(예: 1억 2,000만원)로 변환해 출력하십시오.
5. 답변 마지막에 데이터가 추출된 근거(조회기간, 건수 등)를 명시하십시오.

06

"왜?"라는 질문(Context) 유지를 위한 DB 설계

회계사가 "매출이 얼마야?" 라고 묻고 이어서 "어디서 제일 많이 늘었어?" 라고 물을 때, 챗봇이 이전 대화의 문맥(매출)을 기억해야 합니다. 따라서 MariaDB에 ai_conversations 테이블을 만들어 채팅 기록(Session)을 관리합니다.

07

데이터 보안과 프라이버시 (매우 중요)

API를 통해 외부(OpenAI 등)로 데이터가 나갈 때, **주민등록번호, 계좌번호, 대표자 개인 연락처** 등의 불필요한 PII(개인식별정보)는 절대 넘기지 않도록 백엔드(FastAPI) 단에서 마스킹(Masking)하거나 아예 필터링하여 제외해야 합니다. AI에게는 `거래처A`, `금액`, `날짜` 정도의 판단을 위한 필수 정보만 전달합니다.

08

45단계 예고: 대망의 "회계 자동화 SaaS" 최종 구축

데이터 수집, 분석, 시각화, 그리고 대화형 AI 인터페이스까지 모든 무기가 갖춰졌습니다.

다음 마지막 45단계에서는 지금까지 배운 모든 지식을 융합하여, 다수의 기장 고객을 관리하고, 사용자별 권한(Auth)을 통제하며, 실제 비즈니스 런칭(Deploy)이 가능한 수준의 거대한 회계 SaaS 플랫폼을 최종적으로 배포하는 여정을 다룹니다.

Step 43 : DB + 웹 기반 회계 SaaS 완성 Phase 8 공사중