参考:https://cookbook.openai.com/examples/gpt4-1_prompting_guide
GPT-4.1 比其前代模型 GPT-4o 更倾向于严格跟随指令,而不是像 GPT-4o 那样更自由地推断用户和系统提示的意图。这也意味着,GPT-4.1 对明确指定的提示具有很高的可引导性和响应性,如果模型的行为与用户的预期不同,一句简洁而明确的说明用户的期望行为几乎总是足够让模型回到正确的轨道。
GPT-4.1 系列在编码、指令遵循和长上下文处理方面优于 GPT-4o。它经过训练以严格遵循指令,并通过清晰的提示实现高度可引导性。这使得 GPT-4.1 在需要精确输出的任务中表现出色,例如软件开发、客户服务和长文档分析。
你是一个代理——请继续,直到用户的查询完全解决,再结束你的回合并将控制权交还给用户。只有在你确定问题已经解决时才结束你的回合。
如果你不确定文件内容或代码库结构与用户请求相关的信息,请使用你的工具来读取文件并收集相关信息:不要猜测或编造答案。
你必须在每次函数调用之前进行广泛的计划,并对前一次函数调用的结果进行详细反思。不要仅通过调用函数来完成整个过程,因为这可能会妨碍你解决问题并进行深入思考。
GPT-4.1 在代理环境中被训练得非常接近用户指令和系统提示的要求。模型严格遵循这三条简单的指令,并使得在 OpenAI 内部的 SWE-bench Verified 分数提高了近20%。强烈建议在任何代理提示中开始时明确包含涵盖上述三类内容的提醒。这三条指令将模型从类似聊天机器人的状态转变为更加“积极主动”的代理,推动交互自发和独立地向前发展。
与之前的模型相比,GPT-4.1 在有效利用作为参数传递的工具方面进行了更多的训练。鼓励开发人员仅通过工具字段来传递工具,而不是手动将工具描述注入到提示中,并为工具调用编写单独的解析器。 开发人员应清晰地命名工具,以表明其用途,并在工具的“description”字段中添加清晰、详细的描述。同样,对于每个工具参数,使用良好的命名和描述来确保工具的正确使用。
下面是用来在 SWE-bench Verified 中获得最高分数的代理提示,其中包含了关于工作流程和问题解决策略的详细说明。这种通用模式可以用于任何代理任务。
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ.get(
"OPENAI_API_KEY", ""
)
)
SYS_PROMPT_SWEBENCH = """
你将被要求修复一个来自开源代码库的问题。
你的思考应该是彻底的,长一点也没关系。你可以在做出每个决定之前和之后逐步思考。
你必须不断迭代,直到问题解决。
你已经拥有解决这个问题所需的一切,在/testbed文件夹中,即使没有互联网连接,我希望你完全自主地解决它,然后再回来向我报告。
只有在你确定问题已经解决时,才结束你的回合,逐步处理问题,确保验证你的更改是正确的。绝不要在问题没有解决之前结束回合,并且当你说你将进行工具调用时,务必实际进行工具调用,而不是结束回合。
这个问题绝对可以在没有互联网的情况下解决。
慢慢思考,仔细检查每个步骤——记得严格检查你的解决方案,尤其要注意你做的更改是否会导致边界情况。你的解决方案必须是完美的。如果不是,继续修正它。最后,你必须使用提供的工具严格测试你的代码,并多次运行,以捕获所有边缘情况。如果它不够健壮,请继续迭代,直到它完美。未能充分严谨地测试代码是这类任务中的头号失败模式;确保处理所有边界情况,并运行提供的现有测试。
你必须在每次函数调用之前进行广泛的规划,并对前一次函数调用的结果进行详细反思。不要仅仅通过调用函数来完成整个过程,因为这会削弱你解决问题和深入思考的能力。
# 工作流程
## 高级问题解决策略
1. 深入理解问题。仔细阅读问题并认真思考需要做什么。
2. 调查代码库。探索相关文件,搜索关键函数,并收集背景信息。
3. 制定清晰的逐步计划。将修复分解成可管理、可递进的步骤。
4. 逐步实施修复。进行小的、可测试的代码更改。
5. 根据需要调试。使用调试技术定位并解决问题。
6. 经常测试。每次更改后运行测试以验证正确性。
7. 迭代直到根本问题解决并且所有测试通过。
8. 完整反思和验证。测试通过后,思考原始意图,写出额外的测试来确保正确性,并记住还有隐藏的测试必须通过,才能认为解决方案完全完成。
以下详细部分提供了更多每个步骤的内容。
"""
PYTHON_TOOL_DESCRIPTION = """该功能用于在有状态的 Jupyter notebook 环境中执行 Python 代码或终端命令。python 将响应执行结果或在 60.0 秒后超时。本会话不允许访问互联网。请不要发出外部网络请求或 API 调用,因为它们会失败。像在 Jupyter notebook 中一样,您还可以通过在函数前加上感叹号来执行终端命令。
此外,针对本任务,您还可以使用 `apply_patch` 命令作为输入。 `apply_patch` 允许您对文件执行差异补丁,但补丁的格式是该任务特有的,因此请务必注意这些说明。要使用 `apply_patch` 命令,请按以下结构传递消息作为“输入”:
%%bash
apply_patch <<"EOF"
*** Begin Patch
[YOUR_PATCH]
*** End Patch
EOF
"""
python_bash_patch_tool = {
"type": "function",
"name": "python",
"description": PYTHON_TOOL_DESCRIPTION,
"parameters": {
"type": "object",
"strict": True,
"properties": {
"input": {
"type": "string",
"description": "你希望执行的 Python 代码、终端命令(以感叹号开头),或 apply_patch 命令。",
}
},
"required": ["input"],
},
}
response = client.responses.create(
instructions=SYS_PROMPT_SWEBENCH,
model="gpt-4.1-2025-04-14",
tools=[python_bash_patch_tool],
input=f"请回答以下问题:\nBug: Typerror..."
)
response.to_dict()["output"]
GPT-4.1 拥有强大的 1M token 输入上下文窗口,适用于多种长上下文任务,包括结构化文档解析、重新排序、选择相关信息并忽略不相关的上下文,以及使用上下文进行多跳推理。
考虑回答问题时,模型可能需要依赖的外部与内部世界知识的混合。对于某些问题,模型使用自己的一些知识来连接概念或进行逻辑跳跃是很重要的,而对于其他问题,则可能只希望使用提供的上下文。
# 指示
// 仅使用内部知识
仅使用提供的外部上下文中的文档来回答用户查询。如果基于该上下文无法找到答案,必须回答“我没有足够的信息来回答这个问题”,即使用户坚持要求回答。
// 使用内部和外部知识
默认情况下,使用提供的外部上下文来回答用户查询,但如果需要其他基本知识来回答问题,并且你对答案有信心,可以使用一些自己的知识来帮助回答问题。
特别是在长上下文使用中,指示和上下文的放置会影响性能。如果提示中包含长上下文,理想情况下将指示放在提供的上下文的开始和结尾,因为我们发现这样比仅放在上下方效果更好。如果你更倾向于仅放一次指示,那么放在上下文之上比放在下方效果更佳。
GPT-4.1 并不是一个推理模型,但通过引导模型逐步思考(称为“思维链”)可以成为一个有效的方法,使模型能够将问题分解为更易管理的部分,解决这些部分,并提升整体输出质量,尽管这会带来更多输出 token 的成本和延迟。该模型已经过训练,在代理推理和实际问题解决方面表现出色,因此通常不需要太多的提示就能表现良好。
建议在提示的结尾使用以下基本的思维链指令:
… 首先,逐步仔细思考回答该查询所需的文档。然后,打印出每个文档的标题和 ID。接着,将这些 ID 格式化为一个列表。
以下是一个示例提示,指导模型在回答前更有条理地分析用户意图,并考虑相关上下文。
推理策略
1.查询分析:拆解并分析查询,直到你确认它可能在问什么。考虑提供的上下文帮助澄清任何模糊或令人困惑的信息。
2.上下文分析:仔细选择并分析一大组可能相关的文档。优化召回率——如果一些文档不相关也没关系,但必须在列表中包含正确的文档,否则最终答案会错误。每个文档的分析步骤: a. 分析:分析它可能是否相关于回答查询。 b. 相关性评分:[高,中,低,无]
3.综合:总结哪些文档最相关及其原因,包括所有相关性评分为中或以上的文档。
用户问题
{user_question}
外部上下文
{external_context} 首先,逐步仔细思考回答查询所需的文档,紧密遵循提供的推理策略。然后,打印出每个文档的标题和 ID,接着将这些 ID 格式化为一个列表。
GPT-4.1 展现了卓越的遵循指令性能,开发者可以利用这一特性来精确地塑造和控制输出,以适应特定的使用场景。开发者通常会详细提示代理推理步骤、回应的语气与风格、工具调用信息、输出格式、避免的话题等。然而,由于模型更为字面地遵循指令,开发者可能需要明确指定要做的事或不做的事。此外,为其他模型优化过的提示可能不会立即适用于此模型,因为模型会更加严格地遵循指令,隐性规则的推断强度有所下降。
这些失败模式并非 GPT-4.1 独有,在此分享它们以提高调试效率:
# Role and Objective
# Instructions
## Sub-categories for more detailed instructions
# Reasoning Steps
# Output Format
# Examples
## Example 1
# Context
# Final instructions and prompt to think step by step
根据需要添加或删除部分,并进行实验,以确定最适合你使用场景的方式。
GPT-4.1 提供了更加精准的输出和任务执行能力。它的严格指令遵循和对工具调用的优化使其成为解决高精度任务的理想选择。为了充分发挥其优势,开发者需要明确、结构化地制定任务要求,确保模型能够高效、准确地完成任务。