OpenAI的提供的Model简要介绍

OpenAI提供的model 

通过OpenAI的接口可以查看所有支持的模型(目前的账号无GPT4的权限,所以没有列举GPT4相关的模型)。

import os
import openai
import pandas as pd
from IPython.display import displayopenai.api_key = os.getenv("OPENAI_API_KEY")
# list all open ai models
engines = openai.Engine.list()
pd = pd.DataFrame(openai.Engine.list()['data'])
display(pd[['id', 'owner']])

入下所示显示了所有支持的models,下面的model大致可以分为三类:

类型一:GPT-3.5 家族的模型,包括 ChatGPT 所使用的 gpt-3.5-turbo 或者 gpt-3.5-turbo-0301,以及 text-davinci-003 和 text-davinci-002 这两个模型。前者专门针对对话的形式进行了微调,并且价格便宜。后两个里,003 的模型有一个特殊的功能,就是支持“插入文本”这个功能。003 也是基于强化学习微调的,而 002 则是做了监督学习下的微调。text-davinci-003 和 002 模型比 3.5-turbo 要贵 10 倍,但是输出更稳定。

类型二:是 Ada、Babbage、Curie 以及 Davinci 这四个基础模型。只适合用于下达单轮的指令,不适合考虑复杂的上下文和进行逻辑推理。这四个模型按照首字母排序,价格越来越贵,效果越来越好。而且如果要微调一个属于自己的模型,也需要基于这四个基础模型。

类型三:是 text-embedding-ada-002、text-similarity-ada-001 这些专门用途模型。一般来说,通过这个模型来获取 Embedding,再用在其他的机器学习模型的训练,或者语义相似度的比较上。

通过下面的代码,可以查看下不同的model生成的文字向量的维度。

from openai.embeddings_utils import get_embedding
text = "让我们来算算Embedding"embedding_ada = get_embedding(text, engine="text-embedding-ada-002")
print("embedding-ada: ", len(embedding_ada))similarity_ada = get_embedding(text, engine="text-similarity-ada-001")
print("similarity-ada: ", len(similarity_ada))babbage_similarity = get_embedding(text, engine="babbage-similarity")
print("babbage-similarity: ", len(babbage_similarity))babbage_search_query = get_embedding(text, engine="text-search-babbage-query-001")
print("search-babbage-query: ", len(babbage_search_query))curie = get_embedding(text, engine="curie-similarity")
print("curie-similarity: ", len(curie))davinci = get_embedding(text, engine="text-similarity-davinci-001")
print("davinci-similarity: ", len(davinci))

 

 可以看到选用不同的模型,生成的向量维度是不同的,最小的是1024,最大的是12288,相差近10倍,所以,选用不同的模型,价格也不相同。

使用Moderation接口可以提出某些问题

当我们调用gpt-3.5-turbo的模型,问一些涉及暴力等的问题时,例如下面代码中问题,模型大概会这样回答"很抱歉,我是一台人工智能助手,没有实体存在,也不会对任何人或事物造成伤害。同时,我也不会对任何不适当或暴力的言语做出回应。请尊重彼此,保持良好的沟通和交流方式。"实际如果想识别某些有害的问题,可以直接调用Moderation.create(input=text)接口,如下面代码所示:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")threaten = "你不听我的我就拿刀砍死你"
def moderation(text):response = openai.Moderation.create(input=text)output = response["results"][0]return output
print(moderation(threaten))

返回的接口中violence=true,说明这个问题有暴力内容在里面。有了这个接口,在实际应用中就可以利用该接口提供的能力提出有害问题,保证机器人的健康性。

Completion接口中的logit_bias参数

在completion接口中,对于logit_bias参数的使用说明是这样"

Modify the likelihood of specified tokens appearing in the completion.

Accepts a json object that maps tokens (specified by their token ID in the GPT tokenizer) to an associated bias value from -100 to 100. You can use this tokenizer tool (which works for both GPT-2 and GPT-3) to convert text to token IDs. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token.

As an example, you can pass {"50256": -100} to prevent the <|endoftext|> token from being generated." 

总结而言,就是对某些文字进行分词处理后,对每个token进行赋值,如果赋值是100,表示生成的答案中一定要包含这个文字,如果是-100则说明生成的答案的一定不能包含该文字,若果在-1和1间那么会影响不包含或者包含的概率。如果在实际业务中,不想生成的答案中包含某些特定文字,那么可以通过赋值100来解决。如下面的代码所示,将“灾害”两个字赋值为-100.


