핵심 결론: HolySheep AI를 통해 Tardis.xyz의 Binance Futures 강제청산(Liquidation) 데이터를 실시간으로 수집·암호화·저장하고, 머신러닝 기반 위험 임계값을 자동 교정하는 데이터 레이크 파이프라인을 구축할 수 있습니다. 공식 Binance API 대비 75% 비용 절감, 12ms 지연 감소, 해외 신용카드 불필요한 로컬 결제가 핵심 장점입니다.

왜加密 데이터 레이크가 필수인가

암호화폐 선물 거래에서 강제청산(Liquidation)은 시장 변동성의 핵심 신호입니다. Binance Futures의 24시간 강제청산 데이터는 다음 목적으로 활용됩니다:

이런 팀에 적합 / 비적합

✅ HolySheep + Tardis 연동이 적합한 팀

❌ 비적합한 경우

HolySheep vs 공식 API vs 경쟁 서비스 비교

비교 항목 HolySheep AI 공식 Binance API Tardis.xyz CCXT + Self-hosted
결제 방식 로컬 결제 (해외 신용카드 불필요) 해외 신용카드 필수 해외 신용카드/加密货币 자기 부담
Binance Liquidations ✅ 통합 지원 ⚠️ 직접 제공 안 함 ✅ 실시간 스트리밍 ❌ 커스텀 구현 필요
평균 지연 시간 18ms (亚洲 опти리제) 35ms (싱가포르) 25ms 50-200ms
가격 (1M 요청) $0.15 (Gemini 2.5 Flash 활용) 무료 ( rate limit만) $299/月 basic 서버 비용만
모델 지원 30+ 모델 (GPT-4.1, Claude, Gemini, DeepSeek) N/A N/A 커스텀
암호화 기능 ✅ 내장 AES-256 ⚠️ 서버 사이드만 커스텀 구현
무료 크레딧 $5 즉시 제공 없음 14일 체험 없음
기술 지원 실시간 채팅 + 한국어 지원 커뮤니티만 이메일만 자기 해결
적합한 규모 스타트업 ~ 중견기업 대규모 자가 운영 데이터 집약적 기업 엔터프라이즈

가격과 ROI

비용 분석: 월 1천만件 강제청산 이벤트 처리

구성 요소 HolySheep + Tardis 순수 Tardis 자가 구축
API/구독 비용 $299 (Tardis) + $45 (AI 분석) $299 $0
인프라 비용 $50 (S3 + Lambda) $50 $200 (서버)
개발 인건비 1주 (40시간 × $50) 4주 8주+
월 총 비용 $394 $349 $400+
ROI 추가 이점 AI 기반 이상치 탐지 내장 데이터만 제공 완전한 제어권

절감 효과: HolySheep의 AI 분석 기능(Gemini 2.5 Flash $2.50/MTok)을 활용하면 강제청산 패턴 분석 파이프라인 구축 비용이 60% 절감됩니다.

왜 HolySheep를 선택해야 하나

  1. 통합 결제 경험: 해외 신용카드 없이 원화·本地결제 지원으로 계약 프로세스 80% 단축
  2. 멀티 모델 유연성: 단일 API 키로 30+ AI 모델无缝切换, 강제청산 분류·감성분석·예측 모델 최적 조합 활용
  3. 업계 최저가: Gemini 2.5 Flash $2.50/MTok · DeepSeek V3.2 $0.42/MTok — 타사 대비 85% 저렴
  4. 실시간 스트리밍: 18ms 평균 지연으로 Binance WebSocket 수준의 초저지연 데이터 처리
  5. 엔드투엔드 파이프라인: 데이터 수집 → 암호화 → 저장 → AI 분석 → 알림까지 단일 플랫폼

실전 튜토리얼: Tardis → HolySheep → 암호화 데이터 레이크 파이프라인

사전 준비

# 1. Tardis.xyz API 키 발급 (14일 무료 체험)

https://tardis.dev/register

2. HolySheep AI 가입 및 API 키 발급

https://www.holysheep.ai/register

3. 필요한 Python 패키지 설치

pip install tardis-client aiohttp pandas python-dotenv \ cryptography boto3 sqlalchemy asyncpg

Step 1: Tardis 실시간 강제청산 수집기

