0


Python Module — OpenAI ChatGPT API

目录

文章目录

OpenAI Python SDK

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 函数

函数作用:与 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:是否在生成对话文本后输出到控制台。
  1. defcreate(
  2. model:str,
  3. messages:str,
  4. max_tokens: Optional[int]=None,
  5. temperature: Union[int,float]=0.5,
  6. top_p: Union[int,float]=1.0,
  7. frequency_penalty: Union[int,float]=0,
  8. presence_penalty: Union[int,float]=0,
  9. stop: Optional[Union[str, List[str]]]=None,
  10. n: Optional[int]=1,
  11. max_examples: Optional[int]=None,
  12. logprobs: Optional[int]=None,
  13. echo:bool=True,**kwargs,)-> Dict[str, Union[str, List[str]]]:pass
  • 原始 HTTP 请求样式
  1. curl https://api.openai.com/v1/chat/completions \
  2. -H "Content-Type: application/json"\
  3. -H "Authorization: Bearer $OPENAI_API_KEY"\
  4. -d '{
  5. "model": "gpt-3.5-turbo",
  6. "messages": [{"role": "user", "content": "Say this is a test!"}],
  7. "temperature": 0.7
  8. }'
  • 原始 HTTP 响应样式
  1. {"id":"chatcmpl-abc123",
  2. "object":"chat.completion",
  3. "created":1677858242,
  4. "model":"gpt-3.5-turbo-0301",
  5. "usage":{"prompt_tokens":13,
  6. "completion_tokens":7,
  7. "total_tokens":20
  8. },
  9. "choices":[{"message":{"role":"assistant",
  10. "content":"\n\nThis is a test!"},
  11. "finish_reason":"stop",
  12. "index":0
  13. }]}
  • “聊天记录“ 请求样式
  1. 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 代码示例

  1. import openai
  2. import configparser
  3. import time
  4. config = configparser.ConfigParser()
  5. config.read('./config.ini')classOpenAIClient(object):def__init__(self):super(OpenAIClient, self).__init__()
  6. openai.api_key = config.get('OpenAI','API_SECRET_KEY')
  7. self.max_retry =3
  8. self.retry_delay =5
  9. self.timeout =10def_make_request(self, role, content):print("*************************************")print("request role: ", role)print("request content: ", content)print("*************************************")if role notin['user','system','assistant']:print(f'role [{role}] not found.')raise
  10. retry_count =0while retry_count < self.max_retry:try:
  11. response = openai.ChatCompletion.create(
  12. model=config.get('OpenAI','MODEL'),
  13. messages=[{"role": role,"content": content}],
  14. max_tokens=2048,
  15. n=1,
  16. stop=None,
  17. temperature=0.7,
  18. timeout=self.timeout
  19. )return response
  20. 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})")
  21. time.sleep(self.retry_delay)
  22. retry_count +=1defchat_request(self, content):
  23. role ="user"return self._make_request(role, content)defprompt_request(self, content):
  24. role ="system"return self._make_request(role, content)defparser_response(self, response):
  25. result =[]
  26. choices = response.choices
  27. for cho in choices:
  28. result.append({'index': cho['index'],'role': cho['message']['role'],'content': cho['message']['content']})return result
  29. if __name__ =='__main__':
  30. cli = OpenAIClient()
  31. resp = cli.chat_request(content='hello!')print("Test response: ", cli.parser_response(resp))
  • ./config.ini
  1. [OpenAI]
  2. API_SECRET_KEY = your_api_key
  3. MODEL = gpt-3.5-turbo

本文转载自: https://blog.csdn.net/Jmilk/article/details/129811269
版权归原作者 范桂飓 所有, 如有侵权,请联系我们删除。

“Python Module — OpenAI ChatGPT API”的评论:

还没有评论