feat(chat): add configurable streaming output
This commit is contained in:
@@ -50,6 +50,7 @@ const runtimeForm = reactive({
|
||||
presencePenalty: null as number | null,
|
||||
frequencyPenalty: null as number | null,
|
||||
maxToken: 8192 as number | null,
|
||||
streamEnabled: 1,
|
||||
});
|
||||
|
||||
const promptDirty = computed(() => promptContent.value !== savedPromptContent.value);
|
||||
@@ -104,6 +105,7 @@ function applyRuntimeConfig(value: AgentRuntimeConfig) {
|
||||
presencePenalty: value.presencePenalty,
|
||||
frequencyPenalty: value.frequencyPenalty,
|
||||
maxToken: value.maxToken,
|
||||
streamEnabled: value.streamEnabled,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -132,6 +134,7 @@ async function saveRuntimeConfig() {
|
||||
presencePenalty: runtimeForm.presencePenalty,
|
||||
frequencyPenalty: runtimeForm.frequencyPenalty,
|
||||
maxToken: runtimeForm.maxToken,
|
||||
streamEnabled: runtimeForm.streamEnabled,
|
||||
});
|
||||
applyRuntimeConfig(saved);
|
||||
const model = models.value.find((item) => item.id === saved.modelId);
|
||||
@@ -368,6 +371,21 @@ function errorMessage(error: unknown, fallback: string) {
|
||||
v-model:max-token="runtimeForm.maxToken"
|
||||
:disabled="!runtimeConfig?.modelId"
|
||||
/>
|
||||
<el-form-item class="agent-stream-setting">
|
||||
<div class="agent-stream-setting-copy">
|
||||
<strong>用户端流式输出</strong>
|
||||
<span>开启后回答正文会边生成边展示;关闭后等待模型完成,再一次性显示完整回答。</span>
|
||||
</div>
|
||||
<el-switch
|
||||
v-model="runtimeForm.streamEnabled"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
active-text="开启"
|
||||
inactive-text="关闭"
|
||||
inline-prompt
|
||||
:disabled="!runtimeConfig?.modelId"
|
||||
/>
|
||||
</el-form-item>
|
||||
</section>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
@@ -1017,6 +1017,46 @@ textarea {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.agent-stream-setting {
|
||||
margin: 16px 0 0;
|
||||
padding: 14px 16px;
|
||||
border: 1px solid #dce7e3;
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.agent-stream-setting > .el-form-item__content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.agent-stream-setting-copy {
|
||||
display: grid;
|
||||
gap: 4px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.agent-stream-setting-copy strong {
|
||||
color: #263832;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.agent-stream-setting-copy span {
|
||||
color: #667a73;
|
||||
font-size: 12px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
@media (max-width: 680px) {
|
||||
.agent-stream-setting > .el-form-item__content {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.agent-parameter-label {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -137,6 +137,7 @@ export interface AgentGenerationConfig {
|
||||
presencePenalty: number | null;
|
||||
frequencyPenalty: number | null;
|
||||
maxToken: number;
|
||||
streamEnabled: number;
|
||||
}
|
||||
|
||||
export interface AgentRuntimeConfig extends AgentGenerationConfig {
|
||||
|
||||
Reference in New Issue
Block a user