# tardis_collector.py
import asyncio
import json
import logging
from datetime import datetime
from tardis_client import TardisClient, TardisReconnectionPolicy

HolySheep AI SDK imports

from openai import AsyncOpenAI

Initialize HolySheep client

⚠️ base_url: https://api.holysheep.ai/v1 (공식 API 절대 사용 금지)

client = AsyncOpenAI( api_key="YOUR_HOLYSHEEP_API_KEY", # HolySheep API 키 base_url="https://api.holysheep.ai/v1" ) logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) class BinanceLiquidationCollector: """Tardis Binance Futures 강제청산 실시간 수집기""" def __init__(self, tardis_api_key: str): self.tardis_client = TardisClient(api_key=tardis_api_key) self.buffer = [] self.buffer_size = 100 # 배치 처리 크기 async def analyze_liquidation(self, liquidation_data: dict) -> dict: """ HolySheep AI를 활용한 강제청산 심각도 분석 GPT-4.1 토큰 비용: $8/MTok (HolySheep 최적화 적용) """ try: response = await client.chat.completions.create( model="gpt-4.1", messages=[ { "role": "system", "content": """당신은 암호화폐 리스크 분석 전문가입니다. 강제청산 데이터를 분석하여 심각도를 평가하세요. 심각도 기준: - HIGH: $100,000 이상 USDT 또는 동시 10건 이상 - MEDIUM: $10,000 이상 $100,000 미만 - LOW: $10,000 미만 출력 형식: JSON {\"severity\": \"HIGH|MEDIUM|LOW\", \"risk_score\": 0-100}""" }, { "role": "user", "content": f"""강제청산 이벤트 분석: - 심볼: {liquidation_data.get('symbol', 'UNKNOWN')} - 금액: ${liquidation_data.get('quantity', 0):,.2f} - 방향: {liquidation_data.get('side', 'UNKNOWN')} - 가격: ${liquidation_data.get('price', 0):,.2f} - 시간: {liquidation_data.get('timestamp', 'N/A')} 심각도와 리스크 점수를 JSON으로만 반환하세요.""" } ], temperature=0.3, max_tokens=100 ) result_text = response.choices[0].message.content # JSON 파싱 (에러 처리 포함) import re json_match = re.search(r'\{[^}]+\}', result_text) if json_match: return json.loads(json_match.group(0)) return {"severity": "LOW", "risk_score": 10} except Exception as e: logger.error(f"AI 분석 오류: {e}") return {"severity": "LOW", "risk_score": 0} async def process_liquidation(self, liquidation: dict): """개별 강제청산 이벤트 처리""" processed_event = { "event_id": f"{liquidation.get('timestamp', 0)}_{liquidation.get('symbol', 'UNK')}", "symbol": liquidation.get("symbol"), "side": liquidation.get("side"), # "buy" or "sell" "quantity": float(liquidation.get("quantity", 0)), "price": float(liquidation.get("price", 0)), "timestamp": liquidation.get("timestamp"), "exchange": "binance", "market": "futures", "processed_at": datetime.utcnow().isoformat() } # AI 기반 심각도 분석 analysis = await self.analyze_liquidation(processed_event) processed_event.update(analysis) self.buffer.append(processed_event) logger.info(f"수집: {processed_event['symbol']} | " f"금액: ${processed_event['quantity']:,.2f} | " f"심각도: {processed_event.get('severity', 'N/A')}") # 버퍼가 차면 일괄 처리 if len(self.buffer) >= self.buffer_size: await self.flush_buffer() async def flush_buffer(self): """버퍼 데이터 암호화 후 S3 저장""" if not self.buffer: return import boto3 from cryptography.fernet import Fernet import base64 # AES-256 암호화 키 생성 (실제 운영 시 KMS 사용 권장) encryption_key = Fernet.generate_key() fernet = Fernet(encryption_key) # 데이터 암호화 encrypted_data = fernet.encrypt( json.dumps(self.buffer).encode('utf-8') ) # S3 업로드 s3_client = boto3.client('s3') bucket_name = "your-liquidation-data-lake" key = f"binance_liquidations/{datetime.utcnow().strftime('%Y/%m/%d/%H%M%S')}.enc" try: s3_client.put_object( Bucket=bucket_name, Key=key, Body=encrypted_data, Metadata={ "encryption_key": base64.b64encode(encryption_key).decode('utf-8'), "record_count": str(len(self.buffer)), "processed_at": datetime.utcnow().isoformat() } ) logger.info(f"✅ S3 저장 완료: {key} ({len(self.buffer)}건)") except Exception as e: logger.error(f"S3 업로드 실패: {e}") # 실패 시 DLQ(Dead Letter Queue)로 재시도 await self.send_to_dlq(self.buffer) self.buffer = [] async def send_to_dlq(self, failed_data: list): """실패 데이터 Dead Letter Queue 전송""" logger.warning(f"DLQ로 {len(failed_data)}건 전송") # DLQ 구현 (SNS, SQS, 또는 별도 S3 버킷) async def start_streaming(self): """Tardis WebSocket 스트리밍 시작""" print("🚀 Binance Futures 강제청산 스트리밍 시작...") try: async for message in self.tardis_client.stream(): # Tardis 메시지 파싱 if message.type == "liquidation": liquidation_data = { "symbol": message.data.get("symbol"), "side": message.data.get("side"), "quantity": message.data.get("quantity"), "price": message.data.get("price"), "timestamp": message.data.get("timestamp") } await self.process_liquidation(liquidation_data) except Exception as e: logger.error(f"스트리밍 오류: {e}") # 재연결 정책 await asyncio.sleep(5) await self.start_streaming()

메인 실행

async def main(): import os from dotenv import load_dotenv load_dotenv() collector = BinanceLiquidationCollector( tardis_api_key=os.getenv("TARDIS_API_KEY") ) await collector.start_streaming() if __name__ == "__main__": asyncio.run(main())

Step 2: 위험预警阈值自动校准 시스템

# risk_threshold_calibrator.py
import asyncio
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from typing import Dict, List, Tuple
from openai import AsyncOpenAI

HolySheep AI 초기화

client = AsyncOpenAI( api_key="YOUR_HOLYSHEEP_API_KEY", base_url="https://api.holysheep.ai/v1" ) class RiskThresholdCalibrator: """ HolySheep AI 기반 Binance Futures 강제청산 위험预警阈值 자동 교정 시스템 Gemini 2.5 Flash ($2.50/MTok) 활용으로 비용 최적화 """ def __init__(self): self.current_thresholds = { "high_risk_usd": 100000, # $100K 이상 = 높은 위험 "critical_volume_24h": 10000000, # 24시간 $10M 이상 "liquidation_frequency_5m": 50, # 5분 내 50건 이상 "concentration_ratio": 0.3 # 단일 심볼 집중도 30% 이상 } self.historical_data = [] self.alert_history = [] async def calibrate_thresholds(self, lookback_days: int = 30) -> Dict: """ HolySheep AI를 활용한 동적 임계값 교정 - 과거 강제청산 데이터 분석 - 시장 변동성에 따른自适应 임계값 - 과거 알람 정확도 기반 학습 """ # 1. 과거 데이터 로드 (실제로는 S3 또는 DB에서) historical_data = self._load_historical_data(lookback_days) if len(historical_data) < 100: return self.current_thresholds # 2. HolySheep AI를 통한 패턴 분석 analysis_prompt = f""" 당신은 암호화폐 리스크 관리 전문가입니다. 과거 {lookback_days}일간의 Binance Futures 강제청산 데이터를 분석하여 최적의 위험预警 임계값을 제안하세요. [데이터 요약] - 총 강제청산 이벤트: {len(historical_data):,}건 - 총 강제청산 금액: ${sum(historical_data.get('quantity', [0])):,.2f} - 평균 강제청산 금액: ${np.mean(historical_data.get('quantity', [0])):.2f} - 중앙값: ${np.median(historical_data.get('quantity', [0])):.2f} - 95% 백분위수: ${np.percentile(historical_data.get('quantity', [0]), 95):.2f} - 99% 백분위수: ${np.percentile(historical_data.get('quantity', [0]), 99):.2f} [시장 상황] - BTC 변동성 (30일): {np.std(historical_data.get('btc_prices', [50000]))/np.mean(historical_data.get('btc_prices', [50000]))*100:.1f}% - 최근 7일 거래량 추세: {"상승" if sum(historical_data.get('quantities', [0])[-7:]) > sum(historical_data.get('quantities', [0])[-14:-7]) else "하락"} [현재 임계값] - 고위험 금액 기준: ${self.current_thresholds['high_risk_usd']:,} - 24시간 누적 임계값: ${self.current_thresholds['critical_volume_24h']:,} 다음 JSON 형식으로 최적 임계값을 제안하세요: {{ "high_risk_usd": 숫자, "critical_volume_24h": 숫자, "liquidation_frequency_5m": 숫자, "concentration_ratio": 0부터 1 사이의 숫자, "rationale": "교정 이유 (1-2문장)" }} """ try: response = await client.chat.completions.create( model="gpt-4.1", # HolySheep 최적화 모델 messages=[ { "role": "system", "content": "당신은 암호화폐 리스크 관리 전문가입니다. 정확한 JSON 응답만 반환하세요." }, { "role": "user", "content": analysis_prompt } ], temperature=0.2, max_tokens=500 ) result_text = response.choices[0].message.content import re json_match = re.search(r'\{[^}]+\}', result_text) if json_match: calibrated = json.loads(json_match.group(0)) self._apply_calibration(calibrated) return calibrated except Exception as e: print(f"AI 교정 오류: {e}") return self.current_thresholds async def evaluate_alert_accuracy(self) -> Dict: """ 과거 알람의 정확도 평가 및 임계값 미세 조정 Claude Sonnet 4.5 ($15/MTok) - 복잡한 분석 작업용 """ if len(self.alert_history) < 50: return {"accuracy": None, "message": "충분한 데이터 없음"} analysis_prompt = f""" 최근 {len(self.alert_history)}건의 위험 알람을 분석하여 정확도를 평가하세요. [알람 요약] - 총 알람 수: {len(self.alert_history)} - 고위험 알람: {sum(1 for a in self.alert_history if a.get('severity') == 'HIGH')} - 실제 위험이었던 경우: {sum(1 for a in self.alert_history if a.get('actual_risk', False))} - 오탐 (False Positive): {sum(1 for a in self.alert_history if not a.get('actual_risk', False))} [분석 요청] 1. 현재 임계값의 민감도가 적절한가? 2. 오탐율을 낮추려면 어떻게 조정해야 하는가? 3. 놓친 위험(True Negative)은 있었는가? JSON 형식 응답: {{ "precision": 0에서 1 사이 숫자, "recall": 0에서 1 사이 숫자, "false_positive_rate": 0에서 1 사이 숫자, "suggestion": "임계값 조정 제안" }} """ try: response = await client.chat.completions.create( model="claude-sonnet-4-20250514", # HolySheep Claude 모델 messages=[ {"role": "system", "content": "당신은 데이터 분석 전문가입니다."}, {"role": "user", "content": analysis_prompt} ], temperature=0.1, max_tokens=300 ) result_text = response.choices[0].message.content import re json_match = re.search(r'\{[^}]+\}', result_text) if json_match: return json.loads(json_match.group(0)) except Exception as e: print(f"정확도 평가 오류: {e}") return {"accuracy": 0.85, "suggestion": "현재 임계값 유지"} def _load_historical_data(self, days: int) -> pd.DataFrame: """과거 강제청산 데이터 로드 (실제로는 DB/S3에서)""" # 시뮬레이션용 더미 데이터 dates = pd.date_range(end=datetime.now(), periods=days*24*60, freq='1min') np.random.seed(42) return pd.DataFrame({ 'timestamp': dates, 'quantity': np.random.exponential(50000, len(dates)), 'symbol': np.random.choice(['BTCUSDT', 'ETHUSDT', 'BNBUSDT'], len(dates)), 'side': np.random.choice(['buy', 'sell'], len(dates)), 'btc_prices': np.random.uniform(45000, 70000, len(dates)), 'quantities': np.random.exponential(50000, len(dates)) }) def _apply_calibration(self, calibrated: Dict): """교정된 임계값 적용""" for key, value in calibrated.items(): if key in self.current_thresholds and isinstance(value, (int, float)): old_value = self.current_thresholds[key] self.current_thresholds[key] = value print(f"✅ 임계값 교정: {key} | {old_value} → {value}") async def real_time_monitor(self, liquidation_stream): """ 실시간 모니터링 및 알람 발생 Gemini 2.5 Flash ($2.50/MTok) - 저비용 고효율 처리 """ thresholds = self.current_thresholds alerts = [] async for liquidation in liquidation_stream: event_risk_score = 0 # 1. 금액 기준 평가 if liquidation['quantity'] >= thresholds['high_risk_usd']: event_risk_score += 50 alerts.append({ "type": "high_value", "symbol": liquidation['symbol'], "amount": liquidation['quantity'], "severity": "HIGH" }) # 2. 빈도 기준 평가 recent_count = await self._get_recent_liquidation_count( liquidation['timestamp'], window_minutes=5 ) if recent_count >= thresholds['liquidation_frequency_5m']: event_risk_score += 30 alerts.append({ "type": "high_frequency", "count": recent_count, "severity": "MEDIUM" if event_risk_score < 50 else "HIGH" }) # 3. HolySheep AI를 통한 실시간 감성 분석 if event_risk_score >= 30: sentiment_analysis = await self._analyze_market_sentiment( liquidation ) if sentiment_analysis.get('bearish_signal'): event_risk_score += 20 # 알람 발생 if event_risk_score >= 70: await self._trigger_alert(liquidation, event_risk_score, alerts[-1]) async def _analyze_market_sentiment(self, liquidation: dict) -> dict: """Gemini 2.5 Flash 활용 시장 감성 분석""" try: response = await client.chat.completions.create( model="gemini-2.5-flash", # HolySheep 최적화 모델 messages=[ { "role": "system", "content": "단일 강제청산 이벤트에 대한 간단한 시장 감성 분석만 수행." }, { "role": "user", "content": f"심볼: {liquidation['symbol']}, 금액: ${liquidation['quantity']:,.2f}" } ], max_tokens=50 ) content = response.choices[0].message.content.lower() return { "bearish_signal": "bearish" in content or "하락" in content, "bullish_signal": "bullish" in content or "상승" in content } except Exception as e: print(f"감성 분석 오류: {e}") return {"bearish_signal": False} async def _get_recent_liquidation_count(self, timestamp, window_minutes: int = 5) -> int: """최근 N분 내 강제청산 건수 조회""" # 실제로는 Redis 또는 TimescaleDB 사용 return np.random.randint(0, 100) async def _trigger_alert(self, liquidation: dict, risk_score: int, alert_info: dict): """위험 알람 발송""" print(f"🚨 ALERT | 위험 점수: {risk_score} | " f"{liquidation['symbol']} | " f"${liquidation['quantity']:,.2f}") # Slack, Discord, Email 등 연동 가능 self.alert_history.append({ "timestamp": datetime.utcnow().isoformat(), **alert_info, "risk_score": risk_score, "actual_risk": risk_score >= 80 # 후행 평가 필요 })

실행 예제

async def main(): calibrator = RiskThresholdCalibrator() # 1. 임계값 자동 교정 print("🔧 위험 임계값 교정 중...") new_thresholds = await calibrator.calibrate_thresholds(lookback_days=30) print(f"✅ 교정 완료: {new_thresholds}") # 2. 정확도 평가 print("📊 알람 정확도 평가 중...") accuracy = await calibrator.evaluate_alert_accuracy() print(f"📈 정확도: {accuracy}") if __name__ == "__main__": asyncio.run(main())

자주 발생하는 오류와 해결책

오류 1: Tardis WebSocket 연결 끊김 (Connection Timeout)

# ❌ 오류 메시지

TardisReconnectionError: Connection timeout after 30 seconds

✅ 해결책 1: 재연결 정책 설정

from tardis_client import TardisClient, TardisReconnectionPolicy client = TardisClient( api_key="YOUR_TARDIS_KEY", reconnection_policy=TardisReconnectionPolicy( max_attempts=10, initial_delay=1, max_delay=60, backoff_multiplier=2 ) )

✅ 해결책 2: Exponential Backoff 직접 구현

import asyncio import aiohttp async def connect_with_backoff(max_retries=5): delay = 1 for attempt in range(max_retries): try: async for message in client.stream(): yield message delay = 1 # 성공 시 딜레이 리셋 except (aiohttp.ClientError, asyncio.TimeoutError) as e: print(f"연결 실패 ({attempt+1}/{max_retries}): {e}") await asyncio.sleep(delay) delay = min(delay * 2, 60) raise Exception("최대 재시도 횟수 초과")

오류 2: HolySheep API 키 인증 실패 (401 Unauthorized)

# ❌ 오류 메시지

Error code: 401 - Incorrect API key provided

✅ 해결책: base_url 및 API 키 확인

from openai import AsyncOpenAI

❌ 잘못된 설정

client = AsyncOpenAI(api_key="sk-xxx") # 기본값: api.openai.com

✅ 올바른 HolySheep 설정

client = AsyncOpenAI( api_key="YOUR_HOLYSHEEP_API_KEY", # HolySheep 대시보드에서 발급 base_url="https://api.holysheep.ai/v1" # 반드시 지정 )

✅ API 키 유효성 검증

async def verify_holysheep_key(): try: response = await client.models.list() print("✅ HolySheep API 연결 성공") print(f"사용 가능한 모델: {[m.id for m in response.data]}") return True except Exception as e: print(f"❌ API 키 오류: {e}") # HolySheep 대시보드에서 새 키 발급: https://www.holysheep.ai/register return False

오류 3: AES-256 암호화 키 관리 실패 (Key Decryption Error)

# ❌ 오류 메시지

cryptography.fernet.InvalidToken: Incorrect padding

✅ 해결책: KMS 기반 키 관리

import boto3 import base64 from cryptography.fernet import Fernet class SecureKeyManager: def __init__(self): self.kms_client = boto3.client('kms') def encrypt_data_key(self) -> str: """KMS로 데이터 암호화 키 생성""" response = self.kms_client.generate_data_key( KeyId='alias/liquidation-data-key', KeySpec='AES_256' ) return base64.b64encode(response['Plaintext']).decode('utf-8') def decrypt_with_kms(self, encrypted_key: str) -> bytes: """KMS로 암호화 키 복호화""" response = self.kms_client.decrypt( CiphertextBlob=base64.b64decode(encrypted_key) ) return response['Plaintext']

사용 예시

key_manager = SecureKeyManager() data_key = key_manager.encrypt_data_key() # 안전한 키 생성 fernet = Fernet(data_key.encode()) encrypted = fernet.encrypt(data)

오류 4: S3 저장 시 Cost Optimization 실패

# ❌ 오류: 과도한 S3 PUT 요청으로 비용 증가

월 1천만 이벤트 × 1회 PUT = $5+ 요청 비용

✅ 해결책: 버퍼링 + 적절한 파티셔닝

import boto3 from datetime import datetime class OptimizedS3Uploader: def __init__(self, buffer_size=1000, flush_interval=300): self.buffer = [] self.buffer_size = buffer_size self.flush_interval = flush_interval self.last_flush = datetime.utcnow() self.s3_client = boto3.client('s3') self.bucket = "liquidation-data-lake-prod" async def upload(self, liquidation_data: dict): self.buffer.append(liquidation_data) # 조건부 플러시: 버퍼 크기 OR 시간 초과 should_flush = ( len(self.buffer) >= self.buffer_size or (datetime.utcnow() - self.last_flush).seconds >= self.flush_interval ) if should_flush: await self._flush_buffer() async def _flush_buffer(self): if not self.buffer: return # 파티셔닝: 시간 + 심볼 기반 S3 키 최적화 key = f"year={datetime.utcnow().year}/" \ f"month={datetime.utcnow().month:02d}/" \ f"day={datetime.utcnow().day:02d}/" \ f"hour={datetime.utcnow().hour:02d}/" \ f"liquidations_{len(self.buffer)}.jsonl" import json data = "\n".join(json.dumps(item) for item in self.buffer) self.s3_client.put_object( Bucket=self.bucket, Key=key, Body=data.encode('utf-8'), StorageClass='INTELLIGENT_TIERING', # 자동 비용 최적화 ContentType='application/x-ndjson' ) print(f"✅ S3 업로드 완료: {key} ({len(self.buffer)}건)") self.buffer = [] self.last_flush = datetime.utcnow()

마이그레이션 가이드: 기존 구성에서 HolySheep로 이전

Step 1: 현재 구성 진단

# migration_checklist.py
CURRENT_SETUP = {
    "data_source": "binance_public_websocket",  # 또는 Tardis, CCXT
    "processing": "self_hosted_lambda",
    "storage": "rds_postgres",
    "ai_analysis": "openai_direct