기존 애플리케이션에 LLM 통합하기: 모범 사례 및 사례 연구
요약
본 문서는 기존 이커머스 백엔드에 LLM 기반 주문 지원 에이전트를 통합하는 방법을 안내합니다. 레거시 시스템을 읽기 전용으로 간주하고, OpenAI의 도구(Tool) 스키마를 활용하여 API 호출 로직을 정의합니다. 또한, 최신 정책 문서를 컨텍스트로 유지하기 위한 모범 사례도 제시합니다.
핵심 포인트
- 레거시 시스템은 read-only로 취급하며, LLM이 도구를 사용하도록 매핑해야 합니다.
- 시스템 프롬프트는 에이전트의 역할을 명확히 제한하고 환각을 방지하는 데 중요합니다.
- 정책 문서는 런타임에 로드하여 전체 컨텍스트를 유지하는 것이 효율적입니다.
- Oxlo.ai와 같은 플랫폼은 요청당 비용 청구를 통해 긴 정책 문서 주입의 부담을 줄여줍니다.
우리는 기존의 이커머스 백엔드 위에 위치하는 주문 지원 에이전트를 구축할 것입니다. 이 에이전트는 주문을 조회하고, 실시간 정책 문서와 비교하여 환불 적격 여부를 확인하며, 데이터 조작 없이 고객 질문에 답변합니다. 이 패턴은 이미 운영 중인 모든 내부 API에 적용될 수 있습니다.
준비물
- Python 3.10 이상
- https://portal.oxlo.ai에서 받은 Oxlo.ai API 키
- OpenAI SDK:
pip install openai
Step 1: 기존 애플리케이션 계층 스캐폴딩하기
레거시 시스템을 읽기 전용(read-only)으로 간주합니다. 나중에 해당 기능들을 감싸겠지만, 먼저 통합할 무언가가 필요합니다. 이 내용을 legacy_orders.py로 저장하세요.
# legacy_orders.py
# 직접 수정할 수 없는 기존 애플리케이션 코드입니다.
...
Step 2: 에이전트의 도구 정의하기
레거시 함수들을 OpenAI와 호환되는 도구 스키마로 매핑합니다. LLM은 이 정의를 사용하여 언제 우리 코드를 호출할지 결정하게 됩니다.
# agent.py
import json
from legacy_orders import get_order, calculate_refund
...
Step 3: 시스템 프롬프트 작성하기
에이전트를 좁은 역할로 제한합니다. 에이전트는 사실 확인을 위해 도구를 사용해야 하며, 주문 데이터를 절대 환각(hallucinate)해서는 안 되고, 누락된 ID를 요청해야 합니다.
SYSTEM_PROMPT = """당신은 LegacyOrder API와 통합된 지원 에이전트인 OrderBot입니다.
당신은 get_order와 calculate_refund라는 두 가지 도구에 접근할 수 있습니다.
...
Step 4: 에이전트 루프 구축하기
Oxlo.ai 클라이언트를 초기화하고, 사용자 메시지를 보내며, 모든 도구 호출을 처리합니다. 모델이 도구 결과에 반응할 수 있도록 루프를 실행합니다.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
...
Step 5: 기존 문서에 에이전트 접지시키기
5단계: 기존 문서에 에이전트 접지시키기
대부분의 팀은 자주 변경되는 정책 문서를 가지고 있습니다. 규칙을 하드코딩하는 대신, 기존 환불 정책을 로드하여 시스템 프롬프트 앞에 붙여주세요. Oxlo.ai는 토큰당이 아닌 요청(request)당 비용을 청구하므로, 긴 정책 문서를 주입해도 추론 비용(inference cost)이 증가하지 않습니다. 이 덕분에 전체 컨텍스트를 프롬프트에 유지하고 오래된 요약본을 피하는 것이 실용적입니다.
refund_policy.txt 파일을 생성하세요:
Refund Policy
- Items must be delivered before a refund can be issued.
- Refunds are processed to the original payment method within 5 business days.
...
그런 다음 런타임에 시스템 프롬프트를 업데이트하세요:
def load_policy(path: str = "refund_policy.txt") -> str:
try:
with open(path, "r") as f:
...
실행해보기 (Run it)
실제 질의를 사용하여 에이전트를 호출하고 레거시 시스템과 상호작용하는 것을 지켜보세요.
if __name__ == "__main__":
query = "Can I get a refund for order ORD-1002?"
answer = run_agent(query)
...
예상 출력:
Order ORD-1002 exists and has been delivered. It is eligible for a refund of $299.00. Please note that shipping costs are non-refundable, and the refund will be processed to the original payment method within 5 business days.
주문 ID 없이 후속 질문을 시도하여 명확히 요청하는지 확인해 보세요:
query = "I need a refund"
print(run_agent(query))
예상 응답:
I can help with that. Please provide the order ID so I can look it up.
다음 단계 (Next steps)
이 에이전트를 FastAPI 엔드포인트나 Slack 슬래시 명령어(slash command)를 통해 노출하여 기존 스택에 연결하세요. 또한, 더 강력한 다국어 추론이나 송장 이미지에 대한 비전 지원이 필요하다면 Oxlo.ai에서 모델을 qwen-3-32b 또는 kimi-k2.6으로 전환할 수도 있습니다.
Oxlo.ai는 요청당 고정 요금(flat per-request pricing)을 사용하기 때문에, 긴 정책 문서나 다중 턴 도구 루프를 추가하더라도 토큰 기반 제공업체처럼 청구서가 부풀려지지 않습니다. 이러한 워크플로우의 경우, 해당 가격 모델이 풍부한 컨텍스트에 대한 페널티를 제거해 줍니다. 최신 요금제는 https://oxlo.ai/pricing에서 확인하실 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기