56 lines
2.0 KiB
C#
Raw Normal View History

using Microsoft.AI.DevTeam.Skills;
2023-11-09 16:03:38 +00:00
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel;
2023-11-09 11:23:58 +00:00
using Microsoft.SemanticKernel.Connectors.AI.OpenAI;
using Microsoft.SemanticKernel.Orchestration;
using Orleans.Runtime;
namespace Microsoft.AI.DevTeam;
public class ProductManager : SemanticPersona, IManageProduct
{
private readonly IKernel _kernel;
2023-11-09 16:03:38 +00:00
private readonly ILogger<ProductManager> _logger;
protected override string MemorySegment => "pm-memory";
2023-11-09 16:03:38 +00:00
public ProductManager(IKernel kernel, [PersistentState("state", "messages")] IPersistentState<SemanticPersonaState> state, ILogger<ProductManager> logger) : base(state)
{
_kernel = kernel;
2023-11-09 16:03:38 +00:00
_logger = logger;
}
public async Task<string> CreateReadme(string ask)
{
2023-11-09 16:03:38 +00:00
try
{
2023-11-09 16:03:38 +00:00
var function = _kernel.CreateSemanticFunction(PM.Readme, new OpenAIRequestSettings { MaxTokens = 10000, Temperature = 0.6, TopP = 1 });
var context = new ContextVariables();
context.Set("input", ask);
if (_state.State.History == null) _state.State.History = new List<ChatHistoryItem>();
_state.State.History.Add(new ChatHistoryItem
{
Message = ask,
Order = _state.State.History.Count + 1,
UserType = ChatUserType.User
});
await AddWafContext(_kernel, ask, context);
context.Set("input", ask);
2023-11-09 16:03:38 +00:00
var result = await _kernel.RunAsync(context, function);
var resultMessage = result.ToString();
_state.State.History.Add(new ChatHistoryItem
{
Message = resultMessage,
Order = _state.State.History.Count + 1,
UserType = ChatUserType.Agent
});
await _state.WriteStateAsync();
return resultMessage;
}
catch (Exception ex)
{
2023-11-09 16:03:38 +00:00
_logger.LogError(ex, "Error creating readme");
return default;
}
}
}