import asyncio
import os
from fair_forge.runners import AlquimiaRunner
from fair_forge.schemas import Dataset, Batch
async def main():
# Setup runner
runner = AlquimiaRunner(
base_url=os.getenv("ALQUIMIA_URL"),
api_key=os.getenv("ALQUIMIA_API_KEY"),
agent_id=os.getenv("AGENT_ID"),
channel_id=os.getenv("CHANNEL_ID"),
)
# Create test dataset
dataset = Dataset(
session_id="alquimia-test-001",
assistant_id="my-agent",
language="english",
context="",
conversation=[
Batch(
qa_id="q1",
query="What is machine learning?",
assistant="",
ground_truth_assistant="Machine learning is a type of AI...",
),
Batch(
qa_id="q2",
query="What are neural networks?",
assistant="",
ground_truth_assistant="Neural networks are computing systems...",
),
Batch(
qa_id="q3",
query="How does deep learning work?",
assistant="",
ground_truth_assistant="Deep learning uses multiple layers...",
),
],
)
# Execute tests
print(f"Running {len(dataset.conversation)} test cases...\n")
updated_dataset, summary = await runner.run_dataset(dataset)
# Print summary
print("=" * 60)
print("EXECUTION SUMMARY")
print("=" * 60)
print(f"Session ID: {summary['session_id']}")
print(f"Total batches: {summary['total_batches']}")
print(f"Successes: {summary['successes']}")
print(f"Failures: {summary['failures']}")
print(f"Total time: {summary['total_execution_time_ms']:.2f}ms")
print(f"Avg batch time: {summary['avg_batch_time_ms']:.2f}ms")
print("=" * 60)
# Print responses
print("\nResponses:")
for batch in updated_dataset.conversation:
print(f"\nQ: {batch.query}")
print(f"A: {batch.assistant[:200]}...")
asyncio.run(main())