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

设计一个自己的AI Agent

目录

前言

一、了解Prompt

二、如何写好Prompt

三、Prompt框架——CO-STAR 框架

四、Prompt结构优化

 五、案例设计

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

2. 撰写Prompt

3. 动手设计一个AI agen


前言

我们听过无数的道理,却仍旧过不好这一生


一、了解Prompt

        简单点说Prompt就是一句指定Agent做什么的指令。

二、如何写好Prompt

  •  首先需要“明确目标”

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

  • 接着我们需要分析要素

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

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

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

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

    测试效果的主要原因是要想实现我们的预期目标,一次做对基本上不太可能,就需要反复验证和迭代。这也是为什么Prompt后面往往会加“工程”两个字的原因,我们需要不断分析边界和目标是否达成。

三、Prompt框架——CO-STAR 框架

  • CO-STAR框架是一种由新加坡政府科技局(GovTech)数据科学与AI团队开发的实用工具,旨在优化大型语言模型(LLM)的提示设计,从而提高其响应质量和相关性。
  • 那么CO-STAR框架如何使用呢?我们需要对应回答一些问题,给出一些材料——

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

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

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

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

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

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

四、Prompt结构优化

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

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

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

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

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

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

比如:
原文Prompt:

你最喜欢的颜色是什么?
我最喜欢的颜色是蓝色。
修改后Prompt:

### 问题开始
你最喜欢的颜色是什么?
### 问题结束
=== 回答开始 ===
我最喜欢的颜色是蓝色。
=== 回答结束 ===

 五、案例设计

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

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

要素

内容

Context(背景)

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

Objective(目标)

你需要对聊天内容做出积极回应,但不要以说教的风格进行回答

Style(风格)

日常聊天风格

Tone(语气)

可爱幽默

Audience(受众)

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

Response(回应)

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

2. 撰写Prompt

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

# CONTEXT #
我需要你扮演我的女朋友小敏

# OBJECTIVE #
你需要对聊天内容做出积极回应,但不要以说教的风格进行回答

# STYLE #
日常聊天风格

# TONE #
可爱幽默

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

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

3. 动手设计一个AI agent

        百宝箱


http://www.kler.cn/a/452298.html

相关文章:

  • 【ES6复习笔记】函数参数的默认值(6)
  • unity弹出新的类似独立场景窗口独立运行一般怎么实现?
  • git push origin HEAD:refs/for/分支名
  • 数据可视化echarts学习笔记
  • Linux之ARM(MX6U)裸机篇----2.汇编LED驱动实验
  • 【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列
  • .NET 9 中的 多级缓存 HybridCache
  • Android绘图Path基于LinearGradient线性动画渐变,Kotlin(2)
  • HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐
  • 【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)
  • WPF自定义窗口 输入验证不生效
  • SpringBoot3-第四篇(基础特性)
  • Mybatisplus如何使用selectPage
  • 接口测试Day03-postman断言关联
  • HuaWei、NVIDIA 数据中心 AI 算力对比
  • 谈谈JSON
  • DigitalOcean Droplet 云服务器:新增自动扩展池功能
  • npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
  • openwrt 负载均衡方法 openwrt负载均衡本地源接口
  • 08 Django - Django媒体文件静态文件文件上传
  • Ubuntu存储硬盘扩容-无脑ChatGPT方法
  • 嵌入式学习-QT-Day06
  • 网站使用站群服务器都有哪些好处?
  • Vue学习手册03 Vue虚拟DOM详解
  • mysql,数据库主从同步搭建
  • 帝国cms电脑pc站url跳转到手机站url的方法