极客时间已完结课程限时免费阅读

01|重新出发,让我们学会和AI说话

01|重新出发,让我们学会和AI说话-AI大模型之美-极客时间
下载APP

01|重新出发,让我们学会和AI说话

讲述:徐文浩

时长09:33大小8.73M

你好,我是徐文浩。
欢迎你打开 AI 世界的大门。我猜你是被这段时间大火的 ChatGPT 吸引过来的吧?既然你是带着这样的目的打开了这门课程,那么我也一定会给你想要的。我们的课程会先从 ChatGPT 的主题开始,在接下来的几讲里,我会为你介绍如何使用 OpenAI 的 API 来和 AI 应用沟通。这些 API 背后,其实和 ChatGPT 一样,使用的是 OpenAI 的 GPT-3.5//GPT-4 系列的大语言模型。
整个课程,我们都会使用真实的数据、代码来演示如何利用好大语言模型。所以这一讲,我会先带你做好一系列准备工作。不过不用担心,去运行这些程序并不需要你专门去买一块昂贵的显卡。事实上,如果你不是一个程序员,而是一个产品经理,或者只是对 AI 感兴趣的非技术人,那么你可以使用浏览器就能访问的免费开发环境,来试验这些问题。
OpenAI 的 API 能做到哪些神奇的事情?号称离“通用人工智能(AGI)”已经不远的产品长什么样子?GPT-3 这样的模型和之前基于深度学习的自然语言处理解决方案又有什么不同?这些吊人胃口的问题,我会在课程里一一揭晓。
下面我们就先来做一些准备工作,注册账号并搭建开发环境。

创建 OpenAI 的 API Key

为了学习这门课程,你需要先去注册一个可以使用 OpenAI 的 API 的账号,这是账号注册的入口。目前,OpenAI 还没有向中国大陆和香港地区开放,所以账号的注册需要你自己想想办法了,如果你有好办法,也欢迎你分享在评论区。
账号注册完成之后,你点击右上角的账号,然后点击 “View API Keys”,就会进入一个管理 API Keys 的页面。
你点击下面的 “+Create new secret key” 可以创建一个新的 API Key。
API Key
对应的 API Key 你需要把它存储在一个安全的地方,后面我们调用 OpenAI 的接口都需要使用这个 API Key。
现在 OpenAI 为所有免费注册的用户都提供了 5 美元(最早是 18 美元)的免费使用 API 的额度,这个额度用来体验 API 的功能,以及学习这个课程已经够用了。如果你想要进一步将这个 API 用在实际的产品上,就需要考虑把这个账号升级成付费账号了。

搭建本地的 Jupyter Labs 开发环境

有了 API Key 之后,我们还需要搭建一个开发环境。这门课,我主要通过 Python 来讲解和演示如何使用好 AI。如果你是一个程序员,你可以自己去 Python 语言的官网下载并安装对应的开发环境。
一般来说,你还需要一个 Python 的包管理和环境管理工具,我自己比较习惯使用 Conda
conda create --name py310 python=3.10
conda activate py310
最后,还需要通过包管理工具,配置一个独立的 Python 3.10 的环境,并安装好 JupyterLab、OpenAI 以及后面要用到的一系列开发包。我把对应的 pip 命令也列在了下面,供你参考。
pip install jupyterlab==4.0.9
pip install ipywidgets==8.1.1
pip install openai==1.6.1
后续,随着我们课程的进展,你可能还需要通过 pip 来安装更多 Python 包。
安装完 JupyterLab 之后,你只需要把刚才我们获取到的 API Key 设置到环境变量里,然后启动 JupyterLab。你可以从浏览器里,通过 Jupyter Notebook 交互式地运行这个课程后面的代码,体验 OpenAI 的大语言模型神奇的效果。
export OPENAI_API_KEY=在这里写你获取到的ApiKey
jupyter-lab .
你可以选择新建 Python 3 的 Notebook,来体验交互式地运行 Python 代码调用 OpenAI 的 API。

通过 Colab 使用 JupyterLab

