已按 ReAct‑lite 方案改成“单循环 + JSON 思考封装”,并确保思考链只在内部 JSON 里流转,不会展示给玩家。核心变化如下。
改动说明(ReAct‑lite 落地)
用“循环式 Thought/ToolCalls/Observation/Final”替换原三阶段:AIIntelligenceCore.cs
新增 ReAct 专用提示与工具清单构建,统一 JSON 输出结构 {thought, tool_calls, final}:AIIntelligenceCore.cs
新增通用 JSON 对象片段解析,允许从混杂文本中抽取 JSON:JsonToolCallParser.cs
工具执行改为 step 模式(不再区分 query/action 阶段),并更新工具结果指导语以匹配 ReAct‑lite:AIIntelligenceCore.cs
This commit is contained in:
@@ -95,6 +95,34 @@ namespace WulaFallenEmpire.EventSystem.AI.Utils
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool TryParseObjectFromText(string input, out Dictionary<string, object> obj, out string jsonFragment)
|
||||
{
|
||||
obj = null;
|
||||
jsonFragment = null;
|
||||
if (string.IsNullOrWhiteSpace(input)) return false;
|
||||
|
||||
string trimmed = input.Trim();
|
||||
if (TryParseObject(trimmed, out obj))
|
||||
{
|
||||
jsonFragment = trimmed;
|
||||
return true;
|
||||
}
|
||||
|
||||
int firstBrace = trimmed.IndexOf('{');
|
||||
int lastBrace = trimmed.LastIndexOf('}');
|
||||
if (firstBrace >= 0 && lastBrace > firstBrace)
|
||||
{
|
||||
string candidate = trimmed.Substring(firstBrace, lastBrace - firstBrace + 1);
|
||||
if (TryParseObject(candidate, out obj))
|
||||
{
|
||||
jsonFragment = candidate;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool TryParseObject(string json, out Dictionary<string, object> obj)
|
||||
{
|
||||
obj = null;
|
||||
|
||||
Reference in New Issue
Block a user