market_assistant/API.txt

714 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Image]
获取API KEY地址https://chatglm.cn/developersPanel/apiSet
github入门代码https://github.com/MetaGLM/glm-cookbook/blob/main/glms/api/glms_api.ipynb
简介
具备开发能力的创作者可以通过API调用的方式使用智能体方便将智能体应用于更多业务场景中。API基本覆盖清言C端页面所有功能包含文本对话文生图图片解读联网搜索文档解析Python代码执行外部API调用等。接入前请通过创作者中心获取api_key及api_secret. 当前仅支持通过API方式调用创作者自己创建的智能体。
基础信息
服务根路径: https://chatglm.cn/chatglm/assistant-api/v1/
鉴权方式header中发送 Authorization: Bearer {access_token}. Token获取方式参考下方Access Token获取接口.
请求体格式JSON
返回格式除stream接口外JSON
返回结构体:
字段
类型
必填
说明
status
int
Y
是否成功0->成功其他代表失败默认错误返回1. 具体错误码见接口说明。
message
string
N
错误信息
result
Dict
N
返回数据
用量控制
为避免API调用占用过多资源系统限制每个开发者非API_KEY的并发数量。默认并发数为2。并发限制范围包括上传文件和会话调用API接口。
此外我们对每个开发者调用会话接口的次数也设置了上限目前为一天500次总量5000次。
接口列表
1. Access Token获取
请求路径和方式POST /get_token
输入:
字段
类型
必填
说明
api_key
string
Y
开发者ID
api_secret
string
Y
开发者秘钥
输出数据:
字段
类型
必填
说明
access_token
string
Y
接口鉴权token
expires_in
int
Y
token过期时间,单位秒。一次授权有效期为10天。请注意在token过期前更新。
异常说明:
异常情况
http码
status码
api_key被禁用
403
1001
api_key或api_secret验证失败
401
1002
2. Assistant 会话调用
请求路径和方式POST /stream
输入:
字段
类型
必填
说明
assistant_id
string
Y
智能体 ID浏览器打开智能体对话页后可通过地址栏查看。下图红框中即为ID。
[Image]
conversation_id
string
N
会话 ID不传默认创建新会话。需要继续之前的会话时传入流式输出Result中的conversation_id值。对话轮数和上下文长度无限制需要注意上下文过大会导致响应耗时增加。
prompt
string
Y
prompt文本
file_list
List<Dict>
N
文件列表传入文件上传接口返回的file_id。 [{"file_id":"xxx"}]
meta_data
Dict
N
元信息,拓展字段
输出:
SSE 流式输出
字段
类型
必填
说明
message
Result
Y
SSE返回json格式消息体.
输出Result结构
字段
类型
必填
说明
history_id
string
Y
历史记录ID
conversation_id
string
Y
对话上下文ID
assistant_id
string
Y
智能体ID
message
Message
Y
输出消息体, 每次输出一个message对象前一个message结束后输出下一个message
created_at
string
Y
创建时间格式“2023-11-23 18:00:00”
status
string
Y
init->初始态, processing->生成中 finish->生成结束,error->生成异常。
其中 finish和error为最终态init和processing为中间态。网络正常的情况下Result状态会从init到processing再到finish或error。
出现输入风控拦截时状态从init直接进入error。
last_error
dict
N
异常信息 {"error_code":"", ""error_msg":""}
具体报错信息见下方【流式异常说明】
meta_data
dict
N
{}
输出Message结构
字段
类型
必填
说明
role
string
Y
assistant为模型输出tool为工具输出
content
Content
Y
输出内容参考下方Content结构。
status
string
Y
init/processing/finish/error状态流转逻辑与外层Result相同。
created_at
string
Y
时间戳。格式参考“2023-11-23 18:00:00”
meta_data
dict
N
{}
输出Content结构
根据不同的Tool调用情况返回的content结构不同参考如下
Tool使用情况
返回结构
无工具,文本输出
{
"type": "text",
"text": "你好"
}
CogView画图
{
"type":"image",
"image":[
{"image_url":"https://sfile.chatglm.cn/..."}
]
}
Python代码执行
代码执行-开始
{
"type": "code",
"code": "# Calculating the square of 10\n10 ** 2"
}
代码执行-成功,结果返回
{
"type": "execution_output",
"content": "100"
}
代码执行-失败
{
"type": "system_error",
"content": "sandbox error code: 504"
}
OPEN-URL链接打开
OPEN-URL开始
{
"type":"tool_calls",
"tool_calls":{
"name":"browser",
"arguments":"open_url(\"https://www.chatglm.com/\")"}
}
}
OPEN-URL结束-成功
{
"type": "browser_result",
"content": "{\"title\": \" Split string with multiple delimiters in Python - Stack Overflow\", \"url\": \" https://stackoverflow.com/questions/4998629/split-string-with-multiple-delimiters-in-python\"}",
}
OPEN-URL结束-失败
{
"type":"system_error",
"content":"Error when executing command "}],
"meta_data":{
"failedCommand":"open_url(\"https://www.chatglm.com/\")"
}
}
}
Search联网搜索
Search 开始
{
"type":"tool_calls",
"tool_calls":{
"name":"browser",
"arguments":"search(\"河南河北山西霰雪预警 2024\", recency_days=30)"}
}
}
Search 结束-成功
{
"type": "browser_result",
"content": "{}",
"meta_data":{
{
"metadata_list":[
{
"type":"webpage",
"title":"2024年1-2月份山西省进出口情况分析 - 昆明海关",
"url":"http://kunming.customs.gov.cn/taiyuan_customs/zfxxgk50/3023433/3023453/4676174/5755479/index.html","text":"比去年同期下同增长26.8%。全省活跃企业数明显增加前2个月。占全省进出口总值的40.3%。国家",
"pub_date":""
},
]
}
}
}
Search 结束-失败
{
"type":"system_error",
"content":"Error when executing command "}],
"meta_data":{
"failedCommand":"search(\"河南河北山西霰雪预警 2024\", recency_days=30)"
}
}
}
mclick 搜索结果页面打开 开始. mclick中参数为打开链接序号列表关联搜索结果
{
"type": "tool_calls",
"tool_calls": {
"name": "browser",
"arguments": "mclick([0, 1, 3])"
},
"meta_data":{
"metadata_list":[
{
"type":"webpage",
"title":"2024年1-2月份山西省进出口情况分析 - 昆明海关",
"url":"http://kunming.customs.gov.cn/taiyuan_customs/zfxxgk50/3023433/3023453/4676174/5755479/index.html","text":"比去年同期下同增长26.8%。全省活跃企业数明显增加前2个月。占全省进出口总值的40.3%。国家",
"pub_date":""
},
]
}
}
mclick 搜索结果页面打开 成功. 所有链接均完成后返回quote_result.
{
"type": "quote_result",
"content": "{}",
"meta_data":{
"metadata_list":[
{
"type":"webpage",
"title":"2024年1-2月份山西省进出口情况分析 - 昆明海关",
"url":"http://kunming.customs.gov.cn/taiyuan_customs/zfxxgk50/3023433/3023453/4676174/5755479/index.html","text":"比去年同期下同增长26.8%。全省活跃企业数明显增加前2个月。占全省进出口总值的40.3%。国家",
"pub_date":""
},
]
}
}
mclick 搜索结果页面打开 失败. 每个URL失败返回一次该事件可能会出现部分失败.
{
"type": "system_error",
"content": ""
"meta_data":{
"failedURL": "https://xxx.xx"
}
}
外部API调用
请求API的参数内容
{
"type": "tool_calls",
"tool_calls": {
"name": "generate",
"arguments": "```python\ntool_call(Content-Type='application/json', title='Hello World', type='post', platform='wordpress')\n```",
"host": "ppt-test-v101.wxbjq.top"
}
}
请求API的返回内容
{
"type": "function_result",
"content": "{\"status\":0,\"message\":\"success\",\"result\":{\"count\":818},\"rid\":\"2030521d-b4ea-4c38-854f-f3f189a3ebb3\"}"
}
知识库检索(需在智能体配置中打开“显示相关的知识库段落”)
检索开始
{
"type": "rag_slices",
"content": []
}
检索结果
{
"type": "rag_slices",
"content": [
{"text": "知识库内容abcd", "document_name": "1.pdf"}
]
}
异常说明:
异常情况
http码
status码
api_key被禁用
403
10004
api_key已删除
400
10003
FileList中文件不存在
400
10005
当日会话调用次数超限
403
10008
实时并发数超限
403
10007
智能体被删除
403
10010
无权限调用智能体
403
10018
流式异常说明:
异常情况
error_code码
安全风控拦截
10031
生成中断(网络原因)
10024
生成错误(模型原因)
10027
生成异常(系统原因)
10025
生成图片失败
10028
3. Assistant 会话调用(非流式输出)
请求路径和方式POST /stream_sync
输入:
字段
类型
必填
说明
assistant_id
string
Y
智能体 ID浏览器打开智能体对话页后可通过地址栏查看。下图红框中即为ID。
[Image]
conversation_id
string
N
会话 ID不传默认创建新会话。需要继续之前的会话时传入流式输出Result中的conversation_id值。对话轮数和上下文长度无限制需要注意上下文过大会导致响应耗时增加。
prompt
string
Y
prompt文本
file_list
List<Dict>
N
文件列表传入文件上传接口返回的file_id。 [{"file_id":"xxx"}]
meta_data
Dict
N
元信息,拓展字段
输出:
HTTP response JSON输出
https://zhipu-ai.feishu.cn/sync/Bz6sdk1QbsIbnjbX3nBcLOSMn8b
输出Result结构
字段
类型
必填
说明
history_id
string
Y
历史记录ID
conversation_id
string
Y
对话上下文ID
output
List<Part>
Y
输出消息体列表每个Part对应流式中的一个Message
status
string
Y
init->初始态, processing->生成中 finish->生成结束,error->生成异常。
其中 finish和error为最终态init和processing为中间态。网络正常的情况下Result状态会从init到processing再到finish或error。
出现输入风控拦截时状态从init直接进入error。
输出Part结构
字段
类型
必填
说明
role
string
Y
assistant为模型输出tool为工具输出
content
Content
Y
输出内容参考下方Content结构。
status
string
Y
init/processing/finish/error状态流转逻辑与外层Result相同。
created_at
string
Y
时间戳。格式参考“2023-11-23 18:00:00”
meta_data
dict
N
{}
输出Content结构
根据不同的Tool调用情况返回的content结构不同参考如下
Tool使用情况
返回结构
无工具,文本输出
{
"type": "text",
"text": "你好"
}
CogView画图
{
"type":"image",
"image":[
{"image_url":"https://sfile.chatglm.cn/..."}
]
}
Python代码执行
代码执行-开始
{
"type": "code",
"code": "# Calculating the square of 10\n10 ** 2"
}
代码执行-成功,结果返回
{
"type": "execution_output",
"content": "100"
}
代码执行-失败
{
"type": "system_error",
"content": "sandbox error code: 504"
}
OPEN-URL链接打开
OPEN-URL开始
{
"type":"tool_calls",
"tool_calls":{
"name":"browser",
"arguments":"open_url(\"https://www.chatglm.com/\")"}
}
}
OPEN-URL结束-成功
{
"type": "browser_result",
"content": "{\"title\": \" Split string with multiple delimiters in Python - Stack Overflow\", \"url\": \" https://stackoverflow.com/questions/4998629/split-string-with-multiple-delimiters-in-python\"}",
}
OPEN-URL结束-失败
{
"type":"system_error",
"content":"Error when executing command "}],
"meta_data":{
"failedCommand":"open_url(\"https://www.chatglm.com/\")"
}
}
}
Search联网搜索
Search 开始
{
"type":"tool_calls",
"tool_calls":{
"name":"search",
"arguments":"search(\"河南河北山西霰雪预警 2024\", recency_days=30)"}
}
}
Search 结束-成功
{
"type": "browser_result",
"content": "{}",
"meta_data":{
{
"metadata_list":[
{
"type":"webpage",
"title":"2024年1-2月份山西省进出口情况分析 - 昆明海关",
"url":"http://kunming.customs.gov.cn/taiyuan_customs/zfxxgk50/3023433/3023453/4676174/5755479/index.html","text":"比去年同期下同增长26.8%。全省活跃企业数明显增加前2个月。占全省进出口总值的40.3%。国家",
"pub_date":""
},
]
}
}
}
Search 结束-失败
{
"type":"system_error",
"content":"Error when executing command "}],
"meta_data":{
"failedCommand":"search(\"河南河北山西霰雪预警 2024\", recency_days=30)"
}
}
}
mclick 搜索结果页面打开 开始. mclick中参数为打开链接序号列表关联搜索结果
{
"type": "tool_calls",
"tool_calls": {
"name": "browser",
"arguments": "mclick([0, 1, 3])"
},
"meta_data":{
"metadata_list":[
{
"type":"webpage",
"title":"2024年1-2月份山西省进出口情况分析 - 昆明海关",
"url":"http://kunming.customs.gov.cn/taiyuan_customs/zfxxgk50/3023433/3023453/4676174/5755479/index.html","text":"比去年同期下同增长26.8%。全省活跃企业数明显增加前2个月。占全省进出口总值的40.3%。国家",
"pub_date":""
},
]
}
}
mclick 搜索结果页面打开 成功. 所有链接均完成后返回quote_result.
{
"type": "quote_result",
"content": "{}",
"meta_data":{
"metadata_list":[
{
"type":"webpage",
"title":"2024年1-2月份山西省进出口情况分析 - 昆明海关",
"url":"http://kunming.customs.gov.cn/taiyuan_customs/zfxxgk50/3023433/3023453/4676174/5755479/index.html","text":"比去年同期下同增长26.8%。全省活跃企业数明显增加前2个月。占全省进出口总值的40.3%。国家",
"pub_date":""
},
]
}
}
mclick 搜索结果页面打开 失败. 每个URL失败返回一次该事件可能会出现部分失败.
{
"type": "system_error",
"content": ""
"meta_data":{
"failedURL": "https://xxx.xx"
}
}
外部API调用
请求API的参数内容
{
"type": "tool_calls",
"tool_calls": {
"name": "generate",
"arguments": "```python\ntool_call(Content-Type='application/json', title='Hello World', type='post', platform='wordpress')\n```",
"host": "ppt-test-v101.wxbjq.top"
}
}
请求API的返回内容
{
"type": "function_result",
"content": "{\"status\":0,\"message\":\"success\",\"result\":{\"count\":818},\"rid\":\"2030521d-b4ea-4c38-854f-f3f189a3ebb3\"}"
}
知识库检索(需在智能体配置中打开“显示相关的知识库段落”)
检索开始
{
"type": "rag_slices",
"content": []
}
检索结果
{
"type": "rag_slices",
"content": [
{"text": "知识库内容abcd", "document_name": "1.pdf"}
]
}
异常说明:
异常情况
http码
status码
api_key被禁用
403
10004
api_key已删除
400
10003
FileList中文件不存在
400
10005
当日会话调用次数超限
403
10008
实时并发数超限
403
10007
智能体被删除
403
10010
无权限调用智能体
403
10018
4. Assistant 对话文件上传
上传文件输入为文件流输出file_id用于会话调用时使用。文件大小限制为100MB。目前支持的业务场景与文件类型对应参考下表
业务场景
文件类型
图片解析
'jpg', 'png', 'jpeg', 'webp', 'gif'
文档解读
'pdf', 'docx', 'doc', 'txt', 'pptx', 'md', 'epub', 'epub.zip'
代码执行Code Interpreter
上传其他所有类型文件,或在图片与文档文件混合使用时。
请求路径和方式POST form-data /file_upload
输入:
字段
类型
必填
说明
file
file
Y
文件流。仅支持上传单一文件。
输出:
字段
类型
必填
说明
file_id
string
Y
文件ID
file_name
String
Y
文件名
异常说明:
异常情况
http码
status码
api_key被禁用
403
10004
api_key已删除
400
10003
实时并发数超限
403
10006
文件上传失败
500
11003
文档解析失败
500
11004
文档字数超限上限12万Token
400
11005
文件大小超限
400
11006
文件处理失败
500
11009