UNPKG

nim-web-sdk-ng

Version:

Yunxin IM SDK next generation

438 lines (437 loc) 9.96 kB
import { V2NIMUser } from './V2NIMUserService'; import type { NIMEBaseServiceClass } from './types'; /** * AI 数字人服务 * * 注: 使用 dist/esm 产物时时,需要动态引入 V2NIMAIService 后使用 * * @example * ``` * import { NIM, V2NIMAIService } from 'nim-web-sdk-ng/dist/esm/nim' * NIM.registerService(V2NIMAIService, 'V2NIMAIService') * ``` */ export declare class V2NIMAIService extends NIMEBaseServiceClass<V2NIMAIListener> { /** * 数字人拉取接口 * * 注: 返回全量的本 Appkey 相关的数字人用户 * * @returns 数字人用户列表 * @example * ```js * const aiUsers = await nim.V2NIMAIService.getAIUserList() * ``` */ getAIUserList(): Promise<V2NIMAIUser[]>; /** * AI 数字人请求代理接口 * * @param params 接口入参 * @example * ``` * await nim.V2NIMAIService.proxyAIModelCall({ * "accountId": "YOUR_AI_ACCOUNT_ID", * "requestId": "YOUR_REQUEST_ID", * "content": { * "msg": "YOUR_CONTENT_MSG", * "type": 0 * } * }) * ``` */ proxyAIModelCall(params: V2NIMProxyAIModelCallParams): Promise<void>; /** * 停止AI数字人流式输出 * * @param params 停止流式输出的参数 * @returns Promise<void> * @example * ```js * await nim.V2NIMAIService.stopAIModelStreamCall({ * accountId: "YOUR_AI_ACCOUNT_ID", * clientId: "YOUR_CLIENT_ID", * type: 1, * from: "YOUR_ACCOUNT_ID", * to: "RECEIVER_ID", * opeType: 0 * }) * ``` */ stopAIModelStreamCall(params: V2NIMAIModelStreamCallStopParams): Promise<void>; } export interface V2NIMAIUser extends V2NIMUser { /** * 大模型的类型 */ modelType: V2NIMAIModelType; /** * 模型相关配置信息 */ modelConfig?: V2NIMAIModelConfig; } export declare type V2NIMAIModelConfig = { /** * 具体大模型版本模型名称 */ model: string; /** * 提示词 */ prompt: string; /** * 提示词相关的变量 */ promptKeys?: string[]; /** * 模型最大tokens数量 */ maxTokens?: number; /** * 核采样方法的概率阈值 */ topP?: string; /** * 随机性和多样性的程度值 */ temperature?: string; }; export declare const enum V2NIMAIModelType { /** * 未知 */ V2NIM_AI_MODEL_TYPE_UNKNOW = 0, /** * 通义千问大模型 */ V2NIM_AI_MODEL_TYPE_QWEN = 1, /** * 微软Azure */ V2NIM_AI_MODEL_TYPE_AZURE = 2, /** * 私有本地大模型 */ V2NIM_AI_MODEL_TYPE_PRIVATE = 3 } /** * RAG 信息 */ export declare type V2NIMAIRAGInfo = { /** * RAG 名称 */ name?: string; /** * RAG 图标 */ icon?: string; /** * 引用资源的标题 */ title?: string; /** * 引用资源的描述 */ description?: string; /** * 引用资源的链接 */ url?: string; /** * 引用资源的时间 */ time?: number; }; /** * AI 数字人请求代理接口的入参 */ export declare type V2NIMProxyAIModelCallParams = { /** * 机器人账号ID */ accountId: string; /** * 请求id * * 注: 需要用请求 id 将整个串联应答流程, 建议采用 uuid 算法避免重复 */ requestId: string; /** * 请求大模型的内容 */ content: V2NIMAIModelCallContent; /** * 请求调用上下文内容 */ messages?: V2NIMAIModelCallMessage[]; /** * 提示词变量占位符替换. JSON 序列化的字符串, 用于填充 prompt 中的变量 * * 注: 如果 V2NIMAIUser 中的 modelConfig.promptKeys 存在且数组长度不为 0 ,则必填. */ promptVariables?: string; /** * 请求接口模型相关参数配置, 如果参数不为空,则默认覆盖控制相关配置 */ modelConfigParams?: V2NIMAIModelConfigParams; /** * 反垃圾配置 */ antispamConfig?: V2NIMProxyAICallAntispamConfig; /** * 是否是流式响应,默认false */ aiStream: boolean; }; /** * 数字人流式消息状态 */ export declare const enum V2NIMAIModelStreamCallStatus { /** * 非流式状态 */ V2NIM_AI_MODEL_STREAM_CALL_STATUS_NONE = 0, /** * 停止输出 */ V2NIM_AI_MODEL_STREAM_CALL_STATUS_CANCEL = 2, /** * 输出完成 */ V2NIM_AI_MODEL_STREAM_CALL_STATUS_COMPLETE = 4, /** * 服务器异常终止 */ V2NIM_AI_MODEL_STREAM_CALL_STATUS_EXCEPTION = 5 } export declare type V2NIMProxyAICallAntispamConfig = { /** * 指定消息是否需要经过安全通。默认为 true * * 对于已开通安全通的用户有效,默认消息都会走安全通,如果对单条消息设置 enable 为 false,则此消息不会走安全通 */ antispamEnabled?: boolean; /** * 指定易盾业务id */ antispamBusinessId?: string; }; /** * AI 大模型配置 */ export declare type V2NIMAIModelConfigParams = { /** * 提示词 */ prompt?: string; /** * 模型最大tokens数量 */ maxTokens?: number; /** * 核采样方法的概率阈值 */ topP?: string; /** * 随机性和多样性的程度值 */ temperature?: string; }; export interface V2NIMAIModelCallMessage { /** * 上下文内容的角色. * * 注: 请开发者自行判定自己发的消息选 user, 若是机器人发的消息是选 assistant */ role: V2NIMAIModelRoleType; /** * 请求/响应的文本内容 */ msg: string; /** * 类型, 暂时只有 0, 代表文本 */ type: number; } export declare const enum V2NIMAIModelRoleType { /** * 系统 */ V2NIM_AI_MODEL_ROLE_TYPE_SYSTEM = "system", /** * 用户 */ V2NIM_AI_MODEL_ROLE_TYPE_USER = "user", /** * 助手 */ V2NIM_AI_MODEL_ROLE_TYPE_ASSISTANT = "assistant" } export interface V2NIMAIModelCallContent { /** * 请求/响应的文本内容 */ msg: string; /** * 类型, 暂时只有 0, 代表文本 */ type: number; } /** * AI 透传接口的响应的回调的结构体 */ export interface V2NIMAIModelCallResult { /** * 本次响应的状态, 200 为成功, 其他的都是失败 */ code: number; /** * 机器人账号 ID */ accountId: string; /** * 请求 ID */ requestId: string; /** * 响应的内容 */ content: V2NIMAIModelCallContent; /** * 数字人回复内容的引用资源列表 */ aiRAGs?: V2NIMAIRAGInfo[]; /** * 回复的时间戳 */ timestamp: number; /** * 是否是流式响应,默认false */ aiStream: boolean; /** * 数字人流式响应状态 */ aiStreamStatus: V2NIMAIModelStreamCallStatus; } /** * 透传协议流式分片信息 */ export interface V2NIMAIModelStreamCallChunk { /** * 数字人流式回复分片文本 */ content: string; /** * 数字人流式回复当前分片时间 */ chunkTime: number; /** * 类型,当前仅支持0表示文本 */ type: number; /** * 分片序号,从0开始 */ index: number; } /** * 流式回复内容 */ export interface V2NIMAIModelStreamCallContent { /** * 数字人流式回复分片组装好后的文本 */ msg: string; /** * 类型,当前仅支持0表示文本 */ type: number; /** * 数字人流式回复最近一个分片 */ lastChunk: V2NIMAIModelStreamCallChunk; } /** * 透传接口的 AI 流式回复的结构体 */ export interface V2NIMAIModelStreamCallResult { /** * AI 响应的状态码 */ code: number; /** * 数字人的 accountId */ accountId: string; /** * 本次响应的标识 */ requestId: string; /** * 请求 AI 的回复 */ content?: V2NIMAIModelStreamCallContent; /** * 数字人回复内容的引用资源列表 * 第一个分片才下发,端上是否内存缓存,每次都上抛? */ aiRAGs?: V2NIMAIRAGInfo[]; /** * 分片的时间戳 */ timestamp: number; } /** * 停止透传接口的 AI 流式回复 */ export interface V2NIMAIModelStreamCallStopParams { /** * 机器人账号ID */ accountId: string; /** * 请求id */ requestId: string; } /** * AI 数字人服务的监听事件 * * 注: 使用 dist/esm 产物时时,需要动态引入 V2NIMAIService 后使用 * * @example * ``` * import { NIM, V2NIMAIService } from 'nim-web-sdk-ng/dist/esm/nim' * NIM.registerService(V2NIMAIService, 'V2NIMAIService') * ``` */ export interface V2NIMAIListener { /** * AI 透传接口的响应的回调 * * 注: 接口 proxyAIModelCall 调用完毕后, 接下来服务器响应以通知的形式下发, 端测需要触发回调提供 * * @param response 本次响应的结构体 * * @example * ``` * nim.V2NIMAIService.on('onProxyAIModelCall', (response) => {}) * ``` */ onProxyAIModelCall: [response: V2NIMAIModelCallResult]; /** * AI 透传接口的流式回复的回调 * * 注: 接口 proxyAIModelStreamCall 调用完毕后, 接下来服务器响应以通知的形式下发, 端测需要触发回调提供 * * @param response 本次响应的结构体 * * @example * ``` * nim.V2NIMAIService.on('onProxyAIModelStreamCall', (response) => {}) * ``` * */ onProxyAIModelStreamCall: [response: V2NIMAIModelStreamCallResult]; }