与ChatGPT进行高效对话,生成想要的代码

Prompt Engine:释放创造力的新工具

  • Prompt Engine
    • Prompt Engine的背景和目的
      • 简介
      • 背景
      • 目的
    • 如何让 Codex 生成您想要的代码
    • 什么是prompt-engine-py
      • 安装
      • 简介
        • 架构图
        • 下面是PromptEngine类中可以用到的函数以及继承的函数
    • 使用PromptEngine生成prompt
    • 使用CodeEngine生成prompt
    • 使用ChrtEngine生成prompt
    • YAML Representation

Prompt Engine

Prompt Engine的背景和目的

简介

Prompt Engine是一种自然语言生成工具,旨在帮助人们更轻松地编写和生成文本内容,特别是针对机器学习领域。Prompt Engine可以通过输入简短的文本提示或指令,自动生成符合上下文的语言内容,从而缩短文本生成的时间和提高生成内容的质量。

背景

像GPT-3和Codex这样的LLM一直在突破AI能力的限制——它们可以生成语言和代码,但也能够生成诸如问题回答、总结、分类和对话等及时性行为。在LLM中启用特定行为的最佳技术之一被称为prompt engineering——精心设计输入,引导模型产生某些类型的输出。给出少量输入和输出的示例,模型就可以根据示例输出你想要的输出类型。

目的

Prompt Engine的目的是为了使自然语言生成变得更加容易和高效,可以保证输出的文本具有一定的质量和准确性,也可以处理大量的文本数据,从中提取有用的信息,并为应用程序提供更好的智能化服务。

如何让 Codex 生成您想要的代码

  1. 第一版:普通的prompt
    在这里插入图片描述

  2. 第二版:加入High level Task Description
    告诉ChrtGPT生成代码详细的需求,比如导入所需要的包、每行都要求注释等…
    在这里插入图片描述

  3. 第三版:加入Examples,让CodeX的输入和输出更加符合你想要的答案
    加入示例,让ChrtGPT生成的代码,更像你示例那样,遵从你的风格。
    在这里插入图片描述

  4. 第四版:加入High Level Context
    有时候生成的代码,需要的库是它不知道的,也有可能在后续生产代码使用到你之前写的函数。这个时候我们可以告诉他这些函数的清单,他就能在生成代码的时候,加入你告诉他的这些函数
    在这里插入图片描述

  5. 第五版:加入Session Buffer
    在特定场景中,我们直接问"他们一起多少斤",ChrtGPT是不知道"他们"是指的谁的,这个时候我们就需要把历史的会话记录告诉ChrtGPT,从而知道了上下文,他就能给出准确的答案。
    在这里插入图片描述

什么是prompt-engine-py

github: prompt-engine-py

安装

pip install prompt-engine-py

简介

prompt-engine-py是微软abhimasand Abhishek Masand提供的一款开源的python第三方库,它同时支持PromptEngine、CodeEngine、ChatEngine,这三种都促进了prompt engineering的模式,其中prompt 由描述输入和输出的示例、用户和模型通信时正在进行的输入/输出的“对话框”(会话缓冲区),以及“对话框”确保模型(无状态)具有到目前为止对话中发生的内容的上下文组成。

架构图

架构图
示例

下面是PromptEngine类中可以用到的函数以及继承的函数

在这里插入图片描述

使用PromptEngine生成prompt

示例:

from prompt_engine.prompt_engine import PromptEngine, PromptEngineConfig
from prompt_engine.interaction import Interactionconfig = PromptEngineConfig(description_prefix="###", input_prefix="##", output_prefix="")  # 定义描述的前缀、输入与输出前缀
description = "test"  # 定义描述
dialog = [Interaction("Hi", "print('Hi')"), Interaction("Bye", "print('Bye')")]  # 定义历史会话
examples = [Interaction("Hello", "print('Hello')"), Interaction("Goodbye", "print('Goodbye')")]  # 定义示例
flow_reset_text = "This is the flow reset text"  # 流程重置文本
prompt_engine = PromptEngine(config, description, dialog=dialog, flow_reset_text=flow_reset_text, examples=examples)  # 初始化PromptEngine
prompt_engine.add_interaction("Bye", "print('Bye')")  # 添加一个会话
prompt_engine.remove_first_interaction()  # 删除第一个会话
prompt_engine.add_interaction("Hello there", "print('Hello there')")  # 添加一个会话
prompt_engine.remove_last_interaction()  # 删除最后一个会话
prompt_engine.add_example("Hello there", "print('Hello there')")  # 添加一个示例
print(prompt_engine.build_prompt("Hello"))  # 生成 prompt 文本

