2023-10-26 22:09:18 +02:00
|
|
|
using Microsoft.AI.DevTeam.Skills;
|
2023-11-09 16:03:38 +00:00
|
|
|
using Microsoft.Extensions.Logging;
|
2023-10-11 21:40:35 +02:00
|
|
|
using Microsoft.SemanticKernel;
|
2023-11-09 11:23:58 +00:00
|
|
|
using Microsoft.SemanticKernel.Connectors.AI.OpenAI;
|
2023-10-11 21:40:35 +02:00
|
|
|
using Microsoft.SemanticKernel.Orchestration;
|
|
|
|
using Orleans.Runtime;
|
|
|
|
|
2023-10-26 22:09:18 +02:00
|
|
|
namespace Microsoft.AI.DevTeam;
|
2023-10-11 21:40:35 +02:00
|
|
|
public class ProductManager : SemanticPersona, IManageProduct
|
|
|
|
{
|
|
|
|
private readonly IKernel _kernel;
|
2023-11-09 16:03:38 +00:00
|
|
|
private readonly ILogger<ProductManager> _logger;
|
|
|
|
|
2023-10-11 21:40:35 +02:00
|
|
|
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)
|
2023-10-11 21:40:35 +02:00
|
|
|
{
|
|
|
|
_kernel = kernel;
|
2023-11-09 16:03:38 +00:00
|
|
|
_logger = logger;
|
2023-10-11 21:40:35 +02:00
|
|
|
}
|
|
|
|
public async Task<string> CreateReadme(string ask)
|
|
|
|
{
|
2023-11-09 16:03:38 +00:00
|
|
|
try
|
2023-10-11 21:40:35 +02:00
|
|
|
{
|
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-10-11 21:40:35 +02:00
|
|
|
|
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-10-11 21:40:35 +02:00
|
|
|
{
|
2023-11-09 16:03:38 +00:00
|
|
|
_logger.LogError(ex, "Error creating readme");
|
|
|
|
return default;
|
|
|
|
}
|
2023-10-11 21:40:35 +02:00
|
|
|
}
|
|
|
|
}
|