마루옵스서버 · 네트워크 · AI 기술 노트

소개문의

[Local LLM 구축하기 25] 로컬·클라우드 요청을 나누는 기준

노트북과 커피가 놓인 밝은 책상

참고 사진 · 노트북과 커피가 놓인 밝은 책상 · 사진: Lauren Mancke / 원본 / CC0 · 목록용 크기 조정

Local LLM 구축하기 · 25/30 · 에이전트와 연결

전체 연재와 학습 순서 · 실습 코드 ZIP

로컬 모델을 기본으로 쓰면서 일부 질문만 외부 모델에 보낼 수 있습니다. 이때는 사용자가 전송 대상을 확인할 수 있어야 해요. 로컬 실행이 실패해도 자동으로 클라우드에 넘기지 않는 분기를 만들어 보겠습니다.

13편과 24편의 공용 파일을 사용합니다. 외부 호출은 사용자가 선택한 비민감 질문에만 허용합니다.

로컬 실패와 외부 전송 정책

메모리가 부족해 로컬 요청이 실패했다고 자료의 외부 전송까지 허용된 것은 아닙니다. 가용성을 위한 fallback과 데이터 전송 정책을 따로 정해야 합니다. 아래 예제는 로컬 실패를 그대로 알리고 자동 전환하지 않습니다.

입력 조건경로
기본 실행로컬 Ollama
–cloud만 지정외부 전송 확인이 없어 중단
–cloud –public 지정사용자가 고른 외부 모델
로컬 호출 오류오류를 반환하고 사용자가 원인 점검

public 옵션은 사용자가 확인했다는 표시입니다. 민감정보를 탐지하거나 공개 가능한 자료임을 보증하지는 않습니다. 주민번호가 없어도 기밀 자료일 수 있으므로 조직에서는 데이터 분류와 허용 경로를 별도로 정의합니다.

사용자가 선택하는 분기

import argparse
from llm_http import post, MODEL
from openrouter_demo import cloud_chat

parser = argparse.ArgumentParser()
parser.add_argument("--cloud", action="store_true")
parser.add_argument("--public", action="store_true",
                    help="외부 전송 가능한 비민감 질문임을 사용자가 확인")
args = parser.parse_args()
if args.cloud and not args.public:
    parser.error("Cloud use requires explicit --public confirmation")
question = input("질문: ").strip()
if not 1 <= len(question) <= 1000:
    raise SystemExit("Use a question of 1 to 1000 characters")
if args.cloud:
    model = input("검토한 OpenRouter 모델 ID: ").strip()
    answer, usage = cloud_chat(question, model)
    print(answer)
    print("route=cloud", usage)
else:
    r = post("/api/chat", {
        "model": MODEL, "messages": [{"role": "user", "content": question}],
        "stream": False,
        "options": {"num_ctx": 4096, "num_predict": 256, "temperature": 0.2}
    })
    print(r["message"]["content"])
    print("route=local")
.\.venv\Scripts\python.exe .\hybrid_chat.py
# 가상 질문을 외부에 보낼 때만 실행
.\.venv\Scripts\python.exe .\hybrid_chat.py --cloud --public

라우팅 규칙과 데이터 분류

모델에게 요청의 난도를 분류하게 할 수도 있지만 그 호출에도 시간과 비용이 듭니다. 외부 모델에 민감도 판단을 맡기면 분류 전에 이미 자료를 보낸 셈이에요. 우선 사용자 선택과 명확한 업무 규칙으로 경로를 나눕니다.

자동 라우팅이 필요하면 문서 종류와 길이, 허용 제공자, 모델별 평가 결과를 기준으로 정합니다. 예를 들어 사내 규정 검색은 로컬에 두고 공개 문서의 문체 수정만 외부 후보로 둘 수 있습니다. 어떤 자료를 어디로 보낼지 설명할 수 있는 규칙이 필요합니다.

경로·토큰·비용 기록

로그에는 질문 전문보다 경로, 모델 ID, 처리 시간, 상태와 토큰 수를 먼저 기록합니다. 입력·출력 토큰에 각각 단가를 곱해 비용을 더하고 별도의 도구 요금도 확인합니다. 실제 청구는 키별 한도와 계정 사용 내역으로 대조합니다.

샘플 CLI에는 여러 사용자 인증과 동시 요청 제한, 예산의 원자적 차감이 포함돼 있지 않습니다. 공유 서비스에서는 이런 처리를 추가해야 합니다. 요청 본문과 RAG 근거 중 무엇이 외부로 전송되는지도 사용자가 확인할 수 있게 구성합니다.

참고 자료

문서·모델 태그 확인 기준: 2026년 10월 18일. 기본 실습 환경: Windows 11 x64.


댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

닉네임·이메일·댓글 내용·IP 주소·브라우저 정보는 댓글 게시 및 관리에 사용됩니다. 이메일과 접속 정보는 공개 댓글에 표시하지 않습니다. 개인정보 요청은 운영자 이메일로 보내 주세요. 개인정보처리방침