深色模式
接口调用说明
API key 获取
平台提供 API key 以支持用户在平台体验页试用各种大模型服务,以及通过 API key 鉴权调用 http 接口。
API key 创建
创建方法:点击【创建 API key】按钮后,弹窗输入 API key 相关信息,点击【确定】按钮完成创建
○ API key 名称,长度不超过 20 字符。
○ API 接口选择,可多选限定该 API key 可访问的大模型 API 接口范围。
API key 类型:
○ 用户创建的 API key 类型为“个人创建”。
○ 系统默认给每个用户创建一个 API key,类型为“系统默认”,可访问的模型接口范围为平台提供的所有 API 接口,支持用户在平台体验页的大模型服务试用。
API key 管理
数量限制:一个用户最多可创建 20 个 API keys,如未使用的 API key 请及时删除,避免浪费。
操作功能:
○ 个人创建的 API key 支持禁用/启用操作。
○ 个人创建的 API key 支持删除操作。
○ 系统默认的 API key 不支持禁用/启动、删除操作。
预置模型调用
预置语言大模型服务接口说明
接口地址:https://platform.wair.ac.cn/maas/v1/chat/completions
请求方式:post 请求
语言大模型 Taichu-LLM
请求说明
Header 参数说明
字段 | 类型 | 必选 | 描述 | 示例值 |
Content-Type | string | 是 | 请求类型 | application/json |
Authorization | string | 是 | API Key,格式为 Bearer $API_KEY | Bearer ayvs***vufp |
Body 参数说明
参数名称 | 类型 | 是否必填 | 参数说明 |
model | string | 是 | 所要调用的模型编码,模型可选模型 taichu_llm |
messages | list | 是 | 一个由历史消息组成的列表,详细说明,参照 messages 信息说明 |
stream | bool | 否 | 使用同步调用时,此参数应当设置为 false。表示模型生成完所有内容后一次性返回所有内容。如果设置为 true,模型将通过标准 Event Stream ,逐块返回模型生成内容。Event Stream 结束时会返回一条 data: [DONE]消息。默认值为 true |
temperature | float | 否 | 生成过程中的温度值,取值范围[0.01,1.00] 闭区间,默认值为 0.8,调节最小细粒度为 0.01 |
top_p | float | 否 | 生成过程中的 token 几率阈值取值范围是:(0.0, 1.0) 开区间,默认值为 0.9,调节最小细粒度为 0.1 |
max_tokens | int | 否 | 模型输出最大 token 数,最大输出为 8192,默认值为 3000 |
messages 参数说明
参数名称 | 类型 | 是否必填 | 说明 |
role | string | 是 | system:系统,user:用户,assistant:模型,tool:工具调用 |
content | string | 是 | role 为 system 时为系统人设信息,role 为 user 时为用户输入信息,role 为 assistant 时为模型返回信息,role 为 tool 时为工具调用返回信息 |
curl 请求示例-模型服务
json
curl --location --request POST 'https://platform.wair.ac.cn/maas/v1/chat/completions' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [
{
"content": "把文言文翻译成白话文“是故弟子不必不如师,师不必贤于弟子,闻道有先后,术业有专攻,如是而已。”",
"role": "user"
}
],
"temperature": 0.8,
"top_p": 0.9,
"repetition_penalty": 1,
"stream": false,
"max_tokens": 3000,
"model": "taichu_llm"
}'
python 调用示例
非流式调用
python
import requests
import requests
if __name__ == '__main__':
params = {
'model': 'taichu_llm',
'messages': [{"role": "user", "content": "你好"}],
'stream': False
}
api = 'https://platform.wair.ac.cn/maas/v1/chat/completions'
headers = {'Authorization': 'Bearer $API_KEY'}
response = requests.post(api, json=params, headers=headers)
if response.status_code == 200:
print(response.json())
else:
body = response.content.decode('utf-8')
print(f'request failed,status_code:{response.status_code},body:{body}')
流式调用
python
import requests
if __name__ == '__main__':
params = {
'model': 'taichu_llm',
'messages': [{"role": "user", "content": "你好"}],
'stream': True
}
api = 'https://platform.wair.ac.cn/maas/v1/chat/completions'
headers = {'Authorization': 'Bearer $API_KEY'}
response = requests.post(api, json=params, headers=headers, stream=True)
if response.status_code == 200:
response.encoding = 'utf-8'
for line in response.iter_lines(decode_unicode=True):
print(line)
else:
body = response.content.decode('utf-8')
print(f'request failed,status_code:{response.status_code},body:{body}')
返回说明
Body 参数说明
参数名称 | 类型 | 说明 |
id | string | 本次请求唯一标识 |
model | string | 本次使用的模型名称 |
choices | list | 本次请求模型服务返回的信息 |
+messages | object | 同步响应时,返回该字段,详细说明见 messages |
+index | object array | 当前可选路径序列号 |
+finish_reason | string | stop: 表示模型输出结束 length: 表示模型输出长度达到 max_tokens tool_calls: 表示模型命中函数 content_filter: 表示模型输出被安全审核拦截,针对此类内容,请用户自行判断并决定是否撤回已公开的内容。 |
usage | object | token 使用数量 |
+completion_tokens | int | 内容生成的 tokens 数量 |
+prompt_tokens | int | prompt 使用的 tokens 数量 |
+total_tokens | int | 总 tokens 用量 |
object | string | 生成的聊天响应 ID |
created | timestamp | 生成聊天响应时的 Unix 时间戳 |
messages 参数说明
参数名称 | 类型 | 是否必填 | 说明 |
role | string | 是 | system:系统,user:用户,assistant:模型,tool:工具调用 |
content | string | 是 | role 为 system 时为系统人设信息,role 为 user 时为用户输入信息,role 为 assistant 时为模型返回信息,role 为 tool 时为工具调用返回信息 |
返回示例
json
{
"id": "59492853-f336-4967-9691-f95e22181d78",
"object": "chat.completion",
"created": 2455355,
"model": "taichu_llm",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "因此学生不一定不如老师,老师也不一定比学生贤能,听到的道理有先有后,学问技艺各有专门研究,如此罢了。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 110,
"total_tokens": 141,
"completion_tokens": 31
}
}
预置多模态大模型服务接口说明
接口地址:https://platform.wair.ac.cn/maas/v1/chat/completions
请求方式:post 请求
多模态大模型 Taichu-VL
请求说明
Header 参数说明
字段 | 类型 | 必选 | 描述 | 示例值 |
Content-Type | string | 是 | 请求类型 | application/json |
Authorization | string | 是 | API Key,格式为 Bearer $API_KEY | Bearer ayvs***vufp |
Body 参数说明
参数名称 | 类型 | 是否必填 | 说明 |
model | string | 是 | 模型 code,此处为 taichu_vl |
messages | list | 是 | 一个由历史消息组成的列表,详细说明,参照 messages 信息说明 |
stream | bool | 否 | 使用同步调用时,此参数应当设置为 false。表示模型生成完所有内容后一次性返回所有内容。如果设置为 true,模型将通过标准 Event Stream ,逐块返回模型生成内容。Event Stream 结束时会返回一条 data: [DONE]消息。默认值为 true |
temperature | float | 否 | 生成过程中的温度值,取值范围[0.01,1.00] 闭区间,默认值为 1.0,调节最小细粒度为 0.01 |
top_p | float | 否 | 生成过程中的 token 几率阈值取值范围是:(0.0, 1.0) 开区间,默认值为 0.9,调节最小细粒度为 0.1 |
repetition_penalty | float | 否 | 生成过程中的惩罚值取值范围是:(1.0, 2.0) 开区间,默认值为 1.0,调节最小细粒度为 0.1 |
messages 参数说明
参数名称 | 类型 | 是否必填 | 说明 |
role | string | 是 | system:系统,user:用户,assistant:模型,tool:工具调用 |
content | string | 是 | type 为 text 时为用户提问信息,type 为 image_url 时为上传图片地址; |
curl 请求示例
json
curl --location 'https://platform.wair.ac.cn/maas/v1/chat/completions' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"stream": true,
"model": "taichu_vl",
"messages": [
{
"content": [
{
"type": "text",
"text": "图片中的人口总量是多少?男性多还是女性多?"
},
{
"type": "image_url",
"image_url": {
"url": "https://zdtc-cdn.wair.ac.cn/assets/caption_2_file_1.jpeg"
}
}
],
"role": "user"
}
]
}'
Python 调用示例
非流式调用
python
import requests
if __name__ == '__main__':
params = {
"stream": False,
"model": "taichu_vl",
"messages": [
{
"content": [
{
"type": "text",
"text": "图片中的人口总量是多少?男性多还是女性多?"
},
{
"type": "image_url",
"image_url": {
"url": "https://zdtc-cdn.wair.ac.cn/assets/caption_2_file_1.jpeg"
}
}
],
"role": "user"
}
]
}
api = 'https://platform.wair.ac.cn/maas/v1/chat/completions'
headers = {'Authorization': 'Bearer $API_KEY'}
response = requests.post(api, json=params, headers=headers)
if response.status_code == 200:
print(response.json())
else:
body = response.content.decode('utf-8')
print(f'request failed,status_code:{response.status_code},body:{body}')
流式调用
python
import requests
if __name__ == '__main__':
params = {
"stream": True,
"model": "taichu_vl",
"messages": [
{
"content": [
{
"type": "text",
"text": "图片中的人口总量是多少?男性多还是女性多?"
},
{
"type": "image_url",
"image_url": {
"url": "https://zdtc-cdn.wair.ac.cn/assets/caption_2_file_1.jpeg"
}
}
],
"role": "user"
}
]
}
api = 'https://platform.wair.ac.cn/maas/v1/chat/completions'
headers = {'Authorization': 'Bearer $API_KEY'}
response = requests.post(api, json=params, headers=headers, stream=True)
if response.status_code == 200:
response.encoding = 'utf-8'
for line in response.iter_lines(decode_unicode=True):
print(line)
else:
body = response.content.decode('utf-8')
print(f'request failed,status_code:{response.status_code},body:{body}')
返回说明
Body 参数说明
参数名称 | 类型 | 说明 |
id | string | 本次请求唯一标识 |
model | string | 本次使用的模型名称 |
choices | list | 本次请求模型服务返回的信息 |
+messages | object | 同步响应时,返回该字段,详细说明见 messages |
+index | int | 当前可选路径序列号 |
+finish_reason | string | stop: 表示模型输出结束 length: 表示模型输出长度达到 max_tokens tool_calls: 表示模型命中函数 content_filter: 表示模型输出被安全审核拦截,针对此类内容,请用户自行判断并决定是否撤回已公开的内容。 |
usage | object | token 使用数量 |
+completion_tokens | int | 内容生成的 tokens 数量 |
+prompt_tokens | int | prompt 使用的 tokens 数量 |
+total_tokens | int | 总 tokens 用量 |
object | string | 生成的聊天响应 ID |
created | timestamp | 生成聊天响应时的 Unix 时间戳 |
messages 参数说明
参数名称 | 类型 | 是否必填 | 说明 |
role | string | 是 | system:系统,user:用户,assistant:模型,tool:工具调用 |
content | string | 是 | role 为 system 时为系统人设信息,role 为 user 时为用户输入信息,role 为 assistant 时为模型返回信息,role 为 tool 时为工具调用返回信息 |
返回示例
json
{
"id": "79e523f6-58e9-9257-b4ad-7e6c5ce912f6",
"object": "chat.completion",
"created": 1736507515,
"model": "taichu_vl",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "图片中的人口总量是141175万人。男性比女性多,总性别比为104.69。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 3385,
"total_tokens": 3408,
"completion_tokens": 23
}
}
工具指南
工具与知识库使用
tools 参数说明
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
retrieval | object | 否 | 知识库搜索,仅当工具类型为retrieval时补充 |
knowledge_ids | list(int) | 是 | 知识库(可通过 文档管理->知识库管理->相关信息 获取) |
remove_corner_mark | bool | 否 | 为 true 时能够去除答案的引用标,默认值为 false |
tips_text | string | 否 | 知识库问答末中的固定描述,当传无固定描述时,默认为“抱歉,我的知识库中未检索到相关信息。请换个问题或参考小初的回答”。 【只在严谨模式生效】 |
backup_chat | bool | 否 | 知识库问答末中的时,是否启用大语言模型兜底回复,默认值为true。 【只在严谨模式生效】 |
chat_mode | int | 否 | 问答模式 1 为发散模式 2 为严谨模式 默认认为发散模式。发散模式包含文档外模型知识,严谨模式会拒答文档以外的知识。 |
text_threshold | float | 否 | 相似度阈值 问答模式 1 为发散模式 2 为严谨模式 默认认为发散模式。发散模式包含文档外模型知识,严谨模式会拒答文档以外的知识。 |
curl 请求示例-知识库问答
json
curl --location --request POST 'https://platform.wair.ac.cn/maas/v1/chat/completions' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [{
"content": "Claude 3 模型系列在哪些方面进行了改进?",
"role": "user"
}],
"model": "taichu_llm",
"tools": [{
"type": "retrieval",
"retrieval": {
"knowledge_ids": [90862],
"backup_chat": true
}
}],
"stream": true,
"temperature": 0.4
}'
需在知识库管理界面创建知识库并手动获取对应知识库 ID
单/多轮对话
单轮对话
使用 Curl 进行交互的代码如下:
json
curl --location 'https://platform.wair.ac.cn/maas/v1/chat/completions' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "taichu_llm",
"messages": [
{
"role": "system",
"content": "你是紫东太初,也叫小初,你是由武汉人工智能研究院和中国科学院自动化研究所联合研发的千亿参数多模态大模型。\n"
},
{
"role": "user",
"content": "你好,请帮我写一首庆祝国庆的诗歌。"
}
],
"stream": false
}'
其中$API_KEY 需要替换为您在平台上创建的 API Key。
注意 system_prompt 只有在更改人物设定时需要修改,其余时候无需修改,也可不传。
多轮对话
在上述的单次交流示例中,语言模型接收用户的一系列信息作为输入,并输出模型生成的回复。在某些情况下,我们可以将模型的输出结果再次纳入输入内容中,以便进行连续的对话交流。下面是一组简单的实现多轮对话的例子:
json
curl --location 'https://platform.wair.ac.cn/maas/v1/chat/completions' \
--header 'Authorization: Bearer $API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "taichu_llm",
"messages": [
{
"role": "system",
"content": "你是紫东太初,也叫小初,你是由武汉人工智能研究院和中国科学院自动化研究所联合研发的千亿参数多模态大模型。\n"
},
{
"role": "user",
"content": "地球自转周期多少?"
},
{
"role": "assistant",
"content": "地球自转的周期是大约24小时,也就是一天的时间。具体来说,地球自转一周所需的时间是23小时56分4秒,这个时间被称为一个恒星日。而我们通常所说的一天24小时,是指太阳日,即从日出到日出的时间。这两个时间的微小差异是因为地球在自转的同时,还在围绕太阳公转,公转的速度会影响我们观测到的太阳日长度。"
},
{
"role": "user",
"content": "月球呢?"
}
],
"stream": false
}'
多轮对话需要按照“user”、“assistant”的交替方式输入。
注意 system_prompt 只有在更改人物设定时需要修改,其余时候无需修改,也可不传。
值得注意的是,随着对话的深入,每次输入给模型的词汇量(token)会逐渐增多。为了应对这种情况,有时需要采取一些优化措施,比如仅保留对话中最近的几轮信息。
错误码说明
HTTP 返回码 | 错误message |
400 | 参数错误: |
401 | apikey缺失 |
401 | apikey不存在 |
403 | apikey被禁用 |
403 | 请先完成实名认证 |
403 | apikey无权限调用该模型 |
403 | 当前用户无权限调用该模型 |
403 | 余额不足,请及时充值 |
403 | 非常抱歉,这个问题我暂时无法回答,如果您有其他的问题咨询,我非常乐意帮助你。 |
500 | 系统异常,请联系技术支持 |
503 | 服务繁忙,请稍后再试 |
503 | 内部模型服务鉴权失败 |
503 | 内部模型服务不存在 |
503 | 内部模型服务禁止预测 |
错误示例
json
{
"error": {
"message": "非常抱歉,这个问题我暂时无法回答,如果您有其他的问题咨询,我非常乐意帮助你。",
"type": "taichu_error",
"param": "",
"code": 403
}
}