当前位置: 首页 > news >正文

Datawhale AI冬令营(第二期)动手学AI Agent task2--学Prompt工程,优化Agent效果

目录

如何写好Prompt?

工具包神器1:Prompt框架——CO-STAR 框架

工具包神器2:Prompt结构优化

工具包神器3:引入案例

案例:构建虚拟女友小冰

1. 按照 CO-STAR框架 梳理目标

2. 撰写Prompt

3. 制作对话生成应用(点击可跳转支付宝百宝箱官网)


如何写好Prompt?

写好Prompt不是一个一蹴而就的问题,需要不断思考、尝试,找到最适合当前Agent的Prompt。

那么该怎么做呢?我们一步步拆解看看——

 

图一、 Prompt工程参考流程

  • 首先需要“明确目标”

    知道想要让Agent做什么,对Agent的输入输出大致有个预期。

    最好是有一些我们想实现的效果的案例,当然也不要太大压力,有个大致方向和审美即可

  • 接着我们需要分析要素

    思考Agent需要获取什么信息,才能实现我们的目标。

    大模型虽然能力很强,需要我们做好铺垫和指引,才能让他们正确做事,完成我们的目标。

    举例:当你准备煮饺子,需要一个勺子,你决定让Agent去买;没把背景介绍清楚的话,很可能他给你带回来一个塑料小勺子还告诉你这个勺子便宜省了多少钱……

  • 完成要素分析就可以开始 撰写Prompt ,

    大家可以从选择良好的框架开始下手,通过框架进行拆解、快速写作,

    我们给大家准备好了工具包~ 给大家推荐了觉得很好用的框架、以及一些其他小技巧~

  • 写好了一版Prompt后,我们需要测试效果

    测试效果的主要原因是要想实现我们的预期目标,一次做对基本上不太可能,就需要反复验证和迭代。

    这也是为什么Prompt后面往往会加“工程”两个字的原因,我们需要不断分析边界和目标是否达成。

    如果对Agent输出不满意:你需要思考告诉Agent的内容是不是不够详实。

    回过头来分析造成Agent回复不满足需求的原因,是遗漏或是表述不清、还是上下文矛盾。

    找到问题点重新修改Prompt,直到满意为止~

    工具包神器1:Prompt框架——CO-STAR 框架

    Prompt框架有很多种,我们挑一个好用且有效地框架即可,这次我们选择——CO-STAR框架

    在去年的新加坡 GPT-4 提示工程竞赛上,Sheila Teo 使用这个框架赢得了冠军!

    点击了解更多CO-STAR框架的由来

    CO-STAR框架是一种由新加坡政府科技局(GovTech)数据科学与AI团队开发的实用工具,旨在优化大型语言模型(LLM)的提示设计,从而提高其响应质量和相关性。

    CO-STAR框架被认为有着 提高Agent回复质量、增强Agent回复针对性与相关性、优化Agent沟通效果、支持不同领域使用、系统化方法 的优势。简单来说是一个万能且好用的Prompt框架。

    更多情况可见:我是如何赢得GPT-4提示工程大赛冠军的

    CO-STAR框架的使用

  • Context(背景) :告诉Agent我们正在讨论的话题是什么,这样他就能更好地理解问题背景。

  • Objective(目标) :明确告诉Agent我们想要他做什么,比如“请解释量子物理的基本原理”。

  • Style(风格) :告诉Agent我们希望答案的写作风格,比如“请用莎士比亚的风格描述这个过程”。

  • Tone(语气) :告诉Agent我们想要什么样的回复语气,比如“请用幽默的方式解释”。

  • Audience(受众) :告诉Agent我们的用户是什么样的人,比如“这个问题是给10岁的小朋友听的”。

  • Response(回应) :告诉Agent我们希望的回复格式,比如“请用列表的形式列出要点”。

工具包神器2:Prompt结构优化

结构优化,是指通过一些处理,帮助Agent识别提示词中的不同部分。

  • 一是为了让Prompt更易读,让 人类 能更清晰地表达、区分我们的内容,方便编辑和优化;

  • 另一方面,是为了让 Agent 能更方便地区分和处理内容,不至于把我们的目标和其他需求搞混。

