diff --git a/skillagent/agent.py b/skillagent/agent.py index 636440e..972ca16 100644 --- a/skillagent/agent.py +++ b/skillagent/agent.py @@ -80,7 +80,6 @@ class DummyLLM(LLM): continue if d.get('content'): doc = f'{doc}{d["content"]}' - debug(f'{doc=}') return doc # --------------------------- @@ -118,6 +117,7 @@ class Agent: candidates = await self._candidate_skills(user_text) decision = await self._plan_with_candidates(user_text, candidates) try: + debug(f'{decision=}') validated_params = self._validate_params(decision) except MissingParams as e: question = await self._ask_user_for_params(user_text, decision.skill, decision.script, e.fields) diff --git a/skillagent/params.py b/skillagent/params.py index 200f128..31428bf 100644 --- a/skillagent/params.py +++ b/skillagent/params.py @@ -88,3 +88,26 @@ class ParameterResolver: return ResolvedParams(params=validated) +if __name__ == '__main__': + params = {'a': 12312, 'op': '*', 'b': 233} + schema = { + "a": { + "type": "int or float", + "required": True, + "description": "计算左值" + }, + "op": { + "type": "str", + "required": True, + "description": "计算方法", + "enum": ["+", "-", "*", "/"] + }, + "b": { + "type": "int or float", + "required": True, + "description": "计算左值" + } + } + p = ParameterResolver(schema) + x = p.resolve(params) + print(x) diff --git a/skillagent/skillkit_wrapper.py b/skillagent/skillkit_wrapper.py index 25558f4..ea8d42b 100644 --- a/skillagent/skillkit_wrapper.py +++ b/skillagent/skillkit_wrapper.py @@ -75,6 +75,7 @@ class SkillkitWrapper: m = self.get_script_schema(skill_name, script_name) if not m: return [] + return m.inputs def get_skill_scripts(self, skill_name): diff --git a/skillagent/tmpls.py b/skillagent/tmpls.py index f052bcf..e28b74b 100644 --- a/skillagent/tmpls.py +++ b/skillagent/tmpls.py @@ -139,7 +139,7 @@ Output JSON list only. {% set schema = kit.get_script_schema(s.metadata.name, sc.name) %} {% if schema %} 描述:{{schema.description or sc.description}} - 参数:{{json.dumps(schema.params, ensure_ascii=False)}} + 参数:{{json.dumps(kit.get_script_params(s.metadata.name, sc.name), ensure_ascii=False)}} {% else %} 描述:{{sc.description}} {% endif %} @@ -151,7 +151,7 @@ Output JSON list only. - 按照脚本参数要求,为脚本从用户需求中识别出参数 输出 -仅输出json,每个元素为 +仅输出json数组,每个元素为 { "skill":技能名字, "skill_desc":技能描述(很重要不能缺失) diff --git a/test/skills/calculator/schemas.yaml b/test/skills/calculator/schemas.yaml index 114b30a..d4ff33c 100644 --- a/test/skills/calculator/schemas.yaml +++ b/test/skills/calculator/schemas.yaml @@ -10,7 +10,7 @@ scripts: type: str required: true description: 计算方法 - enum: [+ - * /] + enum: ['+', '-', '*', '/'] b: type: int or float required: true