Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1a9d62c
Adds model evaluator
spong Sep 26, 2023
99c7383
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 26, 2023
fcb266a
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 26, 2023
3f4d042
Updates tsconfig for scripts folder
spong Sep 26, 2023
b19d8c2
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Sep 26, 2023
01beda7
[CI] Auto-commit changed files from 'node scripts/lint_packages --fix'
kibanamachine Sep 26, 2023
d5886f3
Write evaluation results to ES index
spong Sep 26, 2023
120ead0
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 26, 2023
7a4f3b9
Addressing comments from feedback
spong Sep 26, 2023
5140f6a
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 26, 2023
e3c92cc
Updating comment on agent executor mapping
spong Sep 27, 2023
58ae7a5
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 27, 2023
4ccbdbe
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 27, 2023
676660e
Use correct llmType for given model, and cleans up feature flag
spong Sep 27, 2023
f33891a
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 27, 2023
116a510
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Sep 27, 2023
b43c365
Fix bedrock connector with eval endpoint
spong Sep 28, 2023
a8962cc
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 28, 2023
d900c7b
Fix type errors
spong Sep 28, 2023
e4ece02
Wait on 429s, and fail gracefully
spong Sep 28, 2023
c26aae2
Writes eval summary document, adds mappings, wires basepath to add di…
spong Sep 28, 2023
84c20cc
Merge branch 'main' of github.com:elastic/kibana into assistant-esql-…
spong Sep 28, 2023
62c8cf0
Updates one more mock
spong Sep 28, 2023
8657581
Updating base datasets
spong Sep 29, 2023
8429801
Merge branch 'main' into assistant-esql-eval
spong Sep 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions x-pack/packages/kbn-elastic-assistant/impl/assistant/api.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import type { Conversation, Message } from '../assistant_context/types';
import { API_ERROR } from './translations';
import { MODEL_GPT_3_5_TURBO } from '../connectorland/models/model_selector/model_selector';
import { getFormattedMessageContent } from './helpers';
import { PerformEvaluationParams } from './settings/evaluation_settings/use_perform_evaluation';

export interface FetchConnectorExecuteAction {
assistantLangChain: boolean;
Expand Down Expand Up @@ -199,3 +200,57 @@ export const deleteKnowledgeBase = async ({
return error as IHttpFetchError;
}
};

export interface PostEvaluationParams {
http: HttpSetup;
evalParams?: PerformEvaluationParams;
signal?: AbortSignal | undefined;
}

export interface PostEvaluationResponse {
success: boolean;
}

/**
* API call for evaluating models.
*
* @param {Object} options - The options object.
* @param {HttpSetup} options.http - HttpSetup
* @param {string} [options.evalParams] - Params necessary for evaluation
* @param {AbortSignal} [options.signal] - AbortSignal
*
* @returns {Promise<PostEvaluationResponse | IHttpFetchError>}
*/
export const postEvaluation = async ({
http,
evalParams,
signal,
}: PostEvaluationParams): Promise<PostEvaluationResponse | IHttpFetchError> => {
try {
const path = `/internal/elastic_assistant/evaluate`;
const query = {
models: evalParams?.models.sort()?.join(','),
agents: evalParams?.agents.sort()?.join(','),
evaluationType: evalParams?.evaluationType.sort()?.join(','),
evalModel: evalParams?.evalModel.sort()?.join(','),
outputIndex: evalParams?.outputIndex,
};

const response = await http.fetch(path, {
method: 'POST',
body: JSON.stringify({
dataset: JSON.parse(evalParams?.dataset ?? '[]'),
evalPrompt: evalParams?.evalPrompt ?? '',
}),
headers: {
'Content-Type': 'application/json',
},
query,
signal,
});

return response as PostEvaluationResponse;
} catch (error) {
return error as IHttpFetchError;
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import { AdvancedSettings } from './advanced_settings/advanced_settings';
import { ConversationSettings } from '../conversations/conversation_settings/conversation_settings';
import { TEST_IDS } from '../constants';
import { useSettingsUpdater } from './use_settings_updater/use_settings_updater';
import { EvaluationSettings } from './evaluation_settings/evaluation_settings';

const StyledEuiModal = styled(EuiModal)`
width: 800px;
Expand All @@ -45,13 +46,15 @@ export const QUICK_PROMPTS_TAB = 'QUICK_PROMPTS_TAB' as const;
export const SYSTEM_PROMPTS_TAB = 'SYSTEM_PROMPTS_TAB' as const;
export const ANONYMIZATION_TAB = 'ANONYMIZATION_TAB' as const;
export const ADVANCED_TAB = 'ADVANCED_TAB' as const;
export const EVALUATION_TAB = 'EVALUATION_TAB' as const;

export type SettingsTabs =
| typeof CONVERSATIONS_TAB
| typeof QUICK_PROMPTS_TAB
| typeof SYSTEM_PROMPTS_TAB
| typeof ANONYMIZATION_TAB
| typeof ADVANCED_TAB;
| typeof ADVANCED_TAB
| typeof EVALUATION_TAB;
interface Props {
defaultConnectorId?: string;
defaultProvider?: OpenAiProviderType;
Expand Down Expand Up @@ -243,6 +246,16 @@ export const AssistantSettings: React.FC<Props> = React.memo(
<EuiIcon type="advancedSettingsApp" size="l" />
</EuiKeyPadMenuItem>
)}
{assistantLangChain && (
<EuiKeyPadMenuItem
id={EVALUATION_TAB}
label={i18n.EVALUATION_MENU_ITEM}
isSelected={selectedSettingsTab === EVALUATION_TAB}
onClick={() => setSelectedSettingsTab(EVALUATION_TAB)}
>
<EuiIcon type="crossClusterReplicationApp" size="l" />
</EuiKeyPadMenuItem>
)}
</EuiKeyPadMenu>
</EuiPageSidebar>
<EuiPageBody paddingSize="none" panelled={true}>
Expand Down Expand Up @@ -295,6 +308,7 @@ export const AssistantSettings: React.FC<Props> = React.memo(
/>
)}
{selectedSettingsTab === ADVANCED_TAB && <AdvancedSettings />}
{selectedSettingsTab === EVALUATION_TAB && <EvaluationSettings />}
</EuiSplitPanel.Inner>
<EuiSplitPanel.Inner
grow={false}
Expand Down
Loading