在皇家赌场(2006)中,詹姆斯·邦德详细说明了他的维斯珀马提尼的精确成分:3 杯戈登、1 杯伏特加、半杯基纳利莱,与一片柠檬皮薄片一起在冰上摇匀。
通过详细说明成分,邦德确保了优质的饮料。同样,在与大型语言模型 (LLM) 交互时,提示的特异性和清晰度决定了输出的质量。
这个过程被称为快速工程,对于从人工智能系统获得准确且相关的响应至关重要。
什么是即时工程?
及时工程涉及制定精确的说明以优化 LLM 响应。输入提示越详细和具体,输出就越符合您的需求。
示例:
如果你问法学硕士“总结即时工程”,答案可能会很模糊。但是,通过像这样指定请求:
提示: “给出一个 100 字的提示工程摘要,针对非技术用户。”
法学硕士现在被指导给出简洁的、针对特定受众的答案。
输出:
“即时工程正在为 ChatGPT 等人工智能系统制定有效的指令,以获得最佳结果。它涉及具体、提供上下文和分解复杂的问题。通过指定格式、提供示例或设置边界,即时工程可确保与人工智能助手。”
这种要求特定输出的方法演示了如何“设计”提示以获得所需的精确结果。
良好的 LLM 提示的组成部分
1 上下文:上下文为法学硕士提供了额外的信息,帮助其更全面地理解您的请求。通过嵌入相关上下文,人工智能可以生成更准确和定制的响应。
示例:
假设您正在处理一个 C# 项目并想要修改类定义。这里的上下文可以是代码片段。
根据上下文提示:
“给出这个 C# 代码:
公共类用户{公共int用户Id{获取;放; } 公共字符串名称 { get;放; } 公共字符串电子邮件 { 获取;放; } 公共字符串电话号码 { 获取;放; } }
修改类,使 UserId 和 Name 为只读,并在构造函数中设置它们。”
输出:
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
这个例子说明了提供相关背景来指导法学硕士生成正确答案的重要性。
- 用户问题:问题是提示的主要部分。它应该是单一目的、具体且简洁的。
示例:
如果您想用 C# 创建具有某些字段的用户类,请明确指定所需的字段和行为。
模糊问题:
“创建用户类。”
具体问题:
“创建一个包含以下字段的 C# 用户类:UserId、Name、PhoneNumber。将 UserId 设为只读并添加构造函数来设置这些字段。”
输出:
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
- 输出指导:您可以通过提供所需格式的示例来指导模型的输出。
示例:
如果您需要为 User 类生成虚拟数据,请提供数据应是什么样子的示例。
举例提示:
“使用以下字段生成 User 类的 5 个实例:UserId、Name、Email、PhoneNumber。使用以下格式作为示例:
var user1 = new User(1, "John Doe", "john.doe@example.com", "555-555-5555");
以下是一些示例:
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
现在生成 5 个实例。”
输出:
public class User { public int UserId { get; } public string Name { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name, string phoneNumber) { UserId = userId; Name = name; PhoneNumber = phoneNumber; } }
有效快速工程的技术
- 零样本提示:LLM 根据其训练数据生成响应,无需明确的示例。这对于根据既定模式生成通用解决方案或答案非常有效。
示例:
提示: “在 C# 中使用 xUnit 为 User 类创建单元测试。”
输出:
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555"); var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556"); var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557"); var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558"); var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
- few-shot Prompting:提供几个示例来指导模型生成所需的输出格式。
示例:
要为 User 类生成数据,您可以使用一些示例数据点来指导输出格式。
用少量示例提示:
“以下是 User 类的一些实例:
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555");
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
现在按照相同的模式再创建 3 个实例。”
输出:
public class UserTests { [Fact] public void UserConstructor_SetsProperties() { // Arrange var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555"); // Act & Assert Assert.Equal(1, user.UserId); Assert.Equal("John Doe", user.Name); Assert.Equal("john.doe@example.com", user.Email); Assert.Equal("555-555-5555", user.PhoneNumber); } }
- 提示链接:根据之前的响应迭代地优化您的查询,从而使模型能够建立在早期交互的基础上。
示例:
从简单的提示开始,逐步修改。
第一个提示:
“用 Python 创建一个基本的 User 类。”
输出:
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
后续提示:
“将此类转换为 C#。”
输出:
public class User { public int UserId { get; } public string Name { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name, string phoneNumber) { UserId = userId; Name = name; PhoneNumber = phoneNumber; } }
最后提示:
“将密码属性设为私有,并添加在构造函数中初始化的 DateTime CreatedAt 属性。”
输出:
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555"); var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556"); var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557"); var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558"); var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
- 思路链提示:提供多步骤说明,帮助LLM一步步解决复杂问题。
示例:
提示:
*“为以下 C# 类创建一组单元测试:
公共类用户{公共int用户Id{获取;放; } 公共字符串名称 { get;放; } 公共字符串电话号码 { 获取;放; } }
一步步思考:
- 确定要测试的关键场景。
- 使用 xUnit 编写单元测试。
- 考虑边缘情况。”*
输出:
public class UserTests { [Fact] public void UserConstructor_SetsProperties() { // Arrange var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555"); // Act & Assert Assert.Equal(1, user.UserId); Assert.Equal("John Doe", user.Name); Assert.Equal("john.doe@example.com", user.Email); Assert.Equal("555-555-5555", user.PhoneNumber); } }
本文最初由 Pieces for Developers 的 Devreal 负责人 Jim 撰写。您可以在本文中找到更多示例和细微差别 https://pieces.app/blog/llm-prompt-engineering
以上是有效的快速工程技术的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript核心数据类型在浏览器和Node.js中一致,但处理方式和额外类型有所不同。1)全局对象在浏览器中为window,在Node.js中为global。2)Node.js独有Buffer对象,用于处理二进制数据。3)性能和时间处理在两者间也有差异,需根据环境调整代码。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。