promptbase

GitHub
5.7k 328 简单 2 次阅读 3天前MIT语言模型
AI 解读 由 AI 自动生成,仅供参考

promptbase 是一个专注于提示工程的资源库,汇集了各类最佳实践、示例脚本和资源,旨在帮助用户挖掘 GPT-4 等基础模型的极致性能。它不仅提供了现成的代码示例,还深入探讨了如何通过精心设计的提示策略,让通用模型在特定领域(如医学)达到甚至超越专用微调模型的效果。

promptbase 的核心亮点在于展示了“Medprompt”方法论。这种方法通过组合“动态少样本选择”、“自生成思维链”等技术,成功引导 GPT-4 在医学等专业基准测试中取得了专家级的成绩,并进一步扩展到了非医疗领域。这意味着开发者无需昂贵的模型微调,仅通过优化提示词就能获得高质量的输出。

对于 AI 开发者、提示词工程师以及研究人员来说,promptbase 是一个极具价值的参考宝库。无论你是希望提升模型在复杂任务中的表现,还是想深入了解提示工程背后的科学原理,都能在这里找到实用的指导和灵感。

使用场景

某金融科技公司的 AI 工程师正在开发一套智能法律合同审查系统,需要利用 GPT-4 对复杂的法律条款进行风险识别,但发现模型在处理罕见或复杂的条款时经常出现幻觉或理解偏差,难以满足业务对准确率的严苛要求。

没有 promptbase 时

  • 只能通过简单的 Zero-shot 或手动拼凑固定的 Few-shot 示例,模型难以适应千变万化的合同类型,导致在边缘案例上表现不佳。
  • 为了提升效果,团队曾考虑对模型进行微调,但这需要高昂的数据标注成本和算力资源,且迭代周期过长,无法满足业务快速上线的需求。
  • 面对模型输出的错误逻辑,缺乏有效的引导机制(如思维链)来纠正,导致审查准确率长期卡在瓶颈,无法突破专家级的水平。
  • 提示词工程缺乏系统性方法论,仅凭经验调试,无法复现学术界已验证的高性能策略,开发效率低下。

使用 promptbase 后

  • 直接参考 Medprompt 方法论,利用动态 Few-shot 技术,根据输入合同自动检索语义最相似的高质量案例作为示例,大幅提升了模型对特定上下文的理解力。
  • 无需进行昂贵的模型微调,仅通过组合提示策略(如自生成思维链),就让通用模型 GPT-4 达到了媲美专用法律模型的推理深度。
  • 引入 Choice-shuffle Ensembling(选择洗牌集成)策略,通过多次推理投票显著降低了模型的幻觉概率,使输出结果更加稳定可靠。
  • 获得了经过基准测试验证的最佳实践脚本,从“凭感觉写提示词”转变为“科学构建提示工程”,快速突破了性能瓶颈。

promptbase 提供了一套经过实战验证的高级提示工程方法论与代码实现,让开发者无需昂贵的模型微调,也能榨干大模型的极致推理性能。

运行环境要求

操作系统
  • 未说明
GPU

不需要(主要调用 Azure OpenAI 等 API,无需本地推理)

内存

未说明

依赖
notes1. 必须配置 Azure OpenAI 相关环境变量(API Key、Endpoint URL 等)才能运行。 2. 需手动下载 MMLU、GSM8K、HumanEval 等数据集并放入 src/promptbase/datasets 目录。 3. Medprompt+ 功能依赖 GPT-4 的 logprobs(置信度分数),README 提及当前公共 API 暂未完全开放此功能。 4. 这是一个提示工程测试框架,主要针对 GPT-4 等云端模型,非本地模型运行环境。
python未说明
promptbase hero image

快速开始

promptbase

promptbase 是一个不断发展的资源、最佳实践和示例脚本的集合,旨在从 GPT-4 等基础模型(Foundation Models)中激发最佳性能。我们目前托管了演示 Medprompt 方法 的脚本,包括我们如何将这套提示工程技术("Medprompt+")进一步扩展到非医疗领域的示例:

Benchmark (基准测试) GPT-4 Prompt (提示词) GPT-4 Results (结果) Gemini Ultra Results (结果)
MMLU Medprompt+ 90.10% 90.04%
GSM8K Zero-shot 95.3% 94.4%
MATH Zero-shot 68.4% 53.2%
HumanEval Zero-shot 87.8% 74.4%
BIG-Bench-Hard Few-shot + CoT 89.0% 83.6%
DROP Zero-shot + CoT 83.7% 82.4%
HellaSwag 10-shot 95.3% 87.8%

