From 446fcb8b8d29c713c7d33dced3180e6e4a5bbee4 Mon Sep 17 00:00:00 2001 From: Arturo Liduena Date: Wed, 11 Dec 2024 21:31:25 +0100 Subject: [PATCH] fix: Improve tool choice handling in Observability AI Assistant client --- .../server/service/client/index.ts | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts index c03f7d6333825..a6b06f19d21aa 100644 --- a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts @@ -481,13 +481,24 @@ export class ObservabilityAIAssistantClient { tracer: LangTracer; } ): Observable => { - const tools = functions?.reduce((acc, fn) => { - acc[fn.name] = { - description: fn.description, - schema: fn.parameters, - }; - return acc; - }, {} as Record); + let tools: Record | undefined; + let toolChoice: ToolChoiceType | { function: string } | undefined; + + if (functions && functions.length > 0) { + tools = functions?.reduce((acc, fn) => { + acc[fn.name] = { + description: fn.description, + schema: fn.parameters, + }; + return acc; + }, {} as Record); + + toolChoice = functionCall + ? { + function: functionCall, + } + : ToolChoiceType.auto; + } const chatComplete$ = defer(() => this.dependencies.inferenceClient.chatComplete({ @@ -497,11 +508,7 @@ export class ObservabilityAIAssistantClient { messages.filter((message) => message.message.role !== MessageRole.System) ), functionCalling: simulateFunctionCalling ? 'simulated' : 'native', - toolChoice: functionCall - ? { - function: functionCall, - } - : ToolChoiceType.auto, + toolChoice, tools, }) ).pipe(