搜索
首页web前端js教程有效的快速工程技术

echniques for Effective Prompt Engineering

皇家赌场(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;
    }
}

这个例子说明了提供相关背景来指导法学硕士生成正确答案的重要性。

  1. 用户问题:问题是提示的主要部分。它应该是单一目的、具体且简洁的。

示例:
如果您想用 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;
    }
}
  1. 输出指导:您可以通过提供所需格式的示例来指导模型的输出。

示例:
如果您需要为 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;
    }
}

有效快速工程的技术

  1. 零样本提示: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");
  1. 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);
    }
}
  1. 提示链接:根据之前的响应迭代地优化您的查询,从而使模型能够建立在早期交互的基础上。

示例:
从简单的提示开始,逐步修改。

第一个提示:

“用 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");
  1. 思路链提示:提供多步骤说明,帮助LLM一步步解决复杂问题。

示例:
提示:

*“为以下 C# 类创建一组单元测试:

公共类用户{公共int用户Id{获取;放; } 公共字符串名称 { get;放; } 公共字符串电话号码 { 获取;放; } }

一步步思考:

  1. 确定要测试的关键场景。
  2. 使用 xUnit 编写单元测试。
  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);
    }
}

本文最初由 Pieces for Developers 的 Devreal 负责人 Jim 撰写。您可以在本文中找到更多示例和细微差别 https://pieces.app/blog/llm-prompt-engineering

以上是有效的快速工程技术的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JavaScript数据类型:浏览器和nodejs之间是否有区别?JavaScript数据类型:浏览器和nodejs之间是否有区别?May 14, 2025 am 12:15 AM

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

JavaScript评论:使用//和 / * * / * / * /JavaScript评论:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

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

Python vs. JavaScript:开发人员的比较分析Python vs. JavaScript:开发人员的比较分析May 09, 2025 am 12:22 AM

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

Python vs. JavaScript:选择合适的工具Python vs. JavaScript:选择合适的工具May 08, 2025 am 12:10 AM

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

Python和JavaScript:了解每个的优势Python和JavaScript:了解每个的优势May 06, 2025 am 12:15 AM

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

JavaScript的核心:它是在C还是C上构建的?JavaScript的核心:它是在C还是C上构建的?May 05, 2025 am 12:07 AM

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

JavaScript应用程序:从前端到后端JavaScript应用程序:从前端到后端May 04, 2025 am 12:12 AM

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

Python vs. JavaScript:您应该学到哪种语言?Python vs. JavaScript:您应该学到哪种语言?May 03, 2025 am 12:10 AM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热门文章

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版

SublimeText3 英文版

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

螳螂BT

螳螂BT

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

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