From 007909a156115f45f3b2ec412033001e6db036db Mon Sep 17 00:00:00 2001 From: Alcedo Date: Fri, 25 Aug 2023 15:29:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=98=9F=E7=81=AB?= =?UTF-8?q?=E8=AE=BE=E5=AE=9A=E8=87=AA=E5=AE=9A=E4=B9=89=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/chat.js | 6 +++++- resources/view/setting_view.json | 5 +++++ utils/config.js | 1 + utils/xinghuo/xinghuo.js | 17 ++++++++++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/apps/chat.js b/apps/chat.js index 350e44f..df61fc8 100644 --- a/apps/chat.js +++ b/apps/chat.js @@ -1916,7 +1916,11 @@ export class chatgpt extends plugin { }) // 获取图片资源 const image = await getImg(e) - let response = await client.sendMessage(prompt, conversation?.conversationId, image ? image[0] : undefined) + let response = await client.sendMessage(prompt, { + e, + chatId: conversation?.conversationId, + image: image ? image[0] : undefined + }) return response } case 'azure': { diff --git a/resources/view/setting_view.json b/resources/view/setting_view.json index 487dfd7..5fa743a 100644 --- a/resources/view/setting_view.json +++ b/resources/view/setting_view.json @@ -778,6 +778,11 @@ "label": "序列化设定", "data": "xhPromptSerialize" }, + { + "type": "check", + "label": "运行执行设定中的代码", + "data": "xhPromptEval" + }, { "type": "textarea", "label": "设定", diff --git a/utils/config.js b/utils/config.js index d4780b2..9895370 100644 --- a/utils/config.js +++ b/utils/config.js @@ -59,6 +59,7 @@ const defaultConfig = { xhMaxTokens: 1024, xhPromptSerialize: false, xhPrompt: '', + xhPromptEval: false, xhRetRegExp: '', xhRetReplace: '', promptPrefixOverride: 'Your answer shouldn\'t be too verbose. Prefer to answer in Chinese.', diff --git a/utils/xinghuo/xinghuo.js b/utils/xinghuo/xinghuo.js index 12257c0..84f5df8 100644 --- a/utils/xinghuo/xinghuo.js +++ b/utils/xinghuo/xinghuo.js @@ -375,7 +375,10 @@ export default class XinghuoClient { }) } - async sendMessage(prompt, chatId, image) { + async sendMessage(prompt, option) { + let chatId = option?.chatId + let image = option?.image + // 对星火预设的问题进行重写,避免收到预设回答 prompt = this.promptBypassPreset(prompt) if (Config.xhmode == 'api' || Config.xhmode == 'apiv2' || Config.xhmode == 'assistants') { @@ -392,6 +395,18 @@ export default class XinghuoClient { } else { Prompt = Config.xhPrompt ? [{ "role": "user", "content": Config.xhPrompt }] : [] } + if(Config.xhPromptEval) { + Prompt.forEach(obj => { + try { + obj.content = obj.content.replace(/{{(.*?)}}/g, (match, variable) => { + return Function(`"use strict";return ((e)=>{return ${variable} })`)()(option.e) + }) + } catch (error) { + logger.error(error) + } + }) + } + let { response, id } = await this.apiMessage(prompt, chatId, Prompt) if (Config.xhRetRegExp) { response = response.replace(new RegExp(Config.xhRetRegExp, 'g'), Config.xhRetReplace)