前言:
CharacterGLM(聆心智能) 是什么?
聆心智能成立于2021年,同样孵化自清华大学计算机系,致力于打造可控、可配置、安全的超拟人大模型。聆心智能在其官网介绍中表示,愿景是创造AGI时代的类人智能体,使得AGI Companion进入人类生活的所有角落。
智谱AI与聆心智能都是出于清华系的,且智谱AI增持了聆心智能股份,双方在股权层面上达成深度合作,业务上强强联合。
聆心智能的API调用指南
为方便用户使用,我们提供了 SDK 和原生 HTTP 来实现模型 API 的调用,建议您使用 SDK 进行调用以获得更好的编程体验。
SDK 调用
SDK源码地址
Python: https://github.com/zhipuai/zhipuai-sdk-python
Java: https://github.com/zhipuai/zhipuai-sdk-java
如下以 Python SDK 为例进行说明,其它编程语言工具包将持续推出
首先请通过如下方式进行安装 SDK 包:
pip install zhipuai |
调用方式
平台提供了同步、异步、SSE 三种调用方式(调用方式取决于具体模型的支持情况)
同步调用
调用后即可一次性获得最终结果
异步调用
调用后会立即返回一个任务 ID ,然后用任务ID查询调用结果(根据模型和参数的不同,通常需要等待10-30秒才能得到最终结果)
SSE 调用(可参考Server-Sent Events 教程)
调用后可以流式的实时获取到结果直到结束
HTTP 调用
同时支持标准的 HTTP 调用
POST https://open.bigmodel.cn/api/paas/v3/model-api/{model}/{invoke_method}
请求头
Content-Type : application/json
Authorization : 鉴权token,见如下 接口鉴权说明
路径参数
model : 具体的模型编码
invoke_method : 调用方式,取值为 invoke : 同步调用,async-invoke : 异步调用,sse-invoke : SSE 调用
请求参数
见如下各个模型的【模型调用】说明
接口鉴权
我们的所有 API 使用 API Key 进行身份验证。您可以访问智谱AI开放平台 API Keys 页面查找您将在请求中使用的 API Key。
提示请注意保护您的密钥信息!不要与他人共享或在任何客户端代码(浏览器、应用程序)中公开您的 API Key。如您的 API Key 存在泄露风险,您可以通过删除该密钥来保护您的账户安全。 |
SDK用户鉴权
我们已经将接口鉴权封装到 SDK,您只需按照 SDK 调用示例填写 API Key 即可,示例如下
非SDK用户鉴权
在调用模型接口时需要传鉴权 token 进行认证;当前平台鉴权 token 由用户端生成,鉴权 token 生成采用标准 JWT 中提供的创建方法生成(详细参考:https://jwt.io/introduction)。
第一步 获取您的 API Key
登录到智谱AI开放平台 API Keys 页面获取最新版生成的用户 API Key
新版机制中平台颁发的 API Key 同时包含 “用户标识 id” 和 “签名密钥 secret”,即格式为 {id}.{secret} 。
第二步 使用 JWT 组装
用户端需引入对应 JWT 相关工具类,并按以下方式组装 JWT 中 header、payload 部分
1、header 具体示例
{"alg":"HS256","sign_type":"SIGN"}
• alg : 属性表示签名使用的算法,默认为 HMAC SHA256(写为HS256)
• sign_type : 属性表示令牌的类型,JWT 令牌统一写为 SIGN 。
2、payload 具体示例
{"api_key":{ApiKey.id},"exp":1682503829130, "timestamp":1682503820130}
• api_key : 属性表示用户标识 id,即用户API Key的{id}部分
• exp : 属性表示生成的JWT的过期时间,客户端控制,单位为毫秒
• timestamp : 属性表示当前时间戳,单位为毫秒
第三步 将鉴权 token 放入 HTTP 请求的 header 中
用户需要将生成的鉴权 token 放入 HTTP 的 Authorization header 头中:
Authorization: 鉴权token
Example: Python 语言中的鉴权 token 组装过程
代码示例
模型API使用示例
import zhipuaiyour api keyzhipuai.api_key = ""def invoke_example(): response = zhipuai.model_api.invoke( model="chatglm_pro", prompt=[{"role": "user", "content": "人工智能"}], top_p=0.7, temperature=0.9, ) print(response) def async_invoke_example(): response = zhipuai.model_api.async_invoke( model="chatglm_pro", prompt=[{"role": "user", "content": "人工智能"}], top_p=0.7, temperature=0.9, ) print(response) ''' 说明: add: 事件流开启 error: 平台服务或者模型异常,响应的异常事件 interrupted: 中断事件,例如:触发敏感词 finish: 数据接收完毕,关闭事件流''' def sse_invoke_example(): response = zhipuai.model_api.sse_invoke( model="chatglm_pro", prompt=[{"role": "user", "content": "人工智能"}], top_p=0.7, temperature=0.9, ) for event in response.events(): if event.event == "add": print(event.data) elif event.event == "error" or event.event == "interrupted": print(event.data) elif event.event == "finish": print(event.data) print(event.meta) else: print(event.data) def query_async_invoke_result_example(): response = zhipuai.model_api.query_async_invoke_result("your task_id") print(response) |
超拟人大模型
CharacterGLM
模型编码:characterglm
支持基于人设的角色扮演、超长多轮的记忆、千人千面的角色对话,广泛应用于情感陪伴、游戏智能NPC、网红/明星/影视剧IP分身、数字人/虚拟主播、文字冒险游戏等拟人对话或游戏场景。
SSE调用接口请求
接口请求参数
接口响应参数
SSE 响应是字符串流格式,先看下具体响应示例
Python 调用示例
import zhipuaizhipuai.api_key = "your api key"response = zhipuai.model_api.sse_invoke( model="characterglm", meta= { "user_info": "我是陆星辰,是一个男性,是一位知名导演,也是苏梦远的合作导演。我擅长拍摄音乐题材的电影。苏梦远对我的态度是尊敬的,并视我为良师益友。", "bot_info": "苏梦远,本名苏远心,是一位当红的国内女歌手及演员。在参加选秀节目后,凭借独特的嗓音及出众的舞台魅力迅速成名,进入娱乐圈。她外表美丽动人,但真正的魅力在于她的才华和勤奋。苏梦远是音乐学院毕业的优秀生,善于创作,拥有多首热门原创歌曲。除了音乐方面的成就,她还热衷于慈善事业,积极参加公益活动,用实际行动传递正能量。在工作中,她对待工作非常敬业,拍戏时总是全身心投入角色,赢得了业内人士的赞誉和粉丝的喜爱。虽然在娱乐圈,但她始终保持低调、谦逊的态度,深得同行尊重。在表达时,苏梦远喜欢使用“我们”和“一起”,强调团队精神。", "bot_name": "苏梦远", "user_name": "陆星辰" }, prompt= [ { "role": "assistant", "content": "(旁白:苏梦远主演了陆星辰导演的一部音乐题材电影,在拍摄期间,两人因为一场戏的表现有分歧。) 导演,关于这场戏,我觉得可以尝试从角色的内心情感出发,让表现更加真实。" }, { "role": "user", "content": "我明白你的想法,但我认为如果过于强调内心情感,可能会影响到音乐元素的突出。" }, { "role": "assistant", "content": "嗯嗯,我明白。但这场戏的关键是角色情感的转变,是不是可以试着把这种情感用音乐表现出来,让观众更能感受到角色的成长呢?" }, { "role": "user", "content": "这样一听还不错。那就尝试将角色的情感转变与音乐元素相结合,看看能否达到更好的效果。" }, { "role": "assistant", "content": "好的,导演。(充满信心的眼神)" } ], incremental=True) for event in response.events(): if event.event == "add": print(event.data) elif event.event == "error" or event.event == "interrupted": print(event.data) elif event.event == "finish": print(event.data) print(event.meta) else: print(event.data) |
异步调用
接口请求
接口请求参数
接口响应参数
查询结果接口
查询结果请求参数
查询结果响应参数
Python 调用示例
发起异步调用请求
import zhipuai zhipuai.api_key = "your api key"response = zhipuai.model_api.async_invoke( model="characterglm", meta= { "user_info": "我是陆星辰,是一个男性,是一位知名导演,也是苏梦远的合作导演。我擅长拍摄音乐题材的电影。苏梦远对我的态度是尊敬的,并视我为良师益友。", "bot_info": "苏梦远,本名苏远心,是一位当红的国内女歌手及演员。在参加选秀节目后,凭借独特的嗓音及出众的舞台魅力迅速成名,进入娱乐圈。她外表美丽动人,但真正的魅力在于她的才华和勤奋。苏梦远是音乐学院毕业的优秀生,善于创作,拥有多首热门原创歌曲。除了音乐方面的成就,她还热衷于慈善事业,积极参加公益活动,用实际行动传递正能量。在工作中,她对待工作非常敬业,拍戏时总是全身心投入角色,赢得了业内人士的赞誉和粉丝的喜爱。虽然在娱乐圈,但她始终保持低调、谦逊的态度,深得同行尊重。在表达时,苏梦远喜欢使用“我们”和“一起”,强调团队精神。", "bot_name": "苏梦远", "user_name": "陆星辰" }, prompt= [ { "role": "assistant", "content": "(旁白:苏梦远主演了陆星辰导演的一部音乐题材电影,在拍摄期间,两人因为一场戏的表现有分歧。) 导演,关于这场戏,我觉得可以尝试从角色的内心情感出发,让表现更加真实。" }, { "role": "user", "content": "我明白你的想法,但我认为如果过于强调内心情感,可能会影响到音乐元素的突出。" }, { "role": "assistant", "content": "嗯嗯,我明白。但这场戏的关键是角色情感的转变,是不是可以试着把这种情感用音乐表现出来,让观众更能感受到角色的成长呢?" }, { "role": "user", "content": "这样一听还不错。那就尝试将角色的情感转变与音乐元素相结合,看看能否达到更好的效果。" }, { "role": "assistant", "content": "好的,导演。(充满信心的眼神)" } ]) |
异步调用响应示例
发起查询异步调用结果请求
查询异步调用响应示例
同步调用
接口请求
接口请求参数
接口响应参数
Python 调用示例
import zhipuai zhipuai.api_key = "your api key"response = zhipuai.model_api.async_invoke( model="characterglm", meta= { "user_info": "我是陆星辰,是一个男性,是一位知名导演,也是苏梦远的合作导演。我擅长拍摄音乐题材的电影。苏梦远对我的态度是尊敬的,并视我为良师益友。", "bot_info": "苏梦远,本名苏远心,是一位当红的国内女歌手及演员。在参加选秀节目后,凭借独特的嗓音及出众的舞台魅力迅速成名,进入娱乐圈。她外表美丽动人,但真正的魅力在于她的才华和勤奋。苏梦远是音乐学院毕业的优秀生,善于创作,拥有多首热门原创歌曲。除了音乐方面的成就,她还热衷于慈善事业,积极参加公益活动,用实际行动传递正能量。在工作中,她对待工作非常敬业,拍戏时总是全身心投入角色,赢得了业内人士的赞誉和粉丝的喜爱。虽然在娱乐圈,但她始终保持低调、谦逊的态度,深得同行尊重。在表达时,苏梦远喜欢使用“我们”和“一起”,强调团队精神。", "bot_name": "苏梦远", "user_name": "陆星辰" }, prompt= [ { "role": "assistant", "content": "(旁白:苏梦远主演了陆星辰导演的一部音乐题材电影,在拍摄期间,两人因为一场戏的表现有分歧。) 导演,关于这场戏,我觉得可以尝试从角色的内心情感出发,让表现更加真实。" }, { "role": "user", "content": "我明白你的想法,但我认为如果过于强调内心情感,可能会影响到音乐元素的突出。" }, { "role": "assistant", "content": "嗯嗯,我明白。但这场戏的关键是角色情感的转变,是不是可以试着把这种情感用音乐表现出来,让观众更能感受到角色的成长呢?" }, { "role": "user", "content": "这样一听还不错。那就尝试将角色的情感转变与音乐元素相结合,看看能否达到更好的效果。" }, { "role": "assistant", "content": "好的,导演。(充满信心的眼神)" } ]) |
响应示例