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💎 |