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 @@
+
+
+
+
+ {'Confidence'}
+
+
+
+ validateConfidenceInput(e)}
+ on:blur={e => changeConfidence(e, uid)}
+ />
+
+
+
+
+
+
{/each}
diff --git a/src/routes/page/agent/[agentId]/agent-components/agent-llm-config.svelte b/src/routes/page/agent/[agentId]/agent-components/agent-llm-config.svelte
index c2cae30f..f2e84f16 100644
--- a/src/routes/page/agent/[agentId]/agent-components/agent-llm-config.svelte
+++ b/src/routes/page/agent/[agentId]/agent-components/agent-llm-config.svelte
@@ -2,6 +2,7 @@
import { onMount } from 'svelte';
import { Card, CardBody, Input } from '@sveltestrap/sveltestrap';
import { getLlmProviders, getLlmProviderModels } from '$lib/services/llm-provider-service';
+ import { INTEGER_REGEX } from '$lib/helpers/constants';
/** @type {import('$agentTypes').AgentModel} */
export let agent;
@@ -9,6 +10,15 @@
/** @type {() => void} */
export let handleAgentChange = () => {};
+ export const fetchLlmConfig = () => {
+ return {
+ ...config,
+ max_output_tokens: Number(config.max_output_tokens) > 0 ? Number(config.max_output_tokens) : null
+ };
+ }
+
+ export const fetchOriginalLlmConfig = () => {};
+
export const refresh = () => {
config = agent.llm_config;
init();
@@ -56,7 +66,6 @@
}
config.is_inherit = false;
- // handleAgentChange();
models = await getLlmProviderModels(provider);
config.model = models[0]?.name;
handleAgentChange();
@@ -89,6 +98,14 @@
config.max_output_tokens = value;
handleAgentChange();
}
+
+ /** @param {any} e */
+ function validateIntegerInput(e) {
+ const reg = new RegExp(INTEGER_REGEX, 'g');
+ if (e.key !== 'Backspace' && !reg.test(e.key)) {
+ e.preventDefault();
+ }
+ }
@@ -138,6 +155,7 @@
min={recursiveDepthLowerLimit}
max={recursiveDepthUpperLimit}
value={config.max_recursion_depth}
+ on:keydown={e => validateIntegerInput(e)}
on:change={e => changeMaxRecursiveDepth(e)}
/>
@@ -152,6 +170,7 @@
style="text-align: center;"
type="number"
value={config.max_output_tokens}
+ on:keydown={e => validateIntegerInput(e)}
on:change={e => changeMaxOutputToken(e)}
/>
diff --git a/src/routes/page/agent/[agentId]/agent-components/agent-template.svelte b/src/routes/page/agent/[agentId]/agent-components/agent-template.svelte
index 1e647c42..2615a31b 100644
--- a/src/routes/page/agent/[agentId]/agent-components/agent-template.svelte
+++ b/src/routes/page/agent/[agentId]/agent-components/agent-template.svelte
@@ -129,7 +129,7 @@
- {'Prompts:'}
+ {'Contents:'}
diff --git a/src/routes/page/agent/[agentId]/agent-tabs.svelte b/src/routes/page/agent/[agentId]/agent-tabs.svelte
index d9abfc50..74929978 100644
--- a/src/routes/page/agent/[agentId]/agent-tabs.svelte
+++ b/src/routes/page/agent/[agentId]/agent-tabs.svelte
@@ -16,11 +16,13 @@
export let handleAgentChange = () => {};
export const fetchTabData = () => {
+ const llmConfig = agentLlmConfigCmp?.fetchLlmConfig();
const utilities = agentUtilityCmp?.fetchUtilities();
const knwoledgebases = agentKnowledgeBaseCmp?.fetchKnowledgeBases();
const rules = agentEventRuleCmp?.fetchRules();
return {
+ llmConfig,
utilities: utilities || [],
knwoledgebases: knwoledgebases || [],
rules: rules || []
diff --git a/src/routes/page/knowledge-base/documents/+page.svelte b/src/routes/page/knowledge-base/documents/+page.svelte
index ed09a125..4650dbeb 100644
--- a/src/routes/page/knowledge-base/documents/+page.svelte
+++ b/src/routes/page/knowledge-base/documents/+page.svelte
@@ -38,12 +38,12 @@
import CollectionCreateModal from '../common/collection/collection-create-modal.svelte';
import AdvancedSearch from '../common/search/advanced-search.svelte';
import KnowledgeDocumentUpload from './knowledge-document-upload.svelte';
+ import { DECIMAL_REGEX } from '$lib/helpers/constants';
const pageSize = 8;
const duration = 2000;
const maxLength = 4096;
const step = 0.1;
- const numberRegex = "[0-9\.]+";
const enableVector = true;
const collectionType = KnowledgeCollectionType.Document;
const includedPayloads = [
@@ -241,7 +241,7 @@
/** @param {any} e */
function validateConfidenceInput(e) {
- var reg = new RegExp(numberRegex, 'g');
+ const reg = new RegExp(DECIMAL_REGEX, 'g');
if (e.key !== 'Backspace' && !reg.test(e.key)) {
e.preventDefault();
}
diff --git a/src/routes/page/knowledge-base/question-answer/+page.svelte b/src/routes/page/knowledge-base/question-answer/+page.svelte
index 050c735e..2be650a7 100644
--- a/src/routes/page/knowledge-base/question-answer/+page.svelte
+++ b/src/routes/page/knowledge-base/question-answer/+page.svelte
@@ -32,12 +32,12 @@
import VectorItem from '../common/vector-table/vector-item.svelte';
import VectorItemEditModal from '../common/vector-table/vector-item-edit-modal.svelte';
import CollectionCreateModal from '../common/collection/collection-create-modal.svelte';
+ import { DECIMAL_REGEX } from '$lib/helpers/constants';
const pageSize = 8;
const duration = 2000;
const maxLength = 4096;
- const numberRegex = "[0-9\.]+";
const step = 0.1;
const enableVector = true;
const collectionType = KnowledgeCollectionType.QuestionAnswer;
@@ -218,7 +218,7 @@
/** @param {any} e */
function validateConfidenceInput(e) {
- var reg = new RegExp(numberRegex, 'g');
+ const reg = new RegExp(DECIMAL_REGEX, 'g');
if (e.key !== 'Backspace' && !reg.test(e.key)) {
e.preventDefault();
}