- AI
- Aggiornamento QUASAR
This commit is contained in:
@@ -11,6 +11,8 @@ import { useQuasar } from 'quasar'
|
||||
import { costanti } from '@costanti'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
import { serv_constants } from '@store/Modules/serv_constants'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CAITools',
|
||||
props: {
|
||||
@@ -26,14 +28,144 @@ export default defineComponent({
|
||||
|
||||
const $router = useRouter()
|
||||
|
||||
const options = ref(<any>{})
|
||||
|
||||
const querySel = ref('')
|
||||
|
||||
const contestSysteList = [
|
||||
{ label: 'Standard', value: '' },
|
||||
{ label: 'Matematica', value: 'Sei un esperto in Matematica' },
|
||||
{ label: 'Editoriale', value: 'Sei un esperto in Editoria e scrittura di articoli e blog' },
|
||||
{ label: 'Programmazione', value: 'Sei un esperto in programmazione' },
|
||||
]
|
||||
const modelList = [
|
||||
{ label: 'DeepSeek', value: 'deepseek-chat' },
|
||||
]
|
||||
|
||||
const outputTypeList = [
|
||||
{ label: 'Formato Testo', value: 'Ritornami l\'output in formato testo' },
|
||||
{ label: 'Per Telegram', value: 'Ritornami l\'output formattato per incollarlo sulla chat Telegram, usando delle emoticons in punti chiave e il grassetto (**) nelle parole chiave.' },
|
||||
{ label: 'Formato JSON', value: 'Ritornami l\'output in formato JSON' },
|
||||
{ label: 'Formato CSV (campi separati da \'|\')', value: 'Ritornami l\'output in formato CSV, con i campi separati da \'|\'' },
|
||||
]
|
||||
|
||||
const tempList = [{ label: 'Temperatura a 0.3', value: 0.3 },
|
||||
{ label: 'Temperatura a 0.5', value: 0.5 },
|
||||
{ label: 'Temperatura a 1', value: 1 },
|
||||
{ label: 'Temperatura a 1.2', value: 1.2 },
|
||||
{ label: 'Temperatura a 1.5', value: 1.5 },
|
||||
]
|
||||
|
||||
const tokenList = [
|
||||
{ label: '50 Token', value: 50 },
|
||||
{ label: '100 Token', value: 100 },
|
||||
{ label: '200 Token', value: 200 },
|
||||
{ label: '500 Token', value: 500 },
|
||||
{ label: '1000 Token', value: 1000 },
|
||||
{ label: '2500 Token', value: 2500 },
|
||||
{ label: '4000 Token', value: 4000 },
|
||||
{ label: '5000 Token', value: 5000 },
|
||||
{ label: '10000 Token', value: 10000 },
|
||||
]
|
||||
|
||||
const model = ref('deepseek-chat')
|
||||
const max_tokens = ref(100)
|
||||
const outputType = ref('')
|
||||
const temp = ref(0.3)
|
||||
const stream = ref(false)
|
||||
const contestsystem = ref('')
|
||||
|
||||
const inputPrompt = ref('');
|
||||
const result = ref('');
|
||||
const isLoading = ref(false);
|
||||
const errorMessage = ref('');
|
||||
const finish_reason = ref('');
|
||||
const withexplain = ref(false);
|
||||
|
||||
const querylist = ref(<any[]>[])
|
||||
|
||||
|
||||
const modelLabel = computed(() => {
|
||||
const foundModel = modelList.find((item: any) => item.value === model.value);
|
||||
return foundModel ? foundModel.label : null;
|
||||
})
|
||||
|
||||
function mount() {
|
||||
// Mount
|
||||
|
||||
querylist.value = globalStore.getQueryAI()
|
||||
|
||||
outputType.value = outputTypeList[0].value
|
||||
|
||||
}
|
||||
|
||||
async function handleSubmit() {
|
||||
isLoading.value = true;
|
||||
errorMessage.value = '';
|
||||
result.value = '';
|
||||
|
||||
options.value = {
|
||||
model: model.value,
|
||||
max_tokens: max_tokens.value,
|
||||
temp: temp.value,
|
||||
stream: stream.value,
|
||||
withexplain: withexplain.value,
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
const resdata = await globalStore.getQueryDS(inputPrompt.value, options.value)
|
||||
|
||||
if (resdata.code === serv_constants.RIS_CODE_OK) {
|
||||
if (resdata.choice) {
|
||||
finish_reason.value = resdata.choice.finish_reason || ''
|
||||
}
|
||||
if (resdata.choice.message) {
|
||||
result.value = resdata.choice.message.content || ''
|
||||
}
|
||||
} else if (resdata.code === serv_constants.RIS_CODE_ERR) {
|
||||
errorMessage.value = resdata.error.message || resdata.error;
|
||||
$q.notify({
|
||||
color: 'negative',
|
||||
icon: 'error',
|
||||
message: 'Errore durante la richiesta',
|
||||
caption: errorMessage.value
|
||||
});
|
||||
}
|
||||
|
||||
} catch (error: any) {
|
||||
errorMessage.value = error.response?.data?.error || error.message;
|
||||
$q.notify({
|
||||
color: 'negative',
|
||||
icon: 'error',
|
||||
message: 'Errore durante la richiesta',
|
||||
caption: errorMessage.value
|
||||
});
|
||||
}
|
||||
|
||||
isLoading.value = false;
|
||||
|
||||
}
|
||||
|
||||
const copyToClipboard = () => {
|
||||
if (!result.value) return;
|
||||
|
||||
navigator.clipboard.writeText(result.value).then(() => {
|
||||
$q.notify({
|
||||
message: 'Copiato negli appunti!',
|
||||
color: 'positive',
|
||||
icon: 'check',
|
||||
});
|
||||
}).catch(err => {
|
||||
console.error('Errore nella copia:', err);
|
||||
$q.notify({
|
||||
message: 'Errore nella copia!',
|
||||
color: 'negative',
|
||||
icon: 'error',
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(mount)
|
||||
|
||||
return {
|
||||
@@ -41,6 +173,26 @@ export default defineComponent({
|
||||
querySel,
|
||||
$q,
|
||||
globalStore,
|
||||
inputPrompt,
|
||||
result,
|
||||
isLoading,
|
||||
errorMessage,
|
||||
handleSubmit,
|
||||
querylist,
|
||||
copyToClipboard,
|
||||
max_tokens,
|
||||
tokenList,
|
||||
modelList,
|
||||
tempList,
|
||||
stream,
|
||||
model,
|
||||
contestSysteList,
|
||||
contestsystem,
|
||||
finish_reason,
|
||||
modelLabel,
|
||||
withexplain,
|
||||
outputType,
|
||||
outputTypeList,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user