|
3 | 3 | import { Card, CardBody, Input, Button } from '@sveltestrap/sveltestrap'; |
4 | 4 | import { getVectorKnowledgeCollections } from '$lib/services/knowledge-base-service'; |
5 | 5 | import { KnowledgeCollectionDisplayType } from '$lib/helpers/enums'; |
| 6 | + import { DECIMAL_REGEX } from '$lib/helpers/constants'; |
6 | 7 |
|
7 | 8 | const limit = 5; |
| 9 | + const confidLowerBound = 0; |
| 10 | + const confidUpperBound = 1; |
8 | 11 |
|
9 | 12 | /** @type {import('$agentTypes').AgentModel} */ |
10 | 13 | export let agent; |
|
17 | 20 | return { |
18 | 21 | name: x.name, |
19 | 22 | type: x.type, |
20 | | - disabled: x.disabled |
| 23 | + disabled: x.disabled, |
| 24 | + confidence: x.confidence |
21 | 25 | }; |
22 | 26 | }); |
23 | 27 |
|
|
96 | 100 | innerRefresh(innerKnowledgeBases); |
97 | 101 | } |
98 | 102 |
|
| 103 | + /** |
| 104 | + * @param {any} e |
| 105 | + * @param {number} idx |
| 106 | + */ |
| 107 | + function changeConfidence(e, idx) { |
| 108 | + const found = innerKnowledgeBases.find((_, index) => index === idx); |
| 109 | + if (!found) return; |
| 110 | + |
| 111 | + const value = e.target.value; |
| 112 | + const confidence = validateConfidenceNumber(value); |
| 113 | + found.confidence = confidence; |
| 114 | + handleAgentChange(); |
| 115 | + innerRefresh(innerKnowledgeBases); |
| 116 | + } |
| 117 | +
|
| 118 | + /** @param {any} e */ |
| 119 | + function validateConfidenceInput(e) { |
| 120 | + const reg = new RegExp(DECIMAL_REGEX, 'g'); |
| 121 | + if (e.key !== 'Backspace' && !reg.test(e.key)) { |
| 122 | + e.preventDefault(); |
| 123 | + } |
| 124 | + } |
| 125 | +
|
| 126 | + /** @param {string} value */ |
| 127 | + function validateConfidenceNumber(value) { |
| 128 | + let confidence; |
| 129 | + const num = Number(value); |
| 130 | +
|
| 131 | + if (isNaN(num) || num < confidLowerBound) { |
| 132 | + confidence = '0.0'; |
| 133 | + } else if (num >= confidUpperBound) { |
| 134 | + confidence = '1.0'; |
| 135 | + } else { |
| 136 | + confidence = num.toFixed(1); |
| 137 | + } |
| 138 | + return Number(confidence); |
| 139 | + } |
| 140 | +
|
99 | 141 | function addKnowledgeBase() { |
100 | 142 | innerKnowledgeBases = [ |
101 | 143 | ...innerKnowledgeBases, |
|
136 | 178 | name: x.name, |
137 | 179 | type: x.type, |
138 | 180 | displayName: x.displayName, |
139 | | - disabled: x.disabled |
| 181 | + disabled: x.disabled, |
| 182 | + confidence: x.confidence |
140 | 183 | } |
141 | 184 | }) || []; |
142 | 185 | } |
|
198 | 241 | </div> |
199 | 242 | </div> |
200 | 243 | </div> |
| 244 | + <div class="utility-row utility-row-secondary"> |
| 245 | + <div class="utility-content"> |
| 246 | + <div class="utility-list-item"> |
| 247 | + <div class="utility-label line-align-center"> |
| 248 | + {'Confidence'} |
| 249 | + </div> |
| 250 | + <div class="utility-value"> |
| 251 | + <div class="utility-input line-align-center"> |
| 252 | + <Input |
| 253 | + type="text" |
| 254 | + class="text-center" |
| 255 | + bind:value={knowledge.confidence} |
| 256 | + disabled={knowledge.disabled} |
| 257 | + on:keydown={e => validateConfidenceInput(e)} |
| 258 | + on:blur={e => changeConfidence(e, uid)} |
| 259 | + /> |
| 260 | + </div> |
| 261 | + <div class="utility-delete line-align-center"></div> |
| 262 | + </div> |
| 263 | + </div> |
| 264 | + </div> |
| 265 | + </div> |
201 | 266 | </div> |
202 | 267 | {/each} |
203 | 268 |
|
|
0 commit comments