This commit is contained in:
Vitali sharp8n 2026-10-08 20:50:21 +03:00
parent fa3f2cd0b6
commit bb2ef2166f
2 changed files with 12 additions and 4 deletions

View file

@ -210,19 +210,23 @@ public class ChatCompletionProvider : IChatCompletion
{
var client = ProviderHelper.GetClient(Provider, _model, _services);
var chatClient = client.GetChatClient(_model);
var (prompt, messages, options) = PrepareOptions(agent, conversations);
var hub = _services.GetRequiredService<MessageHub<HubObserveData<RoleDialogModel>>>();
var conv = _services.GetRequiredService<IConversationService>();
var messageId = conversations.LastOrDefault()?.MessageId ?? string.Empty;
// Before chat completion hooks MUST run before the provider builds its message list:
// a hook that mutates `conversations` (mid-turn user injection, the request-size budget)
// would otherwise only take effect on the NEXT call, so the very request it is meant to
// shrink would still be sent oversized.
var contentHooks = _services.GetHooks<IContentGeneratingHook>(agent.Id);
// Before chat completion hook
foreach (var hook in contentHooks)
{
await hook.BeforeGenerating(agent, conversations);
}
var (prompt, messages, options) = PrepareOptions(agent, conversations);
hub.Push(new()
{
EventName = ChatEvent.BeforeReceiveLlmStreamMessage,

View file

@ -203,19 +203,23 @@ public class ChatCompletionProvider : IChatCompletion
{
var client = ProviderHelper.GetClient(Provider, _model, _services);
var chatClient = client.GetChatClient(_model);
var (prompt, messages, options) = PrepareOptions(agent, conversations);
var hub = _services.GetRequiredService<MessageHub<HubObserveData<RoleDialogModel>>>();
var conv = _services.GetRequiredService<IConversationService>();
var messageId = conversations.LastOrDefault()?.MessageId ?? string.Empty;
// Before chat completion hooks MUST run before the provider builds its message list: a hook
// that mutates `conversations` (mid-turn user injection, the request-size budget) would
// otherwise only take effect on the NEXT call, so the very request it is meant to shrink
// would still be sent oversized.
var contentHooks = _services.GetHooks<IContentGeneratingHook>(agent.Id);
// Before chat completion hook
foreach (var hook in contentHooks)
{
await hook.BeforeGenerating(agent, conversations);
}
var (prompt, messages, options) = PrepareOptions(agent, conversations);
hub.Push(new()
{
EventName = ChatEvent.BeforeReceiveLlmStreamMessage,