using BotSharp.Abstraction.Agents.Models; using BotSharp.Abstraction.Instructs; using BotSharp.Abstraction.Instructs.Models; namespace BotSharp.Core.Instructs; public partial class InstructService : IInstructService { private readonly IServiceProvider _services; private readonly ILogger _logger; public InstructService(IServiceProvider services, ILogger logger) { _services = services; _logger = logger; } public async Task Execute(Agent agent, RoleDialogModel message) { // Trigger before completion hooks var hooks = _services.GetServices(); foreach (var hook in hooks) { await hook.BeforeCompletion(message); } var completer = CompletionProvider.GetTextCompletion(_services); var result = await completer.GetCompletion(agent.Instruction); var response = new InstructResult { Text = result }; foreach (var hook in hooks) { await hook.AfterCompletion(response); } return response; } }