2023-10-26 22:09:18 +02:00
|
|
|
using Microsoft.AI.DevTeam.Skills;
|
2023-10-11 21:40:35 +02:00
|
|
|
using Microsoft.SemanticKernel;
|
|
|
|
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;
|
|
|
|
protected override string MemorySegment => "pm-memory";
|
|
|
|
|
2023-11-09 09:46:27 +00:00
|
|
|
public ProductManager(IKernel kernel,[PersistentState("state", "messages")] IPersistentState<SemanticPersonaState> state) : base(state)
|
2023-10-11 21:40:35 +02:00
|
|
|
{
|
|
|
|
_kernel = kernel;
|
|
|
|
}
|
|
|
|
public async Task<string> CreateReadme(string ask)
|
|
|
|
{
|
|
|
|
var function = _kernel.LoadFunction(nameof(PM), nameof(PM.Readme));
|
|
|
|
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
|
|
|
|
});
|
2023-10-26 22:09:18 +02:00
|
|
|
await AddWafContext(_kernel, ask, context);
|
2023-10-11 21:40:35 +02:00
|
|
|
context.Set("input", ask);
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
2023-11-09 09:46:27 +00:00
|
|
|
|
|
|
|
public Task<string> BuildUnderstanding(string content)
|
|
|
|
{
|
|
|
|
throw new NotImplementedException();
|
|
|
|
}
|
2023-10-11 21:40:35 +02:00
|
|
|
}
|