diff --git a/skillagent/agent.py b/skillagent/agent.py index 001c2db..08bf058 100644 --- a/skillagent/agent.py +++ b/skillagent/agent.py @@ -140,7 +140,7 @@ class Agent: "type": "script_call", "script": decision.script, "skill": decision.skill, - "params": validated_params, + "params": decision.params, "reason": decision.reason } @@ -152,7 +152,7 @@ class Agent: # resume: 补 missing 参数 # --------------------------- async def resume(self, state: PlanState, user_reply: str): - skill_spec = next(s for s in self.skills if s.name == state.skill) + skill_spec = next(s for s in self.skills if s.metadata.name == state.skill) schema_fields = self.skillkit.get_script_params(state.skill, state.script) if schema_fields is None: schema_fields = [] @@ -170,14 +170,19 @@ class Agent: # 校验 schema try: - validated = self._validate_params(SkillDecision(skill=state.skill, script=state.script, params=state.params)) + validated = self._validate_params(SkillDecision( + skill=state.skill, + script=state.script, + params=state.params, + missing_params=[] + )) except MissingParams as e: state.missing = e.fields question = await self._ask_user_for_params(state.user_intent, state.skill, e.fields) return {"type": "clarification", "state": state, "question": question} # 参数完整,返回可直接调用 skill - return {"type": "skill_call", "skill": state.skill, "params": validated} + return {"type": "script_call", "skill": state.skill, "params": validated} # --------------------------- # 内部方法 @@ -262,12 +267,12 @@ async def skillagent(llm, apikey, user_skillroot, sys_skillroot=None): print(result['question']) user_reply = input() result = await agent.resume(result["state"], user_reply) - if result['type'] == 'skill_call': + if result['type'] == 'script_call': f = awaitify(agent.skillkit.execute_skill_script) rzt = await f( result['skill'], result['script'], - params=result['params'] + args=result['params'] ) print(rzt) else: diff --git a/test/t.py b/test/t.py index 032d486..1bc7ddd 100644 --- a/test/t.py +++ b/test/t.py @@ -11,7 +11,8 @@ def setup_template(): async def main(): setup_template() # await skillagent('55QMNxVgvlh8nyis0P1BE', 'eYgNuD6sVQgbj-khOOUNU', './skills') - await skillagent('09Xzu3kQ-K98Ewy2KtyU3', 'eYgNuD6sVQgbj-khOOUNU', './skills') + # await skillagent('09Xzu3kQ-K98Ewy2KtyU3', 'eYgNuD6sVQgbj-khOOUNU', './skills') + await skillagent('YLsLP-XdwgywF59eYGIk5', 'eYgNuD6sVQgbj-khOOUNU', './skills') if __name__ == '__main__': asyncio.run(main())