sequential log.
This commit is contained in:
parent
5bb1765fa9
commit
6197ac5ab3
|
|
@ -11,6 +11,18 @@ public interface IContentGeneratingHook
|
|||
/// <returns></returns>
|
||||
Task BeforeGenerating(Agent agent, List<RoleDialogModel> conversations) => Task.CompletedTask;
|
||||
|
||||
/// <summary>
|
||||
/// Before function is invoked
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task BeforeFunctionInvoked(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
|
||||
|
||||
/// <summary>
|
||||
/// After function is invoked
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task AfterFunctionInvoked(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
|
||||
|
||||
/// <summary>
|
||||
/// After content generated.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -24,8 +24,10 @@ public class VerboseLogHook : IContentGeneratingHook
|
|||
if (!_convSettings.ShowVerboseLog) return;
|
||||
|
||||
var dialog = conversations.Last();
|
||||
var log = $"{dialog.Role}: {dialog.Content}";
|
||||
var log = $"[msg_id: {dialog.MessageId}] {dialog.Role}: {dialog.Content}";
|
||||
_logger.LogInformation(log);
|
||||
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenStats)
|
||||
|
|
@ -36,8 +38,8 @@ public class VerboseLogHook : IContentGeneratingHook
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
|
||||
var log = message.Role == AgentRole.Function ?
|
||||
$"[{agent.Name}]: {message.FunctionName}({message.FunctionArgs})" :
|
||||
$"[{agent.Name}]: {message.Content}";
|
||||
$"[[msg_id: {message.MessageId}] [{agent.Name}]: {message.FunctionName}({message.FunctionArgs})" :
|
||||
$"[[msg_id: {message.MessageId}] [{agent.Name}]: {message.Content}";
|
||||
|
||||
_logger.LogInformation(tokenStats.Prompt);
|
||||
_logger.LogInformation(log);
|
||||
|
|
|
|||
|
|
@ -40,8 +40,10 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
var contentHooks = _services.GetServices<IContentGeneratingHook>().ToList();
|
||||
|
||||
// Before chat completion hook
|
||||
Task.WaitAll(contentHooks.Select(hook =>
|
||||
hook.BeforeGenerating(agent, conversations)).ToArray());
|
||||
foreach (var hook in contentHooks)
|
||||
{
|
||||
hook.BeforeGenerating(agent, conversations).Wait();
|
||||
}
|
||||
|
||||
var client = ProviderHelper.GetClient(_model, _settings);
|
||||
var (prompt, chatCompletionsOptions) = PrepareOptions(agent, conversations);
|
||||
|
|
@ -74,14 +76,16 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
}
|
||||
|
||||
// After chat completion hook
|
||||
Task.WaitAll(contentHooks.Select(hook =>
|
||||
foreach(var hook in contentHooks)
|
||||
{
|
||||
hook.AfterGenerated(responseMessage, new TokenStatsModel
|
||||
{
|
||||
Prompt = prompt,
|
||||
Model = _model,
|
||||
PromptCount = response.Value.Usage.PromptTokens,
|
||||
CompletionCount = response.Value.Usage.CompletionTokens
|
||||
})).ToArray());
|
||||
}).Wait();
|
||||
}
|
||||
|
||||
return responseMessage;
|
||||
}
|
||||
|
|
@ -94,8 +98,10 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
var hooks = _services.GetServices<IContentGeneratingHook>().ToList();
|
||||
|
||||
// Before chat completion hook
|
||||
Task.WaitAll(hooks.Select(hook =>
|
||||
hook.BeforeGenerating(agent, conversations)).ToArray());
|
||||
foreach (var hook in hooks)
|
||||
{
|
||||
await hook.BeforeGenerating(agent, conversations);
|
||||
}
|
||||
|
||||
var client = ProviderHelper.GetClient(_model, _settings);
|
||||
var (prompt, chatCompletionsOptions) = PrepareOptions(agent, conversations);
|
||||
|
|
@ -111,14 +117,16 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
};
|
||||
|
||||
// After chat completion hook
|
||||
Task.WaitAll(hooks.Select(hook =>
|
||||
hook.AfterGenerated(msg, new TokenStatsModel
|
||||
foreach (var hook in hooks)
|
||||
{
|
||||
await hook.AfterGenerated(msg, new TokenStatsModel
|
||||
{
|
||||
Prompt = prompt,
|
||||
Model = _model,
|
||||
PromptCount = response.Value.Usage.PromptTokens,
|
||||
CompletionCount = response.Value.Usage.CompletionTokens
|
||||
})).ToArray());
|
||||
});
|
||||
}
|
||||
|
||||
if (choice.FinishReason == CompletionsFinishReason.FunctionCall)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue