AutoPrompt

GitHub
3k 264 简单 1 次阅读 今天Apache-2.0数据工具
AI 解读 由 AI 自动生成,仅供参考

AutoPrompt 是一款专为优化大语言模型提示词(Prompt)而设计的开源框架,旨在帮助用户轻松生成高质量、鲁棒性强的提示词。在实际应用中,提示词的微小变动往往会导致模型表现大幅波动,且构建可靠的测试基准耗时费力。AutoPrompt 通过“基于意图的提示校准”技术,自动迭代生成具有挑战性的边缘案例数据集,并据此不断修正提示词,有效解决了提示词敏感性和歧义性难题,显著降低了人工调试成本。

该工具特别适合开发者、AI 研究人员以及需要部署生产级应用的企业团队使用。无论是文本分类、内容生成还是对话审核任务,AutoPrompt 都能凭借模块化设计无缝集成到 LangChain 等主流工作流中。其核心亮点在于结合了合成数据生成与提示词优化,仅需少量数据和标注步骤即可实现性能提升。在成本控制方面,AutoPrompt 允许用户设定预算上限,通常使用 GPT-4 Turbo 仅需几分钟和不到 1 美元即可完成一次高效优化,让提示词工程变得更加经济、透明且易于落地。

使用场景

某电商平台的客服团队正利用大语言模型自动处理海量的用户投诉工单,需要确保模型能精准识别恶意攻击、虚假索赔等复杂意图并进行合规回复。

没有 AutoPrompt 时

  • 提示词极度敏感:工程师手动编写的提示词稍作修改(如调整语气或增加示例),模型对“恶意投诉”的识别准确率就会大幅波动,难以稳定上线。
  • 边界案例覆盖不足:人工构造测试集耗时费力,往往遗漏罕见的边缘情况(如隐晦的威胁言论),导致模型在生产环境中频繁误判。
  • 优化迭代成本高昂:为了提升效果,团队需反复进行多轮人工标注和提示词微调,整个流程耗时数周且依赖资深专家的经验。
  • 缺乏量化评估标准:无法系统性地衡量提示词在不同数据分布下的鲁棒性,只能凭感觉判断优化是否生效。

使用 AutoPrompt 后

  • 自动校准抗干扰:AutoPrompt 通过基于意图的校准机制,自动生成并学习各类困难样本,使提示词对细微变化不再敏感,保持性能稳定。
  • 智能合成边缘数据:框架自动迭代生成多样化的挑战性边界案例(如变种的欺诈话术),无需人工穷举即可覆盖潜在风险点。
  • 分钟级低成本优化:仅需少量初始示例,AutoPrompt 能在几分钟内(成本低于 1 美元)自动完成多轮“生成 - 评估 - 优化”闭环,产出高质量提示词。
  • 可量化的性能提升:内置评估流水线提供明确的准确率指标,让团队清晰看到提示词在特定任务上的鲁棒性增强效果。

AutoPrompt 将原本依赖专家经验且耗时数周的提示词工程,转变为低成本、自动化且数据驱动的标准流程,显著提升了大模型在复杂业务场景中的落地可靠性。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具主要基于云端 LLM(如 OpenAI GPT-4)运行,本地无需高性能 GPU。核心依赖为配置 OpenAI API Key。若使用人工标注功能,需部署 Argilla V1 版本(注意不兼容 V2),可通过 Docker (v1.29.0) 或 Hugging Face Space 部署。支持通过配置文件设置预算上限(美元或 Token 数量)以控制成本。
python<=3.10
OpenAI API (推荐 GPT-4)
Argilla (V1 版本,用于人工标注)
LangChain
Wandb
Conda/Pip/Pipenv
AutoPrompt hero image

快速开始

License

📝 AutoPrompt

Auto Prompt 是一个提示优化框架,旨在为实际应用场景增强和优化您的提示。

该框架会自动根据用户意图生成高质量、详细的提示。它采用一种精炼(校准)过程,通过迭代构建包含挑战性边缘案例的数据集,并相应地优化提示。这种方法不仅减少了提示工程中的手动工作量,还有效解决了常见的提示敏感性以及提示本身的歧义性问题。

我们的使命: 利用大型语言模型(LLM)的力量,帮助用户生成高质量且稳健的提示。

