OpenAI的提供的Model简要介绍

news2024/11/28 9:54:36

OpenAI提供的model 

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

import os
import openai
import pandas as pd
from IPython.display import display

openai.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 os

encoding = tiktoken.get_encoding('p50k_base')
token_ids = encoding.encode("灾害")
print(token_ids)
bias_map = {}
for token_id in token_ids:
    bias_map[token_id] = -100

def 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 response

long_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.coloradmin.cn/o/825589.html

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

相关文章

记录一下点亮过的技能点

一年级 软件工程导论也就是 计算机导论&#xff0c;主要介绍计算机的发展历程概况&#xff0c;对计算机有个大体的了解。 编程语言学习 C语言&#xff0c;基础语法会用&#xff0c;其实现在忘得有点多了&#xff0c;需要多查询文档才行。 二年级 计算机组成原理&#xff0c;…

【LeetCode每日一题】——807.保持城市天际线

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 中等 三【题目编号】 1572.矩阵对角线元素的和 四【题目描述】 给你一…

助力工业物联网,工业大数据之费用事实指标分析及实现【二十四】

文章目录 1&#xff1a;费用事实指标分析及实现2&#xff1a;差旅事实指标分析及实现3&#xff1a;网点物料事实指标分析及实现 1&#xff1a;费用事实指标分析及实现 目标&#xff1a;实现DWB层费用报销事实指标表的构建 路径 step1&#xff1a;目标需求step2&#xff1a;数据…

有砟铁路三维地质雷达检测数值模拟研究

有砟铁路三维地质雷达无损检测数值模拟研究 前言 据统计&#xff0c;全国铁路营业里程超过14.63万公里&#xff0c;其中高铁超过3.8万公里&#xff1b;全国铁路路网密度152.3公里/万平方公里。有砟铁路主要建造于2012年以前&#xff0c;截止2012年&#xff0c;全国有砟铁路达…

Baklib: 0代码的在线帮助中心

Baklib是一款0代码的在线帮助中心工具&#xff0c;旨在帮助企业和开发者快速搭建和管理自己的帮助中心。无需编写任何代码&#xff0c;只需几个简单的步骤&#xff0c;即可创建一个功能齐全、易于使用的在线帮助中心。Baklib提供了丰富的功能和灵活的定制选项&#xff0c;使用户…

关于迪文屏文本显示 字库生成

生成 30的字体 界面上显示 屏幕上文本控件的点阵数 为字库生成软件的 宽和高 30 30 字库软件的下载链接 三、汉字字库生成 百度网盘链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1o5t https://blog.csdn.net/qq_34118600/article/details/115469371

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽&#xff0c;心谱落愁无序&#xff0c;旧时的誓言&#xff0c;曾而相似&#xff0c;河水在遵循河道的指引下&#xff0c;在曲折前进中放…

通过Python调用禅道API

禅道API接口&#xff0c;非REST接口 调试版本&#xff1a;11.3 百度出来的100%都用不了&#xff08;本篇除外...&#xff09;。于是自己修改了网上代码&#xff0c;先get session&#xff0c;再post登录&#xff0c;最后调用产品列表验证&#xff0c;实测通过。 1 import req…

SAP 物料主数据 字段 配额安排 变化

ECC版本 字段‘配额安排’在物料主数据中&#xff0c;可选使用范围 S4新版本 字段‘配额安排’已经隐藏&#xff0c;后台字段去掉了&#xff0c;屏幕字段设置了不可见&#xff0c;系统默认选择了4

流程管理软件:优化工作流程的数字化解决方案

有这么多任务需要跟踪&#xff0c;一个优秀的工作流系统对于项目经理完成他们的工作至关重要。通过使用工作流软件&#xff0c;项目经理可以避免诸如浪费时间和资源、过度风险和损害最终结果等陷阱。他们可以放心&#xff0c;他们的工作将按照正确的顺序完成&#xff0c;并在此…

文件管理:按名称批量归类,简化整理任务!

在数字化时代&#xff0c;我们每天都会面对海量的文件&#xff0c;从文档、图片、视频到音频&#xff0c;各种各样的文件都在我们的电脑中汇聚。然而&#xff0c;你是否曾为找不到需要的文件而烦恼&#xff0c;或者为整理大量文件而头疼&#xff1f;为了帮助大家解决这些问题&a…

P3368 【模板】树状数组 2 (树状数组小进阶)(内附封面)

【模板】树状数组 2 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某区间每一个数加上 x x x&#xff1b; 求出某一个数的值。 输入格式 第一行包含两个整数 N N N、 M M M&#xff0c;分别表示该数列数字的个数和操作的总…

Jenkins 自动化部署实例讲解,另附安装教程!

【2023】Jenkins入门与安装_jenkins最新版本_丶重明的博客-CSDN博客 也可以结合这个互补看 前言 你平常在做自己的项目时&#xff0c;是否有过部署项目太麻烦的想法&#xff1f;如果你是单体项目&#xff0c;可能没什么感触&#xff0c;但如果你是微服务项目&#xff0c;相…

Vue-----package.json

前言 package.json是Node.js应用程序中的配置文件&#xff0c;它在Vue项目中同样非常重要。在Vue中&#xff0c; package.json文件包含了有关你的应用程序的重要信息&#xff0c;如版本号、依赖项、脚本等。 文件结构 package.json文件通常包含以下内容&#xff1a; {"n…

【Matter】基于Ubuntu 22.04 交叉编译chip-tool

编译工程之际&#xff0c;记录一下编译过程&#xff0c;免得后续遗忘&#xff0c;总结下来chip-tool 交叉编译涉及到的知识点&#xff1a; 需要了解如何支持交叉编译&#xff0c;基于GN编译框架需要理解应用库如何交叉编译&#xff0c;理解pkg-config的使用meson 编译&#xf…

Activiity跳转startActivity源码分析Activity启动流程(上)

1.Activity的startActivity 2.也是调用了Activity的startActivityForResult 3.实际还是startActivityForResult 带option的方法&#xff0c;只不过null传过去的 4.接着调用了 Instrumentation的execStartActivity方法 5.然后是IActivityManager的startActivity 6.IActivity…

WebDAV之π-Disk派盘 + Mountain Duck

Mountain Duck是来自国外的一款方便实用,功能强大的云存储空间本地管理工具。它可以帮助我们在windows电脑上将远程 FTP 空间、WebDAV、Swift、S3、Azure、Rackspace、Google Cloud 等云存储服务转入本地进行管理,使用任何应用程序即可打开远程文件,并在本地盘上工作。你可以…

CUDA_CHECK(cudaFree(...))报错CUDA error 1

GPT-3.5太好用了&#xff0c;报错情况如下&#xff1a; 总结一下, 在使用cudaFree释放之前cudaMalloc()分配的GPU内存时&#xff0c;报错cuda error,最有可能的几个原因就是&#xff1a; 试图释放已经释放的gpu内存&#xff0c;在调用cudafree&#xff08;&#xff09;时确保没…

小程序自定义tabBar+Vant weapp

1.构建npm&#xff0c;安装Vant weapp&#xff1a; 1&#xff09;根目录下 &#xff0c;初始化生成依赖文件package.json npm init -y 2&#xff09;安装vant # 通过 npm 安装 npm i vant/weapp -S --production 3&#xff09;修改 package.json 文件 开发者工具创建的项…

c++11 标准模板(STL)(std::basic_ifstream)(四)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ifstream : public std::basic_istream<CharT, Traits> 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istream…