gateway/gwserver/test_agentservice.py
2025-03-25 00:05:01 +01:00

115 lines
No EOL
3.7 KiB
Python

import asyncio
import sys
import os
import json
import uuid
from pprint import pprint
# Stelle sicher, dass das Verzeichnis mit den Modulen im Pfad ist
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
# Importiere das Hauptmodul
import modules.agentservice_interface as agi
async def test_agentservice():
"""
Einfacher Test für den AgentService mit Beispieldaten.
Führt einen Workflow mit einem einfachen Text-Prompt und optionalen Dateien aus.
"""
print("Starte Test des AgentService...")
# Erstelle einen neuen AgentService
service = agi.get_agentservice_interface(mandate_id=1, user_id=1)
# Erstelle eine Test-Workflow-ID
workflow_id = f"test_{uuid.uuid4()}"
# Beispiel-Prompt
prompt = "Erstelle eine Zusammenfassung der wichtigsten Punkte aus den verfügbaren Dateien."
# Beispiel-Agenten
agents = [
{
"id": "analyzer_1",
"name": "Datenanalyst",
"type": "analyzer",
"capabilities": "Analysiert Daten, erstellt Statistiken und erkennt Muster."
},
{
"id": "writer_1",
"name": "Zusammenfasser",
"type": "writer",
"capabilities": "Erstellt klare, prägnante Zusammenfassungen komplexer Inhalte."
},
{
"id": "init_1",
"name": "Initialisierer",
"type": "initialisierung",
"capabilities": "Gibt einen ersten Überblick und strukturiert die Aufgabe."
}
]
# Optional: Beispiel-Dateien
# Wenn du Dateien testen möchtest, passe diese Pfade an und setze use_files=True
files = []
use_files = False
if use_files:
files = [
{
"id": "text_1",
"name": "beispiel.txt",
"type": "document",
"path": "pfad/zu/beispiel.txt", # Passe diesen Pfad an
"size": "1KB"
},
# Weitere Dateien hier hinzufügen
]
# Führe den Workflow aus
try:
print(f"Starte Workflow {workflow_id}...")
result_workflow_id = await service.execute_workflow(workflow_id, prompt, agents, files)
print(f"Workflow {result_workflow_id} gestartet.")
# Warte und hole regelmäßig den Status ab
MAX_CHECKS = 30
check_interval = 2 # Sekunden
for i in range(MAX_CHECKS):
status = service.get_workflow_status(workflow_id)
print(f"Status nach {i*check_interval}s: {status['status']}, Fortschritt: {status['progress']*100:.1f}%")
if status['status'] in ['completed', 'failed']:
print("Workflow beendet!")
break
await asyncio.sleep(check_interval)
# Hole die Logs
logs = service.get_workflow_logs(workflow_id)
print("\n=== Logs ===")
for log in logs:
print(f"{log['timestamp'][:19]} [{log['type']}] {log['message']}")
# Hole die Ergebnisse
results = service.get_workflow_results(workflow_id)
print("\n=== Ergebnisse ===")
for result in results:
print(f"\nErgebnis von {result['agent_name']} ({result['agent_id']}):")
print(f"Titel: {result['title']}")
print("-" * 50)
print(result['content'][:500] + ("..." if len(result['content']) > 500 else ""))
print("-" * 50)
except Exception as e:
print(f"Fehler bei der Ausführung des Workflows: {str(e)}")
finally:
# Schließe den Service
await service.close()
print("Test abgeschlossen.")
if __name__ == "__main__":
# Führe den Test aus
asyncio.run(test_agentservice())