在不久的将来,promptbase 还将提供更多的案例研究和结构化访谈,围绕我们在提示工程背后所采取的科学流程展开。我们还将提供专门的深度剖析,介绍那些能强化提示工程流程的专业工具。敬请期待!

Medprompt 与提示的力量

"Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine" (H. Nori, Y. T. Lee, S. Zhang, D. Carignan, R. Edgar, N. Fusi, N. King, J. Larson, Y. Li, W. Liu, R. Luo, S. M. McKinney, R. O. Ness, H. Poon, T. Qin, N. Usuyama, C. White, E. Horvitz 2023)

@article{nori2023can, title={Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine}, author={Nori, Harsha and Lee, Yin Tat and Zhang, Sheng and Carignan, Dean and Edgar, Richard and Fusi, Nicolo and King, Nicholas and Larson, Jonathan and Li, Yuanzhi and Liu, Weishung and others}, journal={arXiv preprint arXiv:2311.16452}, year={2023} }

论文链接

在最近的一项研究中,我们展示了如何将几种提示策略组合成一种我们称之为 Medprompt 的方法,从而有效地引导像 GPT-4 这样的通用模型实现顶级性能,甚至可以与专门针对医学领域微调(Finetuned)的模型相媲美。Medprompt 组合了三种不同的策略——包括动态少样本选择(Dynamic Few-shot Selection)、自生成思维链(Self-generated Chain of Thought)和选项洗牌集成(Choice-shuffle Ensembling)——以激发 GPT-4 的专家级表现。我们在此简要描述这些策略:

  • 动态少样本(Dynamic Few Shots):少样本学习(Few-shot learning)——向基础模型提供任务和响应的几个示例——使模型能够快速适应特定领域并学习遵循任务格式。为了简单和高效,用于特定任务提示的少样本示例通常是固定的;它们在不同的测试示例中保持不变。这就要求所选的少样本示例具有广泛的代表性,并与广泛的文本示例分布相关。满足这些要求的一种方法是让领域专家精心手工制作样本。即便如此,这种方法也不能保证策划好的固定少样本示例能恰当地代表每一个测试示例。然而,如果有足够多的可用数据,我们可以为不同的任务输入选择不同的少样本示例。我们将这种方法称为采用动态少样本示例。该方法利用一种机制,根据示例与当前案例的相似性来识别示例。对于 Medprompt,我们通过以下方式识别具有代表性的少样本示例:给定一个测试示例,我们使用嵌入空间(Embedding Space)中的 k近邻聚类(k-NN clustering)选择 k 个语义相似的训练示例。具体来说,我们首先使用 OpenAI 的 text-embedding-ada-002 模型对少样本学习的候选样本进行嵌入。然后,对于每个测试问题 x,我们从训练集中检索其最近的 k 个邻居 x1, x2, ..., xk(根据 text-embedding-ada-002 嵌入空间中的距离)。这些示例——即在嵌入空间中与测试问题最相似的示例——最终被注册到提示词中。

  • 自生成思维链(Self-Generated Chain of Thought, CoT):思维链使用自然语言陈述,例如“让我们一步步思考”,明确鼓励模型生成一系列中间推理步骤。该方法已被发现能显著提高基础模型执行复杂推理的能力。大多数思维链方法的核心是利用专家手动编写带有思维链的少样本示例用于提示。我们不再依赖人类专家,而是寻求一种机制来自动化创建思维链示例。我们发现,可以简单地要求 GPT-4 为训练示例生成思维链,并设置适当的防护措施以减少因错误推理链导致幻觉的风险。

  • 多数投票集成(Majority Vote Ensembling)集成是指将多个算法的输出组合在一起,从而获得比任何单一算法更好的预测性能。像 GPT-4 这样的前沿模型受益于其自身输出的集成。一种简单的技术是使用多种提示词,或者使用具有不同 temperature(温度)参数的单一提示词,然后报告集成成分中最频繁的答案。对于多项选择题,我们采用了一种进一步增加集成多样性的技巧,称为 choice-shuffling(选项洗牌),即在生成每条推理路径之前打乱答案选项的相对顺序。然后我们选择最一致的答案,即对选项洗牌最不敏感的答案,这增加了答案的鲁棒性。

