ChatGPT-Next-Web提示词抓取:外部资源集成

在智能对话系统开发中,高质量的提示词(Prompt)资源是提升交互体验的关键。ChatGPT-Next-Web通过自动化脚本实现多语言提示词库的集成,为开发者提供了开箱即用的对话模板。本文将深入解析项目的提示词抓取机制,展示如何通过外部资源增强AI对话能力。

核心抓取脚本架构

提示词抓取功能的核心实现位于scripts/fetch-prompts.mjs文件,该脚本采用模块化设计,通过并行请求实现多语言资源的同步。脚本主要包含三大功能模块:资源拉取(fetchCN/fetchTW/fetchEN)、数据清洗过滤、本地存储整合。

// 多语言资源并行拉取实现
async function main() {
  Promise.all([fetchCN(), fetchTW(), fetchEN()])
    .then(([cn, tw, en]) => {
      fs.writeFile(FILE, JSON.stringify({ cn, tw, en }));
    })
    .catch((e) => {
      console.error("[Fetch] failed to fetch prompts");
      fs.writeFile(FILE, JSON.stringify({ cn: [], tw: [], en: [] }));
    })
}

镜像站点策略

为确保国内网络环境下的资源可用性,脚本采用双URL设计,通过MIRRORF_FILE_URL变量配置镜像站点,自动切换访问源:

const RAW_FILE_URL = "https://raw.githubusercontent.com/";
const MIRRORF_FILE_URL = "http://raw.fgit.ml/";  // 国内镜像站点

多语言资源处理流程

1. 中文提示词抓取

fetchCN函数负责从指定JSON数据源拉取中文提示词,包含严格的数据过滤机制:

// 中文资源过滤逻辑
.filter(
  (v) =>
    v[0] &&
    v[1] &&
    ignoreWords.every((w) => !v[0].includes(w) && !v[1].includes(w)),
);

系统通过ignoreWords数组实现内容安全过滤,默认拦截包含"涩涩"、"魅魔"等敏感词的条目,确保资源合规性。

2. 英文资源处理

英文提示词存储为CSV格式,fetchEN函数实现了从文本解析到结构化数据的转换:

// CSV文本解析逻辑
return raw
  .split("\n")
  .slice(1)
  .map((v) =>
    v
      .split('","')
      .map((v) => v.replace(/^"|"$/g, "").replaceAll('""', '"'))
  );

3. 存储整合

所有语言的提示词最终合并为统一JSON结构,存储于public/prompts.json文件,形成项目的本地提示词数据库。

前端集成与应用

提示词管理界面

项目在前端实现了可视化的提示词管理功能,相关UI组件位于app/components/prompt.tsx,用户可通过聊天界面快速调用预设提示词模板。

多语言支持架构

提示词系统与项目的国际化框架深度整合,语言配置文件位于app/locales/目录,支持包括中文(cn.ts)、英文(en.ts)、日文(jp.ts)等在内的多种语言环境。

扩展与定制

自定义抓取源

开发者可通过修改scripts/fetch-prompts.mjs中的URL常量,接入自定义提示词数据源:

// 修改为自定义数据源
const RAW_CN_URL = "your-custom-repo/prompts-zh.json";

定时更新机制

建议通过CI/CD流程配置定时执行抓取脚本,确保提示词库自动更新。可在package.json中添加自定义命令:

"scripts": {
  "fetch-prompts": "node scripts/fetch-prompts.mjs"
}

错误处理与稳定性保障

请求超时控制

脚本通过timeoutPromise函数实现5秒超时控制,避免网络异常导致的长时间阻塞:

const response = await Promise.race([fetch(CN_URL), timeoutPromise(5000)]);

降级策略

当所有数据源均不可用时,系统会写入空数组到本地文件,确保前端应用的稳定性:

.catch((e) => {
  console.error("[Fetch] failed to fetch prompts");
  fs.writeFile(FILE, JSON.stringify({ cn: [], tw: [], en: [] }));
});

总结

ChatGPT-Next-Web的提示词抓取系统通过模块化设计、多源备份、严格过滤等机制,构建了稳定可靠的外部资源集成方案。开发者可基于此框架扩展更多数据源,或通过前端组件自定义提示词的展示与应用逻辑,进一步增强AI对话系统的能力边界。

项目的这一设计不仅提升了开发效率,也为普通用户提供了丰富的对话模板选择,体现了开源项目"开箱即用"与"灵活定制"的双重优势。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