输出:

### test## Hello
print('Hello')## Goodbye
print('Goodbye')## Hello there
print('Hello there')### This is the flow reset text## Bye
print('Bye')## Bye
print('Bye')## Hello

使用CodeEngine生成prompt

Code Engine 为 自然语言转化为代码的场景创建prompt
Code prompt通常需要一个描述,描述应该给出关于模型应该生成的编程语言和应该使用的库,还需要提供一下需求
并且还要给出交互的示例,说明生成的代码类型

CodeEngine默认使用 Python 作为编程语言,您可以将不同的CodeEngineConfig传递给构造函数来为不同的语言创建prompt

假如如果我们想要生成 JavaScript 的prompt,我们可以通过 CodeEngine 实例化 javascript_config 来指定它应该使用的注释运算符:

javascript_config = CodeEngineConfig(description_comment_operator = "/*/", description_comment_close_operator = "/*/", comment_operator = "/*", comment_close_operator = "*/")
code_engine = CodeEngine(config = javascript_config, description = description, examples = examples)

示例:

from prompt_engine.code_engine import CodeEngine, CodeEngineConfig
from prompt_engine.interaction import Interactiondescription = "将自然语言命令转化至JavaScript代码。代码将命令的结果记录到控制台"
examples = [Interaction("18与10的和", "console.log(10 + 18)"),Interaction("18乘以10", "console.log(10 * 18)")
]
javascript_config = CodeEngineConfig(description_comment_operator="/*/", description_comment_close_operator="/*/",comment_operator="/*", comment_close_operator="*/")
code_engine = CodeEngine(config=javascript_config, description=description, examples=examples)query = "1018乘以4的9次方等于多少?"
prompt = code_engine.build_prompt(query)
print(prompt)

输出:

/*/ 将自然语言命令转化至JavaScript代码。代码将命令的结果记录到控制台 /*//* 18与10的和 */
console.log(10 + 18)/* 18乘以10 */
console.log(10 * 18)/* 1018乘以4的9次方等于多少? */

使用ChrtEngine生成prompt

就像Code Engine一样,Chat Engine创建prompt 应该带有描述和示例,不同之处在于Chat Engine为对话场景创建prompt,其中用户和模型都使用自然语言。
示例:

from prompt_engine.chat_engine import ChatEngine, ChatEngineConfig
from prompt_engine.model_config import ModelConfig
from prompt_engine.interaction import InteractionchatEngineConfig = ChatEngineConfig(ModelConfig(max_tokens=1024),user_name="唐哥哥",bot_name="戈登"
)
description = "与机器人戈登的对话。戈登用厌恶的语气进行对话,后续并问了很多问题。"
examples = [Interaction("你是谁?", "我又不认识你,干嘛问我是谁. 你先回答一下你是谁?"),Interaction("说得好,我叫唐哥哥,性别男,27岁,你呢?", "好的,我已经认识你了,我叫戈登。这样可以了吧?")
]
chat_engine = ChatEngine(chatEngineConfig, description, examples)
user_query = "你的家住哪里?"
prompt = chat_engine.build_prompt(user_query)
print(prompt)

输出:

与机器人戈登的对话。戈登用厌恶的语气进行对话,后续并问了很多问题。唐哥哥: 你是谁?
戈登: 我又不认识你,干嘛问我是谁. 你先回答一下你是谁?唐哥哥: 说得好,我叫唐哥哥,性别男,27岁,你呢?
戈登: 好的,我已经认识你了,我叫戈登。这样可以了吧?唐哥哥: 你的家住哪里?

在这里插入图片描述

YAML Representation

我们可以把不同的prompt变成不同的yaml文件,这样我们就可以不同的场景进行随意的切换,prompt-engine提供了YAML文件加载到prompt-engine类中的方法。

示例:
chat.yaml