这三种技术的结合使 Medprompt 在医学挑战问题上取得了突破性的性能。这些技术的实现细节可以在这里找到:https://github.com/microsoft/promptbase/tree/main/src/promptbase/mmlu

Medprompt+ | 扩展提示的能力

在这里,我们提供了一些直观的细节,介绍我们如何扩展 medprompt 提示框架,以在 MMLU(Measuring Massive Multitask Language Understanding,大规模多任务语言理解测量)基准测试中激发更强的域外性能。MMLU 的建立是为了测试大语言模型的通用知识和推理能力。完整的 MMLU 基准测试包含数万个不同形式的挑战性问题,涵盖从基础数学到美国历史、法律、计算机科学、工程、医学等 57 个领域。

我们发现,将 Medprompt 不经修改直接应用于整个 MMLU 得分为 89.1%。对于在极其多样化的问题上运作的单一策略来说,这还不错!但我们能否推动 Medprompt 做得更好?简单地扩展 MedPrompt 可以带来进一步的收益。作为第一步,我们将集成调用(ensembled calls)的数量从 5 次增加到 20 次。这将性能提升到了 89.56%。

在致力于进一步优化 Medprompt 的过程中,我们注意到 MMLU 特定主题的表现相对较差。根据学科和具体基准测试的不同,MMLU 包含多种类型的问题。鉴于问题的多样性,我们如何推动 GPT-4 在 MMLU 上表现得更好?

我们专注于扩展到一种组合策略(portfolio approach),基于观察到某些主题领域倾向于提出需要多步推理的问题,可能还需要草稿板(scratch pad)来跟踪解决方案的多个部分。其他领域则寻求直接从问题得出的事实性答案。Medprompt 采用“思维链”(Chain-of-Thought,CoT)推理,与多步求解相呼应。我们想知道,复杂的经典 Medprompt 方法是否在非常简单的问题上表现较差,以及如果对事实性查询使用更简单的方法,系统是否会表现更好。

遵循这一论点,我们发现通过使用简单的双方法提示组合扩展 MedPrompt,可以提高 MMLU 上的性能。我们在经典 Medprompt 的基础上增加了一组 10 个简单、直接的少样本(few-shot)提示,直接征求答案而不使用思维链。然后我们请求 GPT-4 帮助决定每个主题领域和问题的最佳策略。作为筛选步骤,对于每个问题,我们首先询问 GPT-4:

# Question
{{ question }}
 
# Task
Does answering the question above require a scratch-pad?
A. Yes
B. No

如果 GPT-4 认为问题确实需要草稿板,那么集成中思维链组件的贡献权重会加倍。如果不需要,我们将该贡献减半(并让集成更多地依赖于直接的少样本提示)。在集成中动态利用适当的提示技术,使得 MMLU 的性能进一步提升了 +0.5%。

我们注意到 Medprompt+ 依赖于访问 GPT-4 的置信度分数(logprobs,对数概率)。这些目前无法通过当前的 API 公开获取,但将在不久的将来向所有人开放。

运行脚本

注意:此处托管的某些脚本发布仅供参考方法论,但可能无法立即在公共 API 上执行。我们正在努力使流程在未来几天内更易于“开箱即用”,感谢您在此期间的耐心等待!

首先,克隆仓库并安装 promptbase 包:

cd src
pip install -e .

接下来,决定您要运行哪些测试。您可以从以下选项中选择:

  • bigbench
  • drop
  • gsm8k
  • humaneval
  • math
  • mmlu

在运行测试之前,您需要从原始来源下载数据集(见下文),并将它们放置在 src/promptbase/datasets 目录中。

下载数据集并安装 promptbase 包后,您可以使用以下命令运行测试:

python -m promptbase dataset_name

例如:

python -m promptbase gsm8k

数据集链接

要运行评估,请下载这些数据集并将其添加到 /src/promptbase/datasets/

其他资源:

Medprompt 博客:https://www.microsoft.com/en-us/research/blog/the-power-of-prompting/

Medprompt 研究论文:https://arxiv.org/abs/2311.16452

Medprompt+:https://www.microsoft.com/en-us/research/blog/steering-at-the-frontier-extending-the-power-of-prompting/

Microsoft 提示工程简介:https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering

Microsoft 高级提示工程指南:https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架