在皇家赌场(2006)中,詹姆斯·邦德详细说明了他的维斯珀马提尼的精确成分:3 杯戈登、1 杯伏特加、半杯基纳利莱,与一片柠檬皮薄片一起在冰上摇匀。
通过详细说明成分,邦德确保了优质的饮料。同样,在与大型语言模型 (LLM) 交互时,提示的特异性和清晰度决定了输出的质量。
这个过程被称为快速工程,对于从人工智能系统获得准确且相关的响应至关重要。
及时工程涉及制定精确的说明以优化 LLM 响应。输入提示越详细和具体,输出就越符合您的需求。
示例:
如果你问法学硕士“总结即时工程”,答案可能会很模糊。但是,通过像这样指定请求:
提示: “给出一个 100 字的提示工程摘要,针对非技术用户。”
法学硕士现在被指导给出简洁的、针对特定受众的答案。
输出:
“即时工程正在为 ChatGPT 等人工智能系统制定有效的指令,以获得最佳结果。它涉及具体、提供上下文和分解复杂的问题。通过指定格式、提供示例或设置边界,即时工程可确保与人工智能助手。”
这种要求特定输出的方法演示了如何“设计”提示以获得所需的精确结果。
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; } }
示例:
提示: “在 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");
示例:
要为 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");
示例:
提示:
*“为以下 C# 类创建一组单元测试:
公共类用户{公共int用户Id{获取;放; } 公共字符串名称 { get;放; } 公共字符串电话号码 { 获取;放; } }
一步步思考:
输出:
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中文网其他相关文章!