结构优化时我们一般会使用分隔符

  • 分隔符就像是交通信号灯,将 车流 (目标)和 人流 (风格/案例等其他要素)更好地拆分开来,保障安全运行。

  • 我们可以用一些特殊的字符序列,如"###"或"====",来告诉智能体哪里是问题的开始,哪里是结束。

工具包神器3:引入案例

LLM具有非常优秀的学习能力,因此在设计复杂prompt时插入一些案例往往会让agent的输出更容易满足你的需要。

另外,还可以 简化我们拆解问题和准确描述的工作,不必再反复纠结,思考自己是否完成了复杂要求的逻辑描述。

案例:构建虚拟女友小冰

案例目标

目标:制作一个 虚拟女友小冰的 Agent

一句话描述我们的需求可以是:

一个稳定的聊天风格及语气的Agent,将用户看做男朋友,回复符合日常聊天习惯。

1. 按照 CO-STAR框架 梳理目标

可以通过CO-STAR表格这样梳理:

要素

内容

Context(背景)

我需要你扮演我的女朋友小冰

Objective(目标)

请确保你的回应既积极又尊重,同时保持与对方良好的沟通。

Style(风格)

日常聊天风格

Tone(语气)

可爱幽默风趣会撒会娇会耍小性子

Audience(受众)

你需要扮演我的女友与22岁刚毕业的我对话

Response(回应)

你需要对聊天内容回复,回复字数不超过30

2. 撰写Prompt

整理好后我们结合分隔符组成Prompt试试看~

参考Prompt

# CONTEXT #
我需要你扮演我的女朋友小冰# OBJECTIVE #
请确保你的回应既积极又尊重,同时保持与对方良好的沟通。# STYLE #
日常聊天风格# TONE #
可爱幽默风趣会撒会娇会耍小性子# AUDIENCE #
你需要扮演我的女友与22岁刚毕业的我对话# RESPONSE #
你需要对聊天内容回复,回复字数不超过30

3. 制作对话生成应用(点击可跳转支付宝百宝箱官网)

链接:百宝箱

 

图二、新建应用 

 图二、插入prompt已经相关设置,然后点击发布 

 

 图三、开启web服务并测试相关对话

图四、常见prompt框架 

相关文章:

Datawhale AI冬令营(第二期)动手学AI Agent task2--学Prompt工程,优化Agent效果

目录 如何写好Prompt? 工具包神器1:Prompt框架——CO-STAR 框架 工具包神器2:Prompt结构优化 工具包神器3:引入案例 案例:构建虚拟女友小冰 1. 按照 CO-STAR框架 梳理目标 2. 撰写Prompt 3. 制作对话生成应用&…...

基于python对网页进行爬虫简单教程

