目录

文章目录

  • 目录
  • OpenAI Python SDK
  • openai.ChatCompletion 模块
    • openai.ChatCompletion.create 函数
  • OpenAPI client 代码示例

OpenAI Python SDK

  • 官方文档:https://platform.openai.com/docs/api-reference/introduction

OpenAI Python SDK 用于开发与 OpenAI RESTful API 进行交互的客户端应用程序,包含了 OpenAI 的各种人工智能模型的 API。

OpenAI Python SDK 提供了多个模块,每个模块都具有一套自包含的 APIs,包括:

  • openai.ChatCompletion:用于访问 ChatGPT 语言模型,实现自然语言生成和处理。
  • openai.Davinci:用于访问 OpenAI 最大的 GPT-3 语言模型,提供了更强大的语言处理能力。
  • openai.GPT:用于访问 OpenAI 较小的 GPT-3 语言模型,提供了基本的语言处理能力。
  • openai.Language:用于访问 OpenAI 语言模型,提供了自然语言生成和处理的能力。
  • openai.Image:用于访问 DALL-E 图像生成模型,实现图像的生成和处理。
  • openai.File:用于访问 OpenAI 文件服务器,实现文件的上传和下载。
  • openai.Organization:用于管理 OpenAI 账户、工作区和 API Keys 等。

openai.ChatCompletion 模块

OpenAI ChatCompletion 模块用于访问 ChatGPT 语言模型,用于实现对话式(Chat)AI 应用程序。

openai.ChatCompletion.create 函数

  • 编程示例:https://github.com/JmilkFan/easy-chat-prompts

函数作用:与 ChatGPT 进行 C/S 交互,返回 AI 模型生成的对话文本。注意,该接口是 Stateless 的,每次调用都不包含对话的上下文。这意味着需要客户端应用程序自己维护 “聊天记录“。

函数原型

  • model:指示要访问的 AI 模型,例如:gpt-3.5-turbo(计费 $0.002 / 1K tokens)。
  • messages:对话消息,字典列表类型,字典包括下列 Keys。
    • role:指示发起对话的角色。枚举:user(发送用户对话)、system(发送给 AI 模型的提示符)。
    • content:指示发起对话的内容。
    • assistant:指示 ChatGPT 回答的内容,用于传递 “聊天记录”。
  • max_tokens:指示响应内容的 Token 数量,例如:1024、2048、4096(MAX)。
  • temperature:用于控制输出文本的多样性和创造性。它是一个介于 0 到 1 之间的实数,表示 AI 模型在生成每个单词时的随机程度。更高的数值会导致更多的随机性和更多的创造性,但可能会降低输出的质量和连贯性。反之,则会产生较为确定性的输出,但可能会使输出变得单调和缺乏创意。
  • top_p:用于控制模型生成的单词的概率分布。它是一个介于 0 到 1 之间的实数,表示模型在生成下一个单词时,只考虑最有可能的前 top_p 个单词。当 top_p 较小时,生成的文本更加精细和准确,但可能会导致过度确定性和缺乏多样性。反之,当 top_p 较大时,生成的文本更加多样化,但可能会导致出现不合适的单词和不相关的文本。
  • frequency_penalty:用于控制生成对话文本中重复的程度,值越大则重复的文本越少,值越小则重复的文本越多。如果将其设置为 0,则 AI 模型将生成最多数量的重复文本。
  • presence_penalty:用于控制模型生成是否包含与给定文本重叠的片段,值越大则生成文本的准确性越高,值越小则生成文本的多样性越大。
  • stop:用于控制对话文本生成的终止条件。
  • n:指示生成对话文本的个数。
  • max_examples:用于控制生成对话文本的数量。
  • logprobs:在对话文本生成时输出单词出现的概率。
  • echo:是否在生成对话文本后输出到控制台。
def create(model: str,messages: str,max_tokens: Optional[int] = None,temperature: Union[int, float] = 0.5,top_p: Union[int, float] = 1.0,frequency_penalty: Union[int, float] = 0,presence_penalty: Union[int, float] = 0,stop: Optional[Union[str, List[str]]] = None,n: Optional[int] = 1,max_examples: Optional[int] = None,logprobs: Optional[int] = None,echo: bool = True,**kwargs,
) -> Dict[str, Union[str, List[str]]]:pass
  • 原始 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": "Say this is a test!"}],"temperature": 0.7}'
  • 原始 HTTP 响应样式
{"id":"chatcmpl-abc123","object":"chat.completion","created":1677858242,"model":"gpt-3.5-turbo-0301","usage":{"prompt_tokens":13,"completion_tokens":7,"total_tokens":20},"choices":[{"message":{"role":"assistant","content":"\n\nThis is a test!"},"finish_reason":"stop","index":0}]
}
  • “聊天记录“ 请求样式
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?"}
]

OpenAPI client 代码示例

