暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OpenAI入门Quickstart项目本地部署搭建详解

畅谈Fintech 2023-02-17
2563

    上一篇我们聊了一下OpenAI用户的一些基本内容包括用户概览、每日以及累积余额情况,Pricing、Tokens、Organization、Members等基础知识。
    今天我们动手实践一下OpenAI官网的一个QuickStart tutorial项目,这个项目可以在OpenAI官网线上运行,这里我详解一下怎么把它部署搭建到本地执行。


一、部署环境要求
我们使用Python环境来部署,官网还一种部署方式是NodeJS请自行看吧。
1、Python环境
版本要求是3.9以上最好是3.11
https://www.python.org/downloads

2、API key值
需要自己的key值


二、构建运行项目
1、克隆项目
    git clone https://github.com/openai/openai-quickstart-python.git
    或者使用zip方式下载
      https://codeload.github.com/openai/openai-quickstart-python/zip/refs/heads/master
      2、修改.env文件
      先copy.env.example 为.env文件
      用记事本打开.env文件,把自己的key值添加进去。


      3、创建新的虚拟环境并且激活
      到具体项目路径下执行以下命令
        python -m venv venv
        . venv/bin/activate
        第一行代码 python -m venv venv 使用Python的内置模块 venv 来创建一个名为 venv 的虚拟环境。venv是Python3.3及更高版本中提供标准库,用于创建Python虚拟环境。
        第二行代码 . venv/bin/activate 则是用来激活创建好的虚拟环境。这个命令会在当前shell中启用虚拟环境,并将环境变量设置为虚拟环境的路径,这样在当前shell中运行的Python解释器就会使用虚拟环境中安装的Python库,而不是系统级别的Python库。
        通过创建Python虚拟环境,可以为不同的项目分别安装不同版本的Python和Python库,从而避免由于不同项目使用不同版本的Python库而产生的冲突,同时也可以方便地共享和复制项目。
        4、安装requirements.txt文件的依赖包
        根目录下有一个requirems.txt,需要安装里面的Python依赖包
          pip install -r requirements.txt
            autopep8==1.6.0
            certifi==2021.10.8
            charset-normalizer==2.0.7
            click==8.0.3
            et-xmlfile==1.1.0
            Flask==2.0.2
            idna==3.3
            itsdangerous==2.0.1
            Jinja2==3.0.2
            MarkupSafe==2.0.1
            numpy==1.22.1
            openai==0.19.0
            openpyxl==3.0.9
            pandas==1.3.4
            pandas-stubs==1.2.0.35
            pycodestyle==2.8.0
            python-dateutil==2.8.2
            python-dotenv==0.19.2
            pytz==2021.3
            requests==2.26.0
            six==1.16.0
            toml==0.10.2
            tqdm==4.62.3
            urllib3==1.26.7
            Werkzeug==2.0.2
            这里的包比较多,大概率可能会超时,可以更换python库的镜像源,推荐豆瓣的不错。
            5、执行项目
            • 第一种方法是命令行方式运行
              flask run

              然后在浏览器里面打开本地localhost:5000端口。
              显示如下的界面说明项目成功运行!

              输入:cat
              返回:

              后台我们看到返回的信息


              • 第二种方式是把项目部署在PyCharm里面然后执行,这里我就不演示了。


              三、项目详解
              1、代码详解
              项目的主文件app.py里面index方法里面变量response看到,这里调用的模型是text-davinci-003temperature值为0.6,temperature是什么?后面就解释。
                def index():
                if request.method == "POST":
                animal = request.form["animal"]
                response = openai.Completion.create(
                            model="text-davinci-003",#模型
                prompt=generate_prompt(animal),
                            temperature=0.6,#“参数值”
                )
                return redirect(url_for("index", result=response.choices[0].text))


                result = request.args.get("result")
                return render_template("index.html", result=result)
                生成提示词的方法generate_prompt(animal)
                  def generate_prompt(animal):
                  return """Suggest three names for an animal that is a superhero.


                  Animal: Cat
                  Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
                  Animal: Dog
                  Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
                  Animal: {}
                  Names:""".format(
                  animal.capitalize()
                      )

                  2、什么是temperature

                  官方中文翻译为“温度”它是一个介于 0 和 1 之间的值,基本上可以让您控制模型在进行这些预测时的置信度。降低温度意味着它将承担更少的风险,并且完成将更加准确和确定。升高温度将导致更多样化的完成

                  简单说就是temperature的值,设置接近0的时候,模型返回的相同和相似的结果概率大,模型的结果接近确定性和重复性!当temperature接近1时候,模型返回的相同和相似的结果概率小。模型的结果接近不确定性和随机性!

                  所以有时候设计提示词prompt并不是可以使用的唯一工具,你还可以通过调整temperature值

                  3、Token和temperature的关系

                  GPT-3的模型通过将文本分解为称为Token的更小单元来处理文本。在上一篇我的文章中已经讲过Token的概念(可以是单词、单词块或单个字符)。
                  我们来看一下面的文本它是如何被标记化的。
                    I have an orange cat named Butterscotch.

                    I have an orange cat named Butterscotch.

                    像“cat”这样的常用词是单个标记,而不太常用的词通常被分解成多个标记。

                    例如:“Butterscotch”翻译成四个标记:“But”、“ters”、“cot”和“ch”。许多标记以空格开头,例如“ hello”和“ bye”。给定一些文本,该模型确定下一个最有可能出现的标记。例如,文本“Horses are my favorite”最有可能跟随标记“animal”。


                    这里就涉及到temperature的设置值的高低关系了。
                    如果你在temperature设置为0的情况下提交此提示4次,则模型将始终在下一个返回“动物”,因为它的概率最高。如果你提高temperature,它会承担更多的风险,并考虑概率较低的Token。


                    官网temperature设置值为0.6
                    通常最好为你所需输出明确定义的任务设置较低的temperature。较高的temperature对于需要多样性或创造力的任务可能很有用,或者如果你想为最终用户或人类专家生成一些变化以供选择。0.6的是官网建议的值。



                    总结:
                    1、OpenAI QuickStart 项目的部署和搭建
                    2、temperature、Token的关系


                    参考
                    1.https://platform.openai.com/docs/quickstart/build-your-application






                    文章转载自畅谈Fintech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论