当前位置: 首页 > article >正文

OpeAI大模型学习(一)

OpenAI大模型家族介绍

多模态大模型:能够理解和生成自然语言或代码+理解图像+生成图像等

文本大模型:能够理解和生成自然语言或代码

视觉大模型:能够根据自然语言提示生成和编辑图像的模型

语音大模型:将文本转换为自然听起来的语音的模型集,将音频转换为文本的模型

Embedding大模型:将文本转换为数值形式的模型集

审查大模型:检测文本是否可能敏感或不安全的微调模型

多模态大模型

GTP-4

GPT-4是一个大型多模态模型(接受文本或图像并输出文本),它可以比我们以前的任何模型都更准确地解决难题,得益于它更广泛的通用知识和更高级的推理能力

Token解释

OpenAI的token可以理解为文本中的词块,在APi处理提示之前,输入会被分解成为这些token,这些token并不一定恰好在单词的开始或结束处分割--token可以包含尾部空格甚至子词,以下是一些理解token长度的有用准则

1个token≈4个英文字符

1个token≈3/4个单词

100个token≈75个单词

或者

1-2个句子≈30个token

1个段落≈100个token

1500个单词≈2048个token 

不同语言中,单词如何被分割成token是不同的

使用token的最佳实践

1.如果某个大模型上下文长度为4097个token,这些token在提示和完成之间共享,如果您的提示有4000个token那么完成最多只能有97个token 

2.API根据单词在语料库数据中的上下文来处理单词,大模型将提示词转换为token列表,处理提示,然后将预测的token转换回我们在响应中看到的单词,对于我们来说可能看起来相同的两个单词,根据它们在文本中的结构,可能会生成不同的token

3.了解token有助于更好地设计提示,例如,由于token可以包含尾部空格,因此知道以空格结尾的提示词可能会导致输出质量较低是有帮助的

总得来说,openai 的token是文本处理中的基本单位,理解和利用好token的特点可以帮助我们更有效地使用API,并生成更符合需求的输出

非流式输出与流式输出

非流式输出可以理解为我们像OpenAI提出一个问题,我们之前去拿这个问题的全部答案,那么久需要发送请求以后等待OpenAI全部生成以后获取响应,等待响应可能需要几秒甚至更长的时间,这样会影响用户体验

SSE

服务器发送事件,服务器向客户端推送数据,客户端通过事件监听器接收数据

我们在学习网络协议中,HTTP协议是无法做到服务器主动推送信息(Websocket这种长连接可以实现),但是有一种变通方法,就是服务器向客户端声明,接下来要发送的是信息流(sreaming)

也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来,这时客户端不会关闭链接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子,本质上,这种通信就是以流信息的方式,完成一次用时很长的下载

向OpenAI请求流式输出

要流式传输完成内容,在调用聊天完成或完成端点设置stream=True

OpenAI流式返回格式:data:数据块\n\ndata:数据块\n\n

解析OpenAI流式返回的内容

content从delta字段而不是message字段提取数据块

当响应数据中的finish_reason是stop的时候代表流式输出返回结束

使用OpenAI-python库解析

解析服务器发送事件(Server-sent events.SSE )并非易事,应该谨慎进行,简单的策略如通过换行符切割,可能会导致解析错误,建议使用支持SSE协议的已有客户端库,这些库已经考虑了SSE的所有规则和特殊情况,能够正确地解析事件流,使用这些库可以避免手动解析时可能遇到的复杂性和错误,使得开发者可以专注于如何使用事件数据,而不是如何解析他们

OpenAI流式请求的缺点

内容审查问题,在生产应用程序中使用stream=True会使内容的审核变得更加困难,因为部门完成内容更难评估,向C端用户提供服务的时候,需要注意内容审查的问题

无usage字段。流式响应的另一个小缺点是响应不再包括usage字段,告诉你消耗了多少令牌,在接收和组合所有响应后,你可以使用tiktoken自己计算这一点

  


http://www.kler.cn/a/427750.html

相关文章:

  • WPF Prism ViewDiscovery
  • Python机器学习笔记(五、决策树集成)
  • 以攻击者的视角进行软件安全防护
  • Java爬虫技术:全面获取电商平台所有商品信息
  • C++ - map,set
  • 【Java Web】Tomcat 快速入门
  • Next.js 实战 (二):搭建 Layouts 基础排版布局
  • 【信息系统项目管理师】第8章:项目整合管理过程详解
  • 浅析基于自动驾驶的4D-bev标注技术
  • 基于Astar的复杂栅格地图路线规划算法matlab仿真
  • 《深入浅出HTTPS》读书笔记(16):消息验证码算法分类
  • DMA简介
  • VSCode(四)CMake调试
  • HTML5系列(5)-- SVG 集成详解
  • C# Dapper的简单使用
  • 代码整洁之道学习
  • 力扣题库-掷骰子模拟详细解析
  • 总篇:Python3+Request+Pytest+Allure+Jenkins接口自动化框架设计思路
  • 2024年构建PHP应用开发环境
  • Redis的高可用之哨兵模式