""" 자연어 → 메신저 봇 명령어 파서 (NL Command Parser) Ollama(로컬 LLM) 기반으로 자연어 입력을 봇 명령어로 변환. Ollama 미연결 시 규칙 기반 폴백. 반환 형태: { "command": "!scrap", "args": ["https://example.com"], "full_command": "!scrap https://example.com", "confidence": 0.92, "explanation": "URL 스크랩 요청으로 판단" } """ from __future__ import annotations import json import logging import os import re from typing import Any, Dict, List, Optional, Tuple import httpx logger = logging.getLogger(__name__) OLLAMA_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") + "/api/generate" NL_MODEL = os.getenv("NL_COMMAND_MODEL", "llama3") TIMEOUT = 20 # Ollama 호출 타임아웃 MIN_CONFIDENCE = 0.55 # 이 이하면 "이해 못함"으로 처리 # ── Few-shot 프롬프트 ───────────────────────────────────────────────────────── _SYSTEM_PROMPT = """\ 너는 GUARDiA ITSM 메신저 봇의 자연어 명령 해석기다. 사용자의 자연어 입력을 분석해 아래 봇 명령어 중 하나로 변환하라. [지원 명령어 목록] !vibe [project_id] - SR에 대한 바이브 코딩 세션 시작 !build - 빌드 실행 !deploy - 배포 실행 !status - SR 상태 조회 !cancel - 세션 취소 !health - 서버 헬스체크 !log [path] - 서버 로그 분석 !sm