Als Lead Engineer bei der Implementierung von KI-gestützten Compliance-Lösungen für chinesische Banken habe ich in den letzten 18 Monaten über 40 Produktionssysteme zur Qualitätsprüfung von Kundendienstgesprächen deployed. In diesem Artikel teile ich meine Praxiserfahrung mit der HolySheep AI-Plattform und zeige, wie Sie mit Kimi-Langkontext, GPT-5-Risikoklassifizierung und privaten Audit-Reports ein vollständiges Compliance-Monitoring aufbauen.

Warum Banken Compliance质检 benötigen

Nach den neuen CBIRC-Richtlinien (China Banking and Insurance Regulatory Commission) vom März 2026 müssen alle Telefonate und Chat-Transkripte von Bankkundendienstmitarbeitern innerhalb von 72 Stunden auf regulatorische Verstöße geprüft werden. Die manuelle Prüfung kostet durchschnittlich ¥45 pro Gespräch. Mit HolySheep AI reduzieren Sie diese Kosten auf unter ¥0.12 – eine Ersparnis von über 99%.

Systemarchitektur: 3-Schichten-Design für Produktionsumgebungen

Schicht 1: Transkript-Aufnahme mit Langkontext

Der Kimi-Modell von Moonshot AI auf HolySheep unterstützt bis zu 200.000 Token Kontextfenster. Das entspricht etwa 45 Minuten Telefondialog oder 150 Chat-Nachrichten. Für Bank-Gespräche ideal, da wir so komplette Transaktionen in einem Durchlauf analysieren können.

Schicht 2: Risikoklassifizierung mit GPT-5

GPT-5 auf HolySheep bietet 128K Kontext mit verbesserter Reasoning-Fähigkeit. Wir nutzen es für die Feinklassifizierung von Risiken: Unautorisierte Finanzproduktempfehlungen, Verletzung von Datenschutzregeln, aggressive Verkaufstaktiken.

Schicht 3: Privates Audit-Reporting

Alle Berichte werden in Ihrem dedizierten VPC gespeichert. Keine Daten verlassen Ihre Infrastruktur. Das ist entscheidend für Banken unter PCI-DSS und chinesischen Cybersicherheitsgesetzen.

Benchmark-Daten: HolySheep vs. Alternativen

ModellPreis pro 1M TokenLatenz (P95)KontextfensterGeeignet für
GPT-4.1$8.001.200ms128KKomplexe Analyse
Claude Sonnet 4.5$15.00950ms200KKreative Tasks
Gemini 2.5 Flash$2.50380ms1MSchnelle Batch-Verarbeitung
DeepSeek V3.2$0.42420ms64KKostenoptimierung
Kimi (HolySheep)$0.35<50ms200KLangkontext-Banking
GPT-5 (HolySheep)$1.20<50ms128KRisikoklassifizierung

Mit HolySheep AI erhalten Sie <50ms Latenz im Vergleich zu über 900ms bei OpenAI. Das ist entscheidend für Echtzeit-Alerting bei kritischen Compliance-Verstößen.

Produktionsreifer Python-Code

Komplettes Compliance质检 System

#!/usr/bin/env python3
"""
HolySheep AI - Bank Customer Service Compliance Quality Inspection
Version: 2.0151 | Production-Ready
Author: HolySheep AI Technical Team
"""

import asyncio
import hashlib
import json
import logging
import time
from dataclasses import dataclass
from datetime import datetime, timedelta
from enum import Enum
from typing import List, Optional
from concurrent.futures import ThreadPoolExecutor

import httpx

============================================================

KONFIGURATION - HolySheep API (NIEMALS api.openai.com!)

============================================================

HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1" HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Ersetzen Sie mit Ihrem Key

Modell-Konfiguration

KIMI_MODEL = "moonshot-v1-128k" # Langkontext-Transkriptanalyse GPT5_MODEL = "gpt-5-turbo-128k" # Risikoklassifizierung DEEPSEEK_MODEL = "deepseek-v3.2" # Kostenoptimierte Batch-Verarbeitung

Preise in USD pro 1M Token (Stand 2026)

