diff options
Diffstat (limited to 'src/Agent.Core/Prompts/PromptComposer.cs')
| -rw-r--r-- | src/Agent.Core/Prompts/PromptComposer.cs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/Agent.Core/Prompts/PromptComposer.cs b/src/Agent.Core/Prompts/PromptComposer.cs new file mode 100644 index 0000000..e07c7e8 --- /dev/null +++ b/src/Agent.Core/Prompts/PromptComposer.cs @@ -0,0 +1,36 @@ +using Agent.Core.Ollama; +using Agent.Core.Sessions; + +namespace Agent.Core.Prompts; + +public sealed record PromptContext( + string FixedSystemPrompt, + string UserSystemPrompt, + string Locale, + IReadOnlyList<string> Skills, + string SandboxCapabilitySummary, + string TaskGraphSummary, + string PreviousSummary, + IReadOnlyList<ConversationMessage> Conversation, + string Request, + IReadOnlyList<string>? Images = null); + +public static class PromptComposer +{ + public static IReadOnlyList<OllamaMessage> Compose(PromptContext context) + { + var messages = new List<OllamaMessage> + { + new("system", context.FixedSystemPrompt), + new("system", context.UserSystemPrompt), + new("system", $"Respond in locale: {context.Locale}."), + new("system", string.Join("\n\n", context.Skills)), + new("system", context.SandboxCapabilitySummary), + new("system", context.TaskGraphSummary), + new("system", context.PreviousSummary) + }; + messages.AddRange(context.Conversation.Select(static item => new OllamaMessage(item.Role, item.Content))); + messages.Add(new OllamaMessage("user", context.Request, context.Images)); + return messages; + } +} |
