ChatGPT Prompting开发实战

第7章ChatGPT Prompting开发实战

 Prompting在LangChain框架中的应用

本节跟大家讲提示工程(Prompt Engineering),主要基于工业级的源码以及具体的项目,无论是工程人员,还是不具有技术背景的人员,大家多少都听说过提示词,或者频繁使用过,简单而言,当我们使用OpenAI的时候,使用它的API或者ChatGPT,使用提示词跟它进行沟通,如图7-1所示,这是ChatGPT的界面,作者一般使用GPT-4大模型。

9e61032d3ed5517af93f06b2b8a8c8dd.png

图7- 1 ChatGPT界面

你在这里面输入的任何信息,从模型的角度讲都叫提示词(Prompt),但工业级的提示词和通常大家理解中的提示词不太一样,我们首先来看一下,工业级的提示词是什么样,给大家准备了很多具体的例子,如图7-2所示,这些例子基本都来自于DeepLearning.AI,从提示词的角度,这些例子是非常系统化的,而且非常有价值,例如,这边谈到的思维链(chains-of-thought),显然是一个非常重要的例子。Gavin大咖微信:NLP_Matrix_Space

c4bdfddab5378e7295626209328e98c0.png

图7- 2 提示词案例

现在开源界、工业界和学术界认可度最高的大模型应用开发框架是LangChain,它涉及大量提示词的使用,这里面的提示词经过很多人的评审以及改进,还有工业界的实践,或者学术研究的实践。如果下载LangChain的源码,你会发现LangChain在不同的功能下面,基本上都会有提示词(Prompt),如图7-3所示。

60a4a2eb461c7330dcaf36b8ff3f6f84.png

图7- 3 LangChain功能目录

举一个简单的例子,任意看一个目录,例如retrieval_qa,base.py可以认为是一个基本的API,然后核心部分是它的提示词(prompt),如图7-4所示。

37f166e7d71978a5f30a57fde6547518.png

图7- 4 retrieval_qa的提示词

prompt.py中的提示词会有一个模板(template),描述为“Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.”(“使用以下上下文来回答问题。如果你不知道答案,就说你不知道,不要试图编造答案。”)

