别再手动试 prompt 了:gpt-prompt-engineer 让 10 个候选提示自己打擂选出最优
【免费下载链接】gpt-prompt-engineergpt-prompt-engineer - 一个工具,用于自动化生成、测试和排名多种提示,以找到最适合特定任务的提示。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt-prompt-engineer
改了十几版 prompt,输出还是不对,越删改越乱。gpt-prompt-engineer 把调提示这件事流水线化了:你给任务描述和测试用例,它自动生成 10 个候选提示,两两对比打分,最后输出一张按 ELO 分排序的表,哪条 prompt 好用一目了然。
它凭什么靠谱:把每条 prompt 放上 ELO 擂台
候选提示从哪来
想象一个文案团队开会,每人抛一个思路,再集体投票。generate_candidate_prompts干的就是这件事:让 GPT-4(或 GPT-3.5-Turbo)在 0.9 的高温下一次生成 n 条风格各异的 system prompt,天然覆盖不同写法。生成规则里还有一条防作弊条款——候选提示不许夹带测试用例的细节,带具体示例的直接作废,比的是通用性而不是记忆。
ELO 评分机制怎么运作
ELO 就是国际象棋那套棋手积分:分高的赢分低的,加分少;分低的爆冷,加得多。每个候选提示初始 1200 分,然后在所有测试用例上两两对决:两个提示各自跑同一个输入,由一个专门的评判模型判断哪份输出更好。同一场比赛会正反各判一次再取平均,抵消"排在前面的更容易赢"的位置偏好,核心计算在gpt_prompt_engineer.ipynb的update_elo()函数里:先按实力差距算出期望胜率,再用系数 K(默认 32)乘以实际偏差调整双方积分。所有对局打完,最终分数就是每条提示的真实水平。
实际操作:从打开 notebook 到拿到评分表
打开 notebook 并配置 API key
克隆仓库后打开gpt_prompt_engineer.ipynb,或者直接在 Google Colab 里打开。前几个单元填 key、调参数即可:
openai.api_key = "ADD YOUR KEY HERE" CANDIDATE_MODEL = 'gpt-4' # 没有 GPT-4 权限就改成 'gpt-3.5-turbo' NUMBER_OF_PROMPTS = 10 # 建议从 10 起步,越多效果越好、账单越厚generate_optimal_prompt一次跑下来会经历"生成候选 → 逐对测试 → 更新积分"三个阶段,测试用例最多填 15 条。
如何配置任务描述与测试用例
最后一个单元只填两样东西:一句任务描述和一组测试输入。README 里建议的描述风格是这样的:
description = "Given a prompt, generate a landing page headline." test_cases = [ {'prompt': 'Promoting an innovative new fitness app, Smartly'}, {'prompt': 'Why a vegan diet is beneficial for your health'} ]这里只放"输入",不放期望答案——自由生成类任务没有标准答案,好不好由后面的评判模型说了算。
跑起来,看结果长什么样
一行调用进入全自动流程:
generate_optimal_prompt(description, test_cases, NUMBER_OF_PROMPTS, use_wandb)运行时会滚动打印每局的胜者,最后用 PrettyTable 输出按 Rating 降序的评分表,格式大致如下(数字为示意):
| Prompt | Rating |
|---|---|
| Write a short, benefit-driven headline under 8 words... | 1312 |
| Act as a seasoned copywriter, make the user feel something... | 1188 |
| ... | ... |
拿第一名直接进生产,比盯着屏幕手动试强太多。
场景与进阶
营销文案:产品或运营同学写 landing page 标题、社媒文案,手工改 prompt 一天试不出风格。跑一轮,十条不同写法的候选自动排好序,把第一名贴进生产流程就行。
文本分类:情感分析、垃圾邮件检测这类有标准答案的场景,换用gpt_prompt_engineer_Classification_Version.ipynb。测试用例带上output字段('true' 或 'false'),评分改为精确匹配,输出的是每条提示的得分表。
多变量输入:按发件人、收件人个性化回邮件时,用claude_prompt_engineer.ipynb。声明input_variables后,测试用例由模型根据描述自动生成,不用自己凑数据。
仓库里四个 notebook 各管一摊:
gpt_prompt_engineer.ipynb:通用版,GPT-4 / GPT-3.5-Turbogpt_prompt_engineer_Classification_Version.ipynb:二分类任务,按 true/false 精确匹配计分claude_prompt_engineer.ipynb:Claude 3 Opus,自动生成测试用例、支持多输入变量opus_to_haiku_conversion.ipynb:先让 Opus 产出一批高质量示例,再交给 Haiku 照着答,质量基本不降,成本和延迟大幅降低
进阶玩法一句话:把use_wandb设为 True,配置、测试用例和最终评分表都会记到 Weights & Biases,方便复现和对比多次实验。
- 仓库:
git clone https://gitcode.com/GitHub_Trending/gp/gpt-prompt-engineer - 入口:
gpt_prompt_engineer.ipynb(分类、Claude 3、Opus→Haiku 各有独立 notebook) - 许可证:MIT
配好 key 跑通第一个单元,你的第一张 ELO 评分表就出来了。
【免费下载链接】gpt-prompt-engineergpt-prompt-engineer - 一个工具,用于自动化生成、测试和排名多种提示,以找到最适合特定任务的提示。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt-prompt-engineer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考