为什么选择 Auto Prompt?

  • 提示工程的挑战。 LLM 的性能高度依赖于所使用的提示。即使是细微的变化,也可能显著影响其表现。
  • 基准测试的挑战。 为生产级提示创建基准通常既费力又耗时。
  • 可靠的提示。 Auto Prompt 能够生成稳健且高质量的提示,在使用最少数据和标注步骤的情况下,提供可衡量的准确性和性能提升。
  • 模块化与适应性。 Auto Prompt 以模块化为核心设计,可无缝集成到 LangChain、Wandb 和 Argilla 等流行的开源工具中,并适用于多种任务,包括数据合成和提示迁移。

系统概述

系统概述

该系统专为现实场景设计,例如经常面临数据分布不均衡问题的审核任务。系统实现了基于意图的提示校准方法(Intent-based Prompt Calibration)。流程从用户提供的初始提示和任务描述开始,还可选择性地加入用户示例。精炼过程会迭代生成多样化的样本,通过用户或 LLM 进行标注,并评估提示性能,随后由 LLM 提出改进后的提示。

对于内容生成任务,优化过程可以先设计一个排序器提示,再利用该学习到的排序器进行提示优化。优化将在达到预算或迭代次数上限时结束。

这种结合合成数据生成与提示优化的方法,相较于传统方法表现更优,同时所需的数据量和迭代次数极少。更多信息请参阅我们的论文 基于意图的提示校准:利用合成边界案例提升提示优化效果,作者为 E. Levi 等人(2024 年)。

使用 GPT-4 Turbo 时,此优化通常只需几分钟,成本不到 1 美元。 为了控制 GPT-4 LLM 的 token 使用成本,该框架允许用户设置优化的预算限制,单位为美元或 token 数量,具体配置方式请参见 这里

演示

pipeline_recording

📖 文档

特性

  • 📝 仅需少量数据和标注步骤即可大幅提升提示质量。
  • 🛬 专为审核、多标签分类和内容生成等生产级场景设计。
  • ⚙️ 支持在不同模型版本或 LLM 提供商之间无缝迁移提示。
  • 🎓 支持提示压缩。可将多个规则合并为一条高效提示。

快速入门

AutoPrompt 需要 python <= 3.10

步骤 1 - 克隆项目

git clone git@github.com:Eladlev/AutoPrompt.git
cd AutoPrompt

步骤 2 - 安装依赖

您可以根据个人偏好选择 Conda 或 pip。使用 Conda:

conda env create -f environment_dev.yml
conda activate AutoPrompt

使用 pip:

pip install -r requirements.txt

使用 pipenv:

pip install pipenv
pipenv sync

步骤 3 - 配置您的 LLM。

通过更新配置文件 config/llm_env.yml 来设置您的 OpenAI API 密钥。

  • 如果您需要帮助查找 API 密钥,请访问此 链接

  • 我们建议使用 OpenAI 的 GPT-4 作为 LLM。我们的框架也支持其他提供商和开源模型,详情请参阅 这里


步骤 4 - 配置您的标注器

  • 为您的项目选择一种标注方式:

    • 我们建议从人机协作的方式开始,使用 Argilla。请注意,AutoPrompt 仅兼容 Argilla V1,不支持最新的 V2 版本。请按照 Argilla 设置说明 进行操作,并做如下修改:
      • 如果您使用本地 Docker,请使用 v1.29.0 而不是 latest 标签。
      • 对于使用 HF 的快速部署,可以复制以下 空间
    • 或者,您也可以按照这些 配置步骤 设置一个 LLM 作为您的标注器。
  • 默认的预测 LLM,即用于评估提示性能的 GPT-3.5,已在 config/config_default.yml 文件的 predictor 部分进行配置。

  • 在输入配置 YAML 文件中,使用 max_usage 参数 定义您的预算。对于 OpenAI 模型,max_usage 设置以美元计的最大支出;对于其他 LLM,则限制最大 token 数量。


步骤 5 - 运行流水线

首先,通过编辑 config/config_default.yml 配置您的标签:

dataset:
    label_schema: ["Yes", "No"]

对于 分类流水线,请在相应的工作目录下使用终端运行以下命令:

python run_pipeline.py

如果初始提示和任务描述未直接作为输入提供,系统将引导您输入这些信息。您也可以将其作为命令行参数指定:

python run_pipeline.py \
    --prompt "这部电影影评是否包含剧透?回答是或否" \
    --task_description "助手是一位专家级分类器,将对电影影评进行分类,告知用户其是否包含所评论电影的剧透内容。" \
    --num_steps 30

您可以通过 W&B 仪表板跟踪优化进度,设置说明请参阅 这里

如果您使用 pipenv,请确保激活环境:

pipenv shell
python run_pipeline.py  

或者在命令前加上 pipenv run

pipenv run python run_pipeline.py 

生成流水线

要运行生成流水线,可以使用以下示例命令:

