Orchestrator / example_compute_provider.py
evgeniy778's picture
Add Example Compute Provider Version 1.0
981faf5 verified
Raw
History Blame Contribute Delete
4.68 kB
# =====================================================
# Apckeyl Framework
# Version 1.0
# example_compute_provider.py
# =====================================================
"""
Test Compute Provider.
Version 1.0
Минимальный Provider для проверки
Compute Provider Architecture.
Не использует AI.
Не использует GPU.
Не требует внешних сервисов.
"""
from typing import Any, Dict
# =====================================================
# Example Compute Provider
# =====================================================
class ExampleComputeProvider:
"""
Минимальный тестовый Compute Provider.
"""
PROVIDER_ID = "example_compute_provider"
PROVIDER_NAME = "Example Compute Provider"
PROVIDER_VERSION = "1.0"
SUPPORTED_TASKS = [
"example_task",
]
# =================================================
# Provider Information
# =================================================
def get_provider_info(self) -> Dict[str, Any]:
return {
"provider_id": self.PROVIDER_ID,
"provider_name": self.PROVIDER_NAME,
"provider_version": self.PROVIDER_VERSION,
"status": "available",
"supported_tasks": list(
self.SUPPORTED_TASKS
),
}
# =================================================
# Health Check
# =================================================
def health_check(self) -> Dict[str, Any]:
return {
"provider_id": self.PROVIDER_ID,
"status": "healthy",
}
# =================================================
# Task Support
# =================================================
def supports_task(
self,
task_type: str,
) -> bool:
return task_type in self.SUPPORTED_TASKS
# =================================================
# Execute
# =================================================
def execute(
self,
task: Dict[str, Any],
) -> Dict[str, Any]:
task_id = task.get(
"task_id"
)
task_type = task.get(
"task_type"
)
payload = task.get(
"payload",
{},
)
# ---------------------------------------------
# Task Validation
# ---------------------------------------------
if not task_id:
return {
"task_id": task_id,
"status": "error",
"result": None,
"error": "Missing task_id",
}
if not task_type:
return {
"task_id": task_id,
"status": "error",
"result": None,
"error": "Missing task_type",
}
# ---------------------------------------------
# Task Support Validation
# ---------------------------------------------
if not self.supports_task(
task_type
):
return {
"task_id": task_id,
"status": "error",
"result": None,
"error": (
f"Unsupported task type: "
f"{task_type}"
),
}
# ---------------------------------------------
# Example Task
# ---------------------------------------------
if task_type == "example_task":
message = payload.get(
"message",
"",
)
result = {
"message": message,
"provider": self.PROVIDER_ID,
"processed": True,
}
return {
"task_id": task_id,
"status": "completed",
"result": result,
"error": None,
}
# ---------------------------------------------
# Safety Fallback
# ---------------------------------------------
return {
"task_id": task_id,
"status": "error",
"result": None,
"error": (
f"Task execution failed: "
f"{task_type}"
),
}
# =====================================================
# Default Provider Instance
# =====================================================
example_compute_provider = (
ExampleComputeProvider()
)
# =====================================================
# End of File
# =====================================================