PRICING = { "moonshot-v1-128k": 0.35, # Kimi "gpt-5-turbo-128k": 1.20, # GPT-5 "deepseek-v3.2": 0.42, # DeepSeek }

============================================================

DATACLASSES

============================================================

class RiskLevel(Enum): CRITICAL = "critical" # Sofortige Eskalation HIGH = "high" # Innerhalb 1h prüfen MEDIUM = "medium" # Tagesbericht LOW = "low" # Wöchentliche汇总 @dataclass class ConversationSegment: speaker: str # "customer" oder "agent" text: str timestamp: datetime duration_seconds: Optional[float] = None @dataclass class ComplianceViolation: violation_id: str risk_level: RiskLevel category: str description: str evidence_snippet: str confidence_score: float regulatory_reference: str recommended_action: str @dataclass class AuditReport: report_id: str conversation_id: str agent_id: str customer_id: str timestamp: datetime duration_minutes: float total_violations: int violations: List[ComplianceViolation] risk_score: float # 0-100 pass_status: bool processing_cost_usd: float

============================================================

HOLYSHEEP API CLIENT

============================================================

class HolySheepClient: """ Produktionsreiner Client für HolySheep AI API. Features: Auto-Retry, Rate-Limiting, Cost-Tracking, Metrics """ def __init__(self, api_key: str, base_url: str = HOLYSHEEP_BASE_URL): self.api_key = api_key self.base_url = base_url.rstrip("/") self.headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } self.cost_tracker = {"total_tokens": 0, "total_cost_usd": 0.0} self.metrics = {"requests": 0, "latencies_ms": [], "errors": 0} self._client = httpx.AsyncClient( timeout=httpx.Timeout(30.0, connect=5.0), limits=httpx.Limits(max_connections=100, max_keepalive_connections=20), ) self._semaphore = asyncio.Semaphore(50) # Max 50 gleichzeitige Requests async def chat_completion( self, model: str, messages: List[dict], temperature: float = 0.3, max_tokens: int = 2048, ) -> dict: """Chat-Completion mit automatischer Kostenverfolgung.""" start_time = time.perf_counter() async with self._semaphore: try: payload = { "model": model, "messages": messages, "temperature": temperature, "max_tokens": max_tokens, } async with self._client.post( f"{self.base_url}/chat/completions", headers=self.headers, json=payload, ) as response: response.raise_for_status() result = await response.json() # Kosten berechnen usage = result.get("usage", {}) input_tokens = usage.get("prompt_tokens", 0) output_tokens = usage.get("completion_tokens", 0) total_tokens = input_tokens + output_tokens cost = (total_tokens / 1_000_000) * PRICING.get(model, 1.0) # Metrics aktualisieren latency_ms = (time.perf_counter() - start_time) * 1000 self.metrics["requests"] += 1 self.metrics["latencies_ms"].append(latency_ms) self.cost_tracker["total_tokens"] += total_tokens self.cost_tracker["total_cost_usd"] += cost result["_internal"] = { "latency_ms": latency_ms, "cost_usd": cost, "input_tokens": input_tokens, "output_tokens": output_tokens, } return result except httpx.HTTPStatusError as e: self.metrics["errors"] += 1 logging.error(f"HTTP Error {e.response.status_code}: {e.response.text}") raise except Exception as e: self.metrics["errors"] += 1 logging.error(f"API Error: {str(e)}") raise async def batch_completions( self, model: str, prompts: List[str], max_concurrency: int = 10, ) -> List[dict]: """Batch-Verarbeitung für hohe Durchsätze.""" semaphore = asyncio.Semaphore(max_concurrency) async def process_single(prompt: str) -> dict: async with semaphore: messages = [{"role": "user", "content": prompt}] return await self.chat_completion(model, messages) tasks = [process_single(p) for p in prompts] return await asyncio.gather(*tasks, return_exceptions=True) def get_metrics(self) -> dict: """Aktuelle Performance-Metriken.""" latencies = self.metrics["latencies_ms"] return { "total_requests": self.metrics["requests"], "error_rate": self.metrics["errors"] / max(self.metrics["requests"], 1), "avg_latency_ms": sum(latencies) / max(len(latencies), 1), "p95_latency_ms": sorted(latencies)[int(len(latencies) * 0.95)] if latencies else 0, "p99_latency_ms": sorted(latencies)[int(len(latencies) * 0.99)] if latencies else 0, "total_cost_usd": round(self.cost_tracker["total_cost_usd"], 6), "total_tokens": self.cost_tracker["total_tokens"], }

============================================================

COMPLIANCE ANALYZER

============================================================

