feat: archive

This commit is contained in:
莘权 马 2023-08-25 21:10:14 +08:00
parent 5f16d6e853
commit 799dbd396e
10 changed files with 291 additions and 5 deletions

View file

@ -0,0 +1,38 @@
from pathlib import Path
from typing import List, Dict
import yaml
from pydantic import BaseModel
class Skill(BaseModel):
name: str
description: str
requisite: List[str]
class EntitySkills(BaseModel):
skills: List[Skill]
class SkillsDeclaration(BaseModel):
entities: Dict[str, EntitySkills]
class SkillLoader:
def __init__(self):
skill_file_name = Path(__file__).parent.parent.parent / ".well-known/skills.yaml"
with open(str(skill_file_name), 'r') as file:
skills = yaml.safe_load(file)
self._skills = SkillsDeclaration(**skills)
def get_skill_list(self, entity_name: str = "Assistant"):
if not self._skills or entity_name not in self._skills.entities:
return {}
entity_skills = self._skills.entities.get(entity_name)
description_to_name_mappings = {}
for s in entity_skills.skills:
description_to_name_mappings[s.description] = s.name
return description_to_name_mappings