Python Module — OpenAI ChatGPT API
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Module — OpenAI ChatGPT API相关的知识,希望对你有一定的参考价值。
目录
文章目录
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?"
]
python使用openai生成图像教程详解
OpenAI 是一个人工智能的工具包,包括神经网络、遗传算法和有限状态机等。使用python可以非常便捷的操作OpenAI的API。一下是OpenAI官网列举的功能DEMO
首先使用python的pip进行openai库的安装
pip install openai
在openai官网中找到自己需要测试的api文档
https://platform.openai.com/docs/guides/images/introduction
这里以图像生成示例
在做这一切之前首先得确保你安装了requests,因为需要请求api。
在使用openai进行api请求之前,需要生成一个apikey
生成apikey的链接:
https://platform.openai.com/docs/quickstart/build-your-application
import requests
import openai
openai.api_key = '填写你的apikey'
response = openai.Image.create(
prompt="天安门广场前的AE86",
n=1,
size="1024x1024"
)
image_url = response['data'][0]['url']
print(image_url)
以上代码会打印一串url,点击url进入网页即可看到ai生成的图像
其他API的使用方法基本一致,利用api调用进行测试即可,但也请不要进行各种无边界的测试。
以下是openai的审核规范,如果被检测到将不会返回结果。
好玩的东西还是挺多的,大家可以自己尝试。例如最近很火的chatgpt。可以根据api自己搭着玩还是挺不错的。
以上是关于Python Module — OpenAI ChatGPT API的主要内容,如果未能解决你的问题,请参考以下文章
ChatGPT遭多国调查,OpenAI凌晨就安全问题发文,GPT-5要暂缓?
OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%
AttributeError: 'module' object has no attribute 'RAND_LIMIT_swigconstant