提示:如果你认为本文对你有帮助,请点一下关注,后面会有更多人工智能方面的文章。
文章目录
如果有问题可以联系我**:https://gitcode.net/asplh/chatgpt
chatgpt接口官方的名字叫做Chat completions,是指ChatGPT在用户输入一部分内容后,为用户推荐的可能的自动完成内容。这些自动完成的内容可以是一个词、短语、句子甚至是一篇文章等等。Chat completions可以让用户更快地输入想要表达的内容,同时也能提高用户的交互效率和满意度。
使用OpenAI chatgpt API,您可以使用gpt-3.5-turbo和gpt-4构建自己的应用程序,从而实现许多有趣的功能,例如:
还有更多功能可以自行尝试
本文将向您介绍如何调用聊天模型的API,并分享一些使用技巧。您也可以在OpenAI Playground中测试效果。
聊天模型接受一系列消息作为输入,并生成一条由模型生成的消息作为输出。虽然聊天模式旨在使多轮对话容易进行,但它同样
适用于单次任务,而无需进行任何对话。简单的说就是输入一条消息给chatgpt他会给你生成一个回答返回过来,问答可以是多伦
的 像正常的聊天一样。
简单的介绍完了 我们看一下如何使用chatgpt接口。
一个简单的API调用示例如下(python):
import openai
openai.api_key = 'XXXXX'
messages=[]
messages.append({'role': 'system', 'content': "我希望你扮演一个小说家。您将提出富有创意和引人入胜的故事"})
messages.append({'role': 'user', 'content': "你好"})
messages.append({'role': 'assistant', 'content': "你好,请问我能为你做些什么?"})
messages.append({'role': 'user', 'content': "帮我写一篇关于冒险的小说"})
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=messages,
)
#上面的GPT-3.5-turbo是使用的GPT3.5模型 可以替换为其他模型如:
# gpt-4
# gpt-4-0314
# gpt-4-32k
# gpt-4-32k-0314
ai_response = response.choices[0].message['content']
print(ai_response)
http请求代码:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
如果你是用的python可以使用python代码,如果你用的是其他语言比如php或者c++等可以使用http请求的方式调用
上面代码主要参数是messages参数。messages必须是一个对象数组,其中每个对象都有一个角色(“system”、“user”或
“assistant”)和内容(消息的内容)。对话可以很短,也可以很长。
一般情况,messages内容先是system消息,然后是交替出现的user和assistant。
| 类型 | 作用 |
|---|---|
| system | 设置chatgpt的角色。 |
| user | 消息是 给chatgpt提交的我们的问题。 |
| assistant | 消息 是chatgpt给返回的消息。 |
其中system消息有助于设置助手的行为。通俗点讲就是可以给chatgpt设定一个角色让它取扮演,例如我上面代码是,指定让
chatgpt“扮演一个小说家”。这样我们后面的问答都是在这个前提下进行的,就是chatgpt会一直扮演一个小说家和我们对话。
system不是必须的,也可以不设置。
注意我上面代码使用了4条消息,分别是“system”、“user” 、“assistant”、“user”
其中system是设定的角色,后面的“user” 、“assistant”是历史记录 就是曾经我问过chatgpt的内容和他回答我的内容
最后一个user才是本次我要问他的内容。为什么要这样呢,因为chatgpt官方没有提供给我们数据存储的功能,所以只能我们
自己存储数据每次需要把历史记录提交给他,chatgpt才能有上下文的功能。当然这样也会浪费更多的tokens。
当我们提交上面的请求,chatgpt会给我们响应,响应格式:
{
'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve',
'object': 'chat.completion',
'created': 1677649420,
'model': 'gpt-3.5-turbo',
'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87},
'choices': [
{
'message': {
'role': 'assistant',
'content': 'The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.'},
'finish_reason': 'stop',
'index': 0
}
]
}
我们可以ai_response = response.choices[0].message[‘content’]这样取出返回的内容
每个响应都包含一个finish_reason。finish_reason的可能值包括:
| 值 | 说明 |
|---|---|
| stop | API返回完整的模型输出 |
| length | 由于max_tokens参数或令牌限制而导致的不完整模型输出 |
| content_filter | 由于我们的内容过滤器的标志而省略的内容 |
| null | API响应仍在进行中或不完整 |
finish_reason的值在这个事例中作用体现不大,后面开发流式传输(steam)会有用,后面会专门讲如何开发流式传输实现打字机的效果
usage字段:在ChatGPT接口返回的内容中,usage字段是用来记录API调用时消耗的token数目的,具体含义如下:
| 值 | 说明 |
|---|---|
| prompt_tokens | 表示消息输入中使用的token数目,即API请求时消息的token数目。 |
| completion_tokens | 表示API返回的响应消息中使用的token数目,即模型预测生成的响应消息的token数目。 |
| total_tokens | 表示整个API调用过程中使用的总token数目,包括输入和输出的所有token数目。 |
需要注意的是,每个API调用的token数目将影响API的调用时间和费用,并且总token数目必须在模型允许的最大token限制(例
如gpt-3.5-turbo-0301模型的最大限制为4096个token)以内。如果超出了这个限制,则需要缩短输入或者输出的token数目以符合
模型的最大限制。
管理tokens
语言模型以称为token的块读取文本。在英语中,token可以短至一个字符或长至一个单词(例如a或apple),在某些语言中,
token甚至可以比一个字符更短或比一个单词更长。
例如,字符串“ChatGPT is great!”被编码为六个令牌:[“Chat”, “G”, “PT”, " is", " great", “!”]。
而在中文中:1个汉字大致是2~2.5个token。
API调用中的令牌总数影响:
| 1 | 接口根据token多少收费,token越多费用越高 |
| 2 | 总token必须低于模型的最大限制(gpt-3.5-turbo-0301的最大令牌数为4096) |
| 3 | 使用的token越多 API响应时间越长 |
输入和输出令牌都计入这些数量。例如,如果您的API调用在消息输入中使用了10个token,并且您收到了20个token的消息输
出,则将为您计费30个token。**
要查看API调用使用了多少令牌,请检查API响应中的usage字段(例如,response[‘usage’][‘total_tokens’])。
像gpt-3.5-turbo和gpt-4这样的聊天模型以与其他模型相同的方式使用令牌,但由于它们是基于消息格式的,因此更难以计算一个
对话将使用多少令牌。
如何计算聊天API调用的令牌
要查看文本字符串中有多少令牌而不进行API调用,请使用OpenAI的tiktoken Python库。有关如何使用tiktoken计算令牌的指南可
以在OpenAI Cookbook中找到示例代码。后面会专门讲一下
本文展示了如何调用OpenAI ChatGPT API,以及一些参数的说明,提供了使用技巧和Python和HTTP请求代码示例。下一篇讲一
下其他的一些参数的作用,例如温度等。
如果有问题可以联系我**:https://gitcode.net/asplh/chatgpt
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
为什么需要服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的微服务数量很多时,它需要了解每个服务的接口,这个工作量很大。有了网关之后,网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务。使用网关的好处1)简化客户端的工作。网关将微服务封装起来后,客户端只需同网关交互,而不必调用各个不同服务;(2)降低函数间的耦合度。一旦服务接口修改,只需修改网关的路由策略,不必修改每个调用该函数的客户端,从而减少了程序间的耦合性(3)解放开发
我发现python的细节自动完成很好RubyonRails有类似的方法描述吗? 最佳答案 有篇不错的文章"UsingVIMasacompleteRubyonRailsIDE"其中引用rails.vim.这似乎是RailsforVIM的实际标准。(不过,我还没有使用过它,但很快就会尝试。)这允许你做很多与Rails相关的任务,但对自动完成没有帮助。还有一篇"RubyAutocompleteinVim"(遗憾的是不再可用)这就是您要搜索的内容。我不知道,理解Rails的所有插件魔法和元编程的东西是否足够聪明。它至少在vim的配置中提到了
我在我的应用程序Controller中并且有一个url字符串。我如何告诉应用程序在新窗口中打开浏览器中的url。有没有办法将目标设置为空白?例如deflink@url='www.google.com'****???Open@url??***withtargetblank?end 最佳答案 这不可能直接从Controller执行。使用redirect_to@url具有在同一“窗口”中打开URL的效果,因为它只是将HTTP重定向指令发送回浏览器。redirect_to无法打开新窗口。Controller驻留在服务器端,打开一个新窗口属于
防火墙防火墙分类第一代防火墙:包过滤防火墙包过滤防火墙的缺点第二代防火墙:代理防火墙第三代防火墙:状态防火墙第四代防火墙:UTM防火墙第五代防火墙:下一代防火墙华为防火墙介绍安全策略防火墙的会话表防火墙分类第一代防火墙:包过滤防火墙属于第一代防火墙技术,在没有专用防火墙设备时,一般由路由器实现该功能。将网络上传送数据包的IP首部以及TCP/UDP首部,获取发送源的IP地址和端口号,以及目的地的IP地址和端口号,并将这些信息作为过滤条件,决定是否将该分组转发至目的地网络分组过滤的执行需要设置访问控制列表。访问控制列表也可以称为安全策略(简称策略)或安全规则(简称规则)。类似于进站检票的做法,符合
内容来自Qt样式表之QSS语法介绍-3YL的博客Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件。Qt样式表的概念、术语和语法都受到了HTML的层叠样式表(CascadingStyleSheets, CSS教程)的启发,不过与CSS不同的是,Qt样式表应用于部件的世界。类型选择器QPushButton匹配QPushButton及其子类的实例ID选择器QPushButton#okButton匹配所有objectName为okButton的QPushButton实例。 CSS常用样式1CSS文字属性注:px:相对长度单位,像素(Pixel)。pt:绝对长度单位,点(Point
简介:我们都知道在Android开发中,当我们的程序在与用户交互时,用户会得到一定的反馈,其中以对话框的形式的反馈还是比较常见的,接下来我们来介绍几种常见的对话框的基本使用。前置准备:(文章最后附有所有代码)我们首先先写一个简单的页面用于测试这几种Dialog(对话框)代码如下,比较简单,就不做解释了一、提示对话框(即最普通的对话框)首先我们给普通对话框的按钮设置一个点击事件,然后通过AlertDialog.Builder来构造一个对象,为什么不直接Dialog一个对象,是因为Dialog是一个基类,我们尽量要使用它的子类来进行实例化对象,在实例化对象的时候,需要将当前的上下文传过去,因为我这
作者:郭斌斌爱可生DBA团队成员,负责项目日常问题处理及公司平台问题排查。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。OceanBase集群界面会展示Observer的资源水位,今天简单了解一下资源水位的数值代表的含义以及关联参数现有test_1集群,只有一个sys租户Sys租户的资源配置:Cpu:2.5-5Memory:3G-3GUnit:1集群的资源水位信息以10.186.63.198为例,浅看一下cpu、内存、磁盘的含义以及相关联参数cpu:2.5/17核2.5代表observer上已经分配给租户的cpu核数,该数值是租户的MinCPU
快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目