AIGC: 关于ChatGPT中的核心API调用示例

Open AI 的 api 调用示例

  • API的调用的文档:https://platform.openai.com/docs/api-reference/introduction
  • ChatGPT官方提供了 Python版的包 和 Nodejs版的包
    • $pip install openai
    • $npm install openai
  • 我们使用 python3.8版本来安装: $sudo python3.8 -m pip install openai
  • 大家可以在自己的python环境里面呢进行一下安装
  • 官方python版的 OpenAI 模块,除了最基础的对于Chat的API的调用,还封装了很多其他模型,其他场景的一些使用方法
  • 我们直接通过python版的 OpenAI 去调用是比较简单的,是比较容易看到效果的
    • 因为python版它有很多比较成熟的一些库和第三方的一些模块
    • java版的client和其他第三方组件的集成是比较困难的
    • 在机器学习领域,python,它整体的生态还是比较好的
  • 对于 Open AI, 它的API是需要API Key去进行认证的

1 )通过 curl 命令来访问

  • 最简单的一个 api 调用示例
    • 通过去访问models这个接口去列出 open ai 目前所支持的所有的模型
      curl -x http://127.0.0.1:7890 https://api.openai.com/v1/models \-H "Authorization: Bearer $OPENAI_API_KEY$"
      
    • 上面 -x http://127.0.0.1:7890 是配置的代理(替换使用自己配置的代理即可),国内没法直接访问 open ai 的接口
    • $OPENAI_API_KEY$ 替换成自己的 API_KEY
  • 回车执行 curl 命令,即可正确响应

2 )通过 python 程序处理

import os
import openaiopenai.proxy = "http://127.0.0.1:7890"
openai.api_key = "此处填入您的 api_key"
openai.Model.list()
  • 此处我们在控制台可看到,返回的结果获取到了openi所提供的相关的这些模型
    • 如果没有成功的去获取到返回的结果
    • 那么,可能就需要看一下是否是 api_key 有问题还是你的网络有问题

Open AI 聊天接口的调用

  • 文档第三项: Making requests 菜单

    • https://platform.openai.com/docs/api-reference/making-requests

      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": "Say this is a test!"}],"temperature": 0.7}'
      
    • 返回

       {"id": "chatcmpl-abc123","object": "chat.completion","created": 1677858242,"model": "gpt-3.5-turbo-0301",... // 此处省略后续}```
      
  • 核心的 chat 接口,菜单第五项, Chat

    • https://platform.openai.com/docs/api-reference/chat/create
    • 我们看一下这个接口: https://api.openai.com/v1/chat/completions
    • body
      • model [Required]
      • messages [Required]
        • role [Required]
        • content [Required]
        • name [Optional]
        • function_call [Optional]
      • functions [Optional]
        • name [Required]
        • description [Optional]
        • parameters [Required]
      • temperature [Optional] 较高的温度值让输出更加随机,较低的温度值会使输出更稳定
      • top_p [Optional] 控制输出的随机性
      • n [Optional] 返回几个结果,默认是1个结果
      • stream [Optional] 交互是否是流式的,默认是 false
      • stop [Optional] 停用词
      • max_tokens 所允许的最大的token的数量, 这里是设置的是模型生成的最大的输入长度,可以控制模型生成文本的长度
      • presence_penalty 存在惩罚,决定模型是否偏好新词语的参数,设置较高值会让模型倾向于生成新出现的词而不是重复已有的词
      • frequency_penalty 频率惩罚,决定模型是否偏好常见词语的参数,设置较高值会让模型倾向于生成不常见的词语
  • 返回

    {"id": "chatcmpl-123","object": "chat.completion","created": 1677652288,"choices": [{"index": 0,"message": {"role": "assistant","content": "\n\nHello there, how many I ..."},"finish_reason": "stop"}],// 用于计算本次会话 tokens 的数量"usage": {"prompt_tokens": 9,"completion_tokens": 12,"total_tokens": 21}
    }
    
  • 可以通过open ai所提供的方法去对我们的 Prompt 去进行拆分,拆分成tokens

  • 可以通过官方提供的方法去计算tokens的数量

  • 使用python程序测试下

    import os
    import openaiopenai.proxy="http://127.0.0.1:7890"
    openai.api_key = '您的api_key'pcomletion = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello!"},]
    )print(completion.choices[0].message)
    
  • 输出

    "role": "assistant",
    "content": "Hello! How can I assist you today?"
    

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

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

相关文章

数据结构算法-冒泡排序算法

引言 虽然选择排序好用 ,但有点问题 也就是频繁找最大值下标 放到 未排序的后面 因为每次需要扫描整个未排序序列,找到最大值或最小值的下标,并将其交换到未排序序列的最后一个位置。这样做的问题在于,在后面的迭代中&#xff0c…

C# WPF上位机开发(计算器界面设计)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 c# wpf最大的优势就是开发业务软件比较快、效率比较高。一般来说,它的界面和逻辑部分可以同时开发。界面的部分用xaml编写即可&#xf…

Spring Framework详解

学习目标 能够说出Spring的体系结构 能够编写IOC入门案例 能够编写DI入门案例 能够配置setter方式注入属性值 能够配置构造方式注入属性值 能够理解什么是自动装配 一、Spring简介 1 Spring课程介绍 问题导入 我们为什么要学习Spring框架? 1.1 为什么要学 Spri…

Nat. Mach. Intell. | 预测人工智能的未来:在指数级增长的知识网络中使用基于机器学习的链接预测

今天为大家介绍的是来自Mario Krenn团队的一篇论文。一个能够通过从科学文献中获取洞见来建议新的个性化研究方向和想法的工具,可以加速科学的进步。一个可能受益于这种工具的领域是人工智能(AI)研究,近年来科学出版物的数量呈指数…

