首页IT科技python模块本质为什么文件(Python Module — OpenAI ChatGPT API)

python模块本质为什么文件(Python Module — OpenAI ChatGPT API)

时间2025-06-14 19:48:39分类IT科技浏览4549
导读:目录 OpenAI Python SDK 官方文档:https://platform.openai.com/docs/api-reference/introduction...

目录

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(frole [{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
声明:本站所有文章      ,如无特殊说明或标注       ,均为本站原创发布       。任何个人或组织                    ,在未征得本站同意时             ,禁止复制                    、盗用             、采集       、发布本站内容到任何网站                    、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益       ,可联系我们进行处理             。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
织梦标签工具(dedecms织梦相关文章标签likearticle调用自定义字段) 没关系,前端还死不了