diff --git a/src/main/services/ai/human/node/brainNode/index.ts b/src/main/services/ai/human/node/brainNode/index.ts index b9afb8db..6d811aad 100644 --- a/src/main/services/ai/human/node/brainNode/index.ts +++ b/src/main/services/ai/human/node/brainNode/index.ts @@ -25,6 +25,7 @@ export const createBrainNode = (input: { ctx: AiRunContext; cache: HumanRuntimeC schema: humanThoughtDecisionSchema, schemaName: 'human_brain_decision', temperature: 0.1, + streamingMode: 'force_non_stream', contextBudgetSnapshot: state.execution.contextBudget }) const inputTokens = result.usage?.inputTokens diff --git a/src/main/services/ai/llmExecutor.ts b/src/main/services/ai/llmExecutor.ts index 9738ca82..7aade1fc 100644 --- a/src/main/services/ai/llmExecutor.ts +++ b/src/main/services/ai/llmExecutor.ts @@ -113,6 +113,7 @@ export type AiLlmTextRequest = { system: string user: string temperature?: number + streamingMode?: AiLlmStreamingMode onTextDelta?: (text: string) => void } @@ -124,6 +125,7 @@ export type AiLlmStructuredRequest> = { user: string schema: z.ZodType temperature?: number + streamingMode?: AiLlmStreamingMode contextBudgetSnapshot?: BrainContextBudgetSnapshot } @@ -706,7 +708,7 @@ export const createAiLlmExecutor = (input: { checkCancelled: () => void driver?: AiLlmDriver }): AiLlmExecutor => { - const streamingMode = resolveStreamingMode(input.runtimeSettings) + const defaultStreamingMode = resolveStreamingMode(input.runtimeSettings) return { chatStructured: async >( @@ -716,6 +718,7 @@ export const createAiLlmExecutor = (input: { usage?: AiLlmUsage }> => { input.checkCancelled() + const streamingMode = request.streamingMode || defaultStreamingMode const cfg = await input.getConfig() const result = await runLlmCallWithActivity>({ ctx: input.eventCtx, @@ -777,6 +780,7 @@ export const createAiLlmExecutor = (input: { chatText: async (request: AiLlmTextRequest): Promise => { input.checkCancelled() + const streamingMode = request.streamingMode || defaultStreamingMode const cfg = await input.getConfig() const result = await runLlmCallWithActivity({ ctx: input.eventCtx, diff --git a/src/main/services/ai/types.ts b/src/main/services/ai/types.ts index 9d637a67..3de7912e 100644 --- a/src/main/services/ai/types.ts +++ b/src/main/services/ai/types.ts @@ -16,6 +16,7 @@ import type { AiApprovalBatchDecision, AiApprovalBatchItem, AiLlmIoRecord, + AiLlmStreamingMode, AiLlmUsage, AiRuntimeSettings, AiRunEvent, @@ -135,6 +136,7 @@ export type AiRunContext = { schema: z.ZodType schemaName: string temperature?: number + streamingMode?: AiLlmStreamingMode contextBudgetSnapshot?: BrainContextBudgetSnapshot }) => Promise<{ output: T @@ -147,6 +149,7 @@ export type AiRunContext = { user: string schemaName: string temperature?: number + streamingMode?: AiLlmStreamingMode onTextDelta?: (text: string) => void }) => Promise sendEvent: (event: AiRunEvent) => void