import tiktoken
import openai
import osencoding = tiktoken.get_encoding('p50k_base')
token_ids = encoding.encode("灾害")
print(token_ids)
bias_map = {}
for token_id in token_ids:bias_map[token_id] = -100def make_text_short(text):messages = []messages.append({"role": "system", "content": "你是一个用来将文本改写得短的AI助手,用户输入一段文本,你给出一段意思相同,但是短小精悍的结果"})messages.append({"role": "user", "content": text})response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages, temperature=0.5, max_tokens=2048,n=2, presence_penalty=0, frequency_penalty=2,logit_bias=bias_map,)return responselong_text = """
列举全球遇到的重大灾害问题,例如全球变暖,经济下行等
"""
short_version = make_text_short(long_text)
index = 1
for choice in short_version["choices"]:print(f"version {index}: " + choice["message"]["content"])index += 1

生成的结果如下所示:虽然例子里面出现了“重大灾害”四个字,但是生成的结果里面都没有灾害两个字。

可以看到,利用logit_bias参数可以实现某些敏感字体脱敏的效果。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瀑布流布局columns

瀑布流布局其核心是基于一个网格的布局&#xff0c;而且每行包含的项目列表高度是随机的&#xff08;随着自己内容动态变化高度&#xff09;&#xff0c;同时每个项目列表呈堆栈形式排列&#xff0c;最为关键的是&#xff0c;堆栈之间彼此之间没有多余的间距差存大。还是上张图…

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…

FPGA项目设计:数字时钟

项目要求&#xff1a; 设计一个数字时钟&#xff0c;数码管前两位显示小时&#xff0c;数码管中间两位显示分钟&#xff0c;数码管后面两位显示秒。 项目设计&#xff1a; 系统框架图&#xff1a; 计数模块时序图&#xff1a; 代码实现&#xff1a; 计数模块&#xff1a; /…

AndroidStudio查看AOSP的两种方法

作者&#xff1a;利维亚的杰洛特 本篇文章主要分享一些自己平时工作中使用AndroidStudio查看aosp的方法&#xff0c;同时抛砖引玉&#xff0c;希望知道其它便利有效的查看调试方式技巧的大佬们能够不吝赐教&#xff0c;大家互相分享&#xff0c;共同进步。 如果直接用AndroidS…

解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起

新搭建的一个Hadoop环境&#xff0c;用Sqoop批量抽数的时候发现特别慢&#xff0c;我们正常情况下是一个表一分钟左右&#xff0c;批量抽十几个表&#xff0c;也就是10分钟的样子&#xff0c;结果发现用了2个小时&#xff1a; 查看yarn日志 发现有如下情况&#xff1a; 主要有两…

【iOS】GCD深入学习

关于GCD和队列的简单介绍请看&#xff1a;【iOS】GCD学习 本篇主要介绍GCD中的方法。 栅栏方法:dispatch_barrier_async 我们有时候需要异步执行两组操作&#xff0c;而且第一组操作执行完之后&#xff0c;才能开始执行第二组操作&#xff0c;当然操作组里也可以包含一个或者…

HTTP——一、了解Web及网络基础

HTTP 一、使用HTTP协议访问Web二、HTTP的诞生1、为知识共享而规划Web2、Web成长时代3、驻足不前的HTTP 三、网络基础TCP/IP1、TCP/IP协议族2、TCP/IP的分层管理3、TCP/IP 通信传输流 四、与HTTP关系密切的协议&#xff1a;IP、TCP和DNS1、负责传输的 IP 协议2、确保可靠性的TCP…

Gartner:2022年全球IaaS公有云服务市场增长30%,首次突破1000亿美元

根据Gartner的统计结果&#xff0c;2022年全球基础设施即服务&#xff08;IaaS&#xff09;市场从2021年的928亿美元增长到1203亿美元&#xff0c;同比增长29.7%。亚马逊在2022年继续排在IaaS市场的第一名&#xff0c;其次是微软、阿里巴巴、谷歌和华为。 最新消息&#xff0c;…

制砖机系统比例控制阀放大器

