openAi ChatGPT调用性能优化的一些小妙招

参考的demo:GitHub - ddiu8081/chatgpt-demo: A demo repo based on OpenAI API.

扭曲调教:

openai提供的chat接口(https://api.openai.com/v1/chat/completions)由于其模型很大(什么1750亿个参数啥的),单次http请求很难完成处理,一些常用的做法是采取流返回的方式,一个字一个字往外蹦,然后一点一点渲染,例如demo里的代码:

 

export const parseOpenAIStream = (rawResponse: Response) => {
  const encoder = new TextEncoder()
  const decoder = new TextDecoder()
  if (!rawResponse.ok) {
    return new Response(rawResponse.body, {
      status: rawResponse.status,
      statusText: rawResponse.statusText,
    })
  }

  const stream = new ReadableStream({
    async start(controller) {
      const streamParser = (event: ParsedEvent | ReconnectInterval) => {
        if (event.type === 'event') {
          const data = event.data
          if (data === '[DONE]') {
            controller.close()
            return
          }
          try {
            // response = {
            //   id: 'chatcmpl-6pULPSegWhFgi0XQ1DtgA3zTa1WR6',
            //   object: 'chat.completion.chunk',
            //   created: 1677729391,
            //   model: 'gpt-3.5-turbo-0301',
            //   choices: [
            //     { delta: { content: '你' }, index: 0, finish_reason: null }
            //   ],
            // }
            const json = JSON.parse(data)
            const text = json.choices[0].delta?.content || ''
            const queue = encoder.encode(text)
            controller.enqueue(queue)
          } catch (e) {
            controller.error(e)
          }
        }
      }

      const parser = createParser(streamParser)
      for await (const chunk of rawResponse.body as any)
        parser.feed(decoder.decode(chunk))
    },
  })

  return new Response(stream)
}

类似于这样的处理方式。

但流传输不一定适用于所有的业务,若将stream改成false,那么接口响应多半会超时。

因此需要一些优化的策略:

一、降智

选用低能一些的模型,不过我尝试了gpt3的模型,一概不说人话

而/v1/completions的接口里只有 text-davinci-003还可以接受

 说明一下/v1/completions和v1/chat/completions的区别,/v1/chat/completions是传一个数组messages来完成上下文关联,而/v1/completions传的是一个字符串prompt参数,不过依然可以通过追加的方式,使其回答具有上下文关联性。

二、降低temperature参数

这个会有轻量的影响,如果你并不需要每次相同的问题都要回答不同的答案,那么可以降低此值,甚至可以降为0

三、优化返回长度 

这个会影响最大,亲测最有效,在问题前面追加回答设置,例如,回答不要超过100字,请简洁的回答下列问题等。会最大程度的降低返回时间,因为接口是按调用词数和返回词数计费的(ChatGPT(GPT3.5)官方API模型名称为“gpt-3.5-turbo”和“gpt-3.5-turbo-0301”。API调用价格比GPT text-davinci-003模型便宜10倍。调用费用为0.002美元/1000tokens,折合下来差不多0.1元4000~5000字。这个字数包括问题和返回结果字数。),所以chatgpt保持着能多bb尽量多bb的原则,少让他多bb点还可以省钱。

 

注意,参数里的max_tokens没必要设置,因为他只会无脑切割, 如果设置低了超过原本的输出答案,回答会不完整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/4077.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis之底层数据结构

一 Redis数据结构 Redis底层数据结构有三层意思: 从Redis本身数据存储的结构层面来看,Redis数据结构是一个HashMap。从使用者角度来看,Redis的数据结构是String,List,Hash,Set,Sorted Set。从…

Docker 镜像使用

目录 1、列出镜像列表 2、获取一个新的镜像 3、查找镜像 4、拖取镜像 5、删除镜像 6、创建镜像 a.更新镜像 b.构建镜像 设置镜像标签 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 …

现在大专生转IT可行吗?

当然可行的。 大专也是人,为什么不可以选择喜欢的专业学习,现在大学生遍地都是,学历已经不是限制你发展的因素了。有的人就是不擅长理论学习,更喜欢技术。IT也只是一个普普通通的技术行业,跟其他技术行业一样&#xf…

wsl=

安装wsl wsl --install,用户名wu,密码 123456, https://learn.microsoft.com/en-us/windows/wsl/install 安装anaconda, 把anaconda移动到wu目录下,在wu用户以及用户目录下执行bash Anaconda-文件名,安装目录为/home/wu/anaconda3 配置cond…

C#方法详解

总目录 文章目录总目录前言一、方法概述1、方法签名2、调用/访问方法/方法形参与实参二、扩展方法1.实现扩展方法2、扩展方法调用3、优先级问题4、其他扩展方法示例1.获得枚举的Description2.其他常用扩展方法三、方法参数列表详解1、可选自变量(可选参数&#xff0…

深入剖析 MVC 模式与三层架构

文章目录1. 前言2. MVC模式3. 三层架构4. MVC和三层架构5. 总结5.1 IDEA 小技巧1. 前言 前面我们探讨了 JSP 的使用,随着计算机技术的不断更新迭代,JSP 的技术由于存在很多的缺点,已经逐渐退出了历史的舞台,所以在学习时&#xf…

Google代码覆盖率最佳实践

软件质量保障: 所寫即所思|一个阿里质量人对测试的所感所悟。谷歌一直倡导的领域之一是使用代码覆盖率数据评估风险并识别测试中的真空。然而,代码覆盖率的价值一直是个争议的话题。每次聊到代码覆盖率时,似乎都会引发无尽的争论。由于大家固…

88、K-Planes: Explicit Radiance Fields in Space, Time, and Appearance

简介 主页:https://sarafridov.github.io/K-Planes/ 图像使用一个平面表示,静态三维场景用三个平面表示,后续动态场景用三个平面加一维时间 t 表示,论文提出使用六个平面表示动静态场景,即静态场景占三个平面&#x…

【超详细文件操作(三)】C语言

作者:日出等日落 专栏:C语言 只有流过血的手指,才能弹出世间的绝唱。 ——泰戈尔 目录 1.文件的随机读写 1.1 fseek函数 1.1.1 下面使用fseek函数 1.2 ftell函数 1.3 rewind函数 …

Spring源码分析-Bean创建流程三

目录 一、 列举一些创建对象有哪几种方式 二、自定义BeanPostProcess生成代理对象 1、实战案例 2、源码分析 三、通过supplier创建对象 1、实战案例 2、源码分析 四、通过FactoryMethod创建对象 1、实战案例 2、源码分析 五、小总结 一、 列举一些创建对象有哪几种方…

作为一个女测试员是什么样的体验?

面试时极度紧张,语无伦次,觉得肯定没戏,最后却拿到高薪offer。 工作之后我听同事们讲,测试总监面试官并没打算要我,但身边的人都问他: 那个小姐姐什么时候来报道?... 于是在众人的期待的目光…

撮合交易系统简介

1 撮合交易系统简介 金融市场: 为了应对更高峰值的成交量,国内各金融机构,主要是交易所和银联、中心之间需求越来越多: 其中最重要的就是撮合系统: 系统拓扑图: 委托终端/柜台: 网关&#xff1…

一四三、人脸识别自动点赞、关注

文章目录脚本功能获取video当前播放帧图片将图片传到后台调用百度人脸识别接口拿到识别结果处理逻辑效果展示问题记录脚本功能 通过获取video当前播放帧图片,截图调用后台接口,再调用百度人脸识别拿到人脸信息(年龄、颜值、性别等&#xff09…

元宇宙医生虚拟形象提高远程医疗服务质量

与现实中不同,3D虚拟形象是由个人在数字空间中自由选择并进行扮演的。这种3D虚拟形象在元宇宙中的重要性越来越突出。 在元宇宙虚拟空间中,用户借助元宇宙3D虚拟形象就能与其他用户互动、交流并获得真实的沉浸式体验,因此能广泛融入各种生活、…

「解析」牛客网-华为机考企业真题 41-60

又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工…

基于EB工具的TC3xx_MCAL配置开发06_PWM模块配置

目录 1.概述2. EB配置2.1 PWM->General2.2 PWM->Channel2.2.1 PWMChannel配置2.2.2 PwmChannelClass配置2.2.3 GTM通道选取2.3 MCU关联配置2.4 Port关联配置1.概述 本篇开始我们基于EB Tresos工具对英飞凌TC3xx系列MCU的MCAL开发进行介绍,结合项目经验对各MCAL外设的开…

Docker:关于 Dockerfile 编写优化的一些笔记整理

写在前面 分享一些 Dickerfile 构建镜像优化方式的笔记理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式&#…

【React全家桶】Flux与Redux

🎞️🎞️🎞️ 博主主页: 糖 -O- 👉👉👉 react专栏:react全家桶 🌹🌹🌹希望各位博主多多支持!!&a…

javaScript扫雷

文章目录一、准备工作1.图片2.html2.css3.js二、初始化数据1. 配置文件2.工具文件3.逻辑文件1.main函数2.init函数1.随机生成雷2.css添加三、完整代码1.html2.js3.css一、准备工作 1.图片 需要找三张图片 旗子的图片 炸弹的图片 爆炸的图片 2.html html文件夹新建一个html文…

区块链基本原理

区块链的起源 创始者介绍 姓名:中本聪(英语:SatoshiNakamoto),自称日裔美国人,日本媒体常译为中本哲史,此名是比特币协议及其相关软件Bitcoin-Qt的创造者,但真实身份未知。 中本聪于…