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

article/2024/12/22 22:57:19

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://chatgpt.dhexx.cn/article/hjmByBuX.shtml

相关文章

从ChatGPT出发:大模型与自然语言模型

目录 引言基石故事的开始:Transformer异姓兄弟:GPT、Bert与GPT-2GPTBertGPT-2 大力出奇迹:GPT3模型的进化:InstructGPT ChatGPT代码库TransformerGPT-2GPT-3InstructGPT 未来的工作安全性&有效性算力与标注代价的平衡 参考文献…

NLP:《ChatGPT: Optimizing Language Models for Dialogue一种优化的对话语言模型》翻译与解读

NLP:《ChatGPT: Optimizing Language Models for Dialogue一种优化的对话语言模型》翻译与解读 目录 《ChatGPT: Optimizing Language Models for Dialogue》翻译与解读 Abstract Samples 回答修改代码 回答道德问题 回答数学问题 回答如何写信 Methods 三…

ChatGPT的初步学习和认识

文章目录 (一) 使用ChatGPT的体验(二) ChatGPT的优缺点ChatGPT的优势包括:ChatGPT的缺点: (三) ChatGPT的功能 (一) 使用ChatGPT的体验 1)使用chatGPT进行学习,知识点整理 2) 使用chatgpt进行编程 3)请教…

从语言模型到ChatGPT,大模型训练全攻略

文|python 前言 你是否想过,为什么ChatGPT能够如此火爆呢?我认为这主要是因为ChatGPT提供了好玩、有用的对话式交互功能,能够为用户提供帮助,而不仅仅是依靠“大”模型的魅力。毕竟,GPT-3在2020年就已经推出…

ChatGPT:优化对话的语言模型

OpenAI 已经训练了一个名为 ChatGPT 的模型,它以对话方式进行交互。对话格式使 ChatGPT 可以回答后续问题、承认错误、挑战不正确的前提并拒绝不适当的请求。 今天主要测试了ChatGPT. C# 实现冒泡排序, using System;namespace BubbleSortExample {cl…

关于最近爆火的chatGPT大型语言模型人工智能介绍

1 chatGPT 简介 ChatGPT,一个由OpenAI训练的大型语言模型。被设计为能够理解和回答各种自然语言的问题,包括常见的知识性问题、技术问题、常见的语言问题以及其他各种主题。 chatGPT使用了大规模的神经网络,从海量的文本语料库中学习语言知识…

一文带你了解爆火的Chat GPT

* 导读 OpenAI近期发布聊天机器人模型ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验,圈内外都纷纷惊呼。 为…

midjourney ai与ChatGPT结合使用,大大提升返回结果准确率

最近在试用midjourney ai绘图,结合ChatGPT给到更多的特征来说明 如果只是单纯的提问,可能返回杂乱的图片. 提问时要把相关特征,风格,物件都要说清楚,ai才能识别得到,放几张体验照: 生成结束后将会出现两…

万字追溯ChatGPT各项能力的起源

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年1月份热门报告合集 ChatGPT团队背景研究报告 ChatGPT的发展历程、原理、技术架构及未来方向 ChatGPT使用总结:150个ChatGPT提示此模板 ChatGPT数据集之谜 …

刚刚,我们和ChatGPT聊了聊边缘计算

ChatGPT是由美国OpenAI研发的聊天机器人程序,于2022年11月30日发布。上线仅仅两个月,ChatGPT的活跃用户就突破一亿,掀起了新一轮人工智能浪潮。作为一款优秀智能聊天机器人模型,ChatGPT在很多事情上都有着独特的见解。今天&#x…

ChatGPT:如何使用正在改变一切的 AI 聊天机器人

转载自ChatGPT: How to use the AI tool thats changing everything | Digital Trends DownLoad 个人中心 ChatGPT 继续通过AI 生成的内容让互联网眼花缭乱,从一个新颖的聊天机器人转变为一项推动下一个创新时代的技术。不过,并不是每个人都参与其中&…

最新开源版ChatGPT搭建源码 含电脑端手机端+小程序端+详细安装部署教程

分享一个最新开源版ChatGPT搭建源码,源码全开源可二开,含电脑端手机端小程序端,对接流量主功能,含详细安装部署教程,支持用户套餐赚取收益等模式设置。 系统功能介绍:系统支持无限SAAS多开,可以…

如何使用MidJourney和ChatGPT制作动画短片?

Ammaar Reshi 当我制作这部使用生成式人工智能制作的蝙蝠侠动画短片时——我不知道它会在不到一周的时间内获得 700 万次观看。 想学!给我们讲解下是整体的制作流程吧!! opus Ammaar Reshi 我不是电影制作人,也从未写过剧本。我只…

人人都能懂的ChatGPT解读

作者 | 张杰,中关村科金技术副总裁 策划 | 刘燕 ChatGPT 发布了两个多月,热度不降反增,不断火爆出圈。是时候,为不懂 AI 技术的同学们白话科普一下了。本文将用浅显且不严谨的语言解惑以下问题:ChatGPT 为什么能火起来…

询问ChatGPT的高质量答案艺术——提示工程指南

目录 前言一、提示工程简介二、提示技巧2-1、生成法律文件2-2、添加提示技巧 三、角色扮演3-1、智能手机产品描述3-2、添加角色扮演 四、标准提示4-1、写一篇有关于新智能手机的评论4-2、添加标准提示、角色提示、种子词提示等等 五、示例很少、或者没有示例5-1、生成一个手机配…

最新版chatgpt4人工智能系统源码 支持电脑手机+小程序

分享一款最新的chatgpt4人工智能系统源码,完美运营版,系统支持电脑版手机版小程序端三合一,含完整代码包和详细的安装部署教程。 系统主要功能一览: 1、可以在电脑端、手机端上使用,还可以通过小程序进行在线交互和对…

【ChatGPT实战案例】ChatGPT快速生成短视频

目录 使用工具 实现方法(任选一种) 使用步骤 方法1示例:ChatGPT百度AIGC 方法2示例:ChatGPT剪映 使用工具 - ChatGPT - 剪映:手机or电脑应用商场下载app - 百度AIGC:度加创作工具-百度官方出品-人人…

【chatgpt】学习开源项目chatgpt-web,搭建自己的chatgpt服务,功能非常丰富有打字效果

目录 前言1,开源的chatgpt项目2,项目可以直接使用docker-compose跑起来3,关于打字模式SSE, octet-stream (打字特效)4,关于内容存储5,总结 前言 本文的原文连接是: https://blog.csd…

chatGPT的体验,是不是真智能?

目录 🏆一、前言 🏆二、安装 🏆三、普通对话 🚩1、chatGPT的ikun性 🚩2、chatGPT的日常对话 🏆四、实用能力 🏆五、代码改正 🏆六、写代码 🏆七、讲解代码 🏆…

chatgpt赋能python:Python手机怎么下载:简易教程

Python手机怎么下载:简易教程 随着移动互联网和智能手机的普及,越来越多的人开始使用手机进行日常工作和娱乐,而Python语言作为一种广泛应用于科学计算、数据分析、Web开发等领域的编程语言,也逐渐受到手机用户的青睐。那么&…