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()

POST /api/public/art (生成 AI 图像)

使用 AI 生成图像。 有关支持的 AI Arts 版本、支持的分辨率以及成本的更多详细信息,请参阅下面的 AI Art 版本表

POST Body
名称 类型 数据类型 描述
message 必填 string 生成图像的提示。
version 必填 string AI 版本使用。 请参阅AI Art 版本表 以获取可用版本列表。
n 可选 number 要生成的图像数量。 每个图像的成本显示在AI Art 版本表中。
width 可选 number 图像的宽度。 请参阅AI Art 版本表 了解每个 AI Art 版本支持的分辨率。
height 可选 number 图像的高度。 请参阅AI Art 版本表 了解每个 AI Art 版本支持的分辨率。
stylePreset 可选 string 仅适用于“sdxl”。 支持的值为 '3d-model', 'analog-film', 'anime', 'cinematic', 'comic-book', 'digital-art', 'enhance', 'fantasy-art', 'isometric', 'line-art', 'low-poly', 'modeling-compound', 'neon-punk', 'origami', 'photographic', 'pixel-art'。
Responses
状态码 内容类型 描述
200 application/json { "cost": 1, "botImages": [{ "id": "v2-333c2a85-ca12-42d0-b234-8330dbc5ce34", "isNsfw": false, "prompt": "a lady", "thumbnailUrl": "https://images.chatbotsplace.com/thumbnail/v2-333c2a85-ca12-42d0-b234-8330dbc5ce34.png", "largeUrl": "https://images.chatbotsplace.com/full/v2-333c2a85-ca12-42d0-b234-8330dbc5ce34.png" }]
400 text/plain 请求无效。 请确保 POST 正文正确。
401 text/plain API key 无效
403 text/plain 宝石不足
Example cURL
 curl -X POST -H "Content-Type: application/json" --data @post.json https://chatbotsplace.com/api/public/art
Example Javascript
async function run() {
  const { data } = await axios.post(
    `https://chatbotsplace.com/api/public/art`,
    {
      version: 'sdxl',
      message: 'a pretty girl'
    },
    {
      headers: {
        authorization: `Bearer ${apiKey}`
      }
    }
  );
  console.log(data);
}
Example Python
import requests
import json

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

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

data_post = {
    'version': 'sdxl',
    'message': 'a pretty girl'
}
response = requests.post('https://chatbotsplace.com/api/public/art', headers=headers, json=data_post)

data = response.json()
print(data)

POST /api/public/tts/standard (标准语音的文本转语音)

使用标准语音将文本转换为合成语音。 标准 TTS 语音使用串联合成。 此方法将录制的语音的音素串在一起。 这导致价格较低,但语音质量较低。 为了获得更好的语音质量,请考虑使用 /api/public/tts/neural API。 此 API 的成本为 100 个字符 0.025 个 💎(向上舍入到接下来的 100 个字符)。 1 颗宝石最多可产生 4000 个字符。 目前,最大消息长度为 3000 个字符。 如果您需要更高的限额,请联系我们。 请参阅标准 TTS 语音表,了解可用语音和语言的列表。

POST Body
名称 类型 数据类型 描述
message required string 要合成语音的消息。
voiceId optional string 用于合成此消息的语音 ID(例如"aws-en-US-Joanna")。 必须指定 voiceId 或 language。
language optional string 用于合成此消息的语言(例如"en-US")。 必须指定 voiceId 或 language。
gender optional string 用于此消息的语音的性别。 仅在指定 language 时使用。
返回参数
状态码 内容类型 描述
200 audio/mp3 合成音频流
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/tts/standard
示例 Javscript
async function run() {
  const { data } = await axios.post(
    `https://chatbotsplace.com/api/public/tts/standard`,
    {
      voiceId: 'aws-en-US-Joanna',
      message: 'Hello, how can I help you today?'
    },
    {
      responseType: 'arraybuffer',
      headers: {
        authorization: `Bearer ${apiKey}`
      }
    }
  );
  fs.writeFileSync(`./hello.mp3`, data, 'binary');
}
示例 Python
import requests
import json

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

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

payload = {
    'voiceId': 'aws-en-US-Joanna',
    'message': 'Hello, how can I help you today?'
}

url = 'https://chatbotsplace.com/api/public/tts/standard'

response = requests.post(url, headers=headers, data=json.dumps(payload))

with open('hello.mp3', 'wb') as f:
    f.write(response.content)

POST /api/public/tts/neural (自然语音的文本转语音)

使用自然语音将文本转换为合成语音。 自然 TTS 语音可产生听起来更类似人类的的语音,但代价是价格更高。 它还支持更多语言并提供更多语音。 此 API 的成本为 100 个字符 0.1 个 💎(向上舍入到接下来的 100 个字符)。 1 颗宝石最多可产生 1000 个字符。 目前,最大消息长度为 3000 个字符。 如果您需要更高的限额,请联系我们。 请参阅自然 TTS 语音表,了解可用语音和语言的列表。

POST Body
名称 类型 数据类型 描述
message required string 要合成语音的消息。
voiceId optional string 用于合成此消息的语音 ID(例如"aws-en-US-Joanna")。 必须指定 voiceId 或 language。
language optional string 用于合成此消息的语言(例如"en-US")。 必须指定 voiceId 或 language。
gender optional string 用于此消息的语音的性别。 仅在指定 language 时使用。
返回参数
状态码 内容类型 描述
200 audio/mp3 合成音频流
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/tts/neural
示例 Javascript
async function run() {
  const { data } = await axios.post(
    `https://chatbotsplace.com/api/public/tts/standard`,
    {
      voiceId: 'aws-en-US-Joanna',
      message: 'Hello, how can I help you today?'
    },
    {
      responseType: 'arraybuffer',
      headers: {
        authorization: `Bearer ${apiKey}`
      }
    }
  );
  fs.writeFileSync(`./hello.mp3`, data, 'binary');
}
示例 Python
import requests
import json

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

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

payload = {
    'voiceId': 'aws-en-US-Joanna',
    'message': 'Hello, how can I help you today?'
}

url = 'https://chatbotsplace.com/api/public/tts/neural'

response = requests.post(url, headers=headers, data=json.dumps(payload))

with open('hello.mp3', 'wb') as f:
    f.write(response.content)

POST /api/public/speech-recognition (语音转文本转录)

将音频文件转录为文本。 音频文件不得超过 25MB。 音频文件可以是以下格式之一:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。 此 API 的成本为每 10 秒 0.05 💎(向上舍入到最接近的 10 秒)。 例如,一个 5 秒的音频文件将花费 0.05 💎。 1 分钟的音频文件售价 0.3 💎。 请注意,与其他 ChatbotsPlace API 不同,此请求的content-type必须是multipart/form-data

POST Body
名称 类型 数据类型 描述
file required string 要转录的音频文件。
language optional string 输入音频的语言。 以 ISO-639-1 格式提供输入语言将提高准确性和延迟。
Responses
状态码 内容类型 描述
200 application/json {"cost": number, "language": string, "duration": number, "text": string, "segments": array }

| 400 | text/plain | 请求无效。 请确保 POST 正文正确。 | | 401 | text/plain | API key 无效 | | 403 | text/plain | 宝石不足 |

Example cURL
 curl -X POST -H "Content-Type: multipart/form-data" --data @post.json https://chatbotsplace.com/api/public/speech-recognition
Example Javascript
async function run() {
  const { data } = await axios.post(
    `https://chatbotsplace.com/api/public/speech-recognition`,
    {
      file: fs.createReadStream('./hello.mp3')
    },
    {
      headers: {
        'content-type': 'multipart/form-data',
        authorization: `Bearer ${apiKey}`
      }
    }
  );
  console.log(data);
}
Example Python
import requests

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

headers = {
    'authorization': f'Bearer {apiKey}'
}

with open('./hello.mp3', 'rb') as f:
    files = {
        'file': f,
    }
    response = requests.post('https://chatbotsplace.com/api/public/speech-recognition', headers=headers, files=files)
    data = response.json()
    print(data)

聊天机器人版本和定价

版本 名称 人工智能模型 最大输入 最大输出 定价(每次对话)
v3.5 ChatGPT v3.5 gpt-3.5-turbo-1106 3000 tokens 1000 tokens -0.1💎
v4.0 ChatGPT v4.0 gpt-4-1106-preview 16000 tokens 4000 tokens -15💎
claudeinstant Anthropic Claude Instant anthropic.claude-instant-v1 16000 tokens 4000 tokens -1💎
claude_v2 Anthropic Claude V2.1 anthropic.claude-v2:1 16000 tokens 4000 tokens -15💎
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 -1💎
llama2_70b Llama 2 70B meta.llama2-70b-chat-v1 4000 tokens 1000 tokens -2💎
bard_v1 Google PaLM 2 chat-bison 8000 tokens 1000 tokens -0.1💎
gemini_pro Google Gemini Pro gemini-pro 30000 tokens 4000 tokens -1💎

人工智能绘图版本和定价

版本 名称 支持的分辨率 定价(每次对话)
dalle DALL·E 256 x 256
512 x 512
1024 x 1024
-1💎
dalle3 DALL·E 3 1024 x 1024
-3💎
sd1.5 Stable Diffusion XL 1024 x 1024
1152 x 896
1216 x 832
1344 x 768
1536 x 640
640 x 1536
768 x 1344
832 x 1216
896 x 1152
-1💎
imagegen Google Imagegen 1024 x 1024
-1💎
amazontitan Amazon Titan 1024 x 1024
-1💎