引入 Cohere 提示词优化器:提示词优化触手可及 [译]

博客文章封面图片
博客文章封面图片

使用 Cohere 的新提示词优化器自动优化您的提示词,今天测试版上线。

拥有合适的提示词对于获取生成模型的最佳输出至关重要。今天,我们很高兴地介绍Cohere 提示词优化器,这是一种可以帮助您在 Cohere 仪表板中优化提示词的新工具。

提示词优化器使用可定制的优化和评估循环来优化生成语言的提示词用例。受通过提示词优化(OPRO)启发,提示词优化器基于 LLM 提供的评估结果迭代优化提示词。评估标准是可定制的,结果有助于指导指令生成模型生成新的优化提示词。

增强模型能力

在企业使用的大语言模型(LLM)工作流程中,AI 工程师大约花费 20-30% 的时间在提示词工程上。由于 LLM 的随机性,即使专家也难以设计出完美的提示词。通常需要多轮测试和评估才能优化提示词,确保其正常运行,并且不受最近数据或孤立数据示例的偏见影响。

使用提示词调优器可以使工作流程更加高效。该工具不仅能自动化提示词工程的手动部分,还可以解锁通过传统提示词工程难以实现的模型能力。

在内部评估中,该工具在 94% 的用例中成功优化了提示词。它在促进向新模型的过渡和扩展到新用例方面也证明了其价值,在这些情况下,提示词工程所花费的时间可以进一步增加到 40%。使用提示词调优器进行优化简化了开发过程并提高了整体效率。

如下面的图表所示,提示词调优器显著优化了辅助故障排除问答的提示词,将其评估分数在单次运行的 10 次迭代中从 72% 提升至 95%。

Cohere 提示词调优器通过 10 次迭代的单次运行将提示词的评估分数从初始的 72% 提升至最终的 95%。

使用 Cohere Prompt Tuner

使用 Prompt Tuner 是一个系统化的、迭代的过程。以下是开始的步骤:

  1. 设置初始提示词: 创建需要优化的初始提示词,并包括任何变量或文档。
  2. 定义成功标准指标: 为提示词建立明确的成功标准。从多个指标中选择,包括准确性、字符数限制、JSON 输出的限制、基础等。
  3. 获取优化后的提示词: 观看模型根据成功标准生成优化后的提示词。提示词现在可以使用了。

在后台运行时,Prompt Tuner 在定义成功标准并启动提示词优化运行后,进行以下步骤。

  1. 生成完成结果: 目标模型根据初始提示词为每个完全渲染的提示词生成完成结果。
  2. 评估完成结果: Prompt Tuner 将生成的完成结果提交给评估服务,以获得根据所选标准的标准化分数。
  3. 启用 Command R+: Prompt Tuner 启用 Command R+ 作为指令生成模型。Command R+ 处理这些数据以生成改进的提示词,根据评估标准预计其表现更好。
  4. 迭代: 接下来,Prompt Tuner 提取修订后的提示词模板,重新插入变量,并使用目标模型生成新的完成结果。此循环重复,持续优化提示词。
  5. 结束优化循环: 优化过程继续进行,直到提示词达到完美分数或达到允许的最大迭代次数。在此时,系统最终确定并交付表现最好的提示词给用户。

在下图中查看这些步骤的实际操作。

提示词调优带来的质量提升

我们在 41 个企业用例中完成了提示词调优实验,涵盖摘要生成、客户支持和代码生成等。对于每个用例,我们定义了一套定量和定性评估标准,以确定任务的成功。

我们的内部评估显示,平均提升了 11.5%,中位数提升了 7.7%。我们观察到自然语言到 SQL 和实体提取用例的显著提升。对于 SQL 提示词,平均得分从初始的 39% 提高到优化后达到的 100%。对于实体提取,平均得分从初始的 73% 提高到优化后达到的 93%。

