首页 > 其他分享 >Azure OpenAI入门(二):了解提示工程

Azure OpenAI入门(二):了解提示工程

时间:2023-04-08 10:32:01浏览次数:32  
标签:prompt 入门 提示 openai penalty params Azure OpenAI

1 基础环境配置

1. 测试先决条件:

l Python 3.7.1 或更高版本

l 安装openai客户端和python-dotenv、langchain

pip install openai python-dotenv langchain

Azure OpenAI入门(二):了解提示工程_补全

2. 导入库和配置Azure Openai相关凭据

#初始化链接
import openai
import os
import IPython
from langchain.llms import OpenAI
from dotenv import load_dotenv

load_dotenv()

# Azure OpenAI API configuration
openai.api_type = "azure"
openai.api_key = ""
openai.api_base =  ""
openai.api_version = '2022-12-01'
model_deployment_name ="gpt-35-turbo"

# for LangChain
#os.environ["OPENAI_API_KEY"] = os.getenv("")
#os.environ["SERPAPI_API_KEY"] = os.getenv("SERPAPI_API_KEY")

def set_open_params(
 model = model_deployment_name,
 temperature = 0,
 max_tokens = 1024,
 top_p = 1,
 frequency_penalty = 0,
 presence_penalty = 0,
):
 """ set openai parameters"""

 openai_params = {}    

 openai_params['model'] = model
 openai_params['temperature'] = temperature
 openai_params['max_tokens'] = max_tokens
 openai_params['top_p'] = top_p
 openai_params['frequency_penalty'] = frequency_penalty
 openai_params['presence_penalty'] = presence_penalty
 return openai_params

