diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.test.tsx index 0318618a49c2a..320ad15e59a6b 100644 --- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.test.tsx @@ -9,8 +9,8 @@ import { getGenAiConfig, getActionTypeTitle, getConnectorTypeTitle, - GenAiConfig, OpenAiProviderType, + AiConfigCatchAll, } from './helpers'; import { PRECONFIGURED_CONNECTOR } from './translations'; import { @@ -19,7 +19,7 @@ import { type ActionTypeRegistryContract, } from '@kbn/alerts-ui-shared'; -const mockConnector = (config: GenAiConfig, isPreconfigured = false) => ({ +const mockConnector = (config: AiConfigCatchAll, isPreconfigured = false) => ({ isPreconfigured, config, actionTypeId: 'test-action', @@ -43,6 +43,17 @@ describe('getGenAiConfig', () => { }); }); + test('extracts defaultModel from inference config', () => { + const connector = mockConnector({ + providerConfig: { + model_id: 'rainbow-sprinkles', + }, + }) as ActionConnector; + expect(getGenAiConfig(connector)).toEqual({ + defaultModel: 'rainbow-sprinkles', + }); + }); + test('extracts api-version from Azure API URL', () => { const connector = mockConnector({ apiProvider: OpenAiProviderType.AzureAi, diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx index 65917d4941a66..89bf2b3bb36c4 100644 --- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx @@ -28,6 +28,18 @@ export interface GenAiConfig { defaultModel?: string; } +export interface AiConfigCatchAll { + apiProvider?: OpenAiProviderType; + apiUrl?: string; + defaultModel?: string; + // inference fields + providerConfig?: { + model_id?: string; + }; + model_id?: string; + url?: string; +} + /** * Returns the GenAiConfig for a given ActionConnector. Note that if the connector is preconfigured, * the config MAY be undefined if exposeConfig: true is absent @@ -35,15 +47,25 @@ export interface GenAiConfig { * @param connector */ export const getGenAiConfig = (connector: ActionConnector | undefined): GenAiConfig => { - const config = (connector as ActionConnectorProps)?.config; - const { apiProvider, apiUrl, defaultModel } = config ?? {}; - return { + const config = (connector as ActionConnectorProps)?.config; + const { apiProvider, apiUrl, + defaultModel, + providerConfig, + model_id: modelId, + url, + } = config ?? {}; + + return { + apiProvider, + apiUrl: apiUrl ?? url, defaultModel: - apiProvider === OpenAiProviderType.AzureAi + (apiProvider === OpenAiProviderType.AzureAi ? getAzureApiVersionParameter(apiUrl ?? '') - : defaultModel, + : defaultModel) ?? + providerConfig?.model_id ?? + modelId, }; };