国内前端vue对接OpenAI/chatgpt【文本互动/生成图片】

国内前端vue对接OpenAI/chatgpt【文本互动/生成图片】_第1张图片

 

 如图;国内通过调用openai接口进行互动,实现图文互动/文本互动

 注意:请求人数较多,需要等待

 

1、 获取ApiKey

注册 OpenAI 账号,获取你的 ApiKey,过程略。

2、 聊天接口

⚠️ 不再推荐使用本接口,后面将废弃。

接口地址 (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就行了,就是这么简单。

4 、⭐️ 第三方应用

如果你用的是第三方开发者开发的基于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

5、 查询余额

接口地址 (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 即为账户可用余额。






你可能感兴趣的:(前端,vue.js,chatgpt)