聊聊如何设计一个优秀的提示应用程序?

wufei123 发布于 2023-04-24 阅读(751)

在本指南中,我们将介绍一些高级和有趣的方法,我们可以使用提示工程来执行有用和更高级的任务。

请注意,此部分正在大量开发中。 主题:

  • 生成数据

  • 程序辅助语言模型

  • Python 笔记本

一、生成数据

LLM 具有强大的文本生成能力。使用有效的提示策略可以引导模型产生更好、更一致和更符合事实的响应。LLM 对于生成对运行各种实验有用的数据也特别有用。例如,我们可以使用它为情感分类器生成快速样本,如下所示:

迅速的:

1

2

3

Produce 10 exemplars for sentiment analysis. Examples are categorized as either positive or negative. Produce 2 negative examples and 8 positive examples. Use this format for the examples:

Q: <sentence>

A: <sentiment></sentiment></sentence>

输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

Q: 我刚得到了有史以来最好的消息!

A: 积极的

 

Q: 我们刚刚在工作中得到了加薪!

A: 积极的

 

Q: 我为今天所取得的成就感到非常自豪。

A: 积极的

 

Q: 我度过了有史以来最好的一天!

A: 积极的

 

Q: 我非常期待周末的到来。

A: 积极的

 

Q: 我刚收到了有史以来最好的礼物!

A: 积极的

 

Q: 我现在非常开心。

A: 积极的

 

Q: 我很幸运有这么一支了不起的家庭。

A: 积极的

 

Q: 外面的天气很阴暗。

A: 消极的

 

Q: 我刚得到了一些可怕的消息。

A: 消极的

这非常有用。我们将此示例用于指南另一部分中的不同测试。

二、PAL(程序辅助语言模型)

Gao 等人 (2022)提出了一种使用 LLM 阅读自然语言问题并生成程序作为中间推理步骤的方法。创造的程序辅助语言模型 (PAL) 与思维链提示的不同之处在于,它不是使用自由格式的文本来获得解决方案,而是将解决方案步骤卸载到编程运行时,例如 Python 解释器。



我们一起聊聊提示应用程序



让我们看一个使用 LangChain 和 OpenAI GPT-3 的例子。我们有兴趣开发一个简单的应用程序,该应用程序能够解释所提出的问题并通过利用 Python 解释器提供答案。

具体来说,我们有兴趣创建一个函数,允许使用 LLM 来回答需要理解日期的问题。我们将为 LLM 提供提示,其中包括从此处采用的一些范例。

这些是我们需要的导入:

1

2

3

4

5

6

import openai

from datetime import datetime

from dateutil.relativedelta import relativedelta

import os

from langchain.llms import OpenAI

from dotenv import load_dotenv

让我们首先配置一些东西:

1

load_dotenv()

API configuration

1

openai.api_key = os.getenv("OPENAI_API_KEY")

for LangChain

1

os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")

设置模型实例:

1

llm = OpenAI(model_name='text-davinci-003', temperature=0)

设置提示+问题:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

question = "Today is 27 February 2023. I was born exactly 25 years ago. What is the date I was born in MM/DD/YYYY?"

 

DATE_UNDERSTANDING_PROMPT = """

# Q: 2015 is coming in 36 hours. What is the date one week from today in MM/DD/YYYY?

 

# If 2015 is coming in 36 hours, then today is 36 hours before.

 

today = datetime(2015, 1, 1) - relativedelta(hours=36)

 

# One week from today,

 

one_week_from_today = today + relativedelta(weeks=1)

 

# The answer formatted with %m/%d/%Y is

 

one_week_from_today.strftime('%m/%d/%Y')

 

# Q: The first day of 2019 is a Tuesday, and today is the first Monday of 2019. What is the date today in MM/DD/YYYY?

 

# If the first day of 2019 is a Tuesday, and today is the first Monday of 2019, then today is 6 days later.

 

today = datetime(2019, 1, 1) + relativedelta(days=6)

 

# The answer formatted with %m/%d/%Y is

 

today.strftime('%m/%d/%Y')

 

# Q: The concert was scheduled to be on 06/01/1943, but was delayed by one day to today. What is the date 10 days ago in MM/DD/YYYY?

 

# If the concert was scheduled to be on 06/01/1943, but was delayed by one day to today, then today is one day later.

 

today = datetime(1943, 6, 1) + relativedelta(days=1)

 

# 10 days ago,

 

ten_days_ago = today - relativedelta(days=10)

 

# The answer formatted with %m/%d/%Y is

 

ten_days_ago.strftime('%m/%d/%Y')

 

# Q: It is 4/19/1969 today. What is the date 24 hours later in MM/DD/YYYY?

 

# It is 4/19/1969 today.

 

today = datetime(1969, 4, 19)

 

# 24 hours later,

 

later = today + relativedelta(hours=24)

 

# The answer formatted with %m/%d/%Y is

 

today.strftime('%m/%d/%Y')

# Q: Jane thought today is 3/11/2002, but today is in fact Mar 12, which is 1 day later. What is the date 24 hours later in MM/DD/YYYY?

 

# If Jane thought today is 3/11/2002, but today is in fact Mar 12, then today is 3/1/2002.

 

today = datetime(2002, 3, 12)

 

# 24 hours later,

 

later = today + relativedelta(hours=24)

 

# The answer formatted with %m/%d/%Y is

 

later.strftime('%m/%d/%Y')

 

# Q: Jane was born on the last day of Feburary in 2001. Today is her 16-year-old birthday. What is the date yesterday in MM/DD/YYYY?

 

# If Jane was born on the last day of Feburary in 2001 and today is her 16-year-old birthday, then today is 16 years later.

 

today = datetime(2001, 2, 28) + relativedelta(years=16)

 

# Yesterday,

 

yesterday = today - relativedelta(days=1)

 

# The answer formatted with %m/%d/%Y is

 

yesterday.strftime('%m/%d/%Y')

 

# Q: {question}

 

""".strip() + 'n'

1

2

llm_out = llm(DATE_UNDERSTANDING_PROMPT.format(question=question))

print(llm_out)

1

2

exec(llm_out)

print(born)

这将输出以下内容:02/27/1998

以上就是聊聊如何设计一个优秀的提示应用程序?的详细内容


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻42948