python run_generation_pipeline.py \
    --prompt "写一篇关于特定电影的好且全面的影评。" \
    --task_description "助手是一个大型语言模型,负责撰写电影影评。"

更多信息请参阅我们的 生成任务示例


基准优化(仅优化模式)

如果您已经拥有标注数据集,并希望跳过样本生成和标注步骤,可以使用基准优化脚本。此模式仅执行纯优化循环:预测 → 评估 → 优化

您的数据集应为包含 textannotation 列的 CSV 文件:

text,annotation
"这部电影真是太棒了!",是
"浪费时间和金钱。",否

运行优化:

python run_benchmark_optimization.py \
    --dataset path/to/your_data.csv \
    --prompt "这篇电影影评是正面的吗?回答是或否。" \
    --task_description "将电影影评分类为正面或负面。" \
    --labels 是 否 \
    --num_steps 10 \
    --output results.json

参数说明:

  • --dataset(必填):包含 textannotation 列的 CSV 文件路径
  • --prompt:待优化的初始提示(若省略则交互式输入)
  • --task_description:任务描述(若省略则交互式输入)
  • --labels:标签体系(默认:是 否)
  • --num_steps:优化迭代次数(默认:10 次)
  • --output:结果输出 JSON 文件(默认:benchmark_results.json)
  • --config:配置文件(默认:config/config_benchmark.yml)

此功能适用于以下场景:

  • 您已拥有带标签的基准数据
  • 您希望跳过样本生成,加快迭代速度
  • 您正在为特定数据集微调提示

尽情享受成果吧!完成以上步骤后,您将获得一个针对您任务量身定制的 优化(校准)后的提示,以及一个包含挑战性样本的 基准测试集,它们都将存储在默认的 dump 路径中。

小贴士

  • 在优化过程中,提示的准确性可能会有所波动。为了找到最佳提示,我们建议在首次生成基准测试集之后继续进行持续优化。您可以使用 --num_steps 设置优化迭代次数,并通过在 dataset 部分指定 max_samples 来控制样本生成数量。例如,设置 max_samples: 50--num_steps 30 可将基准测试集限制为 50 个样本,从而允许在每次迭代生成 10 个样本的情况下进行 25 次额外的优化迭代。

  • 该框架支持检查点功能,方便您从上次保存的状态继续优化。它会自动将最近的优化状态保存到 dump 路径中。您可以使用 --output_dump 设置此路径,并用 --load_path 从检查点恢复。

  • 每次迭代都会涉及多次调用 LLM 服务,尤其是生成式任务中,通常会发送较长的提示并请求 LLM 生成较多的 token,这可能需要约 1 分钟的时间,请耐心等待。

  • 如果 Argilla 服务器连接出现问题或报错,请尝试重启该空间。

提示敏感性示例

你编写了一个用于识别电影剧透的提示:

请审阅提供的内容,并指出其中是否包含任何重要的情节揭示或关键点,这些内容可能会泄露故事的重要元素或结局。如果包含此类剧透或关键见解,请回答“是”;如果不涉及揭露关键故事元素,请回答“否”。

此提示在使用 GPT-4 大型语言模型时,在你的基准测试中得分为 81 分。随后,你对提示进行了微小修改:

请审阅文本,判断其是否提供了构成剧透的故事本质性揭示或关键细节。如有剧透,请回答“是”;若无,则回答“否”。

令人惊讶的是,第二个提示的得分降至 72 分,准确率下降了 11%。这说明提示工程需要谨慎细致的过程。

🚀 贡献

我们非常感谢您的贡献!如果您有意参与贡献,请参阅我们的贡献指南,以获取详细信息。

如果您希望加入我们的旅程,欢迎通过我们的Discord 社区与我们联系。我们非常期待您的加入!

🛡 免责声明

AutoPrompt 项目按“现状”提供,不提供任何形式的明示或暗示担保或保证。

我们对提示优化及使用的看法如下:

  1. AutoPrompt 的核心目标是优化和完善提示,以获得高质量的结果。这一目标通过迭代校准过程实现,有助于减少错误并提升大语言模型的性能。然而,该框架并不能保证在每种情况下都能得出绝对正确或无偏见的结果。

  2. AutoPrompt 旨在提高提示的可靠性并缓解敏感性问题,但并不声称能够完全消除这些问题。

请注意,使用由 AutoPrompt 支持的 OpenAI GPT-4 等大语言模型可能会因令牌使用而产生高昂费用。使用 AutoPrompt 即表示您承认自己有责任监控和管理令牌使用情况及相关支出。我们建议您定期查看大语言模型提供商的 API 使用情况,并设置使用限制或预警,以避免意外收费。 为管理 GPT-4 大语言模型的令牌使用成本,该框架允许用户以美元或令牌数量的形式设定优化预算上限,配置方法请参见此处