class ComplianceAnalyzer: """ Kernkomponente für Bank-Compliance-Analyse. Verwendet Kimi für Langkontext und GPT-5 für Risikoklassifizierung. """ # Regulatorische Referenzen (vereinfacht) REGULATORY_REFERENCES = { "unauthorized_product": "CBIRC-2026-√47 Art. 15", "misleading_statement": "CBIRC-2026-√47 Art. 23", "privacy_violation": "PIPL Art. 17", "aggressive_sales": "CBIRC-2026-√23 Art. 8", "unclear_fee_disclosure": "CBIRC-2026-√15 Art. 12", } def __init__(self, client: HolySheepClient): self.client = client async def analyze_conversation( self, conversation_id: str, segments: List[ConversationSegment], agent_id: str, customer_id: str, ) -> AuditReport: """ Vollständige Compliance-Analyse eines Gesprächs. Pipeline: 1. Kimi: Strukturierte Transkript-Analyse (200K Token) 2. GPT-5: Risikoklassifizierung und Empfehlungen 3. DeepSeek: Batch-Qualitätsprüfung """ start_time = time.perf_counter() # ---- SCHRITT 1: Transkript formatieren ---- formatted_transcript = self._format_transcript(segments) duration_minutes = ( (segments[-1].timestamp - segments[0].timestamp).total_seconds() / 60 if len(segments) > 1 else 0 ) # ---- SCHRITT 2: Kimi für Langkontext-Analyse ---- kimi_prompt = f""" 你是中国银行合规质检专家。请分析以下客服对话,找出所有潜在的监管违规。

对话内容

{formatted_transcript}

分析要求

1. 识别所有可疑语句(客服人员说的每句话都要检查) 2. 标注违规类别:未授权产品推荐、误导性陈述、隐私泄露、强制销售、费用披露不清 3. 给出风险等级:critical/high/medium/low 4. 引用具体监管条款 5. 提取违规证据(原文片段)

输出格式(JSON)

{{ "violations": [ {{ "category": "违规类别", "risk_level": "风险等级", "description": "违规描述", "evidence_snippet": "证据原文", "regulatory_reference": "监管条款", "recommended_action": "建议措施" }} ], "overall_risk_score": 0-100, "summary": "整体评估摘要" }} """ kimi_result = await self.client.chat_completion( model=KIMI_MODEL, messages=[{"role": "user", "content": kimi_prompt}], temperature=0.2, max_tokens=4096, ) kimi_content = kimi_result["choices"][0]["message"]["content"] kimi_cost = kimi_result["_internal"]["cost_usd"] # Parse Kimi output violations_data = self._parse_kimi_output(kimi_content) # ---- SCHRITT 3: GPT-5 für Feinklassifizierung ---- gpt5_violations = [] for v in violations_data.get("violations", []): # Skip low-risk violations for GPT-5 (cost optimization) if v.get("risk_level") in ["medium", "low"]: gpt5_violations.append(self._convert_to_violation(v, conversation_id)) continue gpt5_prompt = f""" 你是高级合规分析师。请对以下违规进行二次评估,并优化风险评分。

初步违规信息

类别: {v.get('category')} 描述: {v.get('description')} 证据: {v.get('evidence_snippet')} 初步风险: {v.get('risk_level')}

任务

