API文档
forum
API文档
通过本文档,您可轻松使用荔知开放API
基本信息
公开的服务地址
https://back.brath.cn
荔知 AI 提供基于 HTTP 的 API 服务接入。对于开放 API,我们兼容了 OpenAI 的相关 API 的输入和输出。
快速开始
Python 调用方法
对 python 用户,可以简单复用 openai 的 sdk。
pip install --upgrade 'openai>=1.0'
您需要确保使用的 python 版本至少为 3.7.1, openai 的 sdk 版本不低于 1.0.0
我们可以这样简单检验下自己库的版本:
python -c 'import openai; print("version =",openai.__version__)' # 输出可能是 version = 1.10.0,表示当前 python 实际使用了 openai 的 v1.10.0 的库
一个简单的例子如下:
from openai import OpenAI
client = OpenAI(
api_key="API_KEY",
base_url="https://back.brath.cn/api/open",
)
completion = client.chat.completions.create(
model="litchi-pro",
messages=[
{"role": "user", "content": "你好,1+1等于多少?"}
],
temperature=0.3,
)
print(completion.choices[0].message)
其中 API_KEY 需要替换为您在平台上创建的 API Key。
上面的代码中语言模型将用户信息列表作为输入,并将模型生成的信息作为输出返回。 下面是一组简单的实现多轮对话的例子:
from openai import OpenAI
client = OpenAI(
api_key="API_KEY",
base_url="https://back.brath.cn/api/open",
)
history = [
{"role": "system", "content": "你是荔智,由 荔知AI 提供的人工智能助手。"}
]
def chat(query, history):
history += [{
"role": "user",
"content": query
}]
completion = client.chat.completions.create(
model="litchi-pro",
messages=history,
temperature=0.3,
)
result = completion.choices[0].message.content
history += [{
"role": "assistant",
"content": result
}]
return result
print(chat("地球的自转周期是多少?", history))
print(chat("月球呢?", history))
值得注意的是,随着对话的进行,模型每次需要传入的 token 都会线性增加,必要时,需要一些策略进行优化,例如只保留最近几轮对话。
CURL 调用方法
同样的,我们也可以基于 curl 直接调用,实现一致的效果。
curl https://back.brath.cn/api/open/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "litchi-pro",
"messages": [
{"role": "user", "content": "你好,1+1等于多少?"}
],
"temperature": 0.3
}'
其中 $API_KEY
部分需要替换为您自己的 API Key。或者在调用前给它设置好环境变量。
API 说明
Chat Completion
请求地址
POST https://back.brath.cn/api/open/chat/completions
请求内容
示例
{
"model": "litchi-pro",
"messages": [
{
"role": "system",
"content": "你是荔智,由 荔知AI 提供的人工智能助手。"
},
{ "role": "user", "content": "你好,1+1等于多少?" }
],
"temperature": 0.3
}
字段说明
字段 | 是否必须 | 说明 | 类型 | 取值 |
---|---|---|---|---|
messages | required | 包含迄今为止对话的消息列表 | List[Dict] | 这是一个结构体的列表,每个元素类似如下:{"role": "user", "content": "你好"} role 只支持 system ,user ,assistant 其一,content 不得为空 |
model | required | Model ID, 可以通过 List Models 获取 | string | 目前是 litchi-pro ,荔知AI-v1-32k ,荔知AI-v1-128k 其一 |
max_tokens | optional | 聊天完成时生成的最大 token 数。如果到生成了最大 token 数个结果仍然没有结束,finish reason 会是 “length”, 否则会是 “stop” | int | 这个值建议按需给个合理的值,如果不给的话,我们会给一个不错的整数比如 1024。特别要注意的是,这个 max_tokens 是指您期待我们返回的 token 长度,而不是输入 + 输出的总长度。比如对一个 litchi-pro 模型,它的最大输入 + 输出总长度是 8192,当输入 messages 总长度为 4096 的时候,您最多只能设置为 4096,否则我们服务会返回不合法的输入参数( invalid_request_error ),并拒绝回答。如果您希望获得“输入的精确 token 数”,可以使用下面的“计算 Token” API 使用我们的计算器获得计数 |
temperature | optional | 使用什么采样温度,介于 0 和 1 之间。较高的值(如 0.7)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定性 | float | 如果设置,值域须为 [0, 1] 我们推荐 0.3,以达到较合适的效果 |
top_p | optional | 另一种采样方法,即模型考虑概率质量为 top_p 的标记的结果。因此,0.1 意味着只考虑概率质量最高的 10% 的标记。一般情况下,我们建议改变这一点或温度,但不建议 同时改变 | float | 默认 1.0 |
n | optional | 为每条输入消息生成多少个结果 | int | 默认为 1,不得大于 5。特别的,当 temperature 非常小靠近 0 的时候,我们只能返回 1 个结果,如果这个时候 n 已经设置并且 > 1,我们的服务会返回不合法的输入参数(invalid_request_error) |
presence_penalty | optional | 存在惩罚,介于-2.0 到 2.0 之间的数字。正值会根据新生成的词汇是否出现在文本中来进行惩罚,增加模型讨论新话题的可能性 | float | 默认为 0 |
frequency_penalty | optional | 频率惩罚,介于-2.0 到 2.0 之间的数字。正值会根据新生成的词汇在文本中现有的频率来进行惩罚,减少模型一字不差重复同样话语的可能性 | float | 默认为 0 |
stop | optional | 停止词,当全匹配这个(组)词后会停止输出,这个(组)词本身不会输出。最多不能超过 5 个字符串,每个字符串不得超过 32 字节 | String, List[String] | 默认 null |
stream | optional | 是否流式返回 | bool | 默认 false, 可选 true |
返回内容
对非 stream 格式的,返回类似如下:
{
"id": "chatcmpl-97GH9n5LJNBB3sWCdHikM4nFRRjG8",
"object": "chat.completion",
"created": 1711517887,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"delta": null,
"message": {
"role": "assistant",
"content": "你好,我是一个智能助手,专门设计用来回答各种问题和提供帮助。我可以回答关于各种主题的问题,帮助你解决问题和获取信息。如果你有任何问题,随时都可以问我哦!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 16,
"completion_tokens": 78,
"total_tokens": 94
},
"warning": null,
"system_fingerprint": "fp_3bc1b5746c"
}
对 stream 格式的,返回类似如下:
data:{"id":"chatcmpl-97GI0fD2ui22IljqsMBIYFG4ih82x","object":"chat.completion.chunk","created":1711517940,"model":"gpt-3.5-turbo-0125","choices":[{"index":0,"delta":{"role":"assistant","content":""},"message":null,"finish_reason":null}],"plugins":null,"usage":null}
data:{"id":"chatcmpl-97GI0fD2ui22IljqsMBIYFG4ih82x","object":"chat.completion.chunk","created":1711517940,"model":"gpt-3.5-turbo-0125","choices":[{"index":0,"delta":{"content":"你"},"message":null,"finish_reason":null}],"plugins":null,"usage":null}
data:{"id":"chatcmpl-97GI0fD2ui22IljqsMBIYFG4ih82x","object":"chat.completion.chunk","created":1711517940,"model":"gpt-3.5-turbo-0125","choices":[{"index":0,"delta":{"content":"好"},"message":null,"finish_reason":null}],"plugins":null,"usage":null}
.....
data:{"id":"chatcmpl-97GI0fD2ui22IljqsMBIYFG4ih82x","object":"chat.completion.chunk","created":1711517940,"model":"gpt-3.5-turbo-0125","choices":[{"index":0,"delta":{"content":"交"},"message":null,"finish_reason":null}],"plugins":null,"usage":null}
data:{"id":"chatcmpl-97GI0fD2ui22IljqsMBIYFG4ih82x","object":"chat.completion.chunk","created":1711517940,"model":"gpt-3.5-turbo-0125","choices":[{"index":0,"delta":{"content":"流"},"message":null,"finish_reason":null}],"plugins":null,"usage":null}
data:{"id":"chatcmpl-97GI0fD2ui22IljqsMBIYFG4ih82x","object":"chat.completion.chunk","created":1711517940,"model":"gpt-3.5-turbo-0125","choices":[{"index":0,"delta":{"content":"!"},"message":null,"finish_reason":null}],"plugins":null,"usage":null}
data:{"usage":{"completion_tokens":96,"prompt_tokens":25,"total_tokens":121}}
data:[DONE]
👆在荔知开放API流式接口中,完成前的最后一个流式数据为该流式信息所消耗的usage信息。
错误说明
下面是主要的几个错误
Error Type | HTTP Status Code | 详细描述 |
---|---|---|
invalid_authentication_error | 401 | 鉴权失败请确认 |
invalid_request_error | 400 | 这个通常意味着您输入格式有误,包括使用了预期外的参数,比如过大的 temperature,或者 messages 的大小超过了限制。在 message 字段通常会有更多解释 |
rate_limit_reached_error | 429 | 您超速了。我们设置了最大并发上限和分钟为单位的次数限制。如果在 429 后立即重试,可能会遇到罚时建议控制并发大小,并且在 429 后 sleep 3 秒 |
exceeded_current_quota_error | 429 | Quota 不够了,请联系管理员加量 |
部分文档内容借鉴于 KimiAI - (https://platform.moonshot.cn/docs)
Last updated on Brath 29, 2024