From 9c402bc745d64ae31942ce00d568bb2390f63b15 Mon Sep 17 00:00:00 2001 From: iceljc <46039045+iceljc@users.noreply.github.com> Date: Thu, 19 Feb 2026 16:21:20 -0600 Subject: [PATCH] Revert "append system prompt" --- .../Providers/Chat/ChatCompletionProvider.cs | 73 +++++++++---------- .../Realtime/RealTimeCompletionProvider.cs | 66 ++++++++--------- 2 files changed, 66 insertions(+), 73 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs index 9cd11ef4e..660722ddb 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs @@ -367,8 +367,42 @@ public async Task GetChatCompletionsStreamingAsync(Agent agent, // Prepare instruction and functions var renderData = agentService.CollectRenderData(agent); var (instruction, functions) = agentService.PrepareInstructionAndFunctions(agent, renderData); + if (!string.IsNullOrWhiteSpace(instruction)) + { + renderedInstructions.Add(instruction); + messages.Add(new SystemChatMessage(instruction)); + } + + // Render functions + if (options.WebSearchOptions == null) + { + foreach (var function in functions) + { + if (!agentService.RenderFunction(agent, function, renderData)) + { + continue; + } + + var property = agentService.RenderFunctionProperty(agent, function, renderData); + + options.Tools.Add(ChatTool.CreateFunctionTool( + functionName: function.Name, + functionDescription: function.Description, + functionParameters: BinaryData.FromObjectAsJson(property))); + } + } + + if (!string.IsNullOrEmpty(agent.Knowledges)) + { + messages.Add(new SystemChatMessage(agent.Knowledges)); + } + + var samples = ProviderHelper.GetChatSamples(agent.Samples); + foreach (var sample in samples) + { + messages.Add(sample.Role == AgentRole.User ? new UserChatMessage(sample.Content) : new AssistantChatMessage(sample.Content)); + } - // Build messages var filteredMessages = conversations.Select(x => x).ToList(); var firstUserMsgIdx = filteredMessages.FindIndex(x => x.Role == AgentRole.User); if (firstUserMsgIdx > 0) @@ -419,43 +453,6 @@ public async Task GetChatCompletionsStreamingAsync(Agent agent, } } - // Build system messages - if (!string.IsNullOrWhiteSpace(instruction)) - { - renderedInstructions.Add(instruction); - messages.Add(new SystemChatMessage(instruction)); - } - - if (!string.IsNullOrEmpty(agent.Knowledges)) - { - messages.Add(new SystemChatMessage(agent.Knowledges)); - } - - var samples = ProviderHelper.GetChatSamples(agent.Samples); - foreach (var sample in samples) - { - messages.Add(sample.Role == AgentRole.User ? new UserChatMessage(sample.Content) : new AssistantChatMessage(sample.Content)); - } - - // Render functions - if (options.WebSearchOptions == null) - { - foreach (var function in functions) - { - if (!agentService.RenderFunction(agent, function, renderData)) - { - continue; - } - - var property = agentService.RenderFunctionProperty(agent, function, renderData); - - options.Tools.Add(ChatTool.CreateFunctionTool( - functionName: function.Name, - functionDescription: function.Description, - functionParameters: BinaryData.FromObjectAsJson(property))); - } - } - var prompt = GetPrompt(messages, options); return (prompt, messages, options); } diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs index 4baf42b62..b023f94d5 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Realtime/RealTimeCompletionProvider.cs @@ -575,8 +575,37 @@ private async Task OnUserAudioTranscriptionCompleted(RealtimeHu // Prepare instruction and functions var renderData = agentService.CollectRenderData(agent); var (instruction, functions) = agentService.PrepareInstructionAndFunctions(agent, renderData); - - // Build messages + if (!string.IsNullOrWhiteSpace(instruction)) + { + messages.Add(new SystemChatMessage(instruction)); + } + + foreach (var function in functions) + { + if (!agentService.RenderFunction(agent, function, renderData)) + { + continue; + } + + var property = agentService.RenderFunctionProperty(agent, function, renderData); + + options.Tools.Add(ChatTool.CreateFunctionTool( + functionName: function.Name, + functionDescription: function.Description, + functionParameters: BinaryData.FromObjectAsJson(property))); + } + + if (!string.IsNullOrEmpty(agent.Knowledges)) + { + messages.Add(new SystemChatMessage(agent.Knowledges)); + } + + var samples = ProviderHelper.GetChatSamples(agent.Samples); + foreach (var sample in samples) + { + messages.Add(sample.Role == AgentRole.User ? new UserChatMessage(sample.Content) : new AssistantChatMessage(sample.Content)); + } + var filteredMessages = conversations.Select(x => x).ToList(); var firstUserMsgIdx = filteredMessages.FindIndex(x => x.Role == AgentRole.User); if (firstUserMsgIdx > 0) @@ -605,39 +634,6 @@ private async Task OnUserAudioTranscriptionCompleted(RealtimeHu } } - // Build system messages - if (!string.IsNullOrWhiteSpace(instruction)) - { - messages.Add(new SystemChatMessage(instruction)); - } - - if (!string.IsNullOrEmpty(agent.Knowledges)) - { - messages.Add(new SystemChatMessage(agent.Knowledges)); - } - - var samples = ProviderHelper.GetChatSamples(agent.Samples); - foreach (var sample in samples) - { - messages.Add(sample.Role == AgentRole.User ? new UserChatMessage(sample.Content) : new AssistantChatMessage(sample.Content)); - } - - // Build functions - foreach (var function in functions) - { - if (!agentService.RenderFunction(agent, function, renderData)) - { - continue; - } - - var property = agentService.RenderFunctionProperty(agent, function, renderData); - - options.Tools.Add(ChatTool.CreateFunctionTool( - functionName: function.Name, - functionDescription: function.Description, - functionParameters: BinaryData.FromObjectAsJson(property))); - } - var prompt = GetPrompt(messages, options); return (prompt, messages, options); }