first commit
This commit is contained in:
37
llm_task_validator.py
Normal file
37
llm_task_validator.py
Normal file
@ -0,0 +1,37 @@
|
||||
from typing import Dict, Any
|
||||
|
||||
ALLOWED_SKILLS = {
|
||||
"pick": ["object"],
|
||||
"align": ["object", "target_fixture"],
|
||||
"insert": ["object", "target_fixture"],
|
||||
"release": ["object"],
|
||||
}
|
||||
|
||||
ALLOWED_PREDICATES = {
|
||||
"object_in_fixture",
|
||||
"depth_in_range",
|
||||
"pose_in_tolerance",
|
||||
}
|
||||
|
||||
|
||||
def validate_task_spec(task: Dict[str, Any]) -> None:
|
||||
assert "skills" in task
|
||||
assert "goal" in task
|
||||
|
||||
# ---- skills ----
|
||||
for s in task["skills"]:
|
||||
name = s["name"]
|
||||
args = s.get("args", {})
|
||||
|
||||
if name not in ALLOWED_SKILLS:
|
||||
raise ValueError(f"Unknown skill: {name}")
|
||||
|
||||
required_args = ALLOWED_SKILLS[name]
|
||||
for k in required_args:
|
||||
if k not in args:
|
||||
raise ValueError(f"Skill {name} missing arg: {k}")
|
||||
|
||||
# ---- predicates ----
|
||||
for p in task["goal"]["success_conditions"]:
|
||||
if p["type"] not in ALLOWED_PREDICATES:
|
||||
raise ValueError(f"Unknown predicate: {p['type']}")
|
||||
Reference in New Issue
Block a user