summaryrefslogtreecommitdiff
path: root/src/Agent.Core/Prompts/PromptComposer.cs
blob: e07c7e873905218aeaa43bf55f858da659fe2155 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;
    }
}