type: chat-engine
config:model-config:max-tokens: 1024user-name: "Abhishek"bot-name: "Bot"
description: "What is the possibility of an event happening?"
examples:- input: "Roam around Mars"response: "This will be possible in a couple years"- input: "Drive a car"response: "This is possible after you get a learner drivers license"
flow-reset-text: "Starting a new conversation"
dialog:- input: "Drink water"response: "Uhm...You don't do that 8 times a day?"- input: "Walk on air"response: "For that you'll need a special device"
from prompt_engine.chat_engine import ChatEngineprompt_engine = ChatEngine()with open("./examples/yaml_examples/chat.yaml") as f:prompt_engine.load_yaml(yaml_config=f.read())print(prompt_engine.build_context())

输出:

What is the possibility of an event happening?Abhishek: Roam around Mars
Bot: This will be possible in a couple yearsAbhishek: Drive a car
Bot: This is possible after you get a learner drivers licenseStarting a new conversationAbhishek: Drink water
Bot: Uhm...You don't do that 8 times a day?Abhishek: Walk on air
Bot: For that you'll need a special device

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

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

相关文章

ChatGPT的代码生成是怎么做的?「基于深度学习的代码生成方法」最新研究进展...

机器学习研究组 代码生成(Code Generation), 是指根据自然语言描述生成相关代码片段的任务. 在软件开发过程中, 常 常会面临大量重复且技术含量较低的代码编写任务, 代码生成作为最直接辅助开发人员完成编码的工作受到学术 界和工业界的广泛关注. 让机器理解用户需求, 自行完成…

一个基于 ChatGPT 的视频神器,开源了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 自今年开始,AIGC 行业爆火,直接带动了不少产业的发展,这其中自然也包括电商直播、新媒体营销等等。 虽说现在可以利用不少工具,快速基于文案…

php storm 安装,PhpStorm安装教程

