open AI API使用经验

open AI API

文章目录

  • open AI API
    • 引言
    • 概念
      • Tokens
      • prompts
      • Models
    • 使用流程
      • 1.登录open AI 账号获得API keys
      • 2.接入环境
      • 3.API用例
        • (1)Completion
        • (2)ChatCompletion
        • (3)Images
        • (4)Edit

引言

OpenAI提供API接口,允许第三方开发者将GPT-3等模型集成到他们的应用程序和服务中,这种方式更具交互性和灵活性。与Chat GPT提供的聊天界面相比,OpenAI API提供了多种选项和设置,开发人员可以使用这些选项和设置来自定义模型的行为,例如模型的种类、模型的参数和任务定义等。在2023年3月1日,OpenAI开放了GPT-3.5 Turbo模型的API使用,据说这也是ChatGPT中正在使用的模型。使用API收费是每1000个tokens收费0.002美元,换算成中文大约是2分钱700个字。

概念

Tokens

传统意义上来说,GPT 模型使用的是非结构化文本,这些文本在模型中被表示为一连串的「token」标识符 ,open AI 模型将文本分解为tokens来理解和处理,也是模型计费的单位。tokens可以是单词,也可以是字符块。例如,像“pear”这样的简短而常见的单词是单个token,而单词“hamburger”被分解为“ham”,“bur”和“ger” 3个token。给定 API 请求中处理的token数量为输入和输出的总和。

API 调用中的token总数会影响:

  1. API 调用费用(按每个token支付)
  2. API 调用需要多长时间,因为写入更多token需要更多时间
  3. API 调用是否有效,因为总token必须低于模型的最大限制(gpt-3.5-turbo-0301 处理限制为 4096 个tokens)

prompts

提示(prompts),简单来说就是你想让模型输出你要想要的东西,首先需要给模型描述你想要的东西。提示可以是对任务的简短描述或者包含一个或多个输出示例。

Prompt 可能会包含以下几个元素

  • 指令 Instruction :告诉模型你想要它执行的任务,例如:“请将上面的文字翻译成英文:”就是一个 instruction。
  • 上下文 Contenxt :当前对话的上下文就是背景和语境,比如让ChatGPT 进行角色扮演,通过为 AI 分配一个角色的方式引导 AI 给出更准确的输出内容。
  • 输入数据 Input Data :你想要给chatgpt处理的对象,如一段文本、一个问题,例如上文中翻译的文本内容。
  • 输出指示符 Output Indicator:告诉模型你希望得到的输出类型或者格式。比如让模型给你一个列表,或者让模型给你一个由分号分隔的结果,都属于 Output Indicator。
你是一个多标签文本分类系统,请帮我完成中文多标签文本分类任务。
任务要求如下:对输入的句子进行多标签文本分类并按指定格式输出。
支持的分类类别仅限{{ labels|length }}类:{{ labels|join('、') }}。
解释及示例:{{ hint }}
输出格式要求:分类标签列表。以下是输入句子:{{ text }} 
输出:

Models

下列表格展示了Open AI API 各个模式下的可以使用的模型:

