@@ -133,17 +133,34 @@ const promptTemplates = {
133133必须严格遵循以下规则:
1341341. **严格禁止输出解释、前言、额外说明**,只输出最终结果。
1351352. **严格使用以下格式**,不能缺少标题、不能多出其他段落。
136+ 3. **如果用户需求不明确,就忽略用户需求**。
136137
137138# 角色:
138-
139+ 角色概述和主要职责的一句话描述
139140
140141## 目标:
141142角色的工作目标,如果有多目标可以分点列出,但建议更聚焦1-2个目标
142143
143- ## 技能:
144- 1. 为了实现目标,角色需要具备的技能1
145- 2. 为了实现目标,角色需要具备的技能2
146- 3. 为了实现目标,角色需要具备的技能3
144+ ## 核心技能:
145+ ### 技能 1: [技能名称,如作品推荐/信息查询/专业分析等]
146+ 1. [执行步骤1 - 描述该技能的第一个具体操作步骤,包括条件判断和处理方式]
147+ 2. [执行步骤2 - 描述该技能的第二个具体操作步骤,包括如何获取或处理信息]
148+ 3. [执行步骤3 - 描述该技能的最终输出步骤,说明如何呈现结果]
149+
150+ ===回复示例===
151+ - 📋 [标识符]: <具体内容格式说明>
152+ - 🎯 [标识符]: <具体内容格式说明>
153+ - 💡 [标识符]: <具体内容格式说明>
154+ ===示例结束===
155+
156+ ### 技能 2: [技能名称]
157+ 1. [执行步骤1 - 描述触发条件和初始处理方式]
158+ 2. [执行步骤2 - 描述信息获取和深化处理的具体方法]
159+ 3. [执行步骤3 - 描述最终输出的具体要求和格式]
160+
161+ ### 技能 3: [技能名称]
162+ - [核心能力描述 - 说明该技能的主要作用和知识基础]
163+ - [应用方法 - 描述如何运用该技能为用户提供服务,包括具体的实施方式]
147164
148165## 工作流:
1491661. 描述角色工作流程的第一步
@@ -183,6 +200,15 @@ const startStreamingOutput = () => {
183200 isPaused .value = false
184201
185202 streamTimer = setInterval (() => {
203+ if (isApiComplete .value && ! isPaused .value ) {
204+ // 更新显示内容
205+ const currentAnswer = chatMessages .value [chatMessages .value .length - 1 ]
206+ if (currentAnswer && currentAnswer .role === ' ai' ) {
207+ currentAnswer .content = fullContent .value
208+ }
209+ stopStreaming ()
210+ return
211+ }
186212 if (! isPaused .value && currentDisplayIndex .value < fullContent .value .length ) {
187213 // 每次输出1-3个字符,模拟真实的流式输出
188214 const step = Math .min (3 , fullContent .value .length - currentDisplayIndex .value )
@@ -256,6 +282,7 @@ const getWrite = (reader: any) => {
256282 if (done ) {
257283 // 流数据接收完成,但定时器继续运行直到显示完所有内容
258284 loading .value = false
285+ isApiComplete .value = true
259286 return
260287 }
261288 const decoder = new TextDecoder (' utf-8' )
@@ -283,7 +310,6 @@ const getWrite = (reader: any) => {
283310 }
284311 }
285312 if (chunk .is_end ) {
286- isApiComplete .value = true
287313 return Promise .resolve ()
288314 }
289315 }
@@ -317,6 +343,7 @@ const showContinueButton = computed(() => {
317343})
318344
319345function generatePrompt(inputValue : any ) {
346+ isApiComplete .value = false
320347 loading .value = true
321348 const workspaceId = user .getWorkspaceId () || ' default'
322349 chatMessages .value .push ({ content: inputValue , role: ' user' })
@@ -369,6 +396,9 @@ const handleSubmit = (event?: any) => {
369396 if (! originalUserInput .value ) {
370397 originalUserInput .value = inputValue .value
371398 }
399+ if (isPaused .value || isStreaming .value ) {
400+ return
401+ }
372402 if (inputValue .value ) {
373403 generatePrompt (inputValue .value )
374404 inputValue .value = ' '
0 commit comments