Artifex/control_plane/resources/management/commands/seed_spark_resources.py

49 lines
2 KiB
Python
Raw Normal View History

2026-08-15 13:50:24 +07:00
from __future__ import annotations
import os
from django.core.management.base import BaseCommand
from control_plane.resources.models import Resource, ResourceKind
class Command(BaseCommand):
help = "Seed DGX Spark compute and model resources for Sol and Qwen."
def handle(self, *args, **options):
spark, _ = Resource.objects.update_or_create(
name=os.environ.get("ARTIFEX_SPARK_RESOURCE_NAME", "DGX Spark"),
defaults={
"kind": ResourceKind.MODEL_COMPUTE,
"provider": "ssh",
"config": {"ssh_alias": os.environ.get("ARTIFEX_SPARK_SSH_ALIAS", "spark")},
"roles": [],
},
)
Resource.objects.update_or_create(
name=os.environ.get("ARTIFEX_SOL_RESOURCE_NAME", "GPT-5.6 Sol"),
defaults={
"kind": ResourceKind.MODEL,
"provider": "opencode",
"compute": spark,
"roles": ["PROJECT_BRAIN", "PLANNING", "ARCHAEOLOGY_INTERPRETATION"],
"config": {"command": os.environ.get("ARTIFEX_SOL_OPENCODE_COMMAND", "opencode run --json --no-repo --stdin")},
},
)
Resource.objects.update_or_create(
name=os.environ.get("ARTIFEX_QWEN_RESOURCE_NAME", "Qwen"),
defaults={
"kind": ResourceKind.MODEL,
"provider": "local_inference",
"compute": spark,
"roles": ["CODING", "REVIEW", "REASONING"],
"config": {
"endpoint_url": os.environ.get("ARTIFEX_QWEN_ENDPOINT_URL", "http://192.168.1.162:8002/v1/chat/completions"),
"health_url": os.environ.get("ARTIFEX_QWEN_HEALTH_URL", "http://192.168.1.162:8002/health"),
"model": os.environ.get("ARTIFEX_QWEN_MODEL", "qwen38"),
"extra_body": {"chat_template_kwargs": {"enable_thinking": False}},
},
},
)
self.stdout.write(self.style.SUCCESS("Seeded Spark model resources."))