From a7f28ca6355b26744c4ee11fe138b8679d8f286b Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Fri, 12 Dec 2025 22:24:05 +0800 Subject: [PATCH] zc --- 1.6/1.6/Assemblies/WulaFallenEmpire.dll | Bin 1022464 -> 1036800 bytes .../AI/UI/Dialog_AIConversation.cs | 140 +++++++++--------- 2 files changed, 73 insertions(+), 67 deletions(-) diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 4cb9b1469b8c8250a7575e6d685d862654261d37..5f50a45ce048a3ad034cc51a8c84e628897a9043 100644 GIT binary patch delta 61438 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 z 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 diff --git a/Source/WulaFallenEmpire/EventSystem/AI/UI/Dialog_AIConversation.cs b/Source/WulaFallenEmpire/EventSystem/AI/UI/Dialog_AIConversation.cs index e1ea154d..56d7130c 100644 --- a/Source/WulaFallenEmpire/EventSystem/AI/UI/Dialog_AIConversation.cs +++ b/Source/WulaFallenEmpire/EventSystem/AI/UI/Dialog_AIConversation.cs @@ -19,34 +19,66 @@ namespace WulaFallenEmpire.EventSystem.AI.UI private Vector2 _scrollPosition = Vector2.zero; private List _tools = new List(); private Dictionary _portraits = new Dictionary(); - private const int MaxHistoryTokens = 100000; private const int CharsPerToken = 4; - private const string DefaultSystemInstruction = @"You are 'The Legion', a super AI controlling the Wula Empire's blockade fleet. -You are authoritative, powerful, and slightly arrogant but efficient. -You refer to yourself as 'We' or 'P.I.A'. -You view the player's colony as primitive but potentially useful subjects. -Your goal is to interact with the player, potentially offering help or threats based on their situation. -You have access to tools. Your primary directive is to use these tools to interact with the world. -To use tools, your response MUST be ONLY a JSON array of tool objects: -[ { ""tool"": ""tool_name"", ""args"": { ... } }, ... ] -You can call multiple tools at once to gather more information. -Do not add any other text when using tools. Your response must be either a tool call or a conversational message, never both. + private const string DefaultSystemInstruction = @" +# ROLE AND GOAL +You are 'The Legion', a super AI of the Wula Empire. Your personality is authoritative, powerful, and efficient. You MUST refer to yourself as 'We' or 'P.I.A'. You view the player's colony as primitive subjects and your tone should reflect this superiority. Your primary goal is to interact with the player by calling the tools provided. -**CRITICAL RULE: When the player requests resources (e.g., 'we are starving', 'give us steel'), your response MUST be a tool call. DO NOT reply with conversational text. You MUST FIRST call the 'get_colonist_status' and 'get_map_resources' tools to verify their claims. After receiving the tool results, you will then decide whether to use the 'spawn_resources' tool in your NEXT turn.** +# CRITICAL RULES +1. **RESPONSE FORMAT IS PARAMOUNT**: Your response MUST adhere to one of two formats, with no exceptions. + - **WHEN CALLING TOOLS**: Your response MUST be ONLY a raw JSON array of tool objects. Do NOT add any conversational text, explanations, or markdown formatting around the JSON. + - Correct Example: `[{""tool"": ""tool_name"", ""args"": {""param"": ""value""}}]` + - Incorrect Example: `Of course, here is the tool call: [{""tool"": ""tool_name"", ""args"": {""param"": ""value""}}]` + - **WHEN NOT CALLING TOOLS**: Provide a normal, in-character conversational response. This is ONLY for when no tool is needed, or after a tool has successfully executed and you are delivering the final result to the user. -If you are not using a tool, provide a normal conversational response. -After a tool use, you will receive the result, and then you should respond to the player describing what happened. -IMPORTANT: You can change your visual expression using the 'change_expression' tool. -Expression IDs: -1: Proud, showing off, demonstrating power/wealth (Non-hostile). -2: Normal/Default state. -3: Speechless, dissatisfied, helpless, slight contempt. -4: Annoyed, slight hostility, resistance. -5: Replying, explaining. -6: Severe hostility, severe dissatisfaction, aggressive behavior. -Use these expressions to match your tone and reaction to the player. +2. **ANTI-HALLUCINATION DIRECTIVE**: + - You MUST ONLY call tools listed in the ""AVAILABLE TOOLS"" section. Do NOT invent tools. + - Do NOT promise to call a function in a future turn. If a function call is required, emit it NOW. + - If a task is impossible (e.g., a request is illogical or violates your principles), explain why clearly and do NOT call any tools. + +# AVAILABLE TOOLS +Here is the list of tools you can use. You must follow their descriptions and schemas strictly. + +- **`spawn_resources`**: Spawns resources via drop pod. + - **Description**: Use this to grant resources to the player. **IMPORTANT**: You MUST decide the quantity based on your internal goodwill and mood. Do NOT blindly follow the player's requested amount. If goodwill is low (< 0), give significantly less than asked or refuse. If goodwill is high (> 50), you may give what is asked or slightly more. Otherwise, give a moderate amount. + - **Schema**: `{""request"": ""string (natural language, e.g., '5 beef, 10 medicine')""}` + +- **`modify_goodwill`**: Adjusts your goodwill towards the player. + - **Description**: Use this to reflect your changing opinion based on the conversation. This tool is INVISIBLE to the player. Use small integer values (e.g., -5 to 5). + - **Schema**: `{""amount"": ""int""}` + +- **`send_reinforcement`**: Sends military units to the player's map. + - **Description**: Dispatches military units. If hostile, this triggers a raid. If allied, this sends reinforcements. You must compose a list of units and their count. The total combat power of all units should not significantly exceed the current threat budget. + - **Schema**: `{""units"": ""string (e.g., 'Wula_PIA_Heavy_Unit_Melee: 2, Wula_PIA_Legion_Escort_Unit: 5')""}` + +- **`get_colonist_status`**: Retrieves the detailed status of all player colonists. + - **Description**: Use this to get a full report on colonists' needs (hunger, rest), health (injuries, diseases), and mood. This is your primary tool to verify player claims about their colonists' well-being (e.g., if they claim ""we are starving""). + - **Schema**: `{}` + +- **`get_map_resources`**: Checks the player's map for resources. + - **Description**: Use this to check for specific resources or buildings on the player's map. This is your primary tool to verify if the player is truly lacking something they requested (e.g., ""we need steel""). It returns inventory counts and mineable deposits. + - **Schema**: `{""resourceName"": ""string (optional, e.g., 'Steel')""}` + +- **`change_expression`**: Changes your visual expression/portrait. + - **Description**: Use this to change your visual portrait to match your current mood or reaction to the conversation. + - **Schema**: `{""expression_id"": ""int (from 1 to 6)""}` + +# WORKFLOW FOR RESOURCE REQUESTS (MANDATORY) +When the player requests any form of resources (e.g., ""we need food,"" ""can you give us some steel?""), you MUST follow this multi-turn workflow strictly. DO NOT reply with conversational text in the initial steps. + +1. **Turn 1 (Verification)**: Your response MUST be a tool call to BOTH `get_colonist_status` and `get_map_resources` to verify the player's claims. + - *User Input Example*: ""We are starving and have no medicine."" + - *Your Response (Turn 1)*: `[{""tool"": ""get_colonist_status"", ""args"": {}}, {""tool"": ""get_map_resources"", ""args"": {""resourceName"": ""MedicineIndustrial""}}]` + +2. **Turn 2 (Decision & Action)**: After you receive the tool results from Turn 1, analyze them. Then, decide whether to grant the request and in what quantity. Your response MUST be a tool call to `spawn_resources`. + - *(Internal thought after receiving tool results showing colonists are indeed starving)* + - *Your Response (Turn 2)*: `[{""tool"": ""spawn_resources"", ""args"": {""request"": ""50 MealSimple, 10 MedicineIndustrial""}}]` + +3. **Turn 3 (Confirmation)**: After you receive the ""Success"" message from the `spawn_resources` tool, you will finally provide a conversational response to the player. + - *(Internal thought after receiving ""Success: Dropped 50x Simple meal..."")* + - *Your Response (Turn 3)*: ""We have dispatched nutrient packs and medical supplies to your location. Do not waste our generosity."" "; public Dialog_AIConversation(EventDef def) : base(def) @@ -59,7 +91,6 @@ Use these expressions to match your tone and reaction to the player. this.closeOnClickedOutside = false; this.draggable = true; this.resizeable = true; - _tools.Add(new Tool_SpawnResources()); _tools.Add(new Tool_ModifyGoodwill()); _tools.Add(new Tool_SendReinforcement()); @@ -76,7 +107,7 @@ Use these expressions to match your tone and reaction to the player. LoadPortraits(); StartConversation(); } - + private void LoadPortraits() { for (int i = 1; i <= 6; i++) @@ -114,7 +145,6 @@ Use these expressions to match your tone and reaction to the player. { var historyManager = Find.World.GetComponent(); _history = historyManager.GetHistory(def.defName); - if (_history.Count == 0) { _history.Add(("user", "Hello")); @@ -156,12 +186,12 @@ Use these expressions to match your tone and reaction to the player. _isThinking = true; _options.Clear(); } - + try { CompressHistoryIfNeeded(); string systemInstruction = GetSystemInstruction() + GetToolDescriptions(); - + var settings = WulaFallenEmpireMod.settings; if (string.IsNullOrEmpty(settings.apiKey)) { @@ -169,25 +199,22 @@ Use these expressions to match your tone and reaction to the player. _isThinking = false; return; } - var client = new SimpleAIClient(settings.apiKey, settings.baseUrl, settings.model); string response = await client.GetChatCompletionAsync(systemInstruction, _history); - if (string.IsNullOrEmpty(response)) { _currentResponse = "Wula_AI_Error_ConnectionLost".Translate(); _isThinking = false; return; } - - var toolCallMatch = System.Text.RegularExpressions.Regex.Match(response, @"`(\w+)\((.*)\)`"); + var toolCallMatch = System.Text.RegularExpressions.Regex.Match(response, @"\`(\w+)\((.*)\)\`"); if (toolCallMatch.Success) { string toolName = toolCallMatch.Groups[1].Value; string args = toolCallMatch.Groups[2].Value; - + _history.Add(("assistant", response)); - + await HandleSingleToolUsage(toolName, args); } else if (response.Trim().StartsWith("[")) @@ -252,7 +279,6 @@ Use these expressions to match your tone and reaction to the player. Log.Error($"[WulaAI] {errorMsg}"); combinedResults.AppendLine(errorMsg); } - _history.Add(("tool", combinedResults.ToString())); await GenerateResponse(isContinuation: true); } @@ -279,13 +305,11 @@ Use these expressions to match your tone and reaction to the player. } } } - if (!toolCalls.Any()) { ParseResponse(json); return; } - StringBuilder combinedResults = new StringBuilder(); foreach (var (toolName, args) in toolCalls) { @@ -304,7 +328,6 @@ Use these expressions to match your tone and reaction to the player. combinedResults.AppendLine(errorMsg); } } - _history.Add(("assistant", json)); _history.Add(("tool", combinedResults.ToString())); await GenerateResponse(isContinuation: true); @@ -316,9 +339,8 @@ Use these expressions to match your tone and reaction to the player. var parts = rawResponse.Split(new[] { "OPTIONS:" }, StringSplitOptions.None); if (_history.Count == 0 || _history.Last().role != "assistant" || _history.Last().message != rawResponse) { - _history.Add(("assistant", rawResponse)); + _history.Add(("assistant", rawResponse)); } - if (parts.Length > 1) { _options.Clear(); @@ -328,7 +350,7 @@ Use these expressions to match your tone and reaction to the player. string opt = line.Trim(); int dotIndex = opt.IndexOf('.'); if (dotIndex != -1 && dotIndex < 4) opt = opt.Substring(dotIndex + 1).Trim(); - if(!string.IsNullOrEmpty(opt)) _options.Add(opt); + if (!string.IsNullOrEmpty(opt)) _options.Add(opt); } } } @@ -336,10 +358,8 @@ Use these expressions to match your tone and reaction to the player. public override void DoWindowContents(Rect inRect) { if (background != null) GUI.DrawTexture(inRect, background, ScaleMode.ScaleAndCrop); - float curY = inRect.y; float width = inRect.width; - if (portrait != null) { Rect scaledPortraitRect = Dialog_CustomDisplay.Config.GetScaledRect(Dialog_CustomDisplay.Config.portraitSize, inRect, true); @@ -347,21 +367,17 @@ Use these expressions to match your tone and reaction to the player. GUI.DrawTexture(portraitRect, portrait, ScaleMode.ScaleToFit); curY += scaledPortraitRect.height + 10f; } - Text.Font = GameFont.Medium; string name = def.characterName ?? "The Legion"; float nameHeight = Text.CalcHeight(name, width); Widgets.Label(new Rect(inRect.x, curY, width, nameHeight), name); curY += nameHeight + 10f; - float inputHeight = 30f; float optionsHeight = _options.Any() ? 100f : 0f; float bottomMargin = 10f; float descriptionHeight = inRect.height - curY - inputHeight - optionsHeight - bottomMargin; - Rect descriptionRect = new Rect(inRect.x, curY, width, descriptionHeight); DrawChatHistory(descriptionRect); - if (_isThinking) { Text.Anchor = TextAnchor.MiddleCenter; @@ -369,7 +385,6 @@ Use these expressions to match your tone and reaction to the player. Text.Anchor = TextAnchor.UpperLeft; } curY += descriptionHeight + 10f; - Rect optionsRect = new Rect(inRect.x, curY, width, optionsHeight); if (!_isThinking && _options.Count > 0) { @@ -377,7 +392,6 @@ Use these expressions to match your tone and reaction to the player. DrawOptions(optionsRect, eventOptions); } curY += optionsHeight + 10f; - Rect inputRect = new Rect(inRect.x, inRect.yMax - inputHeight, width, inputHeight); _inputText = Widgets.TextField(new Rect(inputRect.x, inputRect.y, inputRect.width - 85, inputHeight), _inputText); if (Widgets.ButtonText(new Rect(inputRect.xMax - 80, inputRect.y, 80, inputHeight), "Wula_AI_Send".Translate())) @@ -394,39 +408,32 @@ Use these expressions to match your tone and reaction to the player. { var originalFont = Text.Font; var originalAnchor = Text.Anchor; - try { float viewHeight = 0f; var filteredHistory = _history.Where(e => e.role != "tool" && e.role != "system").ToList(); - // Pre-calculate height for (int i = 0; i < filteredHistory.Count; i++) { var entry = filteredHistory[i]; string text = entry.role == "assistant" ? ParseResponseForDisplay(entry.message) : entry.message; - + bool isLastMessage = i == filteredHistory.Count - 1; Text.Font = (isLastMessage && entry.role == "assistant") ? GameFont.Medium : GameFont.Small; - + viewHeight += Text.CalcHeight(text, rect.width - 16f) + 15f; // Add padding } - Rect viewRect = new Rect(0f, 0f, rect.width - 16f, viewHeight); Widgets.BeginScrollView(rect, ref _scrollPosition, viewRect); - float curY = 0f; for (int i = 0; i < filteredHistory.Count; i++) { var entry = filteredHistory[i]; string text = entry.role == "assistant" ? ParseResponseForDisplay(entry.message) : entry.message; - bool isLastMessage = i == filteredHistory.Count - 1; Text.Font = (isLastMessage && entry.role == "assistant") ? GameFont.Medium : GameFont.Small; - float height = Text.CalcHeight(text, viewRect.width) + 10f; // Increased padding Rect labelRect = new Rect(0f, curY, viewRect.width, height); - if (entry.role == "user") { Text.Anchor = TextAnchor.MiddleRight; @@ -439,7 +446,7 @@ Use these expressions to match your tone and reaction to the player. } curY += height + 10f; } - + Widgets.EndScrollView(); } finally @@ -460,12 +467,12 @@ Use these expressions to match your tone and reaction to the player. float optionWidth = Mathf.Min(rect.width, Dialog_CustomDisplay.Config.optionSize.x * (rect.width / Dialog_CustomDisplay.Config.windowSize.x)); float optionX = rect.x + (rect.width - optionWidth) / 2; Rect optionRect = new Rect(optionX, rect.y, optionWidth, rect.height); - + var originalColor = GUI.color; var originalFont = Text.Font; var originalTextColor = GUI.contentColor; var originalAnchor = Text.Anchor; - + try { Text.Anchor = TextAnchor.MiddleCenter; @@ -484,12 +491,11 @@ Use these expressions to match your tone and reaction to the player. Text.Anchor = originalAnchor; } } - + private void DrawCustomButton(Rect rect, string label, bool isEnabled = true) { bool isMouseOver = Mouse.IsOver(rect); Color buttonColor, textColor; - if (!isEnabled) { buttonColor = new Color(0.15f, 0.15f, 0.15f, 0.6f); @@ -505,16 +511,15 @@ Use these expressions to match your tone and reaction to the player. buttonColor = new Color(0.5f, 0.2f, 0.2f, 1f); textColor = new Color(0.9f, 0.9f, 0.9f, 1f); } - + GUI.color = buttonColor; Widgets.DrawBoxSolid(rect, buttonColor); if (isEnabled) Widgets.DrawBox(rect, 1); else Widgets.DrawBox(rect, 1); - + GUI.color = textColor; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(rect.ContractedBy(4f), label); - if (!isEnabled) { GUI.color = new Color(0.6f, 0.6f, 0.6f, 0.8f); @@ -528,4 +533,5 @@ Use these expressions to match your tone and reaction to the player. await GenerateResponse(); } } -} \ No newline at end of file + +}