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

AI大模型(一):Prompt AI编程

一、Prompt Engineering,提示工程

提示工程也叫指令工程:

  • Prompt是发给大模型的指令,比如【讲个睡前故事】、【用Python写个消消乐游戏】等;
  • 本质上大模型相关的工程工作,都是围绕prompt展开的;
  • 提示工程门槛低,天花板高,所以又有人戏称Prompt为咒语;
  • Prompt相当于是AGI时代的编程语言;
  • 高质量prompt核心:具体、丰富、少歧义;
  • Prompt是个逐步调优的过程,并不是一下子就好。

OpenAI官方提供的Prompt Engineering教程:

https://platform.openai.com/docs/guides/prompt-engineering

Prompt的典型构成

不要固守模板,模板的价值是提醒我们别漏掉什么,而不是必须遵守模板。

1. 角色:
  • 给AI定义一个最匹配任务的角色;
  • 比如:【你是一个软件产品经理】【你是一位小学语文老师】;
  • 先定义角色,就是在开头把问题域收窄,较少二义性;
2. 指令:
  • 对任务进行描述;
3. 上下文:
  • 给出与任务相关的其它背景信息;
4. 例子:
  • 必要时给出举例,学术中称为one-shot learning, few-shot learning或in-context learning;
5. 输入:
  • 任务的输入信息;再提示词中明确的标识出输入;
6. 输出:
  • 输出的格式描述,以便后续模块自动解析模型的输出结果,比如JSON、XML;

案例:推荐流量包的智能客服

需求:智能客服根据用户的咨询,推荐最合适的流量包。

 大模型应用于软件系统的核心思路:
  1. 把输入的自然语言对话,转成结构化的信息(自然语言理解NLU);
  2. 用传统软件的手段去处理结构化信息,得到处理策略;
  3. 把策略转成自然语言输出(NLG);
对话流程举例:

用Prompt实现
定义任务描述和输入:
"""
1. 任务描述                  
"""instruction = """你的任务是识别用户对手机流量套餐产品的选择条件。每种流量套餐产品包含三个属性:名称、月费价格和月流量。根据用户输入,识别用户在上述三种属性上的需求是什么""""""
2. 用户输入                 
"""input_text = """办理100G的套餐"""# prompt模板,instruction和input_text会被替换为上面的内容
prompt = f"""
{instruction}用户输入:{input_text}
""""""
3. 调用大模型                 
"""
response = get_completion(prompt)
print(response)
约定输出格式:
"""
1. 输出格式                  
"""output_format = """以 JSON 格式输出""""""
2. 稍微调整咒语,加入输出格式                 
"""
prompt = f"""
{instruction}{output_format}用户输入:
{input_text}
""""""
3. 调用大模型                 
"""
response = get_completion(prompt, response_format="json_object")
print(response)

二、用AI帮我写代码

认知AI最好的方式就是天天用。

问自己几个问题:

1. 我的时间都消耗在哪里?

  • 工作、学习、娱乐、锻炼
  • 工作&学习:学习新技术新知识,一方面了解发展水平和趋势,以及各个工具如何使用;另一方面结合以往和现在的工作场景、工作中的痛点,思考有哪些可以优化改进的地方。
  • 娱乐:找各种好看的下饭剧
  • 锻炼:根据个人喜好和身体反馈,不定期的调整运动项目和动作

2. 怎么让AI帮我省时间?

  • 重复脑力劳动都可以考虑AI化;
  • 【输入和输出都是文本】的场景,都值得尝试用大模型提效;

3. 如何找到落地场景?

  • 从最熟悉的领域入手
  • 尽量找能用语言描述清楚的任务
  • 别求大而全。将任务拆解,先解决小任务、小场景
  • 让AI学最厉害员工的能力,再让ta辅助其他员工,实现降本增效

AI Embedded模式 ———》Copilot模式——》Agent模式

Agent模式目前有点超前,Copilot是当前主流

