chatgpt接口开发笔记1:completions接口

这篇具有很好参考价值的文章主要介绍了chatgpt接口开发笔记1:completions接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

chatgpt接口开发笔记1:completions接口

序:写这一系列文章的动机来源于在部署Chanzhaoyu/chatgpt-web项目时发现,体验并不好,会存在多人同时提问时回答会夹断,上下文接不上的现象。同时希望搭建的项目能实现前后端分离。于是用webapi写了一套后端接口。我会把我在对接openai的接口开发的经验分享给大家。

completions接口

目前我们用到最多的接口就是completions接口

POST  https://api.openai.com/v1/chat/completions

官方给出的入参示例为:

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!"}]
  }'

header部分:

  • Authorization 身份验证 $OPENAI_API_KEY 替换成你用到的key

请求体:

  • model 使用的模型,这里使用的是gpt 3.5的模型
  • messages 会话

**注意点:这里的messages 是接口的核心,分为三类:user、assistant、system **

同时,我们可以

  • 添加max_tokens 用于控制回复内容的最大长度,一般可以设置为2000
  • 添加stream 用于控制接口是返回json字符串还是返回stream的流(stream可以实现打字机效果)
  • 添加presence_penalty或frequency_penalty 用于控制回复的开放程度,官方称为惩罚机制

返回参数官方示例:

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

重点参数解析:

  • created 回复时间的时间戳
  • message 回复内容,回复内容的role固定为assistant
  • finish_reason 结果完成原因 可能是"stop"(代表没有更多的建议),"cutoff"(代表建议被截断),或者"completion"(代表建议完成)
  • prompt_tokens:消息中包含的单词数量
  • completion_tokens:结果中包含的单词数量
  • total_tokens:消息中总共包含的单词数量

如何控制上下文

相信很多部署过chatgpt-web的同学都有遇到过上下文不连续,接不上的情况。其原因在于会话的数据是存在前端缓存里的,返回消息时出现了夹断,前端获取不到被夹断报错的上一次的聊天回复的内容。

看过chatgpt-web的源码的同学应该发现了,在发起聊天请求时,会传会话id给接口。我开始也是以为id是上下文的判断依据。后来在开发接口时才注意到OpenAI的接口并没有Id这样的参数。这说明会话的id并不是上下文的检索条件。

通过测试实现,我总结了下:

上下文的依据与会话id,还有你使用的key都是没有关系的,它只与你的message参数有关。

实现精确的上下文

为了实现精确的上下文,你可以在发起请求时,将接口回复的内容一并带上。因为message 是一个集合,如下:

"messages": [{
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    }{"role": "user", "content": "Hello!"}]

如果条件允许可以多加点(大于等于2),同时这肯定是消耗更多的余额的。

到此,你应该对completions接口已经有了充足的认识了。文章来源地址https://www.toymoban.com/news/detail-425349.html

阅读如遇样式问题,请前往个人博客浏览: https://www.raokun.top
拥抱ChatGPT:https://ai.terramours.site
开源项目地址:https://github.com/firstsaofan/TerraMours

到了这里,关于chatgpt接口开发笔记1:completions接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何用chatGPT快速开发java后端功能接口

      需求如图 常规无非是建表接口测试类,最后造数据进行自测。突发奇想,要不用GPT试一下快速写业务代码? 第一步:建表,直接复制excel中内容到GPT中  第二步:要求转为下划线:    第三步:给出条件和想要的结果(下面第一幅图是自己写的,其它代码图都是GPT生成的)

    2024年02月06日
    浏览(29)
  • 【论文笔记】Globally and Locally Consistent Image Completion

    发表年份: 2017 原文链接: Globally and Locally Consistent Image Completion 参考代码: 暂无 提出了一种基于卷积神经网络的图像补全方法,能够生成全局与局部一致的补全图像。 采用了全卷积神经网络(fully-convolutional neural network),可以通过填补任意形状的缺失区域,补全任意分辨

    2024年02月01日
    浏览(30)
  • llama笔记:官方示例解析 example_chat_completion.py

    使用预训练模型生成文本的程序的入口点 ckpt_dir (str) 指向包含预训练模型检查点文件的目录的路径 tokenizer_path (str) 分词器模型的路径,用于文本的编码和解码 temperature (float, optional) 控制生成过程中随机性的温度值。 温度值越高,生成的文本越随机,反之则更确定。 top_p (

    2024年03月22日
    浏览(24)
  • 关于 java如何集成chatgpt,如何开发接口,如何集成vue前端界面(一)

    Java如何集成ChatGPT,如何开发接口,如何集成Vue前端界面 随着人工智能技术的不断发展,聊天机器人已经成为了人们日常生活中不可或缺的一部分。ChatGPT是一种基于深度学习的聊天机器人技术,它可以通过学习大量的语料库来生成自然流畅的对话。本文将介绍如何使用Java语

    2024年02月04日
    浏览(32)
  • 大模型开发(十一):Chat Completions模型的Function calling功能详解

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共6000余字,预计阅读时间约15~25分钟 | 满满干货(附代码案例),建议收藏!

    2024年02月16日
    浏览(33)
  • OpenAI开发系列(六):Completions模型的工作原理及应用实例(开发多轮对话机器人)

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共7000余字,预计阅读时间约15~30分钟 | 满满干货(附代码),建议收藏! 本文

    2024年02月13日
    浏览(29)
  • uniapp开发笔记(1)——uview API接口请求

    在请求后端的时候,需要带请求头去访问,在uview里写了http请求可以传递的参数:详情参考:Http请求 | uView 2.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架 实战代码示例:  在项目中,请求接口的时候,要做的是渲染列表,有的时候要给后台发一个参数,在点击某个数据的

    2024年02月17日
    浏览(34)
  • 大模型开发(六):OpenAI Completions模型详解并实现多轮对话机器人

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共7000余字,预计阅读时间约15~30分钟 | 满满干货(附代码),建议收藏! 本文

    2024年02月16日
    浏览(32)
  • RK3588开发笔记-USB3.0接口调试

    目录 前言 一、资源介绍 二、硬件连接 三、设备树配置

    2024年02月08日
    浏览(29)
  • Python爬虫学习笔记:1688商品详情API 开发API接口文档

      1688API接口是阿里巴巴集团推出的一种开放平台,提供了丰富的数据接口、转换工具以及开发资源,为开发者提供了通用的应用接口及大量数据资源,支持开发者在1688上进行商品搜索、订单管理、交易报表及物流等方面的操作。 1688API接口主要包含以下几类: 商品API:提供

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包