This commit is contained in:
yumoqing 2026-03-03 17:59:17 +08:00
parent f3c330ca7f
commit 3c09e9f195

View File

@ -4,6 +4,7 @@ import json
from traceback import format_exc
import asyncio
import yaml
import inspect
from functools import partial
import hashlib
from pathlib import Path
@ -247,13 +248,32 @@ class IndustrialSkillEngine:
context = await self._get_expanded_context(skill_name, user_prompt, context=context)
# 决策:是直接回答还是执行脚本
decision = await self.llm(f'上下文: {context}\n问题: {user_prompt}\n决定动作EXEC: {{"cmd": 找到的命令, "params": 找到的参数字典}} 或 ANSWER: <text> 或 REPLY: <question>')
decision = await self.llm(f'上下文: {context}\n问题: {user_prompt}\n决定动作EXEC: {{"cmd": 找到的命令, "params": 找到的参数字典}} 或 ANSWER: <text> 或 REPLY: <question> 或 CALL: {{"function", "params":找到的参数字典}}')
output = {
"status": "PROCESSING",
"hint": f"决策完成:{decision=}"
}
await self.write_output(output)
if "REPLY" in decision:
if "CALL: " in decision:
st = decision[6:]
d = DictObject(**json.loads(st))
env = self.request._run_ns
f = env.get(d.function)
if f is None:
e = Exception(f'function({d.function} is not in env')
exception(f'{e}')
raise e
ret = ''
if inspect.iscoroutinefunction(f):
ret = await f(self.request, params_kw=d.params)
else:
ret = f(self.request, params_kw=d.params)
await self.write_output({
"status": "SUCCEEDED",
"content": ret
})
return
if "REPLY: " in decision:
sessionkey = getID()
await self.write_output({
"status": "REPLY",