Open AI 的 api 调用示例
- API的调用的文档:https://platform.openai.com/docs/api-reference/introduction
- ChatGPT官方提供了 Python版的包 和 Nodejs版的包
- $
pip install openai
- $
npm install openai
- $
- 我们使用 python3.8版本来安装: $
sudo python3.8 -m pip install openai
- 大家可以在自己的python环境里面呢进行一下安装
- 官方python版的 OpenAI 模块,除了最基础的对于Chat的API的调用,还封装了很多其他模型,其他场景的一些使用方法
- 我们直接通过python版的 OpenAI 去调用是比较简单的,是比较容易看到效果的
- 因为python版它有很多比较成熟的一些库和第三方的一些模块
- java版的client和其他第三方组件的集成是比较困难的
- 在机器学习领域,python,它整体的生态还是比较好的
- 对于 Open AI, 它的API是需要API Key去进行认证的
1 )通过 curl 命令来访问
- 最简单的一个 api 调用示例
-
通过去访问models这个接口去列出 open ai 目前所支持的所有的模型
shellcurl -x http://127.0.0.1:7890 https://api.openai.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY$"
-
上面
-x http://127.0.0.1:7890
是配置的代理(替换使用自己配置的代理即可),国内没法直接访问 open ai 的接口 -
$OPENAI_API_KEY$
替换成自己的 API_KEY
-
- 回车执行 curl 命令,即可正确响应
2 )通过 python 程序处理
python
import os
import openai
openai.proxy = "http://127.0.0.1:7890"
openai.api_key = "此处填入您的 api_key"
openai.Model.list()
- 此处我们在控制台可看到,返回的结果获取到了openi所提供的相关的这些模型
- 如果没有成功的去获取到返回的结果
- 那么,可能就需要看一下是否是 api_key 有问题还是你的网络有问题
Open AI 聊天接口的调用
-
文档第三项: Making requests 菜单
-
https://platform.openai.com/docs/api-reference/making-requests
shellcurl 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 }'
-
返回
json{ "id": "chatcmpl-abc123", "object": "chat.completion", "created": 1677858242, "model": "gpt-3.5-turbo-0301", ... // 此处省略后续 } ```
-
-
核心的 chat 接口,菜单第五项, Chat
- https://platform.openai.com/docs/api-reference/chat/create
- 我们看一下这个接口:
https://api.openai.com/v1/chat/completions
- body
- model [Required]
- messages [Required]
- role [Required]
- content [Required]
- name [Optional]
- function_call [Optional]
- functions [Optional]
- name [Required]
- description [Optional]
- parameters [Required]
- temperature [Optional] 较高的温度值让输出更加随机,较低的温度值会使输出更稳定
- top_p [Optional] 控制输出的随机性
- n [Optional] 返回几个结果,默认是1个结果
- stream [Optional] 交互是否是流式的,默认是 false
- stop [Optional] 停用词
- max_tokens 所允许的最大的token的数量, 这里是设置的是模型生成的最大的输入长度,可以控制模型生成文本的长度
- presence_penalty 存在惩罚,决定模型是否偏好新词语的参数,设置较高值会让模型倾向于生成新出现的词而不是重复已有的词
- frequency_penalty 频率惩罚,决定模型是否偏好常见词语的参数,设置较高值会让模型倾向于生成不常见的词语
- ...
-
返回
json{ "id": "chatcmpl-123", "object": "chat.completion", "created": 1677652288, "choices": [ { "index": 0, "message": { "role": "assistant", "content": "\n\nHello there, how many I ..." }, "finish_reason": "stop" } ], // 用于计算本次会话 tokens 的数量 "usage": { "prompt_tokens": 9, "completion_tokens": 12, "total_tokens": 21 } }
-
可以通过open ai所提供的方法去对我们的 Prompt 去进行拆分,拆分成tokens
-
可以通过官方提供的方法去计算tokens的数量
-
使用python程序测试下
pyimport os import openai openai.proxy="http://127.0.0.1:7890" openai.api_key = '您的api_key' pcomletion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello!"}, ] ) print(completion.choices[0].message)
-
输出
py"role": "assistant", "content": "Hello! How can I assist you today?"