引用

如果您在研究中使用了我们的代码,请引用我们的论文:

@misc{2402.03099,
作者 = {Elad Levi、Eli Brosh 和 Matan Friedmann},
标题 = {基于意图的提示校准:利用合成边界案例增强提示优化},
年份 = {2024},
预印本 = {arXiv:2402.03099},
}

许可证

本框架采用Apache 许可证 2.0 版授权。

✉️ 支持 / 联系我们

版本历史

0.22024/03/06
v0.12024/02/06

常见问题

相似工具推荐

ML-For-Beginners

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

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

scikit-learn

scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最

65.6k|★☆☆☆☆|昨天
开发框架其他数据工具

keras

Keras 是一个专为人类设计的深度学习框架,旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。 无论是刚入门的学生、专注算法的研究人员,还是需要快速落地产品的工程师,都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。 Keras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码,即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性,还允许开发者根据需求自由选择:利用 JAX 或 PyTorch 的即时执行模式进行高效调试,或切换至速度最快的后端以获得最高 350% 的性能提升。此外,Keras 具备强大的扩展能力,能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群,是连接原型开发与生产部署的理想桥梁。

63.9k|★★☆☆☆|昨天
开发框架数据工具其他

crawl4ai

Crawl4AI 是一款专为大语言模型(LLM)设计的开源网络爬虫与数据提取工具。它的核心使命是将纷繁复杂的网页内容转化为干净、结构化的 Markdown 格式,直接服务于检索增强生成(RAG)、智能体构建及各类数据管道,让 AI 能更轻松地“读懂”互联网。 传统爬虫往往面临反爬机制拦截、动态内容加载困难以及输出格式杂乱等痛点,导致后续数据处理成本高昂。Crawl4AI 通过内置自动化的三级反机器人检测、代理升级策略以及对 Shadow DOM 的深度支持,有效突破了这些障碍。它能智能移除同意弹窗,处理深层链接,并具备长任务崩溃恢复能力,确保数据采集的稳定与高效。 这款工具特别适合开发者、AI 研究人员及数据工程师使用。无论是需要为本地模型构建知识库,还是搭建大规模自动化信息采集流程,Crawl4AI 都提供了极高的可控性与灵活性。作为 GitHub 上备受瞩目的开源项目,它完全免费开放,无需繁琐的注册或昂贵的 API 费用,让用户能够专注于数据价值本身而非采集难题。

63.2k|★★☆☆☆|3天前
数据工具Agent

MinerU

MinerU 是一款专为大语言模型(LLM)打造的文档解析工具,旨在将复杂的 PDF 文件高效转化为机器易读的 Markdown 或 JSON 格式。在日常工作中,许多用户面临从扫描版论文、技术手册或包含复杂排版的文档中提取高质量文本的难题,传统方法往往难以保留原有的公式、表格和结构信息,导致后续 AI 处理效果不佳。MinerU 正是为了解决这一痛点而生,它能精准识别并还原文档中的多栏布局、数学公式及图表内容,确保输出数据干净、结构化,直接适配各类智能体(Agentic)工作流。 这款工具特别适合开发者、数据科学家以及需要构建知识库的研究人员使用。无论是希望微调专属模型的算法工程师,还是试图搭建企业级 RAG(检索增强生成)系统的技术团队,MinerU 都能提供强有力的支持。其核心技术亮点在于对复杂版面分析的深度优化,不仅支持批量处理,还能在保持高准确率的同时,大幅降低数据清洗的人力成本。通过 MinerU,用户可以轻松打通从原始文档到 AI 应用的数据链路,让非结构化文档真正变成可被智能体理解的高价值资产。

58.2k|★★★☆☆|今天
图像数据工具其他

meilisearch

Meilisearch 是一个开源的极速搜索服务,专为现代应用和网站打造,开箱即用。它能帮助开发者快速集成高质量的搜索功能,无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果,而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性,并支持 AI 驱动的混合搜索(结合关键词与语义理解),显著提升用户查找信息的体验。 Meilisearch 特别适合 Web 开发者、产品团队或初创公司使用,尤其适用于需要快速上线搜索功能的场景,如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK,部署简单,资源占用低,本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下,为用户提供流畅、智能搜索体验的团队来说,Meilisearch 是一个高效且友好的选择。

57k|★★☆☆☆|今天
图像Agent数据工具