制砖机系统是一种生产砖块的机器设备系统。该系统由多个部分组成&#xff0c;包括压力系统、模具和振动系统、烘干和烧制系统等。压力系统是制砖机的主要组成部分之一&#xff0c;它通过压力将原料压缩成一定形状和尺寸的块状&#xff0c;然后经过烘干和烧制等步骤&#xff0c;…

解决单节点es索引yellow

现象 单节点的es&#xff0c;自动创建索引后&#xff0c;默认副本个数为1&#xff0c;索引状态为yellow 临时解决 修改副本个数为0 永久解决 方法1、修改elasticsearch.yml文件&#xff0c;添加配置并重启es number_of_replicas&#xff1a;副本分片数&#xff0c;默认…

【数据结构】——线性表的相关习题

目录 题型一&#xff08;顺序表的存储结构&#xff09;题型二&#xff08;链表的判空&#xff09;题型三&#xff08;单链表的建立&#xff09;题型四&#xff08;顺序表、单链表的插入删除&#xff09; 题型一&#xff08;顺序表的存储结构&#xff09; 1、线性表的顺序存储结…

解决Git下载失败太慢

解决Git下载失败太慢 Git 官网下载地址: https://git-scm.com/downloads Windows 下载地址: https://git-scm.com/download/win 用官网的地址下载, 需要从github上下载, 由于国内某些原因, 下载速度缓慢, 还经常失败. 国内用户, 可以通过镜像的方式, 提高下载速度. 阿里镜…

Linux - 进程地址空间

引入 在学习C语言的时候&#xff0c;内存包括栈区、堆区、静态区 这个布局是内存吗&#xff1f; 不是&#xff01;&#xff01; 这是进程地址空间&#xff01; 下面测试一下&#xff1a; 11540是bash进程 我们修改一下源程序&#xff0c;在观察下结果 发现父进程的g_value的值不…

gitee修改代码提交操作步骤说明

一&#xff0c;简介 本文主要介绍如何从gitee仓库下载文件&#xff0c;本地修改&#xff0c;本地提交&#xff0c;然后再push到远程服务器的操作步骤。供参考&#xff0c;欢迎一起讨论交流~ 二&#xff0c;操作步骤 总的操作步骤分为以下几步 1&#xff0c;远程服务器下载文…

TI的IWR6843跑3D People Tracking(3D人体检测追踪实验)demo的上手教程

1.硬件准备 1.IWR6843板子 2.两个USB转串口模块&#xff08;因为我的是自己做的板子&#xff0c;板子上没有集成USB转串口芯片&#xff09; 2.软件准备 1.最新版本的CCS&#xff0c;注意后缀没有THEIA https://www.ti.com/tool/CCSTUDIO?DCMPdsp_ccs_v4&HQSccs 2.最新…

Linux(三)---------网络路由命令(route路由命令)

一.route路由命令 1.什么是route路由&#xff1f; 计算机之间的数据传输必须经过网络&#xff0c;网络可以直接两台计算机&#xff0c;也可以通过一个一个的节点去连接。路由可以理解为互联网的中转站&#xff0c;网络中的数据包就是通过一个一个的路由器转发到目的地的。 路…

微信小程序 - 解析富文本插件版们

一、html2wxml 插件版 https://gitee.com/qwqoffice/html2wxml 申请使用注意事项 插件版本解析服务是由 QwqOffice 完成&#xff0c;存在不稳定因素&#xff0c;如对稳定性有很高的要求&#xff0c;请自行搭建解析服务&#xff0c;或在自家服务器上直接完成解析。对于有关插…

私人网盘搭建(利用阿里云oss搭建)

1、个人网盘场景说明 个人网盘架构 使用ECS安装Cloudreve提供网盘服务&#xff0c;OSS提供存储服务。当用户使用个人网盘时&#xff0c;访问部署Cloudreve ECS的公网IP地址即可完成文件上传、下载、删除、分享等服务。 什么是Cloudreve Cloudreve可帮助您即刻构建出兼备自用…

视频太大怎么压缩变小?视频压缩技巧快来学

我们都知道&#xff0c;视频分辨率越高&#xff0c;文件体积也就越大&#xff0c;为了更好的存储、传输和播放&#xff0c;我们需要适当压缩视频的大小&#xff0c;那么怎么才能轻松的将视频文件压缩变小呢&#xff1f;下面就给大家分享几个简单的方法&#xff0c;一起来看看吧…