当前位置: 首页 > news >正文

Python调用GPT3.5接口的最新方法

        GPT3.5接口调用方法主要包括openai安装、api_requestor.py替换、接口调用、示例程序说明四个部分。

1 openai安装

        Python openai库可直接通过pip install openai安装。如果已经安装openai,但是后续提示找不到ChatCompletion,那么请使用命令“pip install -U openai”来升级openai。

2 api_requestor.py替换

        Python openai安装完成之后,会产生api_requestor.py文件,文件位于python环境库文件目录下“site-packages\openai\api_requestor.py”,如下所示。将该文件进行替换,在公众号乐乐感知学堂中回复api35即可获得用来替换的文件。

Windows:
C:\ProgramData\Anaconda3\Lib\site-packages\openai\api_requestor.py
或
C:\ProgramData\Anaconda3\envs\xxx\lib\site-packages\openai\api_requestor.py
Linux:
/root/miniconda3/lib/pythonxx/site-packages/openaiapi_requestor.py
或
/root/miniconda3/envs/xxx/lib/pythonxx/site-packages/openaiapi_requestor.py
将该文件进行替换,在公众号乐乐感知学堂中回复api35即可获得用来替换的文件。

3 接口调用说明

        接口调用方式不变,与openai自身调用方式一致。输入主要有7个参数。

        (1)model:模型名称,gpt-3.5-turbo或gpt-3.5-turbo-0301

        (2)messages:问题或待补全内容,下面重点介绍。

        (3)temperature:控制结果随机性,0.0表示结果固定,随机性大可以设置为0.9。

        (4)max_tokens:最大返回字数(包括问题和答案),通常汉字占两个token。假设设置成100,如果prompt问题中有40个汉字,那么返回结果中最多包括10个汉字。ChatGPT API允许的最大token数量为4096,即max_tokens最大设置为4096减去问题的token数量。

        (5)top_p:设置为1即可。

        (6)frequency_penalty:设置为0即可。

        (7)presence_penalty:设置为0即可。

        (8)stream:控制连续输出或完整输出。

        需要注意,上述输入参数增加stream,即是否采用控制流的方式输出。

        如果stream取值为False,那么完全返回全部文字结果,可通过response.choices[0].delta['content']进行读取。但是,字数越多,等待返回时间越长,时间可参考控制流读出时的4字/每秒。如果steam取值为True时,那么返回结果是一个Python generator,需要通过迭代获取结果,平均大约每秒钟4个字(33秒134字,39秒157字)。读取程序如下所示.

4 message

        messages字段组成部分包括角色role和content问题两个部分组成,如下所示:

  model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Who won the world series in 2020?"},{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},{"role": "user", "content": "Where was it played?"}]

        在gpt-3.5-turbo模型中,角色role包含system系统、assistant助手和用户user三种类型。System角色相当于告诉ChatGPT具体以何种角色回答问题,需要在content中指明具体的角色和问题内容。而gpt-3.5-turbo-0301主要区别在于更加关注问题内容,而不会特别关注具体的角色部分。gpt-3.5-turbo-0301模型有效期到6月1日,而gpt-3.5-turbo会持续更新。

        assistant助手和用户user则相当于已经指明了角色,content直接写入关注的问题即可。

5 示例程序

          (1)stream = False

import openaidef openai_reply(content, apikey):openai.api_key = apikeyresponse = openai.ChatCompletion.create(model="gpt-3.5-turbo-0301",#gpt-3.5-turbo-0301messages=[{"role": "user", "content": content}],temperature=0.5,max_tokens=1000,top_p=1,frequency_penalty=0,presence_penalty=0,)# print(response)return response.choices[0].message.contentif __name__ == '__main__':content = '你是谁?'ans = openai_reply(content, '你的APIKEY')print(ans)

          (2)stream = True

import time
import openaiopenai.api_key = "你的APIKEY"
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "user", "content": 'how are you'}],temperature=0,max_tokens=1000,stream=True,top_p=1,frequency_penalty=0,presence_penalty=0,user='RdFast智能创作机器人小程序'
)print(response)
print('response["choices"][0]["text"]结果如下所示:')
ans = ''
for r in response:if 'content' in r.choices[0].delta:ans += r.choices[0].delta['content']print(ans)print(ans)

 3 API调用效果

http://www.lryc.cn/news/43218.html

相关文章:

  • Java开发 - 拦截器初体验
  • 【数据仓库-7】-- 使用维度建模的一些缘由
  • 【开发实践】在线考试系统(一) 生成错题知识点的思维导图
  • Java Web 实战 17 - 计算机网络之传输层协议(2)
  • MyBatis<3>:动态SQL的使用<if><trim><where><set><foreach>
  • 【超好懂的比赛题解】暨南大学2023东软教育杯ACM校赛个人题解
  • go-zero学习及使用中遇到的问题
  • CCF-CSP认证 202303 500分题解
  • 板内盘中孔设计狂飙,细密间距线路中招
  • 面试热点题:回溯算法 递增子序列与全排列 II
  • 怎么找回回收站删除的文件
  • dp-打家劫舍
  • C++预处理连接
  • 3、DRF实战总结:基于类的视图APIView, GenericAPIView和GenericViewSet视图集(附源码)
  • AutoSAR PduR -AutoSAR PDU常用的使用方式【发送,接收,网关】
  • 瑟瑟发抖吧~OpenAI刚刚推出王炸——引入ChatGPT插件,开启AI新生态
  • 脉诊(切脉、诊脉、按脉、持脉)之法——入门篇
  • 【十二天学java】day09常用api介绍
  • 软件测试 - 测试用例常见面试题
  • 几种常见的API接口分页方案
  • 【Object 类的方法】
  • 留用户、补内容,在线音乐暗战不停
  • python--exec
  • 干货分享!这6个高效率办公软件,总有一个值得你收藏!
  • 代码随想录刷题-链表总结篇
  • C++:指针:什么是野指针
  • 一线大厂高并发Redis缓存架构
  • 剑指offer-二维数组中的查找
  • 怎么设计一个秒杀系统
  • 程序参数解析C/C++库 The Lean Mean C++ Option Parser