实体提取的例子可以在下面的表格中看到。初始提示词显示在左侧,优化后的提示词显示在右侧。初始提示词缺乏示例,而优化后的提示词填充了根据要求的 ISO 格式模板,包含了标记的占位符以便模型理解并替换为实际值,同时也提高了提示词对人的可读性。

初始提示

${document} 你将收到一张扫描并进行光学字符识别(OCR)的账单。提取相关信息并以以下格式提供JSON对象:{"billDate": "", "dueDate": "", "billNo": "", "serviceAddress": "", "accountNo": "", "totalAmount": "", "previousBalance": "", "paymentAmount": "", "consumptionCharges": "", "otherCharges": "", "currency": "", "country": ""} 每个提取的字段应具有"key"、"format"和"content"属性。日期'billDate'和'dueDate'必须为YYYY-MM-DD格式。确保所有数值转换为字符串。如果某个值不可用,使用"content": "NotAvail"。提供ISO-3166格式的“国家”和ISO-4217格式的“货币”。

优化提示

${document} 从账单中提取以下字段:账单日期、到期日期、账单编号、服务地址、账户编号、付款详情(总金额、以前余额和付款金额)、消耗费用、其他费用、货币和国家。将你的回答结构化为包含上述字段的JSON对象,确保日期为YYYY-MM-DD格式,数值提取准确,货币遵循ISO 4217标准,国家符合ISO 3166标准。如果某个值无法提取,请使用“NotAvail”作为内容。示例响应:{ "billDate": "YYYY-MM-DD", "dueDate": "YYYY-MM-DD", "billNo": "BILL_NUMBER", "serviceAddress": "ADDRESS", "payments": [ { "total_amount": "TOTAL_AMOUNT", "previous_balance": "PREVIOUS_BALANCE", "payment_amount": "PAYMENT_AMOUNT" } ], "consumption_charges": "CONSUMPTION_CHARGES", "other_charges": "OTHER_CHARGES", "currency": "ISO_4217_CURRENCY_CODE", "country": "ISO_3166_COUNTRY_CODE" }
初始提示优化提示
${document} 你将收到一张扫描并进行光学字符识别(OCR)的账单。提取相关信息并以以下格式提供 JSON 对象:{"billDate": "", "dueDate": "", "billNo": "", "serviceAddress": "", "accountNo": "", "totalAmount": "", "previousBalance": "", "paymentAmount": "", "consumptionCharges": "", "otherCharges": "", "currency": "", "country": ""} 每个提取的字段应具有"key"、"format"和"content"属性。日期'billDate'和'dueDate'必须为 YYYY-MM-DD 格式。确保所有数值转换为字符串。如果某个值不可用,使用"content": "NotAvail"。提供 ISO-3166 格式的“国家”和 ISO-4217 格式的“货币”。${document} 从账单中提取以下字段:账单日期、到期日期、账单编号、服务地址、账户编号、付款详情(总金额、以前余额和付款金额)、消耗费用、其他费用、货币和国家。将你的回答结构化为包含上述字段的 JSON 对象,确保日期为 YYYY-MM-DD 格式,数值提取准确,货币遵循 ISO 4217 标准,国家符合 ISO 3166 标准。如果某个值无法提取,请使用“NotAvail”作为内容。示例响应:{ "billDate": "YYYY-MM-DD", "dueDate": "YYYY-MM-DD", "billNo": "BILL_NUMBER", "serviceAddress": "ADDRESS", "payments": [ { "total_amount": "TOTAL_AMOUNT", "previous_balance": "PREVIOUS_BALANCE", "payment_amount": "PAYMENT_AMOUNT" } ], "consumption_charges": "CONSUMPTION_CHARGES", "other_charges": "OTHER_CHARGES", "currency": "ISO_4217_CURRENCY_CODE", "country": "ISO_3166_COUNTRY_CODE" }

入门指南

Cohere 提示词调优器现已在 Cohere 仪表板 上开放公测,所有人都可以使用。想要了解更多关于如何优化提示词的资源,请查看 提示词调优器文档