2023-12-07 03:06:09 +00:00
|
|
|
using BotSharp.Abstraction.Functions;
|
|
|
|
|
|
|
|
|
|
namespace BotSharp.Core.Routing;
|
|
|
|
|
|
|
|
|
|
public partial class RoutingService
|
|
|
|
|
{
|
|
|
|
|
public async Task<bool> InvokeFunction(string name, RoleDialogModel message)
|
|
|
|
|
{
|
|
|
|
|
var function = _services.GetServices<IFunctionCallback>().FirstOrDefault(x => x.Name == name);
|
|
|
|
|
if (function == null) return false;
|
|
|
|
|
|
2024-02-27 20:59:08 +00:00
|
|
|
var originalFunctionName = message.FunctionName;
|
2023-12-11 23:15:37 +00:00
|
|
|
message.FunctionName = name;
|
2023-12-12 14:16:34 +00:00
|
|
|
message.Role = AgentRole.Function;
|
2024-02-28 03:15:21 +00:00
|
|
|
message.FunctionArgs = message.FunctionArgs;
|
2024-02-27 20:59:08 +00:00
|
|
|
var result = await function.Execute(message);
|
|
|
|
|
|
|
|
|
|
// restore original function name
|
|
|
|
|
if (!message.StopCompletion)
|
|
|
|
|
{
|
|
|
|
|
message.FunctionName = originalFunctionName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
2023-12-07 03:06:09 +00:00
|
|
|
}
|
|
|
|
|
}
|