如果你不是一个程序员,或者你懒得在本地搭建一个开发环境。还有一个选择,就是使用 Google 提供的叫做 Colab 的线上 Python Notebook 环境。
即使你已经有了本地的开发环境,我也建议你注册一个账号。因为 Colab 可以让你免费使用一些 GPU 的资源,在你需要使用 GPU 尝试训练一些深度学习模型,而又没有一张比较好的显卡的时候,就可以直接使用它。另一方面,Colab 便于你在网络上把自己撰写的 Python 代码分享给其他人。
用Colab尝试各种Python代码
Colab 已经是一个 Python Notebook 的环境了。所以我们不需要再去安装 Python 和 JupyterLab 了。不过我们还是需要安装 OpenAI 的库,以及设定我们的 API Key。你只需要在 Notebook 开始的时候,执行下面这样一小段代码就可以做到这一点。
!pip install openai
%env OPENAI_API_KEY=在这里写你获取到的ApiKey
不过需要注意,如果你需要将 Notebook 分享出去,记得把其中 OpenAI 的 API key 删除掉,免得别人的调用,花费都算在了你头上。

体验并测试 OpenAI 的 API

好了,现在环境已经搭建好了。无论你是使用本地的 JupyterLab 环境,还是使用 Google 免费提供的 Colab 环境,我都迫不及待地想要和你一起来体验一下 OpenAI 了。我在这里放了一段代码,你可以把它贴到你的 Notebook 里面,直接运行一下。
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ['OPENAI_API_KEY'],
)
COMPLETION_MODEL = "text-davinci-003"
prompt = """
Consideration proudct : 工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具
1. Compose human readale product title used on Amazon in english within 20 words.
2. Write 5 selling points for the products in Amazon.
3. Evaluate a price range for this product in U.S.
Output the result in json format with three properties called title, selling_points and price_range
"""
def get_response(prompt):
completions = client.completions.create (
model=COMPLETION_MODEL,
prompt=prompt,
max_tokens=512,
n=1,
stop=None,
temperature=0.0,
)
message = completions.choices[0].text
return message
print(get_response(prompt))
我们来看看返回结果。
{
"title": "Glow-in-the-Dark Inflatable PVC Frog Night Market Hot Selling Water Toy for Kids",
"selling_points": [
"Made of durable PVC material",
"Glow-in-the-dark design for night play",
"Inflatable design for easy storage and transport",
"Perfect for water play and outdoor activities",
"Great gift for kids"
],
"price_range": "$10 - $20"
}
这个商品名称不是我构造的,而是直接找了 1688 里一个真实存在的商品。
这段代码里面,我们调用了 OpenAI 的 Completion 接口,然后向它提了一个需求,也就是为一个我在 1688 上找到的中文商品名称做三件事情。
为这个商品写一个适合在亚马逊上使用的英文标题。
给这个商品写 5 个卖点。
估计一下,这个商品在美国卖多少钱比较合适。
同时,我们告诉 OpenAI,我们希望返回的结果是 JSON 格式的,并且上面的三个事情用 title、selling_points 和 price_range 三个字段返回。
神奇的是,OpenAI 真的理解了我们的需求,返回了一个符合我们要求的 JSON 字符串给我们。在这个过程中,它完成了好几件不同的事情。
第一个是翻译,我们给的商品名称是中文的,返回的内容是英文的。
第二个是理解你的语义去生成文本,我们这里希望它写一个在亚马逊电商平台上适合人读的标题,所以在返回的英文结果里面,AI 没有保留原文里有的“工厂现货”的含义,因为那个明显不适合在亚马逊这样的平台上作为标题。下面 5 条描述也没有包含“工厂现货”这样的信息。而且,其中的第三条卖点 “Inflatable design for easy storage and transport”,也就是作为一个充气的产品易于存放和运输,这一点其实是从“充气”这个信息 AI 推理出来的,原来的中文标题里并没有这样的信息。
第三个是利用 AI 自己有的知识给商品定价,这里它为这个商品定的价格是在 10~20 美元之间。而我用 “Glow-in-the-Dark frog” 在亚马逊里搜索,搜索结果的第一行里,就有一个 16 美元发光的青蛙。
最后是根据我们的要求把我们想要的结果,通过一个 JSON 结构化地返回给我们。而且,尽管我们没有提出要求,但是 AI 还是很贴心地把 5 个卖点放在了一个数组里,方便你后续只选取其中的几个来用。返回的结果是 JSON,这样方便了我们进一步利用返回结果。比如,我们就可以把这个结果解析之后存储到数据库里,然后展现给商品运营人员。
好了,如果看到这个结果你有些激动的话,请你先平复一下,我们马上来看一个新例子。
prompt = """
Man Utd must win trophies, says Ten Hag ahead of League Cup final
请将上面这句话的人名提取出来,并用json的方式展示出来
"""
print(get_response(prompt))
输出结果:
{
"names": ["Ten Hag"]
}
我们给了它一个英文的体育新闻的标题,然后让 AI 把其中的人名提取出来。可以看到,返回的结果也准确地把新闻里面唯一出现的人名——曼联队的主教练滕哈格的名字提取了出来。
和之前的例子不同,这个例子里,我们希望 AI 处理的内容是英文,给出的指令则是中文。不过 AI 都处理得很好,而且我们的输入完全是自然的中英文混合在一起,并没有使用特定的标识符或者分隔符。
注:第一个例子,我们希望 AI 处理的内容是中文,给出的指令是英文。
我们这里的两个例子,其实对应着很多不同的问题,其中就包括机器翻译、文本生成、知识推理、命名实体识别等等。在传统的机器学习领域,对于其中任何一个问题,都可能需要一个独立的机器学习模型。就算把这些模型都免费提供给你,把这些独立的机器学习模型组合到一起实现上面的效果,还需要海量的工程研发工作。没有一个数十人的团队,工作量根本看不到头。
然而,OpenAI 通过一个包含 1750 亿参数的大语言模型,就能理解自然的语言输入,直接完成各种不同的问题。而这个让人惊艳的表现,也是让很多人惊呼“通用人工智能(AGI)要来了”的原因。