数据结构—两个有序单链表的合并排序算法

viod merge(LNode *A,LNode *B){ LNode *C;//新节点 LNode *p C;//辅助指针 while(A->next !null && B->next !null){ if(A->next->data > B->next->data){//A节点大 p->nextA->next;//A元素插入C AA>next; pp->next; }else{ p->…

如何选择适合的光电传感器与 STM32 微控制器进行接口设计

本文介绍了如何选择适合的光电传感器与 STM32 微控制器进行接口设计的方法。首先我们将介绍一些选择光电传感器的关键因素,包括测量范围、响应时间、分辨率和输出类型。然后我们将介绍如何根据所选传感器的特性进行硬件连接和接口设计。最后,我们将提供示…

机器学习在缺陷检测中的实际效果与应用案例

机器学习在缺陷检测中的实际效果与应用案例 机器学习在缺陷检测中的应用已经变得非常广泛,并且在许多行业中都得到了实践验证。通过使用机器学习算法,我们能够训练模型来自动检测产品或过程中的缺陷,从而提高生产效率,降低人工检…

项目开发维护技术文档(总结梳理)

目录 一、项目背景 二、架构设计 1.技术栈 2.架构图 3.代码结构 三、模块划分 1.用户模块 2.商品模块 四、开发规范 1.命名规范 2.代码格式 3.版本控制 五、部署流程 1.环境要求 2.部署流程 六、问题解决 1.数据库连接异常 2.Redis缓存失效 七、参考资料 项…

同旺科技 USB TO SPI / I2C --- 调试W5500

所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 读取重试时间值寄存器,默认值0x07D0 输出结果与默认值一致,芯片基本功能已经调通&am…

go自定义端口监听停用-------解决端口被占用的问题

代码 package mainimport ("fmt""log""net""os/exec""strconv""strings" )func getSelect(beign int, end int) int {var num intfor {_, err : fmt.Scan(&num)if err ! nil {fmt.Println("输入错误&am…

2、RocketMQ源码分析(二)

RocketMQ的底层通信模块remoting remoting是RocketMQ的底层通信模块,RocketMQ底层通讯是使用Netty来实现的。本文通过对remoting源码进行分析,来说明remoting如何实现高性能通信的。 二、Remoting 通信模块结构 remoting 的网络通信是基于 Netty 实现&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《市场环境下运行的光热电站子系统容量优化配比研究》

这个标题涉及到对市场环境下运行的光热电站子系统进行容量优化配比的研究。让我们逐步解读: 市场环境下运行的光热电站: 这指的是光热电站在实际市场环境中的运行,可能包括了市场相关的经济、政策、竞争等因素。 子系统: 光热电站…

十六进制数列求和

高精度数组的集大成 做的时候在和高中同学叙叙旧&#xff0c;差点寄掉 代码如下&#xff1a; #include<stdio.h> void expand(int len); const char hexadecimal[17] "0123456789ABCDEF"; int result[20], mid[20], l_result[100];int main(void) {char tm…

你好!二分查找【JAVA】

1.初次相识 二分查找又称折半查找&#xff0c;是一种在有序数组中查找特定元素的算法。二分查找的基本思想是&#xff1a;通过不断地二分数组的中间元素&#xff0c;缩小查找区间&#xff0c;直到找到目标元素或者确定目标元素不存在为止。 二分查找的时间复杂度为O(logn)&…

docker配置redis主从、哨兵集群

搭建redis主从 准备工作 在/usr/local/software/redis/文件夹下建立如下的文件夹、文件 rootlocalhost redis]# mkdir -p 6379/conf 6379/data 6379/log [rootlocalhost redis]# mkdir -p 6380/conf 6380/data 6380/log [rootlocalhost redis]# mkdir -p 6381/conf 6381/…

Kubernetes集群部署—部署Worker节点(四)

文章目录 1、创建工作目录并拷贝二进制文件2 部署kubelet &#xff08;master节点操作&#xff09;2.1 创建配置文件2.2 配置参数文件2.3 生成bootstrap.kubeconfig文件2.4 systemd管理kubelet2.5 启动并设置开机启动 3 批准kubelet证书申请并加入集群4 部署kube-proxy &#x…

如何创建一个vue工程

1.打开vue安装网址&#xff1a;安装 | Vue CLI (vuejs.org) 2.创建一个项目文件夹 3.复制地址 4.打开cmd&#xff0c;进入这个地址 5.复制粘贴vue网页的安装命令 npm install -g vue/cli 6.创建vue工程 vue create vue这里可以通过上下键来进行选择。选最后一个选项按回车。 …

根文件系统构建-编译busybox

一. 简介 本文对 busybox进行编译。 本文继上一篇busybox配置&#xff0c;地址如下&#xff1a; 根文件系统构建-对busybox进行配置-CSDN博客 二. 根文件系统构建-编译busybox源码 1. 修改 Makefile&#xff0c;添加编译器 同 Uboot 和 Linux 移植一样&#xff0c;打开…

制作一个RISC-V的操作系统-环境搭建

文章目录 前言环境搭配 前言 由于之前的操作系统反馈难度太大&#xff0c;所以准备从这个RISC-V操作系统出发&#xff0c;以后知识层面更加深入再去完善。 环境搭配 按照依赖项 $ sudo apt update $ sudo apt install build-essential gcc make perl dkms git gcc-riscv64-…

装箱 Box 数据类型

装箱是最简单直接的一种智能指针&#xff0c;它的类型是Box<T>。装箱使我们可以把数据存储到堆上&#xff0c;并在栈上保留一个指向堆数据的指针。装箱操作常常被用于下面的场景&#xff1a; 当你拥有一个无法在编译时确定大小的类型&#xff0c;但又想使用这个类型的值…