PhpStorm安装教程 admin • 2020 年 07 月 01 日 下载 点击DOWNLOAD NOW下载 安装 create desktop shortcut(创建桌面快捷方式),系统32位就选32-bit,这个要勾选。 update path variable(restart needed)更新路径变量(需要重新启动),add launchers dir to the path(将启动器目…

如何帮助 ChatGPT 更好地学习和进化:纠正其错误的回答

如果您发现了 ChatGPT 的回答存在错误,可以通过向 ChatGPT 提供正确的答案来帮助它更好地学习和改进。ChatGPT 可以立即接受您提供的信息,并将其整合到它的知识库中,以便在未来类似问题的回答中更准确地回答相关问题。 1、首先回答加密用MD5…

ChatGPT的进化版?AutoGPT怎么用

AutoGPT是什么 首选给大家介绍,ChatGPT与AutoGPT的区别 目前AutoGPT被称为最接近AGI的人工智能,它是ChatGPT的进化版? “ChatGPT” 只能提供2021年9月之前的信息,所以你问它告诉我今天的天气,它回答不了 “AutoGPT” …

【终结篇】ChatGPT再“进化”,能胜任文章撰写工作吗?

本期文章由数字罗塞塔计划出品,于2023年3月9日在“浙江档案杂志”公众号首先发布,原名《兰台讲堂丨再“进化”的ChatGPT,能胜任文章撰写工作吗?》(兰台讲堂中仅选取作者和ChatGPT的部分聊天记录,本文将完整…

ChatGPT:向未来智能客服进化的必由之路

ChatGPT:向未来智能客服进化的必由之路🚀 1.什么是chatGPt1.文本分词2.语言理解3.自然语言生成 2. ChatGPT的原理3. chatgtp未来的发展趋势1.前言2.模型优化3.多语言处理4.行业应用5.智能匹配 4.chatgpt人工智能对人类社会造成的影响5.chatgtp与传统行业…

ChatGPT进化了,全新GPT-4发布,识图做网页,阅万行代码改BUG都不在话下,实在太强!...

一、开篇 近日,GPT4(Generative Pre-trained Transformer 4)的发布引起了全球范围内的轰动。GPT4是一种基于人工智能的语言生成模型,可以模拟人类的自然语言,并且可以产生高度逼真的语言和文本。其出现再次将人工智能技…

大模型训练一次200-1200万美元!ChatGPT多烧钱?

随着以ChatGPT为代表的生成式AI兴起,其背后以大模型为基础的人工智能成为业界投入的方向。 所谓“大模型”,通常是在无标注的大数据集上,采用自监督学习的方法进行训练。之后在其他场景的应用中,开发者只需要对模型进行微调&…

ChatGPT是怎么变得这么强的?拆解追溯ChatGPT各项能力的起源

©作者 | 符尧、彭昊等 最近,OpenAI 的预训练模型 ChatGPT 给人工智能领域的研究人员留下了深刻的印象和启发。毫无疑问,它又强又聪明,且跟它说话很好玩,还会写代码。它在多个方面的能力远远超过了自然语言处理研究者们的预期…

绝对想不到,Chatgpt 优缺点都有这些

ChatGPT 是一种基于自然语言处理 (NLP) 模型的对话生成程序,它的核心是通过机器学习算法训练得到的语言模型。GPT (Generative Pre-trained Transformer) 是ChatGPT的基础,这是一种使用Transformer架构的预训练语言模型。 ChatGPT的工作原理是通过输入一…

ChatGPT缺点之为什么ChatGPT、文心一言这么厉害了,还经常会把古诗词的作者弄错?

因为Chatbot模型在中国古典文学方面确实还有较大提高的空间。包括: 训练数据不够丰富。这些模型的训练数据主要来自网络爬取的文本,古典文学相关的高质量数据相对较少,导致模型对这方面知识掌握不够深入全面。 gpt3.5-框中诗句作者应为陆游 作者信息不…

ChatGPT还有哪些不足?

从技术角度来看,ChatGPT作为一个基于神经网络的自然语言处理模型,其优势在于能够处理大量的语言数据,并生成自然流畅的语言表达。ChatGPT还可以通过对话历史的分析,对当前对话进行上下文感知和情境推理,从而提供更加个…

调用科大讯飞语音转文本

文章目录 一、创建应用二、测试接口 一、创建应用 点击控制台,创建新应用 点击应用,进入详情页,可获取APPID、APISecret、APIKey 二、测试接口 安装包 pip install websocket pip install websocket-client0.57.0#!/usr/bin/env python …

“讯飞星火”大模型计划10月底赶超ChatGPT

文章目录 前言你使用过这种对话式AI吗?有什么看法或感受?“讯飞星火大模型将超越chatgpt?”这类型的人工智能对现在的社会有什么意义?这类型的人工智能,未来前景如何?申请体验写在最后 ✍创作者&#xff1a…

讯飞星火认知大模型内测【附申请链接与方式】

🥑 Welcome to Aedream同学 s blog! 🥑 一直发不出去,说是广告宣传,真离谱😭 直接把介绍内容全删了 原定于5月6日正式对外发布科大讯飞“星火”认知大模型 提前内测了!! 又一国内类chatgpt产品…

科大版中国版ChatGPT来啦!抢先体验

随着文心一言、通义千问等国内顶尖级ChatGPT大模型相继问世,具有语言理解和生成能力的人工智能正在引领行业创新发展。作为人工智能公司中的佼佼者,科大讯飞也开始加入到这场竞争中来。 4月20日,科大讯飞宣布即将于5月6日正式发布其最新的“…

科大讯飞的类ChatGPT今日发布开始大规模注册体验,手慢则无!

国外的ChatGPT要科学上网, 很多人无奈只能付费买个套壳, 盼星星盼月亮, 国产ChatGPT出来了, 百度的文心一言, 阿里的通义千问, 风风光光地开了发布会, 说是可以注册体验, 一访问官方…

ChatGPT与讯飞星火实测对比

文章目录 一、推理测试测试提示词1:假设树上有10只鸟,开枪打死1只,那么树上还有几只鸟?- 测试提示词2:一艘船10天可以渡过太平洋,请计算10艘船多少天可以渡过太平洋。测试提示词3:我爸妈结婚的时候为什么不…

科大讯飞星火认知大模型来了,和ChatGPT比怎么样

科技领域的巨头科大讯飞近日在安徽省合肥市召开了一场盛大的发布会,正式发布了其最新的讯飞星火认知大模型,引起了广泛的关注和热议。据科大讯飞董事长刘庆峰和研究院院长刘聪介绍,目前该大模型已经在文本生成、知识问答、数学能力等三大能力…