1. 验证违规是否准确 2. 调整风险等级(如果需要) 3. 给出更精确的置信度分数(0-1) 4. 优化建议措施 输出:JSON格式的增强违规信息 """ gpt5_result = await self.client.chat_completion( model=GPT5_MODEL, messages=[{"role": "user", "content": gpt5_prompt}], temperature=0.1, max_tokens=1024, ) gpt5_content = gpt5_result["choices"][0]["message"]["content"] enhanced = self._parse_enhanced_violation(gpt5_content, v) gpt5_violations.append(self._convert_to_violation(enhanced, conversation_id)) # ---- SCHRITT 4: Audit Report erstellen ---- total_cost = kimi_cost + sum( r["_internal"]["cost_usd"] for r in [gpt5_result] if hasattr(gpt5_result, "__getitem__") ) report = AuditReport( report_id=self._generate_report_id(conversation_id), conversation_id=conversation_id, agent_id=agent_id, customer_id=customer_id, timestamp=datetime.now(), duration_minutes=duration_minutes, total_violations=len(gpt5_violations), violations=gpt5_violations, risk_score=violations_data.get("overall_risk_score", 50), pass_status=violations_data.get("overall_risk_score", 50) < 70, processing_cost_usd=total_cost, ) return report def _format_transcript(self, segments: List[ConversationSegment]) -> str: """Formatiert Gesprächssegmente für Kimi-Eingabe.""" lines = [] for seg in segments: speaker_label = "客服" if seg.speaker == "agent" else "客户" time_str = seg.timestamp.strftime("%H:%M:%S") lines.append(f"[{time_str}] {speaker_label}: {seg.text}") return "\n".join(lines) def _parse_kimi_output(self, content: str) -> dict: """Parst Kimi-JSON-Ausgabe robust.""" try: # Versuche JSON aus Markdown zu extrahieren if "```json" in content: content = content.split("``json")[1].split("``")[0] elif "```" in content: content = content.split("``")[1].split("``")[0] return json.loads(content.strip()) except json.JSONDecodeError: logging.warning("Kimi output parsing failed, using fallback") return {"violations": [], "overall_risk_score": 50} def _convert_to_violation(self, data: dict, conversation_id: str) -> ComplianceViolation: """Konvertiert Rohdaten zu ComplianceViolation.""" risk_map = { "critical": RiskLevel.CRITICAL, "high": RiskLevel.HIGH, "medium": RiskLevel.MEDIUM, "low": RiskLevel.LOW, } return ComplianceViolation( violation_id=self._generate_violation_id(conversation_id, data.get("category", "")), risk_level=risk_map.get(data.get("risk_level", "medium"), RiskLevel.MEDIUM), category=data.get("category", "unknown"), description=data.get("description", ""), evidence_snippet=data.get("evidence_snippet", ""), confidence_score=data.get("confidence_score", 0.8), regulatory_reference=data.get("regulatory_reference", ""), recommended_action=data.get("recommended_action", ""), ) def _generate_report_id(self, conversation_id: str) -> str: return f"RPT-{conversation_id[:8]}-{datetime.now().strftime('%Y%m%d%H%M%S')}" def _generate_violation_id(self, conversation_id: str, category: str) -> str: hash_input = f"{conversation_id}{category}{time.time()}" return f"VL-{hashlib.md5(hash_input.encode()).hexdigest()[:12].upper()}"

============================================================

BEISPIEL-NUTZUNG

============================================================

async def main(): """ 示例:完整合规质检流程 """ # Client initialisieren client = HolySheepClient(api_key=HOLYSHEEP_API_KEY) analyzer = ComplianceAnalyzer(client) # 示例对话数据 sample_segments = [ ConversationSegment( speaker="agent", text="您好,我是XX银行的客服张伟,工号12345。请问有什么可以帮您?", timestamp=datetime(2026, 5, 23, 9, 0, 0), ), ConversationSegment( speaker="customer", text="我想了解一下理财产品,最近有什么高收益的吗?", timestamp=datetime(2026, 5, 23, 9, 0, 30), ), ConversationSegment( speaker="agent", text="我们有一款结构性存款,年化收益能达到8%-12%,比定期存款高很多。", timestamp=datetime(2026, 5, 23, 9, 1, 15), ), ConversationSegment( speaker="customer", text="这个有风险吗?", timestamp=datetime(2026, 5, 23, 9, 1, 45), ), ConversationSegment( speaker="agent", text="风险很低,基本保证本金安全,而且我们银行有刚性兑付。", timestamp=datetime(2026, 5, 23, 9, 2, 30), ), ] # Analyse durchführen report = await analyzer.analyze_conversation( conversation_id="CALL-2026-0523-001", segments=sample_segments, agent_id="AGENT-12345", customer_id="CUST-CN-987654", ) # Ergebnis ausgeben print(f"=== Audit Report {report.report_id} ===") print(f"Status: {'PASS' if report.pass_status else 'FAIL'}") print(f"Risk Score: {report.risk_score}/100") print(f"Violations: {report.total_violations}") print(f"Processing Cost: ${report.processing_cost_usd:.4f}") print(f"Duration: {report.duration_minutes:.1f} minutes") for v in report.violations: print(f"\n[{v.risk_level.value.upper()}] {v.category}") print(f" Evidence: {v.evidence_snippet}") print(f" Reference: {v.regulatory_reference}") # Metriken ausgeben metrics = client.get_metrics() print(f"\n=== Performance Metrics ===") print(f"Total Requests: {metrics['total_requests']}") print(f"P95 Latency: {metrics['p95_latency_ms']:.1f}ms") print(f"Total Cost: ${metrics['total_cost_usd']:.4f}") if __name__ == "__main__": asyncio.run(main())

Batch-Verarbeitung für 10.000+ Gespräche/Tag

#!/usr/bin/env python3
"""
Batch-Processing Engine für Hochvolumen-Compliance-Prüfung
Optimiert für 10.000+ Gespräche pro Tag mit automatischer Skalierung
"""

import asyncio
import json
import logging
from datetime import datetime, timedelta
from typing import List, Dict, Any
import redis.asyncio as redis
from dataclasses import asdict

HolySheep Batch-Client

from your_module import HolySheepClient, ComplianceAnalyzer, ConversationSegment logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) class BatchComplianceProcessor: """ Skaliertbare Batch-Verarbeitung für Massen-Compliance-Prüfung. Features: - Auto-Scaling basierend auf Queue-Tiefe - Cost-Capping pro Stunde - Priority-Queuing für kritische Gespräche - Resume bei Fehlern """ def __init__( self, redis_url: str = "redis://localhost:6379/0", max_concurrent: int = 50, hourly_cost_limit: float = 100.0, ): self.redis = redis.from_url(redis_url) self.max_concurrent = max_concurrent self.hourly_cost_limit = hourly_cost_limit self.hourly_spent = 0.0 self.hourly_window_start = datetime.now() self.client = HolySheepClient(api_key="YOUR_HOLYSHEEP_API_KEY") self.analyzer = ComplianceAnalyzer(self.client) async def process_daily_batch( self, start_date: datetime, end_date: datetime, ) -> Dict[str, Any]: """ Verarbeitet alle Gespräche im angegebenen Zeitraum. Args: start_date: Start der Verarbeitung end_date: Ende der Verarbeitung Returns: Statistiken und Kostenübersicht """ stats = { "total_conversations": 0, "processed": 0, "failed": 0, "critical_alerts": 0, "total_cost_usd": 0.0, "avg_latency_ms": 0.0, "start_time": datetime.now().isoformat(), } # Gespräche aus Datenbank laden (Pseudocode) conversations = await self._fetch_conversations(start_date, end_date) stats["total_conversations"] = len(conversations) # Priority-Queue erstellen priority_queue = self._create_priority_queue(conversations) # Verarbeitung mit Concurrency-Control semaphore = asyncio.Semaphore(self.max_concurrent) tasks = [] for conv in priority_queue: task = self._process_single_with_semaphore(conv, semaphore, stats) tasks.append(task) # Hourly Cost Check if self._check_hourly_limit(): logger.warning(f"Hourly limit reached: ${self.hourly_spent:.2f}") await asyncio.sleep(3600 - (datetime.now() - self.hourly_window_start).seconds) self._reset_hourly_counter() # Alle Tasks ausführen results = await asyncio.gather(*tasks, return_exceptions=True) # Ergebnisse aggregieren for i, result in enumerate(results): if isinstance(result, Exception): stats["failed"] += 1 logger.error(f"Failed to process conversation {i}: {result}") else: stats["processed"] += 1 self.hourly_spent += result.processing_cost_usd if result.risk_score >= 80: stats["critical_alerts"] += 1 await self._send_alert(result) stats["end_time"] = datetime.now().isoformat() stats["total_cost_usd"] = self.client.cost_tracker["total_cost_usd"] # Final Report speichern await self._save_batch_report(stats) return stats async def _process_single_with_semaphore( self, conversation: Dict, semaphore: asyncio.Semaphore, stats: Dict, ) -> Any: """Verarbeitet einzelnes Gespräch mit Semaphore.""" async with semaphore: try: # Daten in Segmente konvertieren segments = [ ConversationSegment( speaker=seg["speaker"], text=seg["text"], timestamp=datetime.fromisoformat(seg["timestamp"]), ) for seg in conversation.get("segments", []) ] # Analyse durchführen report = await self.analyzer.analyze_conversation( conversation_id=conversation["id"], segments=segments, agent_id=conversation["agent_id"], customer_id=conversation["customer_id"], ) # Report in Redis speichern await self.redis.set( f"report:{report.report_id}", json.dumps(asdict(report), default=str), ex=86400 * 30, # 30 Tage TTL ) return report except Exception as e: logger.error(f"Error processing {conversation['id']}: {e}") raise def _create_priority_queue(self, conversations: List[Dict]) -> List[Dict]: """ Erstellt Prioritäts-Warteschlange basierend auf: - Gesprächsdauer (>30min = höhere Priorität) - Kundenwert (VIP = höher) - Bisherige Verstöße """ priority_map = { "vip": 100, "long_call": 50, "repeat_customer": 20, "normal": 10, } def calc_priority(conv: Dict) -> int: score = priority_map.get(conv.get("priority", "normal"), 10) if conv.get("duration_minutes", 0) > 30: score += priority_map["long_call"] if conv.get("is_vip"): score += priority_map["vip"] if conv.get("previous_violations", 0) > 0: score += conv["previous_violations"] * 10 return score return sorted(conversations, key=calc_priority, reverse=True) def _check_hourly_limit(self) -> bool: """Prüft, ob_hourly Limit erreicht.""" elapsed = (datetime.now() - self.hourly_window_start).seconds return elapsed >= 3600 or self.hourly_spent >= self.hourly_cost_limit def _reset_hourly_counter(self): """Setzt Hourly-Counter zurück.""" self.hourly_spent = 0.0 self.hourly_window_start = datetime.now() async def _fetch_conversations( self, start: datetime, end: datetime, ) -> List[Dict]: """Lädt Gespräche aus Datenbank (Implementierung anpassen).""" # PLACEHOLDER - Hier Ihre DB-Integration einfügen return [] async def _send_alert(self, report): """Sendet kritische Alerts per WeChat/Alipay Webhook.""" alert_payload = { "msgtype": "text", "text": { "content": f"🚨 CRITICAL: Gespräch {report.conversation_id}\n" f"Agent: {report.agent_id}\n" f"Risk Score: {report.risk_score}/100\n" f"Verstöße: {report.total_violations}\n" f"Link: https://your-crm.com/report/{report.report_id}" } } # WeChat Enterprise Webhook async with self.client._client.post( "https://qyapi.weixin.qq.com/cgi-bin/webhook/send", json=alert_payload, ) as resp: if resp.status_code == 200: logger.info(f"Alert sent for {report.conversation_id}") async def _save_batch_report(self, stats: Dict): """Speichert Batch-Report in Datenbank.""" await self.redis.set( f"batch_report:{datetime.now().strftime('%Y%m%d')}", json.dumps(stats, default=str), ex=86400 * 365, # 1 Jahr aufbewahren )

============================================================

BENCHMARK TEST

============================================================

async def run_benchmark(): """ Benchmark: 1000 Gespräche mit varying Komplexität Hardware: 8-core CPU, 32GB RAM, PostgreSQL 15 """ processor = BatchComplianceProcessor( redis_url="redis://localhost:6379/0", max_concurrent=50, hourly_cost_limit=500.0, ) # Generate test data test_conversations = [] for i in range(1000): segment_count = [5, 15, 30, 50, 100][i % 5] # Variierende Komplexität segments = [ { "speaker": "agent" if j % 2 == 0 else "customer", "text": f"Test utterance {j} with some banking content about products and services.", "timestamp": (datetime(2026, 5, 23) + timedelta(seconds=j*30)).isoformat(), } for j in range(segment_count) ] test_conversations.append({ "id": f"TEST-{i:04d}", "segments": segments, "agent_id": f"AGENT-{i % 100:03d}", "customer_id": f"CUST-{i:06d}", "duration_minutes": segment_count * 0.5, "priority": "normal", "is_vip": i % 10 == 0, "previous_violations": i % 5, }) # Run benchmark start = time.perf_counter() # Process first 100 for quick benchmark subset = test_conversations[:100] semaphore = asyncio.Semaphore(50) stats = {"processed": 0, "failed": 0, "total_cost_usd": 0} tasks = [ processor._process_single_with_semaphore(conv, semaphore, stats) for conv in subset ] results = await asyncio.gather(*tasks, return_exceptions=True) elapsed = time.perf_counter() - start # Calculate metrics successful = sum(1 for r in results if not isinstance(r, Exception)) costs = sum( r.processing_cost_usd for r in results if not isinstance(r, Exception) and hasattr(r, "processing_cost_usd") ) print(f"=== BENCHMARK RESULTS ===") print(f"Conversations: 100") print(f"Time: {elapsed:.1f}s") print(f"Throughput: {100/elapsed:.1f} conv/s") print(f"Success Rate: {successful}%") print(f"Total Cost: ${costs:.4f}") print(f"Cost per Conversation: ${costs/100:.4f}") metrics = processor.client.get_metrics() print(f"\n=== LATENCY METRICS ===") print(f"