Akbub's picture
deploy: Nexus AI v0.2.0 - SAP C4C Lead Creation UI included in fresh frontend build
d1f3f31
Raw
History Blame Contribute Delete
2.92 kB
import sys
from pathlib import Path
import time
import json
import os
import asyncio
# Ensure the root directory is in the python path
ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(ROOT))
# Load local envs manually to ensure API keys are loaded
from src.api.server import load_env_file
load_env_file(ROOT / ".env.local")
load_env_file(ROOT / ".env")
from src.aspect_sentiment import AspectSentimentEngine
from src.api.server import predict_with_trained_model, fallback_extraction
from src.aspect_sentiment.llama_extraction import process_text
def main():
data_dir = ROOT / "data" / "raw"
engine = AspectSentimentEngine()
results = []
total_latency = 0
print(f"Testing 10 conversations using Llama model: {engine.llama_model}\n")
for i in range(1, 11):
filename = f"conv_{i:03d}.txt"
file_path = data_dir / filename
if not file_path.exists():
print(f"Skipping {filename} - not found")
continue
text = file_path.read_text(encoding="utf-8", errors="replace")
start = time.perf_counter()
# Analyze using engine
try:
# We use analyze_text for end-to-end testing
response = asyncio.run(engine.analyze_text(
text=text,
source_name=filename,
source_type="text",
language="en",
transcription_confidence=None,
whisper_model=None,
pipeline=[],
processing_ms=0
))
latency = time.perf_counter() - start
total_latency += latency
summary = response.summary
conversion = response.conversionScore
res = {
"file": filename,
"latency_s": round(latency, 2),
"dominant_sentiment": summary.dominant,
"conversion_prediction": conversion.label if conversion else "N/A",
"conversion_prob": f"{conversion.probability:.2f}" if conversion else "N/A",
"total_features_extracted": summary.totalProducts,
"top_products": [p.name for p in response.products[:3]],
"status": "Success"
}
except Exception as e:
res = {
"file": filename,
"status": f"Failed: {str(e)}"
}
results.append(res)
print(f"Processed {filename} in {res.get('latency_s', 0)}s - Conversion: {res.get('conversion_prediction', 'N/A')}")
print(f"\nAverage Latency: {total_latency / 10:.2f}s")
output_path = ROOT / "test_10_results.json"
output_path.write_text(json.dumps(results, indent=2), encoding="utf-8")
print(f"Full results written to {output_path}")
if __name__ == '__main__':
main()