prompt.py的代码实现:

  1. # flake8: noqa

  2. from langchain.prompts import PromptTemplate

  3. prompt_template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

  4. {context}

  5. Question: {question}

  6. Helpful Answer:"""

  7. PROMPT = PromptTemplate(

  8.    template=prompt_template, input_variables=["context", "question"]

可以再看一下示例,例如:question_answering,它提供map_reduce_prompt、map_rerank_prompt、refine_prompts、stuff_prompt等提示模板的信息。

8803f9b3159ef4e1b2578d824ece1618.png

图7- 5 question_answering的提示词

map_reduce_prompt.py代码设置了一个自己特定格式的问题提示模板,描述为:“Use the following portion of a long document to see if any of the text is relevant to answer the question. Return any relevant text verbatim”(“使用长文档的以下部分,查看是否有任何文本与回答问题相关,逐字返回任何相关文本”),这边有上下文(context),有问题(question)和相关的内容。

map_reduce_prompt.py的代码实现:

  1. question_prompt_template = """Use the following portion of a long document to see if any of the text is relevant to answer the question.

  2. Return any relevant text verbatim.

  3. {context}

  4. Question: {question}

  5. Relevant text, if any:"""

  6. QUESTION_PROMPT = PromptTemplate(

  7.    template=question_prompt_template, input_variables=["context", "question"]

  8. )

  9. system_template = """Use the following portion of a long document to see if any of the text is relevant to answer the question.

  10. Return any relevant text verbatim.

  11. ______________________

  12. {context}"""

  13. messages = [

  14.   SystemMessagePromptTemplate.from_template(system_template),

  15.   HumanMessagePromptTemplate.from_template("{question}"),

  16. ]

  17. CHAT_QUESTION_PROMPT = ChatPromptTemplate.from_messages(messages)

  18. …….

也可以看一下query_constructor,如图7-6所示。

2bb85f3398019d296a293d4d72970135.png

图7- 6 query_constructor的提示词

在prompt.py代码文件中,也给了很多关于提示词信息,包括它的一些描述。

prompt.py的代码实现:

  1. ….

  2. EXAMPLES_WITH_LIMIT = [

  3.    {

  4.        "i": 1,

  5.        "data_source": SONG_DATA_SOURCE,

  6.        "user_query": "What are songs by Taylor Swift or Katy Perry about teenage romance under 3 minutes long in the dance pop genre",

  7.        "structured_request": FULL_ANSWER,

  8.    },

  9.    {

  10.        "i": 2,

  11.        "data_source": SONG_DATA_SOURCE,

  12.        "user_query": "What are songs that were not published on Spotify",

  13.        "structured_request": NO_FILTER_ANSWER,

  14.    },

  15.    {

  16.        "i": 3,

  17.        "data_source": SONG_DATA_SOURCE,

  18.        "user_query": "What are three songs about love",

  19.        "structured_request": WITH_LIMIT_ANSWER,

  20.    },

  21. ]

  22. EXAMPLE_PROMPT_TEMPLATE = """\

  23. << Example {i}. >>

  24. Data Source:

  25. {data_source}

  26. User Query:

  27. {user_query}

  28. Structured Request:

  29. {structured_request}

  30. """

  31. EXAMPLE_PROMPT = PromptTemplate(

  32.    input_variables=["i", "data_source", "user_query", "structured_request"],

  33.    template=EXAMPLE_PROMPT_TEMPLATE,

  34. )

  35. ….

不过,我们在这一节看的重点是代理(Agents),如图7-7所示,代理有很多不同的种类,有两个特别重要,大家必须注意的,一个是react,另外一个叫mrkl。Gavin大咖微信:NLP_Matrix_Space

c5e1d002b00e0a3f28c50468d91a3332.png

图7- 7 LangChain的Agent目录

如果你做工业级强度、基于大模型的应用开发,一般都要有一个管理者,可以统称为代理(Agent),我们谈ChatGPT插件(Plugin)的时候,其实就是从代理的角度去考虑事情,是代理的思路。gpt-4-0613和gpt-3.5-turbo-0613是OpenAI公司在2023年6月新发布的模型,它可以很好的支持函数调用(Function calling),OpenAI官网的文档中说了一句非常关键的话:大模型从你的信息中提取出函数的名称、函数的参数,传递给你去调动函数,大模型本身并不会直接去调动函数,因为你是直接运行在模型上面,并没有一个服务(server)。回到LangChain,LangChain其实包含了上面所有的功能,包括ChatGPT插件的功能,包括OpenAI函数调用(Function calling)的功能,OpenAI提供的功能,可以立即映射到LangChain上面。所以,这边的核心问题是让它有效的工作,而不是你简单的输入信息,然后你获得这个结果,当然这个结果可能包含一些步骤、或者一些互动等等。但是,如果你没有代理的话,你只能是生成文本,无法执行动作(Action),而如果你开发一个应用程序,肯定要实现Action,这是代理(Agent)的主要作用。从开源软件命名的角度讲,LangChain最开始的时候,核心聚焦的是Chain,后来聚焦Agent。

如图7-8所示,是mrkl代理的目录结构,“MRKL Systems”论文的作者把它的发音作为ˈmɪrək(ə)l,和奇迹(miracle)的发音相同。

72da9b733a177a74abda44038de4d89c.png

图7- 8 mrkl的目录结构

如图7-9所示,MRKL(Modular Reasoning,Knowledge and Language)是一种新型语言理解系统,将神经网络模型、外部知识库和专家系统相结合,兼顾神经模型和符号推理能力,提升了自然语言处理的效率。

51d646627ddf53d7631c6218a1d574b2.png

图7- 9 MRKL架构示意图

319618c7f7b542496c0f3e6f12b62520.png

7e03534d2b75bcc2d3e617f999793ef0.jpeg

0b40cb681b6c8812c339236c1736ca9d.png

afbcf60a6f46d2cdd8932b0621915259.jpeg

5c84bd024aa0e38767c19b754ca50b46.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21382.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT 端到端的示例

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT 端到端的示例 步骤1:输入通过审核检查。 步骤2:提取产品列表。 第三步:查找产品信息。 步骤4:生成对用户问题的响应。 步骤5:响应通过审核检查。 第6步:模型评估响应。 步骤7:模型批准了响应…

ChatGPT底层架构Transformer技术及源码实现(三)

ChatGPT底层架构Transformer技术及源码实现(三) 贝叶斯Bayesian Transformer数学推导论证过程全生命周期详解及底层神经网络物理机制剖析 Gavin大咖微信:NLP_Matrix_Space 从数学的角度来讲,线性转换 其中函数g联合了所有头的操作结果,每个头的产生是采用一个f_att的…

newwifi2刷潘多拉固件

一、刷入固件 先刷入不死鸟控制台&#xff0c;再通过不死鸟控制台刷入固件&#xff0c;避免因操作失误造成路由器变砖 请严格按照先后顺序操作 用网线让路由器的LAN口与电脑的网口相连接&#xff1b;PC设置为自动获取IP(一般默认自动获取IP)&#xff1b;路由器断电(就是拔插…

斐讯k2路由器刷pandorabox认证哆点Drcom

斐讯k2路由器刷pandorabox认证哆点Drcom 哆点账号登陆只能让一个设备使用网络&#xff0c;使用wifi共享等代理软件又会被禁止&#xff0c;二到了老校区以后寝室的校园网wifi信号不好&#xff0c;对于我这种习惯了像在家一样随意上网的人真是真心不爽&#xff0c;所以就琢磨让哆…

潘多拉路由器固件备份

准备工作 : 开启电脑的telnet功能 winscp &#xff1a;https://pan.baidu.com/s/1Q5P6Ri1NEC6tgPzKNMQvZQ 1. 打开cmd&#xff0c;输入telnet 192.168.1.1 进入路由器后台 &#xff08;192.168.1.1为自己路由器后台地址&#xff0c;不同的请自行修改&#xff09; 2. 输入命令…

Newifi Y1S刷潘多拉(Pandora)固件

个人觉得这是一款性价比很高的路由器,看看参数配置&#xff1a; 256M内存 3个USB接口 2个100M LAN 2个1000M LAN 关键是支持刷pandora&#xff0c;官网价199。 下面介绍如何刷 Pandora固件 步骤&#xff1a; 找一根网线&#xff0c;一端插入路由器wan口&#xff0c;一端…

QuantFabric量化交易系统开源发布

QuantFabric量化交易系统 QuantFabric简介 QuantFabric是基于Linux/C开发的中高频量化交易系统&#xff0c;支持中金所、郑商所、大商所、上期所、上海国际能源中心的期货业务品种交易&#xff0c;支持上交所、深交所的股票、债券品种交易。 QuantFabric目前支持期货交易柜台…

写好Prompt,不给ChatGPT老说片汤话的机会

大家好&#xff0c;有没有感觉ChatGPT回答你的问题老说片汤话&#xff0c;这其实有可能咱们的提示语写的不够sensible。 今天主要是针对 ChatGPT 和如何让他回答的更有效展开内容。 什么是 ChatGPT 以下来自维基百科 ChatGPT&#xff0c;全称聊天生成预训练转换器&#xff08;英…

IOS最新版开通GPT-PLUS方法

前提&#xff0c;美国IP魔法 不多说了 1.拥有一个美区apple id账号 可以买&#xff0c;也可以自己申请 自己申请就打开魔法到apple官网注册&#xff0c;用gmail邮箱&#xff0c;然后地址用美国地址生成器&#xff0c;记得选免税州 2.充值礼品卡 支付宝可以充值礼品卡&…

当我去了不到 20 人的 IT 公司后。。。

往期热门文章&#xff1a; 1、GitHub 被超火的 ChatGPT 霸榜&#xff01; 2、Java使用 try catch会影响性能&#xff1f; 3、原来count(*)是接口性能差的真凶&#xff01; 4、大公司病了&#xff0c;这也太形象了吧&#xff01;&#xff01;&#xff01; 5、全球最大资源站创始…

UED2023年上半年总结

博客/主站工作 www首页信息流结构调整、封面默认图设计、图片比例统一 博客个人主页信息流结构迭代&#xff0c;增加封面图 博客详情&#xff0c;评论增加发红包功能及交互 富文本编辑器增加“AI写作助手” 博客评论&#xff1a;增加一个 “分享到动态” 的选择框&…

5号与25号发工资的差别这么大?我居然才知道(文末附招聘岗位)

可能是新一轮的毕业季马上就来了&#xff0c;最近热搜上出现了很多关于工作&#xff0c;收入与存款的热点。诸如#年入20万是什么水平# …… 前面的话题小编已经在上篇文章说过了&#xff0c;感兴趣的朋友可以点击这里围观↓↓↓ 『在中国&#xff0c;年收入20W是什么水平&am…

几号发工资就能看出公司的好坏?(文末附招聘岗位)

作为一名资深的职场搬砖人&#xff0c;不知道各位最近有没有跟我一样关注到这个话题 ​#发工资时间看公司#小编刚看到这个话题的第一印象&#xff0c;想的是发工资时间无非是公司实力的体现&#xff0c;工资发的越早证明这个公司的现金流越稳定强大。 打开评论区&#xff0c;不…

超详细指南:苹果商店美版账号申请与支付宝充值攻略!

文章目录 1. 环境准备1.1 硬件条件1.2 软件条件1.3 其他要求 2. 申请美版账号2.1 添加基本信息2.2 登陆商店2.3 跳过信用卡填写2.4 地址信息 3. 购买礼品卡3.1 登陆pockyt商店3.2 注册pockyt账号3.3 搜索和购买3.3.1 搜索3.3.2 支付 3.4 获取兑换码3.5 商店地址怎么来&#xff…

第一本电子书问世 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 7 月 4 日&#xff0c;在 1998 年的今天&#xff0c;美国“火星探路者”宇宙飞船经过 4 亿多公里的航行&#xff0c;成功地登陆火星并释放了一个机器人在火星探…

OpenAI API-KEY 余额如何查询?如何在线购买卡密自助发货网址?

很多播播资源会员问一个OpenAI接口的5刀的KEY能使用多少次&#xff1f;这问题真回答不上来。经多轮测试使用次数大概2-5千次以上&#xff0c;问答只有调用API才会消耗tokens&#xff0c;tokens调用根回答的字数也有关系&#xff0c;Token统计包括了&#xff1a;指令、输入、输出…

如何更高效的和ChatGPT进行交流?

如果你想与ChatGPT有效地交流&#xff0c;以下是一些能帮你提高效率的技巧 1. 清晰明确的表达 确保你的问题清晰明确&#xff0c;以便ChatGPT能够清楚地理解你的问题。 向ChatGPT提问的最重要方法之一是清晰明确。模糊或含糊不清表达可能会导致得出不准确或毫不相关的答案。尽…

用 ChatGPT 作为程序员的协助工具时,需要掌握的技巧你学会了吗?

我最近一直在加班&#xff0c;加班到晚上9点到10点左右。虽然我们一般晚上8点半就可以自己走了&#xff0c;但我都是自愿加班的。昨天我甚至加班到了差不多10点半&#xff0c;回家已经11点了。 为什么自愿加班呢&#xff1f;因为我们的工作量很大&#xff0c;而且公司对待新人…

ChatGPT应用技巧一:思维链(CoT)提示

原文&#xff1a;https://baijiahao.baidu.com/s?id1759881073412430236&wfrspider&forpc 提示工程是什么&#xff1f; 提示工程&#xff08;prompt engineering&#xff09;讲的是如何同AI交流的一门学问。在未来&#xff0c;这方面的知识就像英语一样&#xff0c;属…

【ChatGPT】 AI 手把手一步一步教学 Self-Attention:这些动图和代码让你一次读懂ChatGPT背后的“自注意力”

BERT 及其多种变体已经在多种语言理解任务上取得了非常出色的表现,这些架构全都基于 Transformer,而 Transformer 又使用了一种名为「自注意力」的方法。本文将通过图示和代码对自注意力机制进行透彻的解读。当然,在阅读本文之前,你可能也想了解什么是注意力机制。没有问题…