API 参考 - ChatbotsPlace API

Table of Contents

API 授权

为了使用 ChatbotsPlace API,您必须首先创建 API key。 不要与他人分享您的 API 密钥。

获得 API 密钥后,您可以使用 Authorization 请求标头对以下 API 进行身份验证,如下所示:

Authorization: Bearer {API_key}

POST /api/public/chat (发送聊天请求)

向我们的聊天机器人发送聊天消息。 此操作可以是同步的或异步的。 默认情况下,此操作是异步的,您可以使用响应中的messageId检索聊天机器人响应。 如果您设置 wait: true,那么此操作将是同步的,它将等到聊天机器人响应准备好后再返回。

请注意,我们的聊天机器人有不同版本。 每个都有不同的价格和上下文长度。 有关更多详细信息,请参阅本页底部的聊天机器人版本和定价

传入相同的conversationId将允许用户继续之前的对话。 但是,如果对话长度超过所选聊天机器人版本可用的最大上下文长度,对话中较旧的消息将被删除。 如果您不传入 conversationId,系统会为您生成一个随机的conversationId

对话中的消息将在 ChatbotsPlace 上保留 90 天。 之后,它们将被自动删除。

POST Body
名称 类型 数据类型 描述
message 必填 string 要发送到聊天机器人的用户消息。
version 必填 string 聊天机器人版本。 接受的值为:"v3.5", "v3.5_16K", "v4.0_sm", "v4.0"
wait 可选 boolean 如果为 true,则等待聊天响应完成后再返回。 否则,这将返回一个 messageId,可用于稍后使用 GET /api/public/chat API 检索聊天响应。
conversationId 可选 string 对话 ID。 留空以生成随机的。
systemMessage 可选 string 系统信息有助于设置助手的行为。例如,您可以修改助手的个性或提供有关其在整个对话过程中应如何表现的具体说明。
temperature 可选 number 使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。
返回参数
状态码 内容类型 描述
200 application/json {"messageId": "abcd-1234", "conversationId": "efgh-6789"}
400 text/plain 请求无效。 请确保 POST 正文正确。
401 text/plain API key 无效
403 text/plain 宝石不足
示例 cURL
 curl -X POST -H "Content-Type: application/json" --data @post.json https://chatbotsplace.com/api/public/chat
示例 Javascript
async function run() {
  const { data } = await axios.post(
    `https://chatbotsplace.com/api/public/chat`,
    {
      version: 'v3.5',
      message: 'Tell me a joke',
      wait: true
    },
    {
      headers: {
        authorization: `Bearer ${apiKey}`
      }
    }
  );
  console.log(data);
}
示例 Python
import requests
import json

apiKey = '<your-api-key>'  # Define your apiKey

headers = {
    'content-type': 'application/json',
    'authorization': f'Bearer {apiKey}'
}

data_post = {
    'version': 'v3.5',
    'message': 'Tell me a joke',
    'wait': True
}
response = requests.post('https://chatbotsplace.com/api/public/chat', headers=headers, json=data_post)

data = response.json()
print(data)

GET /api/public/chat (检索聊天回复)

检索聊天回复。 该操作可免费调用。

当该 API 返回时,聊天机器人响应可能尚未完成。 您可以检查响应中的isFinished布尔字段来确定聊天机器人响应是否完成。 即使isFinished为 false,message字段也可能会被部分填充,从而允许您向用户显示部分响应。 但是,我们建议您在每次调用此 API 之间至少等待 1 秒,以避免系统过载。

如果聊天机器人未能响应,isError字段将设置为 true。 如果失败是由于 聊天机器人收到太多请求,则tooManyRequests字段将设置为 true。 在大多数情况下,ChatbotsPlace 会捕获错误并退还 POST 请求开始时花费的宝石。 如果是这样,isRefunded字段将设置为 true

当聊天机器人的响应完成或出现错误时,isFinished字段将设置为 true。 在isFinished为 true 后再次调用此 API 将返回相同的结果。

messageId可用于检索最多 5 分钟的聊天响应。 之后,该 API 可能会返回空响应。

请求参数
名称 类型 数据类型 描述
messageId 必填 string 来自 POST 请求的 messageId,以便检索聊天响应。
返回参数
状态码 内容类型 描述
200 application/json { "message": "chatbot response", "isFinished": true, "isError": false, "tooManyRequests": false, "isRefunded": false }
示例 cURL
 curl -X GET -H "Content-Type: application/json" https://chatbotsplace.com/api/public/chat?messageId=abcd-1234
示例 Javascript
async function run() {
  const { data } = await axios.post(
    `https://chatbotsplace.com/api/public/chat`,
    {
      version: 'v3.5',
      message: 'Tell me a joke'
    },
    {
      headers: {
        authorization: `Bearer ${apiKey}`
      }
    }
  );
  while (true) {
    const getRes = await fetch(
      `https://chatbotsplace.com/api/public/chat?messageId=${data.messageId}`
    );
    const botMessage = await getRes.json();
    if (botMessage.isFinished) {
      console.log('Final message:', botMessage.message);
      return;
    }
    console.log('Partial message:', botMessage.message);
    await delay(2000);
  }
}
示例 Python
import requests
import json
import time

apiKey = '<your-api-key>'  # Define your apiKey

headers = {
    'content-type': 'application/json',
    'authorization': f'Bearer {apiKey}'
}

def run():
    session = requests.Session()

    # Post request
    url_post = 'https://chatbotsplace.com/api/public/chat'
    data_post = {
        'version': 'v3.5',
        'message': 'Tell me a joke'
    }
    response = session.post(url_post, headers=headers, json=data_post)

    data = response.json()

    while True:
        url_get = f'https://chatbotsplace.com/api/public/chat?messageId={data.get("messageId")}'
        response_get = session.get(url_get, headers=headers)
        bot_message = response_get.json()

        # Check if it is finished
        if bot_message.get('isFinished'):
            print('Final message:', bot_message.get('message'))
            return
        print('Partial message:', bot_message.get('message'))

        # Sleep for 2 seconds before next call
        time.sleep(2)

run()

聊天机器人版本和定价

版本 名称 人工智能模型 最大输入 最大输出 定价(每次对话)
v3.5 ChatGPT v3.5 gpt-3.5-turbo-0125 3000 tokens 1000 tokens -0.1💎
v4.0 ChatGPT v4.0 gpt-4-0125-preview 16000 tokens 4000 tokens -15💎
chatgpt-4-pro ChatGPT v4 Plus 30000 tokens 4000 tokens -15💎
claude_v3_haiku Claude V3 Haiku anthropic.claude-3-haiku-20240307-v1:0 3000 tokens 1000 tokens -0.1💎
claude_v3 Claude V3 Sonnet anthropic.claude-3-sonnet-20240229-v1:0 16000 tokens 4000 tokens -15💎
claude_v3_opus Claude V3 Opus anthropic.claude-3-opus-20240229-v1:0 30000 tokens 4000 tokens -20💎
jurassic_2_ultra AI21 Labs Jurassic-2 Ultra ai21.j2-ultra-v1 8000 tokens 4000 tokens -15💎
llama2_13b Llama 2 13B meta.llama2-13b-chat-v1 4000 tokens 1000 tokens -0.1💎
llama2_70b Llama 2 70B meta.llama2-70b-chat-v1 4000 tokens 1000 tokens -2💎
gemini_pro Gemini Pro 1.0 gemini-pro 30000 tokens 4000 tokens -1💎
gemini_pro_1_5 Gemini Pro 1.5 gemini-1.5-pro-preview-0409 30000 tokens 4000 tokens -5💎