ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

bilingual_book_maker 提示词定制指南:从 PromptDown 到 --prompt 的完整实战解析

bilingual_book_maker 提示词定制指南:从 PromptDown 到 --prompt 的完整实战解析 AI 应用NLPCLI【免费下载链接】bilingual_book_makerMake bilingual epub books Using AI translate项目地址https://gitcode.com/gh_mirrors/bi/bilingual_book_maker点击查看免费下载本篇技术指南围绕本仓库根目录下的 prompt_md.prompt.md 展开系统讲解 bilingual_book_makerMake bilingual epub books Using AI translate中翻译提示词的定制机制包括 PromptDown 结构化提示词文件的编写格式、--prompt命令行参数的四种配置方式、{text}与{language}占位符的替换原理以及提示词从 CLI 解析到翻译器调用的完整源码链路。读完本文你将能够为任意书籍翻译任务编写高质量、可复现的提示词文件并通过源码证据理解其底层运作方式。一、关联文档速览一个 PromptDown 格式的翻译提示词prompt_md.prompt.md 是本项目提供的一个结构化提示词示例文件采用 PromptDown.md格式书写内容非常精炼核心由两部分构成# Translation Prompt ## Developer Message You are a professional translator who specializes in accurate, natural-sounding translations that preserve the original meaning, tone, and style of the text. ## Conversation | Role | Content | |-------|---------------------------------------------------------------------------| | User | Please translate the following text into {language}:\n\n{text} |## Developer Message面向新一代 AI 模型的开发者消息Developer Message角色相当于系统级指令声明你是一名专业译者擅长准确、自然的翻译并保留原文的意义、语气与风格。## Conversation用 Markdown 表格定义一轮对话其中User角色的内容为Please translate the following text into {language}:\n\n{text}其中{language}与{text}是运行时替换的占位符详见下文第四节。与之对应的 JSON 版本 prompt_md.json 则提供了同一套翻译策略的完整形态它包含system角色You are a highly skilled translator responsible for translating the content of books in Markdown format from English into Chinese.与user角色一套三步翻译流程① 忠实直译并保持 Markdown 结构② 对照原文反思从准确性、流畅性、简洁性三个维度提出改进建议③ 基于反思精修译文并以step1_initial_translation、step2_reflection、step3_refined_translation三个 XML 标签分别输出。这两份文件共同展示了本项目提示词配置的两种典型载体PromptDown Markdown 文件与** JSON 键值对**。二、--prompt参数四种提示词配置方式在docs/prompt.md中官方明确说明要定制提示词使用--prompt参数其中user角色模板合法的占位符为{text}和{language}。该参数在 book_maker/cli.py 中定义metavar为PROMPT_ARG官方帮助文本指出它可以是提示词模板字符串也可以是模板文件的路径。合法占位符是{text}和{language}。方式一内联模板字符串仅 user 角色不需要设置system角色时直接传入一段含占位符的文本--prompt Translate {text} to {language}.更丰富的模板示例对应 prompt_template_sample.json 的 user 字段思路Translate the given text to {language}. Be faithful or accurate in translation. Make the translation readable or intelligible. Be elegant or natural in translation. If the text cannot be translated, return the original text as is. Do not translate persons name. Do not add any additional text in the translation. The text to be translated is: {text}方式二TXT 模板文件仅 user 角色将上述文本保存为prompt_template_sample.txt然后传入文件路径即可效果与内联字符串完全一致--prompt prompt_template_sample.txt从源码看parse_prompt_arg对.txt后缀的处理是读文件全文并包装为{user: 文件内容}即 TXT 文件本质就是 user 角色模板的载体。方式三JSON 字符串 / JSON 文件user system 双角色需要同时设置system与user角色时使用 JSON 格式。既可以直接传 JSON 字符串--prompt {user:Translate {text} to {language}, system: You are a professional translator.}也可以传 JSON 文件路径例如 prompt_template_sample.json--prompt prompt_template_sample.json对应的 JSON 文件内容格式为{ system: You are a professional translator., user: Translate the given text to {language}. Be faithful or accurate in translation. Make the translation readable or intelligible. Be elegant or natural in translation. If the text cannot be translated, return the original text as is. Do not translate persons name. Do not add any additional text in the translation. The text to be translated is:\n{text} }方式四PromptDown Markdown 文件推荐的结构化方式本项目引入 PromptDown 格式.md文件以支持更结构化的提示词即本文主角 prompt_md.prompt.md--prompt prompt_md.prompt.mdPromptDown 文件支持两种角色声明方式官方文档 docs/prompt.md 中同时给出了示例## System Message面向传统模型You are a professional translator who specializes in accurate translations.## Developer Message面向新一代 AI 模型You are a professional translator who specializes in accurate translations.再配合## Conversation表格中定义User角色的消息内容即构成完整的结构化提示词。prompt_md.prompt.md正是采用了Developer Message这种较新的写法。三、PromptDown 解析原理源码级拆解--prompt之所以能同时接受字符串、TXT、JSON、Markdown 四种形态全部归功于 book_maker/cli.py 中的parse_prompt_arg函数。其解析优先级与判定逻辑如下PromptDown 优先若参数以.md结尾且文件存在则调用第三方库promptdown的StructuredPrompt.from_promptdown_file()解析文件角色提取顺序developer_message优先于system_message两者都出现时开发者消息优先被映射为内部 prompt 的system键随后遍历conversation中的消息取第一个role为user的消息内容作为user键校验PromptDown 文件必须至少包含一条 user 消息且 user 内容必须包含{text}占位符否则抛出ValueError非 Markdown 分支若参数不以.json/.txt/.md结尾先尝试按 JSON 字符串解析json.loads失败则降级为纯模板字符串{user: prompt_arg}若以.txt结尾则读文件全文作为 user 模板若以.json结尾则直接json.load最终校验无论何种方式得到的 prompt 字典必须包含user键且含{text}占位符且只允许user与system两个键prompt.keys() - {user, system}必须为空否则报错。promptdown依赖声明于 pyproject.tomlpromptdown0.9.0并注册了promptdown promptdown_cli:main控制台入口说明该项目将 PromptDown 作为一等公民依赖。四、占位符机制{text} 与 {language} 如何被替换提示词模板中仅有两个合法占位符它们在翻译时被实际内容替换{text}待翻译的文本内容。它是必选占位符——parse_prompt_arg在三种分支中都会校验其存在ValueError: prompt must contain \{text}缺失时直接拒绝启动。{language}目标语言。它由 CLI 的--language参数决定默认值为zh-hans简体中文。目标语言值在 book_maker/cli.py 中做了归一化处理当options.language命中 book_maker/utils.py 中LANGUAGES字典的键时会替换为对应的人类可读语言名例如zh-hans→simplified chinese再传入翻译器从而保证提示词中{language}替换后是模型易理解的自然语言。五、环境变量方式免参数定制提示词除了--prompt命令行参数还可以通过环境变量设置user与system角色的提示词内容docs/prompt.md中明确说明BBM_CHATGPTAPI_USER_MSG_TEMPLATE对应user角色模板BBM_CHATGPTAPI_SYS_MSG对应system角色消息。在 book_maker/translator/chatgptapi_translator.py 中PROMPT_ENV_MAP明确定义了这两个环境变量的映射关系初始化时该文件__init__中提示词的优先级为--prompt传入的模板 环境变量 内置默认提示词DEFAULT_PROMPT即Please help me to translate,\{text} to {language}, please return only translated content not include the origin text。此外还保留了历史遗留变量OPENAI_API_SYS_MSG作为system 角色的向后兼容来源。六、提示词在翻译链路中的完整流转自定义提示词从命令行到真正发起 API 请求经过如下源码链路CLI 解析--prompt参数经parse_prompt_arg()转换为{user: ..., system: ...}字典book_maker/cli.py 处作为prompt_config传入 loader键值映射book_maker/utils.py 中的prompt_config_to_kwargs()将字典拆解为prompt_template来自user键与prompt_sys_msg来自system键两个参数翻译器接收ChatGPTAPI类构造函数接收prompt_template与prompt_sys_msgbook_maker/translator/chatgptapi_translator.py按显式参数 环境变量 默认值的优先级赋值给self.prompt_template与self.prompt_sys_msg占位符替换与请求实际翻译时self.prompt_template.format(...)将{text}、{language}替换为真实内容system角色消息同样参与构建对话请求批量翻译场景在 book_maker/translator/base_translator.py 的_build_batch_prompt()中自定义模板会被拼接上批量指令要求模型用分隔符输出 N 段译文system消息也会被追加批量上下文说明——这说明自定义提示词在单条与批量两种路径下都会被正确透传与增强。七、实战示例完整命令演示以下命令均可在仓库根目录直接运行需先按 docs/installation.md 安装依赖并配置相应 API Key例如OPENAI_API_KEY或BBM_OPENAI_API_KEY# 方式一内联字符串模板 python3 make_book.py --book_name test_books/animal_farm.epub --prompt Please translate \{text}\ to {language} # 方式二TXT 模板文件user 角色 python3 make_book.py --book_name test_books/animal_farm.epub --prompt prompt_template_sample.txt # 方式三JSON 模板文件user system 角色 python3 make_book.py --book_name test_books/animal_farm.epub --prompt prompt_template_sample.json # 方式四PromptDown Markdown 结构化提示词 python3 make_book.py --book_name test_books/animal_farm.epub --prompt prompt_md.prompt.md # 或配合 --model 指定其他 LLM 后端如 claude、gemini、groq 等 python3 make_book.py --book_name test_books/animal_farm.epub --model chatgptapi --prompt prompt_md.prompt.md如需快速验证提示词效果而不消耗大量 token可追加--test仅翻译前 10 段段落数可用--test_num调整。提示词加载成功后CLI 会打印prompt config: {...}与Successfully loaded PromptDown file: ...等日志便于确认自定义模板已生效。八、最佳实践与注意事项{text}是硬性要求任何提示词形式都必须包含{text}占位符否则程序直接报错退出{language}强烈建议包含否则模型无法获知目标语言。结构化优于内联翻译书籍是长文本、多轮任务建议像 prompt_md.prompt.md 与 prompt_md.json 那样把翻译策略 反思 精修写进提示词配合 XML 标签或 JSON 结构化输出可显著提升长篇译文的一致性与质量。格式保持是硬约束参考 prompt_md.json 中的 user 模板务必在提示词中声明不改动 Markdown 标记结构、不增删链接、不改 URL、不动代码块内容、保留原始换行、不触碰标题末尾 permalink 与 HTML 标签——这直接决定双语 EPUB 输出的版式完整性。键名白名单JSON 形式的提示词只允许user与system两个键多余键会触发ValueError。优先级记忆命令行--prompt的优先级高于环境变量环境变量高于内置默认提示词未做任何定制时项目会使用DEFAULT_PROMPT兜底。批量模式的适配使用--batch_size批量翻译时自定义 user 模板会被自动拼接批量指令system 消息会被附加分段说明属预期行为无需手工适配。通过本文你已经掌握了 bilingual_book_maker 提示词定制的全部四种形态、PromptDown 文件的解析源码逻辑、占位符与环境变量机制以及提示词在翻译链路中的完整流转路径可以据此为不同书籍、不同语言对编写高质量的定制化翻译提示词。赞分享AI 应用NLPCLI【免费下载链接】bilingual_book_makerMake bilingual epub books Using AI translate项目地址https://gitcode.com/gh_mirrors/bi/bilingual_book_maker点击查看免费下载相关推荐CANN/asc-devkitint32转int16向量转换函数asc_int322int16 产品支持情况 | 产品 | 是否支持 | | | : : | | Ascend 950PR/Ascend 950DT | √ |AI 应用NLPCLIRagas Prompt 对象完全指南从 PydanticPrompt 到自定义评估提示词Ragas Prompt 对象完全指南从 PydanticPrompt 到自定义评估提示词 Ragas 中的所有 LLM 指标如 Faithfulness、人工智能大模型模型评测RAGGenkit Go 提示词Prompts完整指南DefinePrompt、DefineDataPrompt 与 .prompt 文件实战Genkit Go 提示词Prompts完整指南DefinePrompt、DefineDataPrompt 与 .prompt 文件实战 导读 本文是 GAI 技能人工智能大模型上一篇chilloutmix_NiPrunedFp32Fix 模型格式转换实战PyTorch、ONNX、Safetensors 3 种路径一次讲清附避坑清单下一篇免费跨平台节点图工具 Project Graph 完全指南拓扑图绘制从入门到精通创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表