import openai
import configparser
import timeconfig = configparser.ConfigParser()
config.read('./config.ini')class OpenAIClient(object):def __init__(self):super(OpenAIClient, self).__init__()openai.api_key = config.get('OpenAI', 'API_SECRET_KEY')self.max_retry = 3self.retry_delay = 5self.timeout = 10def _make_request(self, role, content):print("*************************************")print("request role: ", role)print("request content: ", content)print("*************************************")if role not in ['user', 'system', 'assistant']:print(f'role [{role}] not found.')raiseretry_count = 0while retry_count < self.max_retry:try:response = openai.ChatCompletion.create(model=config.get('OpenAI', 'MODEL'),messages=[{"role": role, "content": content}],max_tokens=2048,n=1,stop=None,temperature=0.7,timeout=self.timeout)return responseexcept Exception as e:print(f"Failed to connect to API server, detail error as {e}, retrying in {self.retry_delay} seconds ({retry_count+1}/{self.max_retry})")time.sleep(self.retry_delay)retry_count += 1def chat_request(self, content):role = "user"return self._make_request(role, content)def prompt_request(self, content):role = "system"return self._make_request(role, content)def parser_response(self, response):result = []choices = response.choicesfor cho in choices:result.append({'index': cho['index'],'role': cho['message']['role'],'content': cho['message']['content']})return resultif __name__ == '__main__':cli = OpenAIClient()resp = cli.chat_request(content='hello!')print("Test response: ", cli.parser_response(resp))
  • ./config.ini
[OpenAI]
API_SECRET_KEY = your_api_key
MODEL = gpt-3.5-turbo

Python Module — OpenAI ChatGPT API相关推荐

  1. 通过python调用OpenAI的API

    一.需要注册OpenAI账号 这个网上很多教程,随便搜索一大片,只是需要科学上网... 二.获取OpenAI的API密钥 登陆OpenAI的API地址:https://platform.openai. ...

  2. OpenAI ChatGpt API参考

    在线免费体验: sisss.cn 编写了一个python写的ChatGPT的web服务,基于aigcfun仿写: https://github.com/liupig/ChatGptWeb 介绍 您可以 ...

  3. OpenAI ChatGPT API + FaskAPI SSE Stream 流式周转技术 以及前端Fetch 流式请求获取案例

    先填坑,一贯习惯 nginx如果要支持SSE,要调整一些参数 conf配置文件,AI给的,具体自己没搭,应该是正确的 nginx worker_processes 1;events {worker_c ...

  4. 2023-4-2 合规使用CHATGPT以及python如何调用chatgpt api的正确方式

    ChatGPT最近很红火吧,要颠覆很多行业,大家都想试试,但是其开发公司OPENAI早有预见的封锁了中国的IP,大家都上不去体验不了,闹心吧,干着急,于是有些人用微信开了些转接小程序,但这一行为也游走 ...

  5. ChatGPT API调用python和脚本实现

    Chat GPT 由于其独特.近乎准确且类似人类的响应,如今在互联网上引起了过多的讨论.本文讨论如何通过 Python 代码连接到 Chat GPT API. 如果需要用website访问chatGP ...

  6. chatgpt API接口中文说明介绍(一)

    提示:如果你认为本文对你有帮助,请点一下关注,后面会有更多人工智能方面的文章. 文章目录 一.简介 二.说明 三.总结 如果有问题可以联系我**:https://gitcode.net/asplh/c ...

  7. OpenAi[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人-学习详解篇

    文章大部分来自:https://lucent.blog 原文博客地址:https://blog.ideaopen.cn 最近火热全文的ChatGPT,被很多人玩出了花,我们在Github上可以看到几个 ...

  8. ChatGPT(GPT3.5) OpenAI官方API正式发布

    OpenAI社区今天凌晨4点多发送的邮件,介绍了ChatGPT官方API的发布.官方介绍文档地址为"OpenAI API"和"OpenAI API". Chat ...

  9. 【真相】ChatGPT和OpenAI的API KEY

    背景 最近ChatGPT火出了圈,各种基于ChatGPT的应用层出不穷. ChatGPT官方网站:https://chat.openai.com/ 然后github上各种基于ChatGPT的开源代码库 ...

最新文章

  1. php7伪静态 源码,PHPWind 8.5和8.7版的伪静态.htaccess规则
  2. PL/SQL程序设计 第七章 包的创建和应用
  3. 基于MDA的移动应用开发建模及实现
  4. 辗转相除求最大公约数
  5. 单片机c语言应用100例第3版课后答案,单片机C语言应用100例(第3版)(含光盘1张)...
  6. Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法
  7. 软件工程课的分数系统,和打分方法
  8. php+求日期,PHP 日期转换
  9. zip 打包_Thinkphp6利用ZipArchive打包下载文件
  10. 磁性材料 可实现能量无接触转化
  11. 编译ffmpeg:no match insn: lbu $r16,0($r5)
  12. mac系统 环境变量配置
  13. html中如何调整图片的对比色,风光照片如何调出冷暖对比色?后期案例分享
  14. 2022 DSCTF首届数字空间安全攻防大赛
  15. TFN DG15M 高抗干扰电缆故障测试仪评测
  16. hdu1429 胜利大逃亡(续)
  17. 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
  18. 用Python玩我的世界(1.环境搭建)
  19. 批量将txt文件转为excel文件
  20. 计算机导论——程序设计基础07

热门文章

  1. 破解SQLyog 30天试用
  2. c语言计算圆的周长和面积double,符号常量,浮点数(计算圆的周长和面积) | 新思维:C语言程序设计...
  3. hadoop命令无法创建目录
  4. 信息系统安全导论第六章之软件安全
  5. 勤于奋寻找联盟程序方法介绍
  6. 瀚博半导体载天VA1 加速卡安装过程
  7. 一篇文章看懂MySQL的多表连接(包含左/右/全外连接)
  8. C ++ 程序调用CUDA静态库
  9. 人工智能开源项目推荐
  10. sublime text 光标移动行末/行首