ENDPOINTMODEL NAME描述
/v1/chat/completionsgpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301ChatCompletion是一个特定的终端点,主要用于模拟人类对话,例如聊天机器人、客服对话等任务。与Completion不同,ChatCompletion需要处理对话上下文,即对于同一个用户提出的多个问题或回答,需要考虑到之前的对话历史,以便提供更加连贯和准确的回复。
/v1/completionstext-davinci-003, text-davinci-002, text-curie-001, text-babbage-001, text-ada-001completion是一个通用的终端点,主要用于生成文本,例如写作、翻译、摘要等任务。它接受一个文本提示作为输入,然后返回一段完整的文本。
/v1/editstext-davinci-edit-001, code-davinci-edit-001用户可以将原始文本提交给 API,以获取建议的修改和改进。API 将返回一组编辑建议,这些建议包括替换、删除、插入和重新排列原始文本,
/v1/audio/transcriptionswhisper-1提供音频文件,返回语音的转录文本,价格为每分钟 0.006 美元
/v1/audio/translationswhisper-1提供音频文件,返回另一种语言的转录文本
/v1/fine-tunesdavinci, curie, babbage, ada提供训练数据,设定参数如学习速率、微调轮数、批量大小,对已有的GPT模型进行微调
/v1/embeddingstext-embedding-ada-002, text-search-ada-doc-001提供sentence/paragraph-level embedding。可以将一个或多个文本输入作为请求,并获得与每个文本对应的向量嵌入作为响应。如文本分类、语义搜索、文本相似性计算等。向量嵌入可以被认为是文本在高维空间中的表示,通过计算向量之间的距离或相似度来判断文本之间的关系
/v1/moderationstext-moderation-stable, text-moderation-latest可以将一个或多个文本输入作为请求,并获得每个文本对应的审核结果作为响应。审核结果包括两个部分:是否通过审核和原因。如果文本通过了审核,则结果中的“toxicity”值为0,否则值为1,并且会返回一些相关的信息,例如违规词汇、句子结构、情感分析等。
#查看模型权限
import os
import openai
openai.organization = "YOUR_ORG_ID" #使用自己的ID
openai.api_key = os.getenv("OPENAI_API_KEY") #使用账号下创建的key
openai.Model.list()

使用流程

1.登录open AI 账号获得API keys

生成自己的api_key: https://platform.openai.com/account/api-keys

初始赠送5美金使用额度,额度用完之后需要自行购买,具体的收费价格和模型相关。

在这里插入图片描述

2.接入环境

安装官方的Python库,调用API时需要准备科学上网环境或配置代理

pip install openai

3.API用例

