迭代
- 对 ChatGPT 第一次回答的答案就采用的情况是很少的
- 我们需要一个良好的迭代过程来持续改进我们的提示
- 一个优秀的提示工程师不在于知道多少优秀的提示词,而是这个提示的方式方法,流程之类
基本的迭代过程:
- 提示词清楚明确
- 分析结果为何不符合预期
- 改善提示词
- 重复上述过程
准备工作
python
! pip install --upgrade openai
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting openai
Downloading openai-0.27.6-py3-none-any.whl (71 kB)
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m71.9/71.9 kB[0m [31m3.3 MB/s[0m eta [36m0:00:00[0m
[?25hRequirement already satisfied: requests>=2.20 in /usr/local/lib/python3.10/dist-packages (from openai) (2.27.1)
Collecting aiohttp
Downloading aiohttp-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m1.0/1.0 MB[0m [31m22.4 MB/s[0m eta [36m0:00:00[0m
[?25hRequirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from openai) (4.65.0)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (3.4)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (2022.12.7)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (1.26.15)
Collecting async-timeout<5.0,>=4.0.0a3
Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting aiosignal>=1.1.2
Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting yarl<2.0,>=1.0
Downloading yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268 kB)
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m268.8/268.8 kB[0m [31m24.1 MB/s[0m eta [36m0:00:00[0m
[?25hCollecting multidict<7.0,>=4.5
Downloading multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m114.5/114.5 kB[0m [31m12.5 MB/s[0m eta [36m0:00:00[0m
[?25hCollecting frozenlist>=1.1.1
Downloading frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149 kB)
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m149.6/149.6 kB[0m [31m15.4 MB/s[0m eta [36m0:00:00[0m
[?25hRequirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (23.1.0)
Installing collected packages: multidict, frozenlist, async-timeout, yarl, aiosignal, aiohttp, openai
Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 frozenlist-1.3.3 multidict-6.0.4 openai-0.27.6 yarl-1.9.2
python
import os
os.environ['OPENAI_API_KEY'] = '<your openai api key>'
python
import openai
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0
)
return response.choices[0].message["content"]
尝试生成一个个人博客主页
python
from IPython.display import display, HTML
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
其中博客内容简介的两部分分居两栏
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
上述的<博客内容简介第一部分>和<博客内容简介第二部分>分居两栏
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
上述的<博客内容简介第一部分>和<博客内容简介第二部分>分居两栏;<博客图片使用的图片链接>的图片不要超过页面大小的 20%
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
上述的<博客内容简介第一部分>和<博客内容简介第二部分>分居两栏,并处于图片的下方;
<博客图片使用的图片链接>的图片不要超过页面大小的 20%
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,可以参考互联网上流行的大多数博客主页布局,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
------------------------------------------------------------------------------
上述的<博客内容简介第一部分>和<博客内容简介第二部分>为灰色、带圆角的背景块,这两部分内容排在图片后面、下方;
<博客图片使用的图片链接>的图片不要超过页面大小的 20%
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,可以参考互联网上流行的大多数博客主页布局,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
------------------------------------------------------------------------------
上述的<博客内容简介第一部分>和<博客内容简介第二部分>分别为灰色、带圆角的背景块,这两部分内容排在图片后面、下方;
<博客图片使用的图片链接>的图片不要超过页面大小的 20%
"""
res = get_completion(prompt)
display(HTML(res))
python
prompt = f"""
请生成一个简洁、现代化的个人博客主页,可以参考互联网上流行的大多数博客主页布局,生成一个可运行的 HTML 代码,其中包含如下内容:
<博客标题>: 'justin3go 的个人博客'
<博客站长个人介绍>: '坚持深耕技术领域的 T 型前端程序员'
<博客内容简介第一部分>:'博客--和大家平常见到的常规博客一样,可能偶尔一个小时或半天的时间去研究并输出的一小块知识,相对来说更多带有自己的思考和理解...'
<博客内容简介第二部分>:'笔记--更多则是自己平常通过视频教程、文档等学习做的笔记了,相对博客来说分类更加明确,整体更加系统,但更多是初次接触某个领域所做的笔记...'
<博客图片使用的图片链接>:'https://oss.justin3go.com/justin3goAvatar.png'
------------------------------------------------------------------------------
下方()里面的内容仅供参考,你可以根据自己的经验谨慎地突破下方描述的限制,但一切的前提是为了简洁、好看、现代化:
(上述的<博客内容简介第一部分>和<博客内容简介第二部分>分别为灰色、带圆角的背景块,这两部分内容排在图片后面、下方;
<博客图片使用的图片链接>的图片不要超过页面大小的 20%)
"""
res = get_completion(prompt)
display(HTML(res))
python