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