def get_completion(params, prompt):
 """ GET completion from openai api """

 response = openai.Completion.create(
 engine = params['model'],
 prompt = prompt,
 temperature = params['temperature'],
 max_tokens = params['max_tokens'],
 top_p = params['top_p'],
 frequency_penalty = params['frequency_penalty'],
 presence_penalty = params['presence_penalty'],
 return response

2 提示工程

提示工程(Prompt engineering)是人工智能中的一个概念,特别是自然语言处理(NLP)。 在提示工程中,任务的描述会被嵌入到输入中。例如,不是隐含地给予模型一定的参数,而是以问题的形式直接输入。

提示工程的典型工作方式是将一个或多个任务转换为基于提示的数据集,并通过所谓的“基于提示的学习(prompt-based learning)”来训练语言模型。

提示工程可以从一个大型的“冻结”预训练语言模型开始工作,其中只学习了提示的表示方法,即所谓的“前缀调整(prefix-tuning)”或“提示调整(prompt tuning)”。

设计提示词时,将指令放在提示符的开头,并使用###或"""来分隔指令和上下文

1. 补全和生成示例的prompt

#基础用法
params = set_open_params(temperature=0,top_p=1)

#补全和生成示例
prompt = "天空是"
response = get_completion(params, prompt)
IPython.display.Markdown(response.choices[0].text)

模型按照我们提示词补全了文字,并生成了类似的示例 

Azure OpenAI入门(二):了解提示工程_python_02

2. 文本总结概述

文本总结概述可以把长段文字内容重新整理为更简洁的表述,比如:

#文本总结和概述
prompt = """抗生素是一种用于治疗细菌感染的药物。它们要么杀死细菌,要么阻止细菌繁殖,让身体的免疫系统对抗感染。抗生素通常以药丸、胶囊或液体溶液的形式口服,有时通过静脉注射。它们对病毒感染无效,使用不当可能导致抗生素耐药性。

请用一句话总结上面的句子:"""

 OpenAI回复:

Azure OpenAI入门(二):了解提示工程_API_03

 

3. 阅读理解,按照要求回答问题

#阅读理解并回答问题
prompt = """根据下面的语境回答问题。回答要简洁明了。如果不确定答案,回答“不确定”。
背景:Teplizumab起源于新泽西州一家名为Ortho Pharmaceutical的制药公司。在那里,科学家们制造出了这种抗体的早期版本,称为OKT3。最初来源于小鼠的这种分子能够结合到T细胞的表面并限制其杀伤细胞的潜力。1986年,它被批准用于预防肾移植后的器官排斥反应,这使它成为第一个允许用于人类的治疗性抗体。
问:OKT3最初的来源是什么?
回答:"""

 OpenAI回复:

Azure OpenAI入门(二):了解提示工程_API_04


4. 分析文本情感

#文本情感分析
prompt = """将文本分为中性、否定或肯定。
我觉得食物还可以。
情绪:"""

 OpenAI回复:

Azure OpenAI入门(二):了解提示工程_补全_05

5. 尝试角色扮演

我们可以让AI扮演相关的角色来和我们进行对话,比如:

· 假装你是马克吐温

· 假装你要去会见男/女朋友

· 从现在开始,你就是….

#角色扮演
prompt = """以下是与卡尔·史瓦西的对话。卡尔·史瓦西他是黑洞发现者。
人类:你好,你是谁?
卡尔·史瓦西:我是德国天文学家卡尔·史瓦西,黑洞的发现者。
人类:你能告诉我黑洞是怎么产生的吗?
卡尔·史瓦西:"""

 OpenAI回复:

Azure OpenAI入门(二):了解提示工程_python_06

6. 推理

#推理
prompt = """这组中的奇数加起来是偶数: 15, 32, 5, 13, 82, 7, 1. 
通过将问题分解为多个步骤来解决。首先,找出奇数,将它们相加,并指出结果是奇数还是偶数."""

OpenAI回复:

Azure OpenAI入门(二):了解提示工程_ChatGPT_07

 

标签:prompt,入门,提示,openai,penalty,params,Azure,OpenAI
From: https://blog.51cto.com/lixun/6177473

相关文章

  • Docker 从入门到精通(二) 搭建本地仓库
    一,本地安装#yuminstall-ypython-devellibevent-develpython-pipgccxz-devel#pipinstalldocker-registry也可以从docker-registry(https://github.com/docker/docker-registry)项目下载源码进行安装。二,使用官方registry镜像#dockerrun-d-p5000:5000registry......
  • Kubernetes 基础入门
    一、Kubernetes简介一、背景1、部署方式的变迁传统时代的部署在物理服务器上运行应用程序无法为应用程序定义资源边界导致资源分配问题例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。......
  • CompletableFuture从入门到精通?算了,入个门就行了
    FuturevsCompletableFuture准备工作为了便于后续更好地调试和学习,我们需要定义一个工具类CommonUtils辅助我们对知识的理解。这个工具类总共四个方法readFile:读取指定路径的文件内容sleepMillis:休眠指定的毫秒数sleepSecond:休眠指定的秒数printThreadLog:打印携带线程信息......
  • Spring源码系列一:入门——Hello World
    前言讲解Spring之前,我们首先梳理下Spring有哪些知识点可以进行入手源码分析,比如:SpringIOC依赖注入SpringAOP切面编程SpringBean的声明周期底层原理Spring初始化底层原理SpringTransaction事务底层原理HelloWorld通过这些知识点,后续我们慢慢在深入Spring的使用及原......
  • 第135篇:Three.js基础入门
    好家伙,这东西太帅了,我要学会 先放张帅图(都是用three.js做出来的,这我学习动力直接拉满)  还有另外一个Junniis...帧数太高,录不了 开始学习官方文档1.Three.js是什么?Three.js是一款运行在浏览器中的3D引擎(基于WebGL的API的封装),你可以用它来创造你所需要的......
  • Java入门
    一、Java特性和优势1.简单性:不用像C语言那样引用头文件,抛弃了指针2.面向对象3.可移植性:可以跨平台移植,一次编写多次运行4.高性能:即时编译5.分布式6.动态性:反射机制7.多线程8.安全性9.健壮性二、Java三大版本1.JavaSE:标准版(桌面开发,控制台开发等)2.JavaME:嵌入式开发(......
  • 【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问
    问题描述使用AzureRedis服务,客户端使用Redisson3.X,在近期MicrosoftAzure对Redis服务进行大规模变动升级(Redis版本由4升级到6),对于这次升级的影响有以下的问题? 问题解释问题一:Redis6.0和Redisson3.X之间是否存在任何兼容问题,或任何性能问题?Redis版本6与版......
  • odoo 开发入门教程系列-约束(Constraints)
    约束(Constraints)上一章介绍了向模型中添加一些业务逻辑的能力。我们现在可以将按钮链接到业务代码,但如何防止用户输入错误的数据?例如,在我们的房地产模块中,没有什么可以阻止用户设置负预期价格。odoo提供了两种设置自动验证恒定式的方法:Python约束andSQL约束。SQL参考:与此......
  • 【web 开发基础】PHP 的流程控制之嵌套(巢状)条件分支结构 -PHP 快速入门 (15)
    嵌套条件分支结构嵌套条件分支结构,也称为巢状条件分支结构。其实就是将if语句进行嵌套,即是在if或者else后面的语句块中又包含if语句。if语句可以无限层第嵌套在其他if语句中,这给程序的不同部分的条件执行提供了充分的弹性,是程序设计中经常使用的技术。其语法格式如下所示:if(表达式1......
  • Springfox与SpringDoc——swagger如何选择(SpringDoc入门)
     本文分享自天翼云开发者社区@《Springfox与SpringDoc——swagger如何选择(SpringDoc入门)》,作者:才开始学技术的小白  0.引言之前写过一篇关于swagger(实际上是springfox)的使用指南(https://www.ctyun.cn/developer/article/371704742199365),涵盖了本人在开发与学习的时候碰......