基于OpenAI搭建自己的ChatGPT环境1
- 基于OpenAI搭建自己的ChatGPT环境
- 注册账号
- 生成访问密钥
- 创建虚拟环境
- 安装openai模块
- 环境体验
笔者初次接触人工智能领域,文章中错误的地方还望各位大佬指正!
基于OpenAI搭建自己的ChatGPT环境
ChatGPT是OpenAI研发的人机交互程序,是人工智能技术驱动的自然语言处理模型,能够通过学习和理解人类的语言来进行对话。经过长时间的训练,ChatGPT已经成长得比较强大,可以聊天、写文章、写报告、生成图片等,并且通过GitHub上的代码的训练,ChatGPT还能基于特定场景编写代码。ChatGPT目前在有些地区是不能使用的,要体验它的功能,我们可以基于OpenAI搭建自己的ChatGPT环境。
注册账号
注册地址为:OpenAI API。
点击“SIGN UP”按钮进行账号注册。
在注册账号时需要提供注册邮箱,输入自己能正常收邮件的邮箱,后面需要通过邮箱激活。
填写好邮箱后,设置一个自己能够记住的密码,作为后面的登录密码。
注册完成后,注册邮箱中会收到一封激活的邮件,点击激活链接激活账号。激活完成后就可以通过注册的邮箱地址进行登录了。
登录的第二步,需要填写一下自己的信息。
最后一步,需要提供一个手机号码接收验证码,这一步非常重要。
受当地法律因素影响,好多地区目前不支持使用ChatGPT,当然OpenAI的使用也有一些限制。
手机号码接收验证码的这步需要自己解决。
处理完成后,可以进入到OpenAI的主页面。
生成访问密钥
通过个人菜单下的“View API keys“菜单,转到API keys界面。
在API keys界面上创建一个secret key,因为OpenAI是收费的,这个key将作为用户调用接口的凭证,也会作为计费凭证。下面的这个界面只会出现一次,所以这里一定要将key复制、保存好。
创建好secret key后,可以在列表中看到,这个key需要在后续的代码中使用。
OpenAI的服务是收费的,当然,作为体验,OpenAI提供了一个18美刀、大约3个半月的试用额度。
对于体验功能而言,需要节约API的调用次数及生成结果内容的大小。
对于资金充裕的用户,后续需要充值续费。
创建虚拟环境
人工智能的首选语言还是Python,这里我们也创建一个Python的虚拟环境,用于开发人工智能相关的代码。首先通过Anaconda安装好Python。然后通过conda命令创建一个虚拟环境,命名为OpenAI,命令如下:
conda create -n OpenAI python=3.9
虚拟环境的创建过程:
(base) wux_labs@wux-labs-vm:~$ conda create -n OpenAI python=3.9
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 22.9.0
latest version: 23.1.0
Please update conda by running
$ conda update -n base -c defaults conda
## Package Plan ##
environment location: /home/wux_labs/anaconda3/envs/OpenAI
added / updated specs:
- python=3.9
The following packages will be downloaded:
package | build
---------------------------|-----------------
openssl-1.1.1t | h7f8727e_0 3.7 MB
------------------------------------------------------------
Total: 3.7 MB
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main None
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu None
ca-certificates pkgs/main/linux-64::ca-certificates-2023.01.10-h06a4308_0 None
certifi pkgs/main/linux-64::certifi-2022.12.7-py39h06a4308_0 None
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1 None
libffi pkgs/main/linux-64::libffi-3.4.2-h6a678d5_6 None
libgcc-ng pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1 None
libgomp pkgs/main/linux-64::libgomp-11.2.0-h1234567_1 None
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1 None
ncurses pkgs/main/linux-64::ncurses-6.4-h6a678d5_0 None
openssl pkgs/main/linux-64::openssl-1.1.1t-h7f8727e_0 None
pip pkgs/main/linux-64::pip-22.3.1-py39h06a4308_0 None
python pkgs/main/linux-64::python-3.9.16-h7a1cb2a_0 None
readline pkgs/main/linux-64::readline-8.2-h5eee18b_0 None
setuptools pkgs/main/linux-64::setuptools-65.6.3-py39h06a4308_0 None
sqlite pkgs/main/linux-64::sqlite-3.40.1-h5082296_0 None
tk pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0 None
tzdata pkgs/main/noarch::tzdata-2022g-h04d1e81_0 None
wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0 None
xz pkgs/main/linux-64::xz-5.2.10-h5eee18b_1 None
zlib pkgs/main/linux-64::zlib-1.2.13-h5eee18b_0 None
Proceed ([y]/n)? y
Downloading and Extracting Packages
openssl-1.1.1t | 3.7 MB | ########################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate OpenAI
#
# To deactivate an active environment, use
#
# $ conda deactivate
Retrieving notices: ...working... done
(base) wux_labs@wux-labs-vm:~$
环境创建好以后,激活一下,切换到新的虚拟环境。
conda activate OpenAI
安装openai模块
可以通过openai模块调用API来实现相关的功能,首先就需要安装openai模块。通过pip install命令安装即可。
pip install openai
安装过程为:
Collecting openai
Downloading openai-0.26.5.tar.gz (55 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.5/55.5 kB 1.3 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Collecting requests>=2.20
Downloading requests-2.28.2-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.8/62.8 kB 4.2 MB/s eta 0:00:00
Collecting aiohttp
Downloading aiohttp-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 9.8 MB/s eta 0:00:00
Collecting tqdm
Downloading tqdm-4.64.1-py2.py3-none-any.whl (78 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.5/78.5 kB 10.0 MB/s eta 0:00:00
Requirement already satisfied: certifi>=2017.4.17 in ./anaconda3/envs/PythonBasic/lib/python3.9/site-packages (from requests>=2.20->openai) (2022.12.7)
Collecting idna<4,>=2.5
Downloading idna-3.4-py3-none-any.whl (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 kB 7.5 MB/s eta 0:00:00
Collecting urllib3<1.27,>=1.21.1
Downloading urllib3-1.26.14-py2.py3-none-any.whl (140 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.6/140.6 kB 18.6 MB/s eta 0:00:00
Collecting charset-normalizer<4,>=2
Downloading charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (198 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.8/198.8 kB 21.1 MB/s eta 0:00:00
Collecting frozenlist>=1.1.1
Downloading frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 158.8/158.8 kB 20.4 MB/s eta 0:00:00
Collecting yarl<2.0,>=1.0
Downloading yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (264 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 264.6/264.6 kB 30.7 MB/s eta 0:00:00
Collecting aiosignal>=1.1.2
Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting async-timeout<5.0,>=4.0.0a3
Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting attrs>=17.3.0
Downloading attrs-22.2.0-py3-none-any.whl (60 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.0/60.0 kB 8.5 MB/s eta 0:00:00
Collecting multidict<7.0,>=4.5
Downloading multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 114.2/114.2 kB 15.2 MB/s eta 0:00:00
Building wheels for collected packages: openai
Building wheel for openai (pyproject.toml) ... done
Created wheel for openai: filename=openai-0.26.5-py3-none-any.whl size=67596 sha256=08874abb0de60e7439d4dad217b14da9381c774e64067448ac4fb3a2d76ecc24
Stored in directory: /home/wux_labs/.cache/pip/wheels/8f/72/d6/0a48b79d1e0c8aaade412dca96449f3eef8b0baf5a4a05ffc4
Successfully built openai
Installing collected packages: charset-normalizer, urllib3, tqdm, multidict, idna, frozenlist, attrs, async-timeout, yarl, requests, aiosignal, aiohttp, openai
Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-22.2.0 charset-normalizer-3.0.1 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 openai-0.26.5 requests-2.28.2 tqdm-4.64.1 urllib3-1.26.14 yarl-1.8.2
模块安装完成后,当前的虚拟环境中就可以看到相关的模块了。
环境体验
编写一段代码,导入openai,设置好之前生成的secret key,然后就可以调用openai的API了。调用API的好处之一就是可以自己指定参数,设置好接口参数:
- model,使用的模型
- prompt,代表您的输入内容
- temperature,使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。
- max_tokens,完成时要生成的最大令牌数。
- frequency_penalty,介于 -2.0 和 2.0 之间的数字。正值会根据新标记到目前为止在文本中的现有频率来惩罚新标记,从而降低模型逐字重复同一行的可能性。
- presence_penalty,介于 -2.0 和 2.0 之间的数字。正值会根据新标记到目前为止是否出现在文本中来惩罚它们,从而增加模型讨论新主题的可能性。
import openai
openai.api_key = "sk-*****DTau"
response = openai.Completion.create(
model="text-davinci-003", # 最强大的GPT-3模型,This model's maximum context length is 4097 tokens
prompt="介绍一下机器学习算法",
temperature=0.8,
max_tokens=3000,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.0
)
print(response.choices[0].text)
最终得到的答案是:
机器学习算法是一种指导计算机从数据中发现特征和模式的算法。它以特定的方法搜集、分析数据,运用方法自动地学习并在新数据上做出预测。这些方法包含有监督学习(如决策树、逻辑回归和支持向量机)、无监督学习(如聚类分析)、集成学习和强化学习。它们可以用于预测和分析样本数据中可能隐藏的信息,甚至可以帮助我们识别客户行为习惯。