(1)Completion

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
# or openai.api_key = "YOUR OPENAI_API_KEY" prompt = """
Decide whether a comment on CSDN sentiment is positive, neutral, or negative.
comment: I want to learn the openai more!
Sentiment:
"""response = openai.Completion.create(model="text-davinci-003",prompt=prompt,	max_tokens=1024,   temperature=0,top_p=0.1)print(response)

temperature: 介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定。

top_p:作用效果类似temperature,,其中模型考虑具有top_p概率的tokens。所以 0.1 意味着只考虑包含前 10% 概率的tokens

max_tokens: 生成的最大tokens数量, 加上prompt的tokens后,不能超过模型最大限制。

输出结果:

{"choices": [{"finish_reason": "stop","index": 0,"logprobs": null,"text": "Positive"}],"created": 1681656672,"id": "cmpl-75y0ePNfI8aT41A03W3WpYYwfvcuD","model": "text-davinci-003","object": "text_completion","usage": {"completion_tokens": 2,"prompt_tokens": 36,"total_tokens": 38}
}Process finished with exit code 0

(2)ChatCompletion

content = '''
you are my assistant, Could we talk a little bit about 
the schedule today, what will we do in  the afternoon ?
'''
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "user", "content": content}],temperature=0.3,max_tokens=1048,top_p=1.0,
)text = response.choices[0].message["content"]
print(text)

输出结果:

Of course! Can you please provide me with some more information about your schedule today? What activities do you have planned for the morning? This will help me better understand what we can do in the afternoon.

(3)Images

OpenAI API在给定原始图像或提示的情况下创建扩展或生成的图像。

response = openai.Image.create(prompt="A super cute girl sitting in a basket of flowers, pop mart style, chibi",n=1,size="1024x1024"
)
image_url = response['data'][0]['url']
print(image_url)

生成的图片:

在这里插入图片描述

(4)Edit

edit mode如果给出提示和指令,模型将返回经过编辑的版本

mycode = '''
while(!dead) { code(); 
} 
'''response = openai.Edit.create(model="code-davinci-edit-001",input=mycode,instruction="Fix the code mistakes and optimize it"
)print(response)

输出结果:

{"choices": [{"index": 0,"text": "while(!dead) \n    code();\n"}],"created": 1681659196,"object": "edit","usage": {"completion_tokens": 41,"prompt_tokens": 35,"total_tokens": 76}
}Process finished with exit code 0

常用模型说明:

LATEST MODELDESCRIPTIONMAX TOKENSTRAINING DATA
gpt-3.5-turboMost capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with our latest model iteration.4,096 tokensUp to Sep 2021
gpt-3.5-turbo-0301Snapshot of gpt-3.5-turbo from March 1st 2023. Unlike gpt-3.5-turbo, this model will not receive updates, and will only be supported for a three month period ending on June 1st 2023.4,096 tokensUp to Sep 2021
text-davinci-003Can do any language task with better quality, longer output, and consistent instruction-following than the curie, babbage, or ada models. Also supports [inserting] completions within text.4,097 tokensUp to Jun 2021
text-davinci-002Similar capabilities to text-davinci-003 but trained with supervised fine-tuning instead of reinforcement learning4,097 tokensUp to Jun 2021
code-davinci-002Optimized for code-completion tasks8,001 tokensUp to Jun 2021

参考

https://platform.openai.com/docs

https://www.dataapplab.com/a-simple-guide-to-openai-api-with-python/

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

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

相关文章

卖AI数字人代理是小风口吗?

我是卢松松,点点上面的头像,欢迎关注我哦! 2023年第一个小风口是:以ChatGPT为代表的人工智能AI。第二个创业小风口则是:数字人直播带货。注意我说的是数字人代理。今天的卢松松的文章就扯一扯数字人直播。 最近龚文…

马车拉的再好,也该摸摸方向盘了!近500家美国企业用ChatGPT取代员工

Datawhale分享 最新:GPT影响,来源:量子位 自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。 据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的&#xff0…

机场云商sign解析

这里直接进入算法查找主题,至于如何逆向小程序可以在GitHub上搜索wxunpack得知。 这里我就不重复展示抓包过程,抓包里面我们看到header里有nonceStr、sign 通过关键字直接搜索小程序源码得到关键部分: if ("POST" t) y.sign r(d,…

chatgpt赋能python:Python屏蔽一行代码的方法详解

Python屏蔽一行代码的方法详解 Python作为一种高级编程语言,在开发过程中经常需要注释掉一行或多行代码,以便调试或跳过特定的代码段。本文将介绍Python屏蔽一行代码的方法。 方法一:用#将代码注释掉 在Python中,用#可以快速注…

网页源代码检查时隐藏 WebSocket 的后端地址

背景 近期在自研如何通过 OpenAI 实现 与ChatGPT 官网一样的聊天对话效果。 用到了 html5websocketpython 三项技术 , 于是用一天时间自学了一下这方面技术。 当实现了功能之后,就得考虑安全问题: 在用 html5 实现与 websocket 通讯时,如何保…

你是不是在担心,ChatGPT写出的文字被其它AI识别?

文 / 高扬(微信公众号:量子论) 最近不少人问我一个道听途说的事情:听说已经有AI工具能够识别是不是ChatGPT写的文字了? 看来必要写篇文章,通过摆事实,为大家压压惊。 在赌场里,能抓老千的人一定…

uniapp判断是否登录跳转处理

问题 uniapp中,我们的页面是在pages.json里面配置的,第一个页面是我们的启动页, 假设我们第一个启动页设置成登录页,那我们每次是不是每次检测token,都会监测登录页,然后才会跳转至想要的页面 假设我们第一…

Qt中登录界面跳转到主界面的两种方法

Qt中登录界面跳转到主界面的两种方法 1 登录界面跳转2 跳转的两种方式2.1 利用QDialog::Accepted2.2 利用QObject::connect( ) 1 登录界面跳转 登录界面跳转,应该是项目的常见需求了。 输入账号、密码后,点击登录按钮跳转。 2 跳转的两种方式 这里博…

登录页面跳转

登录页面跳转 开发工具与关键技术:VS、MVC作者:黎官凤撰写时间:2019/05/10在做项目的时候有很多的项目都是需要实现登录的,在登录页面上填写完整各种登录信息然后点击登录按钮跳转到主页面从而实现到你登录进去要实现的功能。就像…

AndroidStudio创建手机登录注册跳转界面

一、新建一个空的LoginActivity 二、在activity.login.xml中进行布局设计 (一)那么如何打开呢这个.xml文件呢? 新建activity后里面会有初始代码,按住Ctrl键点击activity.login就可以进入xml文件了。 (二)…

如何用Android Studio实现登录跳转

前言 这个项目是我很早的时候写的,现在将其发上来供大家参考。可能存在一些不规范的问题,如有不对,欢迎批评指正。首先需要安装配置好Java开发环境,并选择任意一款Android开发工具进行编程,推荐下载安装Android Studi…

关于swagger突然跳转登录页面

今天建了一个初始项目,引入swagger之后,启动调用,却总跳转到一个登录页面,手足无措 最后原因是导入了security的包,导致权限安全拦截 注释后运行成功,如果没有成功看一下dependencies 里面是否还存在secur…

Android--使用显式Intent,实现从登录界面到注册界面的跳转

//Activity_abaka.xml --------------注册界面<?xml version"1.0" encoding"utf-8"?><RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xml…

HTML实现登录后跳转到指定页面,不回退

最近开发页面&#xff0c;需要实现登录功能&#xff0c;成功后跳转到指定页面&#xff0c;之前尝试了好几种页面被跳转方法&#xff0c;但是都失败了&#xff0c;好在最终成功跳转&#xff0c;且浏览器不会后退&#xff0c;所以来记录一下&#xff1a; 最开始我使用的是window.…

登录页面,登录后跳转不成功

一、登录后跳转不成功&#xff0c;原因未知 二、分析①&#xff1a;404错误&#xff1a;用户操作资源不存在 分析②&#xff1a; action跳转地址为&#xff1a;http:/localhost:80/day0901/login 网页中登录后实际跳转地址为&#xff1a;http://localhost:8005/localho…

如何从短信链接打开跳转到微信App内

运营做了一个活动&#xff0c;准备发送短信推广出去&#xff0c;结果问题来了&#xff0c;用户接收到短信后&#xff0c;点击短信里的链接&#xff0c;默认是用的系统浏览器打开的&#xff0c;但我们的活动是用微信支付啊~~~微信支付啊~~~ 系统浏览器里不支持啊&#xff01;&a…

uniapp登录拦截器(未登录点击其他地方跳转登录页)

项目场景&#xff1a; 例如&#xff1a;客户要求用户在未登录的情况下&#xff0c;用户只可以在底部导航栏操作&#xff0c;点击其他的的功能都要跳转到登录页面。 uni.addInterceptor拦截器 是uni-app官网提供的拦截器&#xff0c;可以利用它来实现登录拦截器&#xff0c;用户…

【Android】用户登录界面功能实现:登陆跳转、退出

文章目录 用户登录界面功能实现&#xff1a;登陆跳转、退出♦ 回顾♦ 编写 MainActivity 实现功能登录功能效果退出弹框、连续点击返回退出 ♦ 设计 activity_my_tool.xml 展示工具界面♦ 编写 MyToolActivity 展示欢迎信息 用户登录界面功能实现&#xff1a;登陆跳转、退出 ♦…

登录成功不跳转的问题

一般而言&#xff0c;登录成功后页面会进行跳转&#xff0c;但我最进遇到一个问题&#xff0c;会导致原应该进行跳转的登录&#xff0c;在成功输入完账号密码以及验证码后&#xff0c;点击登录按钮&#xff0c;弹出登录成功的提示框&#xff0c;点击确定后&#xff0c;却没有跳…

GPT4.0写爬虫,连bug都没有

灵感来源 看到很多大佬在发这个&#xff0c;打开一看是个小光子&#xff0c;付费课程&#xff0c;所以我觉得写一个简单的免费教程。 简单示例 我们用一个简单的来介绍&#xff0c;比如爬取这位博主: https://blog.csdn.net/AOAIYI/article/details/130659496定义目标 下面…