Skip to content

Commit c7ad2f4

Browse files
authored
Merge pull request #135 from opentiny/feat-playground-template-chat-optmize
feat(playground): move template current schema to user messages, add assistant message to conversation context
2 parents 199f393 + c223b80 commit c7ad2f4

4 files changed

Lines changed: 29 additions & 11 deletions

File tree

sites/playground/server/src/chat-template.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,39 @@ export const createChatTemplate = () => {
111111
);
112112
const maxSteps = 30;
113113
const systemPrompt = `${genPrompt(rendererConfig, tgCustomConfig)}
114-
${body.templateSchema ? generateJsonPatchPrompt(body.templateSchema) : ''}
114+
${body.templateSchema ? generateJsonPatchPrompt() : ''}
115115
${specificPrompt}
116116
${customSystemPrompt}`;
117+
118+
const messages = body.messages;
119+
if (body.templateSchema) {
120+
const schemaJsonContext = `
121+
**当前 schemaJson(这是唯一可信的 ID 来源):**
122+
\`\`\`schemaJson
123+
${JSON.stringify(body.templateSchema, null, 2)}
124+
\`\`\`
125+
`;
126+
if (messages.length > 0 && messages[messages.length - 1].role === 'user') {
127+
if (Array.isArray(messages[messages.length - 1].content)) {
128+
messages[messages.length - 1].content.push({
129+
type: 'text',
130+
text: schemaJsonContext,
131+
});
132+
} else {
133+
messages[messages.length - 1].content += schemaJsonContext;
134+
}
135+
} else {
136+
messages.push({
137+
role: 'user',
138+
content: schemaJsonContext,
139+
});
140+
}
141+
}
117142
const options: StreamTextOptions = {
118143
model,
119144
temperature,
120145
system: systemPrompt,
121-
messages: body.messages,
146+
messages: messages,
122147
abortSignal: abort.signal,
123148
tools,
124149
toolChoice: 'auto',

sites/playground/server/src/json-patch-prompt.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export const generateJsonPatchPrompt = (
2-
schema: any,
32
) => `根据提供的 JSON schema 和修改指令,生成符合 JSON PATCH (RFC 6902) 规范的增量修改操作,使用 \`\`\`jsonPatch\`\`\` 标记包裹输出。
43
54
## ⚠️ 最重要:ID 来源规则(必须严格遵守)
@@ -11,11 +10,6 @@ export const generateJsonPatchPrompt = (
1110
3. **如果历史消息中的 ID 与当前 schema 不匹配**:说明 schema 已经更新,必须使用当前 schema 中的新 ID
1211
4. **验证 ID 存在性**:在使用任何 ID 前,必须确认该 ID 在当前 schema 中存在
1312
14-
**当前 schema(这是唯一可信的 ID 来源):**
15-
\`\`\`json
16-
${JSON.stringify(schema, null, 2)}
17-
\`\`\`
18-
1913
**重要提醒:**
2014
- 历史消息中的 ID 可能指向已删除或已修改的组件
2115
- 历史消息中的 ID 可能与当前 schema 中的组件不匹配

sites/playground/web/src/components/genui-template/GenuiTemplateChat.vue

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,8 @@ const handleRefresh = ({ index }: { index: number }) => {
235235
};
236236
237237
const handleCopy = async ({ index }: { index: number }) => {
238-
const cardMessage = getCardMessageByIndex(index);
239-
240238
try {
241-
await copy(cardMessage?.content);
239+
await copy((messages.value[index]?.content as string) || '');
242240
} catch (error) {
243241
console.error('复制失败', error);
244242
}

sites/playground/web/src/components/genui-template/template-provider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ export class CustomModelProvider extends BaseModelProvider {
179179
// 模板场景暂不处理 tool_calls_result
180180
} else if (content !== undefined) {
181181
currentDelta = delta;
182+
chatMessage.content += content;
182183
schemaJsonExtractor.handleContent(content);
183184
}
184185
} catch (e) {

0 commit comments

Comments
 (0)