实现Copilot的主流架构是多Agent架构,模仿人做事,将业务拆成工作流(workflow 、SOP、pipeline),每个Agent负责一个工作流节点。

【编程】是目前大模型能力最强的垂直领域,甚至超越了对【自然语言】本身的处理能力。因为训练数据质量高、结果可衡量、编程语言无二义性,且有论文证明编程训练能增强模型的推理能力,所以会特别训练这块。

知道怎么用好AI编程,了解它的能力边界、使用场景,就能类比出其他领域的AI怎么落地,能力上限在哪。

How to build an enterprise LLM application: Lessons from GitHub Copilot - The GitHub Blog

产品设计经验:在chat界面里用 @ 串联多个agent是一个常见的AI产品设计范式。

一些其他的使用方式:10 unexpected ways to use GitHub Copilot - The GitHub Blog

让AI在不影响用户原有工作习惯的情况下切入使用场景,接受度更高。例如,Copilot最开始使用的是问答,然后取消问答使用补全,最后恢复问答。

先以架构师的身份,让AI辅助你对架构进行选型;通过需求文档和业务文档,让AI给出架构的建议;然后以开发者的身份,让AI辅助你写业务代码(逐层拆分向下写)。

落地经验:新工具的引入,可能会有一些负面的因素要考虑,需要有足够的信心和耐心去应对。核心是调整好利益链

总结

不管是个人还是企业,都能借用AI提效。

  • 通过天天使用,总结使用大模型的规律,【输入和输出都是文本】的场景,都值得尝试用大模型提效。
  • 通过体验GitHub Copilot,认识到,AI产品的打磨过程、落地和如何打造盈利产品。
  • 基于落地的成功案例,理解基本原理,避免拍脑袋。

相关文章:

AI大模型(一):Prompt AI编程

一、Prompt Engineering,提示工程 提示工程也叫指令工程: Prompt是发给大模型的指令,比如【讲个睡前故事】、【用Python写个消消乐游戏】等;本质上大模型相关的工程工作,都是围绕prompt展开的;提示工程门…...

ArcGIS Pro属性表乱码与字段名3个汉字解决方案大总结

01 背景 我们之前在使用ArcGIS出现导出Excel中文乱码及shp添加字段3个字被截断的情况,我们有以下应对策略: 推荐阅读:ArcGIS导出Excel中文乱码及shp添加字段3个字被截断? 那如果我们使用ArGIS Pro出现上述问题,该如何…...

小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现

项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…...

计算机网络网关简介

网关,在计算机网络中扮演着至关重要的角色,它如同不同语言间的翻译官,让不同网络协议、不同体系结构的网络能够相互通信。简而言之,网关就是一个网络连接到另一个网络的“关口”,负责数据的接收、转换与发送。 在局域…...

如何用python将pdf转换为json格式

使用 Python 将 PDF 文件转换为 JSON 格式,主要步骤如下: 读取 PDF 内容:首先使用一个库读取 PDF 文件内容,如 PyMuPDF 或 pdfplumber。这些库可以逐页提取文本,并返回结构化的数据。 组织数据到 JSON:将提…...

STL关联式容器介绍

在前文中介绍了STL的序列式容器; STL序列式容器之vector-CSDN博客 STL序列式容器之list-CSDN博客 STL序列式容器之deque-CSDN博客 STL序列式容器之stack-CSDN博客 STL序列式容器之queue-CSDN博客 STL序列式容器之heap(堆)-CSDN博客 ST…...

java计算机毕业设计选题参考3000篇

基于微信小程序的springboot高校餐厅食品留样管理系统 springboot vue大学生创新创业训练项目管理系统 Springboot的疫情网课管理系统 基于微信小程序的计算机实验室排课与查询系统ssm后端 基于ssm后端的学生购电电费管理微信小程序weixin356 ssm机场网上订票系统 基于ssmvue的…...

JWT介绍、测试案例 以及实际开发中的使用

