利用OpenAI 的API 可以做好多事情,今天就用简单的代码来解密一下,如何使用Python 来对接OpenAI 的API,实现一些简单的文本对话生成的功能,学习完OpenAI的API对接方法,以后遇到其他对话大模型的时候就可以触类旁通了。
前言
参考官方文档:
platform.openai.com/docs/guides…
今天对接文档中的OpenAI的文本生成模型(Text generation models),就是著名的ChatGPT系列。
需要提前安装两个Python第三方包
1 | 复制代码pip install openai python-dotenv |
再新建一个.env文件填写自己的API Key
1 | markdown复制代码OPENAI_API_KEY=sk-******************IQV |
同目录下新建一个Python文件,最简单的实现方式,核心代码为:
1 | ini复制代码from openai import OpenAI |
1 | python复制代码ChatCompletion(id='chatcmpl-9HtS3CKCgSyOjyxhTfuY8TEjEOUAG', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='The World Series in 2020 was played at Globe Life Field in Arlington, Texas.', role='assistant', function_call=None, tool_calls=None))], created=1714051759, model='gpt-3.5-turbo-0125', object='chat.completion', system_fingerprint='fp_c2295e73ad', usage=CompletionUsage(completion_tokens=18, prompt_tokens=53, total_tokens=71)) |
在可以增加model="gpt-3.5-turbo",
后增加一行response_format={ "type": "json_object" },
可以返回json格式响应内容:
1 | json复制代码{ |
OpenAI API 响应可以看作是一个 JSON 对象,包含以下主要字段:
- choices: 模型生成的回复列表,通常只有一个元素,但可以通过参数
n
进行控制。每个元素包含以下信息:
+ **finish\_reason:** 回复结束的原因,例如 `stop` 表示模型已经生成完整回复。
+ **index:** 当前回复在 choices 数组中的索引。
+ **message:** 回复内容,包含以下两种类型:
- **role = "user":** 用户输入的内容。
- **role = "assistant":** 模型生成的回复。
* **content:** 文本内容。
* **function\_call:** 未来可能支持的函数调用,目前保留。
- created: 回复生成的时间戳。
- id: OpenAI 内部使用的标识符。
- model: 使用的模型名称。
- object: 固定值为 “chat.completion”。
- usage: 本次请求消耗的 token 数,用于计费。
+ **prompt\_tokens:** 输入 prompt 中的 token 数。
+ **completion\_tokens:** 模型生成回复中的 token 数。
+ **total\_tokens:** 总 token 数,等于 `prompt_tokens` + `completion_tokens`。
也可以模仿OpenAI官网的传输
1 | ini复制代码from openai import OpenAI |
最后
注意的一点的是对接OpenAI的API需要相应的网络环境,下一期会继续研究OpenAI API的其他功能,讲一下API中的角色和函数调用,敬请期待~
本文转载自: 掘金