48 lines
2 KiB
Python
48 lines
2 KiB
Python
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."))
|