什么是JWT? JWT,通过数字签名的方式,以json对象为载体,在不同的服务终端之间安全的传输信息,用来解决传统session的弊端。 JWT在前后端分离系统,通过JSON形式作为WEB应用中的令牌(token),用于…...

快排和归并

目录 前言 快速排序 相遇位置一定比key小的原理(大): 避免效率降低方法(快排优化) 三数取中(选key优化) 小区间优化 hoare版本快排 挖坑法快排 前后指针快排 非递归快排 归并排序 非递…...

VUE+SPRINGBOOT实现邮箱注册、重置密码、登录功能

随着互联网的发展,网站用户的管理、触达、消息通知成为一个网站设计是否合理的重要标志。目前主流互联网公司都支持手机验证码注册、登录。但是手机短信作为服务端网站是需要付出运营商通信成本的,而邮箱的注册、登录、重置密码,无疑成为了这…...

Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件

Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件 问题背景 今天在导报项目的时候遇到一个问题问题:在开发环境中一切正常,但在打包后的生产环境中,某些环境变量(如 VUE_APP_B…...

创建vue+electron项目流程

一个vue3和electron最基本的环境搭建步骤如下:// 安装 vite vue3 vite-plugin-vue-setup-extend less normalize.css mitt pinia vue-router npm create vuelatest npm i vite-plugin-vue-setup-extend -D npm i less -D npm i normalize.css -S &#xff0…...

3. 用Ruby on Rails创建一个在线商城

哎呀,你这是想要我写一篇超长篇的Ruby on Rails教程啊!好吧,既然你这么热情,那我就勉为其难地给你来一篇生动有趣、充满比喻夸张讽刺修辞手法的教程吧! 1. 准备工作 1.1. 安装Ruby和Rails 1.1.1 安装Ruby 下载Ruby…...

jmeter常用配置元件介绍总结之配置元件

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之线程组 4.jmeter常用配置元件介绍总结之函数助手 5.jmeter常用配置元件介绍总结之取样器 6.jmeter常用配置元件介绍总结之jsr223执行pytho…...

SpringBoot获取请求参数

spring boot获取请求参数 文章目录 spring boot获取请求参数一、简单参数二、实体参数三、数组集合参数四、日期参数五、Json参数六、路径参数 开头概述 在Spring Boot框架中,处理HTTP请求并获取请求参数是开发Web应用程序中的一项基本任务。无论是简单的GET请求还是…...

【数据结构】树——顺序存储二叉树

写在前面 在学习数据结构前,我们早就听说大名鼎鼎的树,例如什么什么手撕红黑树大佬呀,那这篇笔记不才就深入浅出的介绍二叉树。 文章目录 写在前面一、树的概念及结构1.1、数的相关概念1.2、数的表示1.3 树在实际中的运用(表示文…...

Android中perform和handle方法的区别——以handleLaunchActivity与performLaunchActivity为例

在Android系统中,perform和handle方法经常出现在关键流程中,分别承担不同的职责。这种命名约定反映了框架设计中的分层思想,帮助开发者区分任务的调度与实现。本文通过handleLaunchActivity和performLaunchActivity这两个典型方法的源码分析&…...

聊聊依赖性测试

在软件测试中,我们常常面临一个挑战:多个模块之间高度耦合,任何一个模块的异常都可能导致整个系统崩溃。如何确保这些模块之间的协作无缝衔接?这就需要依赖性测试的助力! 什么是依赖性测试?它与功能测试、…...

C++11————线程库

thread 类的简单介绍 在 c11 之前,涉及到多线程问题,都是和平台相关的,比如 windows 和 linux 下各自有自己的接口,这使得代码的可移植性比较差。在 c11 中引入了线程库,使得 c在编程时不需要依赖第三方库了 函数名 …...

Java 动态代理初步

动态代理初步 package ReflectExercise;import ReflectExercise.pojo.BigStar; import ReflectExercise.pojo.ProxyUtil; import ReflectExercise.pojo.Star;/*** 动态代理* 无侵入的给方法增强功能*/ public class ReflectExercise {public static void main(String[] args) {…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...