Skip to content

Commit 8fbd863

Browse files
committed
feat: Support reasoning content(WIP)
1 parent 5d3cd58 commit 8fbd863

File tree

6 files changed

+146
-1
lines changed

6 files changed

+146
-1
lines changed

apps/application/models/application.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@ def get_dataset_setting_dict():
3535

3636

3737
def get_model_setting_dict():
38-
return {'prompt': Application.get_default_model_prompt(), 'no_references_prompt': '{question}'}
38+
return {
39+
'prompt': Application.get_default_model_prompt(),
40+
'no_references_prompt': '{question}',
41+
'reasoning_content_start': '<think>',
42+
'reasoning_content_end': '</think>',
43+
'reasoning_content_enable': False,
44+
}
3945

4046

4147
class Application(AppModelMixin):

ui/src/locales/lang/en-US/views/application.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ export default {
106106
browser: 'Browser playback (free)',
107107
tts: 'TTS Model',
108108
listeningTest: 'Preview'
109+
},
110+
reasoningContent: {
111+
enable: 'Show Reasoning',
112+
start: 'Start',
113+
end: 'End',
109114
}
110115
},
111116
buttons: {

ui/src/locales/lang/zh-CN/views/application.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ export default {
9797
browser: '浏览器播放(免费)',
9898
tts: 'TTS模型',
9999
listeningTest: '试听'
100+
},
101+
reasoningContent: {
102+
enable: '输出思考',
103+
start: '开始',
104+
end: '结束',
100105
}
101106
},
102107
buttons: {

ui/src/locales/lang/zh-Hant/views/application.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ export default {
9898
browser: '瀏覽器播放(免費)',
9999
tts: 'TTS模型',
100100
listeningTest: '試聽'
101+
},
102+
reasoningContent: {
103+
enable: '输出思考',
104+
start: '开始',
105+
end: '结束',
101106
}
102107
},
103108
buttons: {

ui/src/views/application/ApplicationSetting.vue

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@
6565
<template #label>
6666
<div class="flex-between">
6767
<span>{{ $t('views.application.applicationForm.form.aiModel.label') }}</span>
68+
<el-button
69+
type="primary"
70+
link
71+
@click="openReasoningParamSettingDialog"
72+
:disabled="!applicationForm.model_id"
73+
>
74+
{{ $t('common.setting') }}
75+
</el-button>
6876
<el-button
6977
type="primary"
7078
link
@@ -453,6 +461,7 @@
453461
/>
454462

455463
<EditAvatarDialog ref="EditAvatarDialogRef" @refresh="refreshIcon" />
464+
<ReasoningParamSettingDialog ref="ReasoningParamSettingDialogRef" @refresh="submitReasoningDialog"/>
456465
</LayoutContainer>
457466
</template>
458467
<script setup lang="ts">
@@ -472,6 +481,7 @@ import { MsgSuccess, MsgWarning } from '@/utils/message'
472481
import useStore from '@/stores'
473482
import { t } from '@/locales'
474483
import TTSModeParamSettingDialog from './component/TTSModeParamSettingDialog.vue'
484+
import ReasoningParamSettingDialog from './component/ReasoningParamSettingDialog.vue'
475485
476486
const { model, application } = useStore()
477487
@@ -493,6 +503,7 @@ const optimizationPrompt =
493503
t('views.application.applicationForm.dialog.defaultPrompt2')
494504
495505
const AIModeParamSettingDialogRef = ref<InstanceType<typeof AIModeParamSettingDialog>>()
506+
const ReasoningParamSettingDialogRef = ref<InstanceType<typeof ReasoningParamSettingDialog>>()
496507
const TTSModeParamSettingDialogRef = ref<InstanceType<typeof TTSModeParamSettingDialog>>()
497508
const ParamSettingDialogRef = ref<InstanceType<typeof ParamSettingDialog>>()
498509
@@ -562,6 +573,13 @@ function submitNoReferencesPromptDialog(val: string) {
562573
function submitSystemDialog(val: string) {
563574
applicationForm.value.model_setting.system = val
564575
}
576+
function submitReasoningDialog(val: any) {
577+
console.log(val)
578+
applicationForm.value.model_setting = {
579+
...applicationForm.value.model_setting,
580+
...val
581+
}
582+
}
565583
566584
const submit = async (formEl: FormInstance | undefined) => {
567585
if (!formEl) return
@@ -591,6 +609,12 @@ const openAIParamSettingDialog = () => {
591609
}
592610
}
593611
612+
const openReasoningParamSettingDialog = () => {
613+
if (applicationForm.value.model_id) {
614+
ReasoningParamSettingDialogRef.value?.open(applicationForm.value.model_setting)
615+
}
616+
}
617+
594618
const openTTSParamSettingDialog = () => {
595619
if (applicationForm.value.tts_model_id) {
596620
TTSModeParamSettingDialogRef.value?.open(
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<template>
2+
<el-dialog
3+
align-center
4+
:title="$t('common.setting')"
5+
class="param-dialog"
6+
v-model="dialogVisible"
7+
style="width: 550px"
8+
append-to-body
9+
:close-on-click-modal="false"
10+
:close-on-press-escape="false"
11+
>
12+
<el-form label-position="top" ref="paramFormRef" :model="form">
13+
<el-form-item>
14+
<template #label>
15+
<div class="flex-between">
16+
<span>{{ $t('views.application.applicationForm.form.reasoningContent.enable') }}</span>
17+
<el-switch v-model="form.reasoning_content_enable" />
18+
</div>
19+
</template>
20+
</el-form-item>
21+
<el-form-item :label="$t('views.application.applicationForm.form.reasoningContent.start')">
22+
<el-input
23+
v-model="form.reasoning_content_start"
24+
:rows="6"
25+
maxlength="50"
26+
placeholder="<think>"
27+
/>
28+
</el-form-item>
29+
<el-form-item :label="$t('views.application.applicationForm.form.reasoningContent.end')">
30+
<el-input
31+
v-model="form.reasoning_content_end"
32+
:rows="6"
33+
maxlength="50"
34+
placeholder="</think>"
35+
/>
36+
</el-form-item>
37+
</el-form>
38+
39+
<template #footer>
40+
<span class="dialog-footer p-16">
41+
<el-button @click.prevent="dialogVisible = false">{{ $t('common.cancel') }}</el-button>
42+
<el-button type="primary" @click="submit()" :loading="loading">
43+
{{ $t('common.save') }}
44+
</el-button>
45+
</span>
46+
</template>
47+
</el-dialog>
48+
</template>
49+
<script setup lang="ts">
50+
import { ref, watch, reactive } from 'vue'
51+
52+
53+
const emit = defineEmits(['refresh'])
54+
55+
const form = ref<any>({
56+
reasoning_content_enable: false,
57+
reasoning_content_start: '<think>',
58+
reasoning_content_end: '</think>'
59+
})
60+
61+
62+
const dialogVisible = ref<boolean>(false)
63+
const loading = ref(false)
64+
65+
66+
const open = (data: any) => {
67+
form.value = { ...form.value, ...data }
68+
dialogVisible.value = true
69+
}
70+
71+
const submit = () => {
72+
emit('refresh', form.value)
73+
dialogVisible.value = false
74+
}
75+
76+
defineExpose({ open })
77+
</script>
78+
<style lang="scss" scope>
79+
.param-dialog {
80+
padding: 8px 8px 24px 8px;
81+
82+
.el-dialog__header {
83+
padding: 16px 16px 0 16px;
84+
}
85+
86+
.el-dialog__body {
87+
padding: 0 !important;
88+
}
89+
90+
.dialog-max-height {
91+
height: 560px;
92+
}
93+
94+
.custom-slider {
95+
.el-input-number.is-without-controls .el-input__wrapper {
96+
padding: 0 !important;
97+
}
98+
}
99+
}
100+
</style>

0 commit comments

Comments
 (0)