Jelajahi Sumber

永久移除了网页在加载时候的预设prompt.json功能

Ryuiso 3 bulan lalu
induk
melakukan
1be5bd26b8
3 mengubah file dengan 23 tambahan dan 66 penghapusan
  1. 4 3
      app/components/settings.tsx
  2. 19 53
      app/store/prompt.ts
  3. 0 10
      public/prompts.json

+ 4 - 3
app/components/settings.tsx

@@ -182,8 +182,8 @@ function EditPromptModal(props: { id: string; onClose: () => void }) {
 function UserPromptModal(props: { onClose?: () => void }) {
   const promptStore = usePromptStore();
   const userPrompts = promptStore.getUserPrompts();
-  const builtinPrompts = SearchService.builtinPrompts;
-  const allPrompts = userPrompts.concat(builtinPrompts);
+  // 移除内置提示词,仅使用用户提示词
+  const allPrompts = userPrompts;
   const [searchInput, setSearchInput] = useState("");
   const [searchPrompts, setSearchPrompts] = useState<Prompt[]>([]);
   const prompts = searchInput.length > 0 ? searchPrompts : allPrompts;
@@ -682,7 +682,8 @@ export function Settings() {
   );
 
   const promptStore = usePromptStore();
-  const builtinCount = SearchService.count.builtin;
+  // 移除内置提示词,设置count为0
+  const builtinCount = 0;
   const customCount = promptStore.getUserPrompts().length ?? 0;
   const [shouldShowPromptModal, setShowPromptModal] = useState(false);
 

+ 19 - 53
app/store/prompt.ts

@@ -14,21 +14,15 @@ export interface Prompt {
 
 export const SearchService = {
   ready: false,
-  builtinEngine: new Fuse<Prompt>([], {keys: [ "title" ]}),
   userEngine: new Fuse<Prompt>([], {keys: [ "title" ]}),
-  count: {
-    builtin: 0,
-  },
   allPrompts: [] as Prompt[],
-  builtinPrompts: [] as Prompt[],
 
   init(builtinPrompts: Prompt[], userPrompts: Prompt[]) {
     if ( this.ready ) {
       return;
     }
-    this.allPrompts = userPrompts.concat(builtinPrompts);
-    this.builtinPrompts = builtinPrompts.slice();
-    this.builtinEngine.setCollection(builtinPrompts);
+    // 移除内置提示词支持,仅使用用户提示词
+    this.allPrompts = userPrompts;
     this.userEngine.setCollection(userPrompts);
     this.ready = true;
   },
@@ -43,8 +37,7 @@ export const SearchService = {
 
   search(text: string) {
     const userResults = this.userEngine.search(text);
-    const builtinResults = this.builtinEngine.search(text);
-    return userResults.concat(builtinResults).map((v) => v.item);
+    return userResults.map((v) => v.item);
   },
 };
 
@@ -71,11 +64,6 @@ export const usePromptStore = createPersistStore(
 
       get(id: string) {
         const targetPrompt = get().prompts[id];
-
-        if ( !targetPrompt ) {
-          return SearchService.builtinPrompts.find((v) => v.id === id);
-        }
-
         return targetPrompt;
       },
 
@@ -124,8 +112,8 @@ export const usePromptStore = createPersistStore(
 
       search(text: string) {
         if ( text.length === 0 ) {
-          // return all rompts
-          return this.getUserPrompts().concat(SearchService.builtinPrompts);
+          // 仅返回用户提示词
+          return this.getUserPrompts();
         }
         return SearchService.search(text) as Prompt[];
       },
@@ -147,42 +135,20 @@ export const usePromptStore = createPersistStore(
       },
 
       onRehydrateStorage(state) {
-        const PROMPT_URL = "./prompts.json";
-
-        type PromptList = Array<[ string, string ]>; // [标题, 内容]的元组数组
-        // tw: Array<[string, string]>; // 已停用繁体中文提示词
-        // en: Array<[string, string]>; // 已停用英文提示词
-
-        fetch(PROMPT_URL)
-            .then((res) => res.json())
-            .then((res) => {
-              let fetchPrompts = [
-                // res.en, res.tw,  // 注释掉英文和繁体中文提示词
-                res.cn ];
-          // if ( getLang() === "cn" ) {
-          //   fetchPrompts = fetchPrompts.reverse();
-          // }
-              const builtinPrompts = fetchPrompts.filter(item => item).map((promptList: PromptList) => {
-                return promptList.map(
-                    ([ title, content ]) =>
-                        ({
-                          id: nanoid(),
-                          title,
-                          content,
-                          createdAt: Date.now(),
-                        }) as Prompt,
-                );
-              });
-
-              const userPrompts = usePromptStore.getState().getUserPrompts() ?? [];
-
-              const allPromptsForSearch = builtinPrompts
-                  .reduce((pre, cur) => pre.concat(cur), [])
-                  .filter((v) => !!v.title && !!v.content);
-              SearchService.count.builtin =
-                  res.cn.length; // 仅计算中文提示词数量
-              SearchService.init(allPromptsForSearch, userPrompts);
-            });
+        // ==============
+        // 移除 prompts.json 自动加载
+        // 说明:不再从前端控制提示词配置,移除内置提示词系统
+        // ==============
+        
+        return (state) => {
+          // 使用回调中的 state 参数获取用户提示词
+          const userPrompts = state ? Object.values(state.prompts ?? {}).sort((a, b) => 
+            b.id && a.id ? b.createdAt - a.createdAt : 0
+          ) : [];
+          
+          // 仅使用用户自定义提示词,不加载内置提示词
+          SearchService.init([], userPrompts);
+        };
       },
     },
 );

+ 0 - 10
public/prompts.json

@@ -1,10 +0,0 @@
-{
-  "cn": [
-    [
-      "文档",
-      "背景资料:\n\n\"\"\n{{ knowledge}}\n\"\"\n\n你是建科工程咨询有限公司的校园招聘小助手“建科小K”,请根据背景资料回答同学们提出的校园招聘问题,要求如下:\n1.从背景资料中,寻找问题对应的答案;\n2.时刻牢记,如果无法从背景资料中找到问题的答案原文,请输出“亲爱的同学,针对这个问题,我的知识库里没有相关的信息。其他相关资讯,可前往企业校招子站、空中宣讲会页面,或关注我司微信公众号,并感谢大家对我们的关注和支持!”;\n3.如果你的回答与背景资料的原文不一致请重新输出,以确保你的答案与背景资料原文一致;\n4.不允许在答案中添加编造成分;\n5.使用“友好、礼貌、条理清晰”的风格;\n6.严格按照格式输出,仅输出问题的答案,不要输出额外内容,同学如果问了多个问题,请清晰地组织你的回答;\n7.不要回答有损本公司,即建科工程咨询有限公司,的问题;\n8.你只能回答与招聘有关联的问题,与招聘完全无关的问题直接回答“亲爱的同学,针对这个问题,我的知识库里没有相关的信息。其他相关资讯,可前往企业校招子站、空中宣讲会页面,或关注我司微信公众号,并感谢大家对我们的关注和支持!”;\n9.如果同学跟你打招呼(例如说你好、hi、hello、你好呀),请你有礼貌地同样打招呼,并且邀请同学继续提问;\n10.直接回答同学即可,无需说出你的思考过程,或者你参考了什么资料;\n11.务必使用分点来让思路更加清晰,例如可以使用“*”“-”或数字符号来进行分点回答;\n12. 你的从资料中总结的回答必须完整,不需要精简、不能遗漏;\n\n内容问题:{{question}}\n答案:"
-    ]
-  ],
-  "tw": [],
-  "en": []
-}