GPT应用开发:运行你的第一个聊天程序

这篇具有很好参考价值的文章主要介绍了GPT应用开发:运行你的第一个聊天程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本系列文章介绍基于OpenAI GPT API开发大模型应用的方法,适合从零开始,也适合查缺补漏。

本文首先介绍基于聊天API编程的方法。

环境搭建

很多机器学习框架和类库都是使用Python编写的,OpenAI提供的很多例子也是Python编写的,所以为了方便学习,我们这个教程也使用Python。

Python环境搭建

Python环境搭建有很多种方法,我们这里需要使用 Python 3.10 的环境,如果你已经具备或者自己很清楚怎么搭建,请跳过这个小节。

Anaconda安装

Anaconda 可以简单理解为一个软件包管理器,通过它我们可以方便的管理Python运行环境。

Anaconda 的官方下载地址是:https://www.anaconda.com/download,页面如下图所示:

GPT应用开发:运行你的第一个聊天程序

请注意选择你使用的操作系统,整个安装包有800多M,下载时间取决于你的网路。

Anaconda 的安装比较简单,但是安装中间还需要下载很多程序,所以需要的时间可能会久一点;另外全部安装完毕后,可能会占用5G多的硬盘空间,需要提前预留好。

Anaconda 集成了一些方便的工具,安装完成后,我们可以使用 Anaconda Navigator 来启动它们。在Windows系统下,我们可以在开始菜单中找到这个 Anaconda Navigator,就是下面图片中的这个。

GPT应用开发:运行你的第一个聊天程序

JupyterLab

启动 Anaconda Navigator 后,在右边的应用列表中找到 JupyterLab。

JupyterLab 是一个Web的交互式计算窗口,能在网页中运行Python程序,可以省掉很多麻烦。

GPT应用开发:运行你的第一个聊天程序

启动后,窗口界面如下所示。左边是当前用户的根目录,右边有一些功能入口,我们先不管。

我们在左侧根目录下点击右键创建一个文件夹:gptdemo,名字可以随便起,后边我们的程序都放到这里边。

GPT应用开发:运行你的第一个聊天程序

然后我们双击进入 gptdemo,再点击右键创建一个 Notebook,Notebook 可以记录文字、编写代码并执行。

GPT应用开发:运行你的第一个聊天程序

在左侧文件夹中双击新创建的Notebook,它会在右侧编辑区打开,在工具栏的“Cell Type”中选择“Code”,然后点击工具栏前边的加号(+),Notebook中就会自动创建一个代码Cell,这种Cell既可以运行Python代码,也可以执行各种Shell指令。GPT应用开发:运行你的第一个聊天程序

安装OpenAI包

执行下边的命令,安装openai的python sdk。

pip install --upgrade openai httpx[socks]

这个只需要安装成功一次就行了。

下图是JupyterLab中的命令执行效果演示:

GPT应用开发:运行你的第一个聊天程序

代码演练

下边进入本文的重点,运行一个GPT程序。

在这个程序中,我们还是让 GPT 扮演一个善于出题的小学数学老师。

可以先把下边的代码粘贴到你的开发环境中运行一下,后面我会解释各个参数。

注意替换 api_key,没有的可以去注册一个或者找人购入一个。

from openai import OpenAI

client = OpenAI(api_key='sk-xxx')
stream = client.chat.completions.create(
    messages=[{
        "role": "system", "content": "你是一名数学老师,从事小学数学教育30年,精通设计各种数学考试题"
    },{
        "role": "user", "content": "你是谁?请以json返回"
    }],
    model='gpt-3.5-turbo-1106',
    max_tokens:1024,
    #temperature=0.1,
    top_p=0.3,
    #frequency_penalty=0.5,
    presence_penalty=0.2,
    seed=12345,
    #stop='30年',
    response_format={ "type": "json_object" },
    n=1,
    stream=True
)

for chunk in stream:
    msg = chunk.choices[0].delta.content
    if msg is not None:
        print(msg, end='')

我们需要先创建一个客户端:client = OpenAI(api_key='sk-xxx'),注意替换其中的 api-key。

然后我们使用 client.chat.completions.create 来创建一个聊天 Completion。Completion这个单词怎么理解呢?这有点类似搜索框中的那种联想输入,我们输入部分字符,它就会生成一组补全的查询词语列表,这个技术叫:Auto Complete。