小结

好了,希望到这里,你对 OpenAI 提供的大语言模型能干什么有了一个最直观的认识。同时,你也应该已经注册好了对应的账号,生成了调用大语言模型的 API Key。无论是在本地搭建了开发环境,还是通过 Colab 这样免费在线的开发环境,你都应该已经尝试着调用过 OpenAI 的 API 拿到一些返回结果了。
OpenAI 提供的 GPT-3.5/GPT-4 系列的大语言模型,可以让你使用一个模型来解决所有的自然语言处理问题。原先我们需要一个个地单独训练模型,或者至少需要微调模型的场景,在大语言模型之下都消失了。这大大降低了我们利用 AI 解决问题的门槛,无论之前我们通过各种开源工具将机器学习变得多么便捷,想要做好自然语言处理,还是需要一些自然语言处理的专家。而且,往往我们还需要组合好多个模型,进行大量的工程开发工作。
而在大语言模型时代,我们只需要有会向 AI 提问的应用开发工程师,就能开发 AI 应用了。这也是我设计这门课程的目的,希望能让你体会到当前开发 AI 工具的便利性。

课后练习

请将今天课程中提供的示例代码,在你搭建的开发环境中运行一下。
你可以去看一下 OpenAI 提供的示例,找几个你感兴趣的用途,在上面的开发环境里运行体验一下,你也可以脑洞大开,尝试一些你想用 AI 解决的问题,看看 AI 能不能给出你想要的结果。
欢迎你把你体验的提示语和结果分享在评论区,看看都能有什么样的好创意。也欢迎你把这节课分享给感兴趣的朋友,我们下一讲再见。

推荐阅读

如果你想知道 GPT 系列大模型到底是怎么回事儿,我推荐你去看一下李沐老师讲解 GPT 系列论文的视频 GPT、GPT-2、GPT-3 论文精读,这个视频深入浅出,能够让你理解为什么现在 GPT 那么火热。

本文介绍了如何使用OpenAI的API进行与AI的对话,并搭建开发环境的步骤。作者首先介绍了ChatGPT的主题,然后详细讲解了注册OpenAI账号、创建API Key以及搭建本地Jupyter Labs开发环境的步骤。对于非技术人员,也提供了使用Google Colab在线Python Notebook环境的选择。文章强调了使用OpenAI的API可以进行一些神奇的事情,并且提供了一些使用API的示例代码。通过示例代码展示了如何利用OpenAI的API进行商品标题翻译、卖点描述、价格估算以及人名提取等多种功能。文章指出OpenAI的大语言模型可以解决各种自然语言处理问题,消除了单独训练模型或微调模型的需求,降低了利用AI解决问题的门槛。总的来说,本文是一篇介绍如何与AI进行对话并搭建开发环境的技术文章,适合对AI技术感兴趣的读者阅读。

