Files
llm/scripts/status_1c_plugin.py

65 lines
2.4 KiB
Python

from __future__ import annotations
import json
from pathlib import Path
import yaml
ROOT = Path(__file__).resolve().parents[1]
def read_yaml(path: Path) -> dict:
with path.open("r", encoding="utf-8") as handle:
data = yaml.safe_load(handle)
return data if isinstance(data, dict) else {}
def count_jsonl(path: Path) -> int:
if not path.exists():
return 0
return sum(1 for line in path.read_text(encoding="utf-8").splitlines() if line.strip())
def file_size(path: Path) -> int:
return path.stat().st_size if path.exists() else 0
def main() -> int:
manifest = read_yaml(ROOT / "plugins" / "1c" / "plugin.yaml")
adapter = read_yaml(ROOT / "plugins" / "1c" / "adapters" / "qwen3-coder-30b-a3b-1c-lora-v1.yaml")
registry = json.loads((ROOT / "registry" / "index.json").read_text(encoding="utf-8"))
training_examples = ROOT / "plugins" / "1c" / "training" / "examples" / "instruction.examples.jsonl"
generated_training = ROOT / "plugins" / "1c" / "training" / "raw" / "generated.instruction.jsonl"
prepared_training = ROOT / "plugins" / "1c" / "training" / "prepared" / "train.chat.jsonl"
metadata_example = ROOT / "plugins" / "1c" / "metadata" / "examples" / "metadata.example.json"
print(f"1C plugin: {manifest.get('status')} v{manifest.get('version')}")
print(f"Tasks: {', '.join(manifest.get('tasks') or [])}")
print("")
print("Models:")
for model in registry.get("models") or []:
tasks = model.get("task") or []
if "1c" in tasks or any(str(task).startswith("1c") for task in tasks):
print(f"- {model['id']} [{model['status']}] runtime={model.get('runtime')}")
print("")
print("Data:")
print(f"- training examples: {count_jsonl(training_examples)}")
print(f"- generated training examples: {count_jsonl(generated_training)}")
print(f"- prepared training records: {count_jsonl(prepared_training)}")
print(f"- prepared train JSONL: {file_size(prepared_training)} bytes")
print(f"- metadata example: {file_size(metadata_example)} bytes")
print("")
training = adapter.get("training") or {}
print("Training:")
print(f"- adapter: {adapter.get('id')}")
print(f"- status: {training.get('status')}")
for blocker in training.get("blockers") or []:
print(f" - {blocker}")
return 0
if __name__ == "__main__":
raise SystemExit(main())