115 lines
No EOL
3.7 KiB
Python
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()) |