分享给需要的人,Ta购买本课程,你将得20
生成海报并分享
2023-03-20

赞 121

提建议

上一篇
结束语|送你一张通往未来“通用人工智能”时代的船票
下一篇
02|无需任何机器学习,如何利用大语言模型做情感分析?
unpreview
 写留言

全部留言(151)

  • 最新
  • 精选
  • 邱嘉琪
    置顶
    2024-05-09 来自广东
    openapi被封禁了,推荐使用代理,我使用https://api.bianxieai.com/
    6
  • Geek_d596b8
    置顶
    2024-02-24 来自新加坡
    2024-02-24 更新一下,课程中提到的text-davinci-003模型,已经被摒弃,现在已被gpt-3.5-turbo-instruct取代,大家可以使用这个模型来运行。(验证已通过) 同时在windows miniconda 环境中使用一下命令来设置open ai key conda env config vars set OPENAI_API_KEY=sk-xxxxxyyyyzzzzz
    共 2 条评论
    16
  • 不忘初心
    2023-03-20 来自陕西
    基于open ai开发的编译器https://www.cursor.so/

    作者回复: 👍

    共 4 条评论
    19
  • 代码五花肉
    2023-03-28 来自韩国
    听完这节课,我用安卓原生开发试了试,我突然看到了有语音转文字的API的文档,于是我先用录音功能发送了录音文件给 Wisper-1,然后识别到了文字后再接着发给API,然后拿到结果后用tts进行朗读,这样就做好了一个语音助手了,比Siri强大100倍~接下来就跟着老师学习正确的提示,看看能不能把生成提示用python弄成一个工程,然后给各种提示弄一个标签按钮,这样能让使用更加自动化~

    作者回复: 👍

    18
  • Y024
    2023-03-20 来自福建
    补充说明:最新注册的只有 5 美元的 API 额度了。

    编辑回复: 是的是的,老师写这门课的时候还是18美元,难过。。。文章内已更新为5美元。大家看自己需求使用。

    共 13 条评论
    18
  • Rocky_zd
    2023-03-30 来自广东
    作为一个门外汉,折腾了几天,终于成功运行了第一课的示例代码了。 1、借助梯子+亲友国外手机号,完成api账户注册。 2、用梯子+conda,运行代码,总是报网络连接错误;改用colab,需要用谷歌邮箱登录,自己注册总是无法验证中国的手机号,网上买了一个谷歌邮箱,终于可以顺利运行示例代码了。

    作者回复: 👍 花时间跨过这个门槛一定是值得的!

    共 3 条评论
    13
  • 非洲黑猴子
    2023-03-21 来自美国
    运行第一段代码的时候好像就被要求充值了: RateLimitError: You exceeded your current quota, please check your plan and billing details.

    作者回复: 是不是因为你之前的免费额度已经用完了?或者免费的3个月时间已经结束了?可以在 https://platform.openai.com/account/usage 自己查看一下

    共 6 条评论
    8
  • aoe
    2023-03-23 来自浙江
    还是老师有商业头脑,举的例子都是带大家致富的。 提一个与老师不同的观点:使用 python 对于不懂技术的「产品经理」来说太难了,使用「Playground」与 OpenAI 交互会更友好。 原因:我工作中使用 Java,但不会 python,阅读文章时我也没想过去学一下 python,因为那不是我的兴趣点。我更关注的是,如何使用 OpenAI API 带来的福利。 目前我知道最简单的方式是使用「Playground」,将老师文中的 prompt 粘贴进去,点击提交按钮就得到了下面的结果: { "title": "Glow-in-the-Dark PVC Inflatable Frog Night Market Stall Hot Selling Inflatable Toy for Kids Water Toy", "selling_points": ["Made from durable PVC material","Glow-in-the-Dark design","Comes with an air pump","Fun and safe for kids","Easy to inflate and deflate"], "price_range": "$15-$20" } OpenAI 官方也列出了多种语言接入 API 的解决方案:https://platform.openai.com/docs/libraries/community-libraries
    展开

    作者回复: 用Playground也可以,只是受的限制比较多

    共 5 条评论
    7
  • Geek_2d9ee5
    2023-04-12 来自福建
    windows在powershell prompt中设置环境变量与代理 $env:OPENAI_API_KEY='your_api_key‘ $env:HTTP_PROXY='http://localhost:7890' $env:HTTPS_PROXY='http://localhost:7890' 查看环境变量 ls env:HTTP*

    作者回复: 👍

    4
  • dan629xy
    2023-03-26 来自广东
    在Mac下通过conda 安装环境出现错误,是什么原因: (py310) $  ~  jupyter-lab . Traceback (most recent call last): File "/Users/miniconda3/envs/py310/lib/python3.10/site-packages/traitlets/traitlets.py", line 656, in get value = obj._trait_values[self.name] KeyError: 'registry' During handling of the above exception, another exception occurred:

    作者回复: Colab可以调用么?因为每个人电脑具体环境不一样,可能需要你自己研究一下,我把这个问题给了GPT-4,它的回答是这样的: It seems that you are trying to run JupyterLab, but you encountered an error related to the traitlets package. The traceback you provided doesn't give enough information to determine the exact cause of the error, but there are some general steps you can take to try to resolve this issue: Ensure that your Python environment is set up correctly. You mentioned that you are using Miniconda, so you might want to create a new environment specifically for JupyterLab: lua Copy code conda create -n jupyterlab_env python=3.10 conda activate jupyterlab_env Install JupyterLab in the newly created environment: r Copy code conda install -c conda-forge jupyterlab Now, try running JupyterLab again: Copy code jupyter-lab If the error persists, it may be due to an issue with one of the installed packages. In that case, try updating all the packages in your environment: sql Copy code conda update --all Finally, if the problem still isn't resolved, it could be helpful to provide more context or a more detailed traceback to get more specific assistance.

    4
  • 王jojo
    2023-03-28 来自美国
    问下openai也提供了nodejs版本,这两种对比的话,更推荐那种呢?node似乎更靠近web

    作者回复: 接口本身没有区别 取决于你擅长哪个语言,以及准备用来干什么 如果未来想要进一步学习深度学习,可以用Python,因为背后还可以用各种开源模型,未来可以进一步用开源模型甚至自己训练模型 如果是完全依赖OpenAI做应用开发,nodejs非常方便

    3
  • harryZ
    2023-03-22 来自广东
    用Colab运行了本课的实例, 一共提交了两次, 共花费了$0.00516, 要知道我是刚注册的, 现在只有$5额度了.... 第二个例子再放在了chat中重复了一次, 果然输出还是一样的,

    编辑回复: 写这节课的时候是18美元。。。难过了~

    3
  • peter
    2023-03-21 来自山西
    请教老师几个问题: Q1:本地的 Jupyter Labs 开发环境,是windows还是Linux? 我的笔记本电脑是win10,安装有Linux虚拟机。文中所说的“本地的 Jupyter Labs 开发环境”,是win10下的还是Linux下的环境?我不清楚自己的电脑上是否安装了(Jupyter Labs) Q2:账号注册“入口”点击后网址转变是什么意思? 文中有一句“这是账号注册的入口。”,点击“入口”后,网址显示为“openai.com/api”,然后变为“openai.com/product”,为什么?转变为”product”后能否注册账号? Q3:源代码下载后,鼠标双击其中的一个文件“01_open_ai_101.ipynb”,该文件被本机上安装的VSCODE打开了。打开后,显示代码和对应的结果;点击代码左边的运行按钮,会再次生成结果,此时有两份结果。请问,VSCODE可以作为运行环境吗?
    展开

    作者回复: Q1:我在Windows下用的是WSL2,也就是一个Linux的虚拟子系统。Windows原生环境也可以,不会是太大的障碍 Q2: 看一下这个可以访问么? https://platform.openai.com/account/api-keys Q3:可以的,vscode有jupyter-lab的插件,其实我也是在vscode里面运行的。不过如果要再讲解vscode的安装,就变成灌水了😊。

    共 2 条评论
    3
  • Geek_788696
    2024-01-18 来自中国香港
    之前自己的openai的账号过期了,就陷入了定式思维。就一直想去购买新的账号。结果一问,价格都好贵。分分钟都是要不就是全新账号gpt4,230元,就是免费额度5$的39元。算来算去都觉得好贵。然后在万能的tb上(也不能说万能,反正关键字都给屏蔽了,直接搜openai账号,ai账号,直接给你屏蔽了)。找到这个oneapi,一个中转的api。但完全能用。既然是课程练习。感觉没必要花那么多钱。这个购买最后是3.9元。就完成了第一个练习。还不错。 ```python from openai import OpenAI # Initialize the client with your specific base URL and API key client = OpenAI(     base_url="https://oneapi.xty.app/v1",     api_key="sk-xxx" ) # Define the prompt messages prompt_messages = [     {         "role": "system",         "content": "You are a helpful assistant. Help the user by providing a human-readable product title for Amazon in English within 20 words, writing 5 selling points for the product on Amazon, and evaluating a price range for this product in the U.S. Provide the result in JSON format with three properties called title, selling_points, and price_range."     },     {         "role": "user",         "content": "Consideration product: 工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具."     } ] # Get response from the chat completion completion = client.chat.completions.create(     model="gpt-3.5-turbo",     messages=prompt_messages ) # Print the completion message # print(completion.choices[0].message['content']) # Assuming 'completion' is the response object from your chat completion request for choice in completion.choices:     # Extract the message from the choice     message = choice.message     # Check if the role of the message is 'assistant', meaning it's the response generated by the model     if message.role == 'assistant':         # Print the content of the message         print(message.content) ```
    展开

    编辑回复: 这是一个好的开始,加油!

    共 4 条评论
    2
  • 内德
    2023-04-03 来自北京
    代码GitHub地址是什么?

    作者回复: https://github.com/xuwenhao/geektime-ai-course

    2
  • 芋头
    2023-03-31 来自北京
    售卖地中国北京,售价建议20-30元;售卖地定在中国鹤岗,售价建议10-20元。牛的

    作者回复: 👍 常识推理能力很强。

    2
  • 云卷云舒
    2023-03-23 来自上海
    有几点顾虑,请教一下:1.18美元变5美元现象,后期会不会还有类似或更进一步的行为,毕竟它已经商业化了;2.国内需梯子,一旦产品化,这个这个。。。。。。3.政治风险。

    作者回复: 1. 这个我回答不了,要看OpenAI怎么决定 2. 所以我非常期待文心一言

    共 2 条评论
    2
  • Geek_035566
    2023-05-16 来自广东
    完全不会代码的小白,在Colab中复制了青蛙那个案例,提示一下错误。。。老师能帮忙看下吗? --------------------------------------------------------------------------- RateLimitError Traceback (most recent call last) <ipython-input-7-a142fa226555> in <cell line: 29>() 27 return message 28 ---> 29 print(get_response(prompt)) 5 frames /usr/local/lib/python3.10/dist-packages/openai/api_requestor.py in _interpret_response_line(self, rbody, rcode, rheaders, stream) 685 stream_error = stream and "error" in resp.data 686 if stream_error or not 200 <= rcode < 300: --> 687 raise self.handle_error_response( 688 rbody, rcode, resp.data, rheaders, stream_error=stream_error 689 ) RateLimitError: You exceeded your current quota, please check your plan and billing details.
    展开

    作者回复: 是你现在的API Quota用完了,就是免费额度用完了(应该是过期了)。 需要开通API的付费,或者找一个还有免费额度没有过期的账号。

    1
  • 宋照磊
    2023-04-12 来自日本
    老师 windows环境 安装openai包的时候 卡主了。conda install -c conda-forge openai Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Solving environment: / 在这个地方。 试了用梯子和不用梯子都卡在这, 请问是什么原因呢。

    作者回复: 试试看换一下国内的镜像源吧,比如清华的 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

    1
  • Sophia-百鑫
    2023-04-06 来自上海
    VS code 看有很多open ai 插件,具体哪个 不是李鬼,有劳老师推荐一个

    作者回复: https://github.com/features/copilot

    1