From d6f7681a9c76f0e353ee2abbccb5d5a17c072102 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Tue, 25 Feb 2025 11:56:14 -0600 Subject: [PATCH] add confidence --- src/lib/helpers/constants.js | 5 +- src/lib/helpers/types/agentTypes.js | 3 +- src/lib/scss/custom/pages/_agent.scss | 4 +- src/routes/page/agent/[agentId]/+page.svelte | 11 ++- .../agent-knowledge-base.svelte | 69 ++++++++++++++++++- .../agent-components/agent-llm-config.svelte | 21 +++++- .../agent-components/agent-template.svelte | 2 +- .../page/agent/[agentId]/agent-tabs.svelte | 2 + .../knowledge-base/documents/+page.svelte | 4 +- .../question-answer/+page.svelte | 4 +- 10 files changed, 107 insertions(+), 18 deletions(-) diff --git a/src/lib/helpers/constants.js b/src/lib/helpers/constants.js index ddb7d4a5..f91563c2 100644 --- a/src/lib/helpers/constants.js +++ b/src/lib/helpers/constants.js @@ -36,4 +36,7 @@ export const EVALUATOR_ID = "2cd4b805-7078-4405-87e9-2ec9aadf8a11"; export const TRAINING_MODE = "training"; export const DEFAULT_KNOWLEDGE_COLLECTION = "BotSharp"; -export const IMAGE_DATA_PREFIX = 'data:image'; \ No newline at end of file +export const IMAGE_DATA_PREFIX = 'data:image'; + +export const INTEGER_REGEX = "[0-9]+"; +export const DECIMAL_REGEX = "[0-9.]+"; \ No newline at end of file diff --git a/src/lib/helpers/types/agentTypes.js b/src/lib/helpers/types/agentTypes.js index 96d74084..2637614c 100644 --- a/src/lib/helpers/types/agentTypes.js +++ b/src/lib/helpers/types/agentTypes.js @@ -140,7 +140,8 @@ * @property {string} name * @property {string} type * @property {string?} [displayName] - * @property {boolean} disabled + * @property {boolean} disabled + * @property {number?} [confidence] */ /** diff --git a/src/lib/scss/custom/pages/_agent.scss b/src/lib/scss/custom/pages/_agent.scss index a7f4df42..9e5ffda4 100644 --- a/src/lib/scss/custom/pages/_agent.scss +++ b/src/lib/scss/custom/pages/_agent.scss @@ -167,6 +167,8 @@ .utility-label { width: 30%; + font-size: 0.95em; + flex-wrap: wrap; } .utility-value { @@ -222,7 +224,7 @@ display: flex; .utility-label { - font-size: 12px; + font-size: 0.95em; } } } diff --git a/src/routes/page/agent/[agentId]/+page.svelte b/src/routes/page/agent/[agentId]/+page.svelte index 0e1837e6..06e47d03 100644 --- a/src/routes/page/agent/[agentId]/+page.svelte +++ b/src/routes/page/agent/[agentId]/+page.svelte @@ -107,11 +107,7 @@ utilities: agent.utilities || [], knowledge_bases: agent.knowledge_bases || [], rules: agent.rules || [], - max_message_count: Number(agent.max_message_count) > 0 ? Number(agent.max_message_count) : null, - llm_config: { - ...agent.llm_config, - max_output_tokens: Number(agent.llm_config.max_output_tokens) > 0 ? Number(agent.llm_config.max_output_tokens) : null - } + max_message_count: Number(agent.max_message_count) > 0 ? Number(agent.max_message_count) : null }; isLoading = true; saveAgent(agent).then(res => { @@ -198,6 +194,7 @@ function fetchTabData() { const data = agentTabsCmp?.fetchTabData(); if (data) { + agent.llm_config = data.llmConfig; agent.utilities = data.utilities || []; agent.knowledge_bases = data.knwoledgebases || []; agent.rules = data.rules || []; @@ -239,7 +236,7 @@ saveAgentDraft(data); } - function agentDraftReset() { + function handleAgentReset() { agent = JSON.parse(JSON.stringify(originalAgent)); agentDraft = null; deleteAgentDraft(); @@ -266,7 +263,7 @@ profiles={agent.profiles || []} labels={agent.labels || []} resetable={!!agentDraft} - resetAgent={() => agentDraftReset()} + resetAgent={() => handleAgentReset()} {handleAgentChange} /> diff --git a/src/routes/page/agent/[agentId]/agent-components/agent-knowledge-base.svelte b/src/routes/page/agent/[agentId]/agent-components/agent-knowledge-base.svelte index 97605035..553c3911 100644 --- a/src/routes/page/agent/[agentId]/agent-components/agent-knowledge-base.svelte +++ b/src/routes/page/agent/[agentId]/agent-components/agent-knowledge-base.svelte @@ -3,8 +3,11 @@ import { Card, CardBody, Input, Button } from '@sveltestrap/sveltestrap'; import { getVectorKnowledgeCollections } from '$lib/services/knowledge-base-service'; import { KnowledgeCollectionDisplayType } from '$lib/helpers/enums'; + import { DECIMAL_REGEX } from '$lib/helpers/constants'; const limit = 5; + const confidLowerBound = 0; + const confidUpperBound = 1; /** @type {import('$agentTypes').AgentModel} */ export let agent; @@ -17,7 +20,8 @@ return { name: x.name, type: x.type, - disabled: x.disabled + disabled: x.disabled, + confidence: x.confidence }; }); @@ -96,6 +100,44 @@ innerRefresh(innerKnowledgeBases); } + /** + * @param {any} e + * @param {number} idx + */ + function changeConfidence(e, idx) { + const found = innerKnowledgeBases.find((_, index) => index === idx); + if (!found) return; + + const value = e.target.value; + const confidence = validateConfidenceNumber(value); + found.confidence = confidence; + handleAgentChange(); + innerRefresh(innerKnowledgeBases); + } + + /** @param {any} e */ + function validateConfidenceInput(e) { + const reg = new RegExp(DECIMAL_REGEX, 'g'); + if (e.key !== 'Backspace' && !reg.test(e.key)) { + e.preventDefault(); + } + } + + /** @param {string} value */ + function validateConfidenceNumber(value) { + let confidence; + const num = Number(value); + + if (isNaN(num) || num < confidLowerBound) { + confidence = '0.0'; + } else if (num >= confidUpperBound) { + confidence = '1.0'; + } else { + confidence = num.toFixed(1); + } + return Number(confidence); + } + function addKnowledgeBase() { innerKnowledgeBases = [ ...innerKnowledgeBases, @@ -136,7 +178,8 @@ name: x.name, type: x.type, displayName: x.displayName, - disabled: x.disabled + disabled: x.disabled, + confidence: x.confidence } }) || []; } @@ -198,6 +241,28 @@ +