Skip to content

Commit ed0c4ee

Browse files
authored
Merge pull request #230 from hchen2020/master
sequential log.
2 parents be4a9a5 + c6f64a6 commit ed0c4ee

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

src/Infrastructure/BotSharp.Abstraction/Loggers/IContentGeneratingHook.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@ public interface IContentGeneratingHook
1111
/// <returns></returns>
1212
Task BeforeGenerating(Agent agent, List<RoleDialogModel> conversations) => Task.CompletedTask;
1313

14+
/// <summary>
15+
/// Before function is invoked
16+
/// </summary>
17+
/// <returns></returns>
18+
Task BeforeFunctionInvoked(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
19+
20+
/// <summary>
21+
/// After function is invoked
22+
/// </summary>
23+
/// <returns></returns>
24+
Task AfterFunctionInvoked(RoleDialogModel message, TokenStatsModel tokenStats) => Task.CompletedTask;
25+
1426
/// <summary>
1527
/// After content generated.
1628
/// </summary>

src/Infrastructure/BotSharp.Logger/Hooks/VerboseLogHook.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ public async Task BeforeGenerating(Agent agent, List<RoleDialogModel> conversati
2424
if (!_convSettings.ShowVerboseLog) return;
2525

2626
var dialog = conversations.Last();
27-
var log = $"{dialog.Role}: {dialog.Content}";
27+
var log = $"[msg_id: {dialog.MessageId}] {dialog.Role}: {dialog.Content}";
2828
_logger.LogInformation(log);
29+
30+
await Task.CompletedTask;
2931
}
3032

3133
public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenStats)
@@ -36,8 +38,8 @@ public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenS
3638
var agent = await agentService.LoadAgent(message.CurrentAgentId);
3739

3840
var log = message.Role == AgentRole.Function ?
39-
$"[{agent.Name}]: {message.FunctionName}({message.FunctionArgs})" :
40-
$"[{agent.Name}]: {message.Content}";
41+
$"[[msg_id: {message.MessageId}] [{agent.Name}]: {message.FunctionName}({message.FunctionArgs})" :
42+
$"[[msg_id: {message.MessageId}] [{agent.Name}]: {message.Content}";
4143

4244
_logger.LogInformation(tokenStats.Prompt);
4345
_logger.LogInformation(log);

src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public RoleDialogModel GetChatCompletions(Agent agent, List<RoleDialogModel> con
4040
var contentHooks = _services.GetServices<IContentGeneratingHook>().ToList();
4141

4242
// Before chat completion hook
43-
Task.WaitAll(contentHooks.Select(hook =>
44-
hook.BeforeGenerating(agent, conversations)).ToArray());
43+
foreach (var hook in contentHooks)
44+
{
45+
hook.BeforeGenerating(agent, conversations).Wait();
46+
}
4547

4648
var client = ProviderHelper.GetClient(_model, _settings);
4749
var (prompt, chatCompletionsOptions) = PrepareOptions(agent, conversations);
@@ -74,14 +76,16 @@ public RoleDialogModel GetChatCompletions(Agent agent, List<RoleDialogModel> con
7476
}
7577

7678
// After chat completion hook
77-
Task.WaitAll(contentHooks.Select(hook =>
79+
foreach(var hook in contentHooks)
80+
{
7881
hook.AfterGenerated(responseMessage, new TokenStatsModel
7982
{
8083
Prompt = prompt,
8184
Model = _model,
8285
PromptCount = response.Value.Usage.PromptTokens,
8386
CompletionCount = response.Value.Usage.CompletionTokens
84-
})).ToArray());
87+
}).Wait();
88+
}
8589

8690
return responseMessage;
8791
}
@@ -94,8 +98,10 @@ public async Task<bool> GetChatCompletionsAsync(Agent agent,
9498
var hooks = _services.GetServices<IContentGeneratingHook>().ToList();
9599

96100
// Before chat completion hook
97-
Task.WaitAll(hooks.Select(hook =>
98-
hook.BeforeGenerating(agent, conversations)).ToArray());
101+
foreach (var hook in hooks)
102+
{
103+
await hook.BeforeGenerating(agent, conversations);
104+
}
99105

100106
var client = ProviderHelper.GetClient(_model, _settings);
101107
var (prompt, chatCompletionsOptions) = PrepareOptions(agent, conversations);
@@ -111,14 +117,16 @@ public async Task<bool> GetChatCompletionsAsync(Agent agent,
111117
};
112118

113119
// After chat completion hook
114-
Task.WaitAll(hooks.Select(hook =>
115-
hook.AfterGenerated(msg, new TokenStatsModel
120+
foreach (var hook in hooks)
121+
{
122+
await hook.AfterGenerated(msg, new TokenStatsModel
116123
{
117124
Prompt = prompt,
118125
Model = _model,
119126
PromptCount = response.Value.Usage.PromptTokens,
120127
CompletionCount = response.Value.Usage.CompletionTokens
121-
})).ToArray());
128+
});
129+
}
122130

123131
if (choice.FinishReason == CompletionsFinishReason.FunctionCall)
124132
{

0 commit comments

Comments
 (0)