add instruct hooks
This commit is contained in:
parent
fe63875315
commit
f562152b78
|
|
@ -1,4 +1,5 @@
|
||||||
using BotSharp.Abstraction.Functions;
|
using BotSharp.Abstraction.Functions;
|
||||||
|
using BotSharp.Abstraction.Instructs;
|
||||||
using BotSharp.Abstraction.Instructs.Models;
|
using BotSharp.Abstraction.Instructs.Models;
|
||||||
|
|
||||||
namespace BotSharp.Core.Instructs.Functions;
|
namespace BotSharp.Core.Instructs.Functions;
|
||||||
|
|
@ -23,7 +24,7 @@ public class ExecuteTemplateFn : IFunctionCallback
|
||||||
var args = JsonSerializer.Deserialize<ExecuteTemplateArgs>(message.FunctionArgs);
|
var args = JsonSerializer.Deserialize<ExecuteTemplateArgs>(message.FunctionArgs);
|
||||||
if (string.IsNullOrEmpty(args.TemplateName))
|
if (string.IsNullOrEmpty(args.TemplateName))
|
||||||
{
|
{
|
||||||
message.Content = $"Empty template name.";
|
message.Content = $"Invalid template name.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -37,16 +38,18 @@ public class ExecuteTemplateFn : IFunctionCallback
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var prompt = agentService.RenderedTemplate(agent, args.TemplateName);
|
var response = await GetAiResponse(agent, args.TemplateName);
|
||||||
var response = await GetAiResponse(agent, prompt);
|
|
||||||
message.Content = response;
|
message.Content = response;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<string> GetAiResponse(Agent agent, string text)
|
private async Task<string> GetAiResponse(Agent agent, string templateName)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var agentService = _services.GetRequiredService<IAgentService>();
|
||||||
|
var text = agentService.RenderedTemplate(agent, templateName);
|
||||||
|
|
||||||
var completion = CompletionProvider.GetChatCompletion(_services, provider: agent.LlmConfig?.Provider, model: agent.LlmConfig?.Model);
|
var completion = CompletionProvider.GetChatCompletion(_services, provider: agent.LlmConfig?.Provider, model: agent.LlmConfig?.Model);
|
||||||
var response = await completion.GetChatCompletions(new Agent()
|
var response = await completion.GetChatCompletions(new Agent()
|
||||||
{
|
{
|
||||||
|
|
@ -56,6 +59,21 @@ public class ExecuteTemplateFn : IFunctionCallback
|
||||||
{
|
{
|
||||||
new(AgentRole.User, text)
|
new(AgentRole.User, text)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var hooks = _services.GetServices<IInstructHook>();
|
||||||
|
foreach (var hook in hooks)
|
||||||
|
{
|
||||||
|
await hook.OnResponseGenerated(new InstructResponseModel
|
||||||
|
{
|
||||||
|
AgentId = agent.Id,
|
||||||
|
TemplateName = templateName,
|
||||||
|
Provider = completion.Provider,
|
||||||
|
Model = completion.Model,
|
||||||
|
UserMessage = text,
|
||||||
|
CompletionText = response.Content
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return response.Content;
|
return response.Content;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue