如图;国内通过调用openai接口进行互动,实现图文互动/文本互动
注意:请求人数较多,需要等待
注册 OpenAI 账号,获取你的 ApiKey,过程略。
⚠️ 不再推荐使用本接口,后面将废弃。
接口地址 (POST请求)
POST https://api.openai.com/pro/chat/completions
请求参数
参数名 | 类型 | 长度 | 必须 | 备注 |
---|---|---|---|---|
apiKey | String | 64 | 是 | OpenAI 的 ApiKey |
sessionId | String | 64 | 是 | 会话ID,关联上下文,推荐使用UUID作为sessionId |
content | String | 1000 | 是 | 发送的内容 |
请求示例(Content-Type = application/json)
{
"apiKey": "",
"sessionId": "8d1cb9b0-d535-43a8-b738-4f61b1608579",
"content": "你是谁?"
}
响应示例
{
"code": 200,
"message": "执行成功",
"data": "我是一名人工智能助手,用于协助回答问题和提供建议。您可以通过与我进行对话来获取您需要的信息或帮助。"
}
本接口使用的是 gpt-3.5-turbo
模型,支持通过上下文内容进行连续对话。
本接口对官方的接口进行了封装,开发者只需为每个 ApiKey
下的每个会话分配一个独立的 sessionId
即可实现连续对话 。
推荐使用 uuid 作为 sessionId
以保证全局唯一 ,否则对话可能会“串线”。
对话中的上下文信息有效期为30分钟,过期后再次发送消息无法关联上下文。
# 测试聊天
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
# 响应结果
{
"id": "chatcmpl-21lvNzPaxlsQJh0BEIb9DqoO0pZUY",
"object": "chat.completion",
"created": 1680656905,
"model": "gpt-3.5-turbo-0301",
"usage": {
"prompt_tokens": 10,
"completion_tokens": 10,
"total_tokens": 20
},
"choices": [
{
"message": {
"role": "assistant",
"content": "Hello there! How can I assist you today?"
},
"finish_reason": "stop",
"index": 0
}
]
}
# 测试生成图片
curl https://api.openai.com/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer" \
-d '{
"prompt": "A bikini girl",
"n": 2,
"size": "512x512"
}'
# 响应结果
{
"created": 1680705608,
"data": [
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxxxxx"
},
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-xxxxxxx"
}
]
}
OpenAI本身是没有记忆的,如果你不告诉他你之前说了什么以及他之前回答了什么,那么他只会根据你最近一次发送的内容进行回答。
所以,要想实现“连续对话”,每次发送消息时,你需要将你之前发送的内容(user)以及OpenAI之前返回的内容(assistant),再结合你本次想发送的内容(user) 按 时序 组合成一个 messages[] 数组,然后再将这个数组发送给OpenAI就行了,就是这么简单。
如果你用的是第三方开发者开发的基于OpenAI 的应用可以参考以下:
名称 | Github地址 | Stars |
---|---|---|
OpenAI-Translator | GitHub - yetone/openai-translator: 基于 ChatGPT API 的划词翻译浏览器插件和跨平台桌面端应用 - Browser extension and cross-platform desktop application for translation based on ChatGPT API. | |
ChatGPT-Next-Web | GitHub - Yidadaa/ChatGPT-Next-Web: One-Click to deploy well-designed ChatGPT web UI on Vercel. 一键拥有你自己的 ChatGPT 网页服务。 | |
ChatGPT-Web | https://github.com/Chanzhaoyu/chatgpt-web |
接口地址 (GET请求)
GET https://api.openai.com/pro/balance?apiKey=sk-xxxxxxxxxxxxxx
请求参数
参数名 | 类型 | 长度 | 必须 | 备注 |
---|---|---|---|---|
apiKey | String | 64 | 是 | OpenAI 的 ApiKey |
响应示例
{
"code": 200,
"message": "执行成功",
"data": {
"total": 18.00,
"balance": 17.92,
"used": 0.08
}
}
原OpenAI官方后台查询余额的接口由于被用户滥用,官方给撤销了,现在提供一个折中的方式去计算账户余额。
逻辑是先得到OpenAI给你账户授权的总金额,然后减去最近100天你账户消耗的金额,得到的 balance 即为账户可用余额。
{{ frinedInfo.name }}
{{ frinedInfo.detail }}
{{ item.name }}
{{ item.time }}
请稍后...
{{ item.msg }}
{{ item.name }}
{{ item.time }}
{{ item.msg }}