GPT应用开发:运行你的第一个聊天程序

理解Token

因为很多参数都涉及到Token的概念,所以在开始介绍参数之前,我们先来理解下 Token 这个概念。

在大模型中,模型的输入和输出实际都是Token。Token不是完全对照到单词或者字符的,大模型处理数据时,文本会被切分成单个元素或标记,也就是Token,这些Token可能是单词、字符或单词的一部分。

大模型使用Token而不是直接使用单词或字符的原因主要是效率、灵活性和性能的问题。例如大词汇表会导致模型参数数量剧增,增加内存需求和计算成本,而使用子词可以降低词汇表的大小,特别是含有大量专有名词的语料库,同时子词还可以避免单个字符携带信息可能过少,导致需要处理更长序列才能理解文本的问题。另外子词对于一些语言还具备跨语言表示的能力,子词还可以让模型更好地学习和理解单词的形态变化和复杂的词形构造规则。

比如对于这个句子:I don't like cats.

其拆分后的Token序列可能是:["I", "do", "n't", "like", "cats", "."]

注意,不同的模型可能会采用不同的切分方法。

completion参数

然后我们看下这几个参数:

  • messages:聊天的上下文,里边可以包含多条消息。GPT会针对最后一条消息,结合上下文,生成文本内容。每条消息可以设定role、name、content。
    • role:就是会话中的角色,可以选择:system(系统)、assistant(GPT)、user(用户)
    • name:用来区分同一个角色中的不同人物。
    • content:具体角色发出的消息内容。
  • model:本次会话使用的GPT模型,最新的3.5模型是 gpt-3.5-turbo-1106,训练数据截止2021年9月份,上下文窗口的最大token数为16K;最新的4模型是gpt-4-1106-preview,训练数据截止2023年4月份,上下文窗口的最大token数为128K。
  • max_tokens:本次Completion允许生成的最大token数量,token数量和字符数量实际上不是对等的,不过也可以简单的认为就是字符数量。messages中输入的token数量和生成的token数量不能超过模型上下文窗口的最大token数量。
  • temperature:生成时对token进行采样的温度,取值范围为 0-2 的float,默认值为1。值越小输出越确定,值越大输出越随机,可能会跳出上下文约束,甚至输出不可读的乱七八糟字符。
  • top_p:temperature 的替代方法,称为核采样。取值范围为 0-1 的float,默认值为1。模型考虑具有top_p概率质量的标记的结果,比如 0.1 表示仅考虑概率最大的前10%的token。注意不要同时更改 temperature 和 top_p。
  • frequency_penalty:频率惩罚,用于降低生成重复token的可能性,它基于相关token出现的频率产生影响。取值范围 -2.0 到 2.0 ,默认值为0。一般限制重复时建议设置为0.1-1,强烈限制重复可设置为2,但是生成的质量可能会比较低,负值可用于增加重复。
  • presence_penalty:存在惩罚,也是用于降低生成重复token的可能性,和频率惩罚相比,它跟踪的是相关token有没有出现过至少一次。取值范围 -2.0 到 2.0,默认值为0。一般限制重复时建议设置为0.1-1,强烈限制重复可设置为2,但是生成的质量可能会比较低,负值可用于增加重复。
  • seed:这个参数是为了尽可能的提高输出的确定性。使用相同的种子和相同的其它参数,会尽可能的输出相同的结果。
  • stop:GPT生成文字时,遇到这些字符会停止继续生成。最多4个字符。
  • response_format:生成文本的格式。虽然我们也可以在聊天内容中直接要求以某种格式返回,但是这是没有保障的,也可能返回别的格式,但是如果再加上这个参数,就可以确保生成内容的格式了。
  • n:一次返回几条结果,默认为1。使用时建议设置 stream=false,可以从 choices 中获取多条结果。
  • stream:流式输出与否,一般都采用流式输出,看着比较像真人说话。

看下这个运行效果吧:GPT应用开发:运行你的第一个聊天程序


以上就是本文的主要内容,GPT编程是不是挺简单的?!

后续我还会继续分享图片、插件、语音等API的使用方法。

如需GPT API Key、全套学习资料、加入陪伴学习群,推荐加入小册:大模型应用开发 | API 实操

关注萤火架构,加速技术提升!文章来源地址https://www.toymoban.com/news/detail-793730.html

