using Microsoft.Extensions.Logging;
using Sumeru.Flex;
using System.Threading.Tasks;
namespace {YourApplication}.PostBusHandlers.AI;
public partial class GenerateChatCompletionHandler : IGenerateChatCompletionHandler
{
protected string EventCondition = string.Empty;
protected readonly ILogger<GenerateChatCompletionHandler> _logger;
protected readonly IFlexHost _flexHost;
protected readonly IFlexAIProvider _aiProvider;
protected FlexAppContextBridge? _flexAppContext;
public GenerateChatCompletionHandler(
ILogger<GenerateChatCompletionHandler> logger,
IFlexHost flexHost,
IFlexAIProvider aiProvider)
{
_logger = logger;
_flexHost = flexHost;
_aiProvider = aiProvider;
}
public virtual async Task Execute(GenerateChatCompletionCommand cmd, IFlexServiceBusContext serviceBusContext)
{
_flexAppContext = cmd.Dto.GetAppContext(); //do not remove this line
var response = await _aiProvider.ChatAsync(new FlexAIChatRequest
{
Model = cmd.Dto.Model,
Messages = cmd.Dto.Messages,
Temperature = cmd.Dto.Temperature,
MaxTokens = cmd.Dto.MaxTokens
});
cmd.Dto.Response = response.Message.Content;
await this.Fire(EventCondition, serviceBusContext);
}
}