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?"}
]

OpenAPI client 代码示例

import openai
import configparser
import time

config = 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 = 3
        self.retry_delay = 5
        self.timeout = 10

    def _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.')
            raise

        retry_count = 0
        while 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 response
            except 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 += 1

    def 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.choices
        for cho in choices:
            result.append(
                {
                    'index': cho['index'],
                    'role': cho['message']['role'],
                    'content': cho['message']['content']
                }
            )
        return result


if __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
  • 18
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
要在Python中成功运行OpenAI API,你需要进行以下步骤: 1. 首先,确保你已经安装了OpenAIPython库。你可以使用以下命令来安装: ``` pip install openai ``` 2. 接下来,你需要获取OpenAI API的访问密钥。你可以在OpenAI的官方网站上创建一个账户并获取API密钥。 3. 一旦你获得了API密钥,你可以在Python代码中使用它来进行身份验证。你可以使用以下代码示例来设置API密钥: ```python import openai openai.api_key = 'YOUR_API_KEY' ``` 请确保将`YOUR_API_KEY`替换为你自己的API密钥。 4. 现在,你可以使用OpenAI库中的函数来调用API。例如,你可以使用`openai.Completion.create()`函数来生成文本。以下是一个简单的示例: ```python import openai openai.api_key = 'YOUR_API_KEY' response = openai.Completion.create( engine="davinci", prompt="Once upon a time", max_tokens=100 ) print(response.choices\[0\].text) ``` 这个示例使用了`davinci`引擎来生成一个故事的开头。你可以根据自己的需求调整参数。 请确保将`YOUR_API_KEY`替换为你自己的API密钥。 希望这个回答能帮助到你!\[1\] \[2\] \[3\] #### 引用[.reference_title] - *1* *3* [OpenAI接口代理设置](https://blog.csdn.net/studyeboy/article/details/131395262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [基于python3,百度AI实现人脸检测,人脸识别](https://blog.csdn.net/Nirvana_6174/article/details/83118418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范桂飓

文章对您有帮助就请一键三连:)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值