BotSharp/src/Infrastructure/BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs
2025-04-28 17:23:25 -05:00

52 lines
1.7 KiB
C#

using BotSharp.Abstraction.Functions.Models;
namespace BotSharp.Abstraction.Loggers;
/// <summary>
/// Model content generating hook, it can be used for logging, metrics and tracing.
/// </summary>
public interface IContentGeneratingHook
{
/// <summary>
/// Before content generating.
/// </summary>
/// <returns></returns>
Task BeforeGenerating(Agent agent, List<RoleDialogModel> conversations) => Task.CompletedTask;
/// <summary>
/// Before function is invoked
/// </summary>
/// <returns></returns>
Task BeforeFunctionInvoked(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
/// <summary>
/// After function is invoked
/// </summary>
/// <returns></returns>
Task AfterFunctionInvoked(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
/// <summary>
/// After content generated.
/// </summary>
/// <returns></returns>
Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
/// <summary>
/// Rdndering template
/// </summary>
/// <param name="agent"></param>
/// <param name="name"></param>
/// <param name="content"></param>
/// <returns></returns>
Task OnRenderingTemplate(Agent agent, string name, string content) => Task.CompletedTask;
/// <summary>
/// Realtime session updated
/// </summary>
/// <param name="agent"></param>
/// <param name="instruction"></param>
/// <param name="functions"></param>
/// <returns></returns>
Task OnSessionUpdated(Agent agent, string instruction, FunctionDef[] functions, bool isInit = false) => Task.CompletedTask;
}