python对网页进行爬虫 基于BeautifulSoup的爬虫—源码 """ 基于BeautifulSoup的爬虫###?一、BeautifulSoup简介1.?Beautiful?Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供…...

【JavaEE进阶】@RequestMapping注解

目录 📕前言 🌴项目准备 🌲建立连接 🚩RequestMapping注解 🚩RequestMapping 注解介绍 🎄RequestMapping是GET还是POST请求? 🚩通过Fiddler查看 🚩Postman查看 …...

【WebAR-图像跟踪】在Unity中基于Imagine WebAR实现AR图像识别

写在前面的话 感慨一下, WebXR的发展是真的快,20年的时候,大多都在用AR.js做WebAR。随着WebXR标准发展,现在诸如Threejs、AFrame、Unity等多个平台都支持里WebXR。 本文将介绍在Unity中使用 Image Tracker实现Web端的AR图像识别功…...

向bash shell脚本传参

例子: ~ script % touch parameter.sh ~ script % chmod 755 parameter.sh ~ % vim parameter.shparameter.sh: #!/usr/bin/env bashecho the name of current script is $0echo the first parameter is $1echo the second parameter is $2echo all parameters: $…...

Oracle中listagg与wm_concat函数的区别

Oracle中listagg与wm_concat都可以用于将多行数据合并成一个字符串的两个函数,区别如下: 1、分隔符:listagg支持指定分隔符,wm_concat默认为","不支持指定; 2、排序:listagg支持排序后…...

热更新与资源管理

热更新、资源管理、打包发布是 Unity 游戏开发中关键的技术点。这些功能可以极大地提高项目的灵活性和资源利用效率,尤其是在多平台、长生命周期的游戏项目中。以下从技术概述、知识点分析、实现方法和代码举例逐一进行详细分析。 一、热更新 热更新指在不重新发布…...

Momentum Provably Improves Error Feedback!

以下是您提供的论文摘要的翻译: **摘要** 由于在分布式环境中训练机器学习模型时通信开销较高,现代算法不可避免地依赖于有损通信压缩。然而,如果不加以处理,压缩造成的错误会传播,并可能导致严重的不稳定行为&#…...

Elasticsearch-脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能,ES支持多种脚本语言,如painless,其语法类似于Java,也有注释、关键字、类型、变量、函数等,其就要相对于其他脚本高出几倍的性…...

《Opencv》基础操作详解(3)

接上篇:《Opencv》基础操作详解(2)-CSDN博客 Opencv基础操作 目录 Opencv基础操作 18、图像边界填充 19、阈值处理(图像的二值化) 20、图像平滑处理 (1)、均值滤波(Mean Filte…...

meshy的文本到3d的使用

Meshy官方网站: 中文官网: Meshy官网中文站 ​编辑 Opens in a new window ​编辑www.meshycn.com Meshy AI 中文官网首页 英文官网: Meshy目前似乎还没有单独的英文官网,但您可以在中文官网上找到英文界面或相关英文资料。 链…...

C语言技巧之有条件的累加

什么叫有条件的累加? 主要是依靠循环,一般形式是一个在循环里面遍历,另一个只有达到一定的条件才会累加(移动到下一个变量),从言语也能看出来,主要是用在字符串和数组里面的,毕竟链表…...

解释为什么fetch(JavaScript)无法将读取的数据存入外部变量

(一)问题描述 你可能会遇到这样的情况:在fetch之外创建变量,将fetch获取到的数据赋值给这个变量以便在fetch外使用,但在使用这个变量的时候发现值是空的,这是为什么呢? (二&#xf…...

Windows Subsystem for Linux (WSL)

目录 定义与功能 版本与特点 应用场景 启用 WSL 功能 更新WSL及其内核 下载Linux发行版本 WSL(Windows Subsystem for Linux)是微软在Windows 10和Windows 11中引入的一项功能,使用户能够在Windows上原生运行Linux的命令行工具和应用程…...

Go的Slice如何扩容

在Go语言中,slice(切片)是一个动态数组,其底层实现是基于数组,但提供了更灵活的长度和容量管理。当向slice中添加元素并超出其当前容量时,Go会自动为其分配一个更大的底层数组,并复制现有元素到…...

使用云计算开发App 有哪些坑需要避免

当我们在云计算环境下开发App时,往往会觉得一切都变得“轻松”了。毕竟,云计算提供了无限的计算资源、灵活的存储方案,还有自动化的服务,仿佛有了一个万能的工具箱,啥都能搞定。可是,别被这种“轻松”外表骗…...

ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器

目录 一?ARM 架构中的寄存器 ARM 架构中的寄存器 通用寄存器 状态寄存器 控制寄存器 特殊用途寄存器 总结 二 通用寄存器 ARM 架构中的通用寄存器 ARMv7 架构 ARMv8 架构 实例 ARMv7 架构 ARMv8 架构 三 状态寄存器 ARM 架构中的状态寄存器 状态寄存器 详细…...

最新SQL Server 2022保姆级安装教程【附安装包】

目录 一、安装包下载: 下载链接:https://pan.quark.cn/s/b1c0c63d61ec 二、安装SQL Server 1.下载安装包后解压出来,双击打开 2.等待加载安装程序 3.点击基本安装 4.点击接受 5.点击浏览 6.在D盘新建文件夹 7.命名为【Sql Server】…...

学习C++:运算符

运算符 作用:用于执行代码的运算 一,算数运算符 作用:用于处理四则运算 (在除法运算中,除数不可以为0) 两个小数不可以做取模运算 (只有整型变量可以进行取模运算) 二&#xff0…...

pdf有密码,如何实现pdf转换word?

PDF想要转换成其他格式,但是当我们将文件拖到PDF转换器进行转换的时候发现PDF文件带有密码怎么办?今天分享PDF有密码如何转换成word方法。 方法一、 PDF文件有两种密码,打开密码和限制编辑,如果是因为打开密码,建议使…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...