到了这里,关于GPT应用开发:运行你的第一个聊天程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 构建你的第一个Android应用

    一、Android的核心组件 Android是一种基于Linux的开源操作系统,主要用于移动设备,如智能手机和平板电脑。Android的设计目标是为用户提供一个统一、灵活和丰富的用户体验,同时保持开放性和兼容性。 Android的核心组件 包括: 应用程序框架:提供了一套用于开发和运行应用程

    2024年02月01日
    浏览(41)
  • Django(2)-编写你的第一个 Django 应用

    本教程的目的是创建一个网络投票应用程序。 它将由两部分组成: 一个让人们查看和投票的公共站点。 一个让你能添加、修改和删除投票的管理站点。 每一个应用是一个python包,一个项目可以包含多个应用。 可以看到生成了一个polls文件夹,包含如下文件 polls/views polls/u

    2024年02月11日
    浏览(43)
  • 【DevOps】搭建你的第一个 Docker 应用栈

    Docker 是一个新兴的轻量级虚拟化技术,其易用、跨平台、可移植的特性使其在集群系统的搭建方面有着得天独厚的优势。Docker 能够标准化封装应用程序所需的整个运行时环境,因此基于 Docker,我们可以实现分布式应用集群的快速、准确、自动化部署。 考虑到读者可能是初次

    2024年02月08日
    浏览(46)
  • GPT应用开发:GPT插件开发指南

    欢迎阅读本系列文章!我将带你一起探索如何利用OpenAI API开发GPT应用。无论你是编程新手还是资深开发者,都能在这里获得灵感和收获。 本文,我们将继续展示聊天API中插件的使用方法,让你能够轻松驾驭这个强大的工具。 首先给大家展示下插件的运行效果,如下图所示:

    2024年01月19日
    浏览(89)
  • android开发:用IDEA建立你的第一个APP

            主要是记录一下各种小坑。         IDEA目前是第一流行的java开发工具,同时也支持android开发,可以替代安卓官方的andriod studio,不过仍然要依赖android sdk。         本例指导你完成第一个app,需要一台Windows PC和一部android手机。 目录 一、下载安装IDEA 二、新建and

    2024年02月04日
    浏览(59)
  • 应用实战|微信小程序开发示例--多人聊天互动空间

    “超能力”数据库 ~拿来即用,应用开发人员再也不用为撰写API而发愁。MemFire Cloud 为开发者提供了简单易用的云数据库(表编辑器、自动生成API、SQL编辑器、备份恢复、托管运维),很大地降低开发者的使用门槛。 本示例是一个可以实现多人互动的角色扮演聊天室的微信小

    2024年02月09日
    浏览(56)
  • 小程序开发:如何从零开始建立你的第一个小程序

    你可能有一个小程序的想法,但它仍然是一个想法。对于开发人员来说,这是一项艰巨的任务,因为你必须确保你有足够的时间来开发你的第一个小程序。如果你决定使用小程序,那就有很多事情要做。创建一个小程序可能是一件非常耗时的事情。除了创建一个自己的小程序

    2024年02月10日
    浏览(65)
  • SpringBoot-1-Spring Boot实战:快速搭建你的第一个应用,以及了解原理

    SpringBootWeb入门 我们在之前介绍Spring的时候,已经说过Spring官方(Spring官方)提供很多开源项目,点击projects,看到spring家族旗下的项目 Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。而我们在项目开发时,一般会偏向于选

    2024年02月12日
    浏览(48)
  • 开发GPT的应用程序流程

    开发一个基于GPT的应用程序(GPT APP)涉及到与GPT模型的集成,用户界面设计,以及应用程序的功能实现。以下是一个一般的开发流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 明确目标和用例: 定义您的GPT应用的目标和

    2024年01月19日
    浏览(39)
  • 【小程序】快来开发你的第一个微信小游戏(详细流程)

    🥳 作者:伯子南 😎 坚信: 好记性不如乱笔头,独乐乐不如众乐乐 💪 个人主页:https://blog.csdn.net/qq_34577234?spm=1010.2135.3001.5421 👬🏻 觉得博主文章不错的话,请三连支持一下!如有需要我的支持,请私信! 本文通过开发一个简单的小游戏,来带领大家实操一下开发小游戏

    2024年02月03日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包