aardio 文档

web.form.chat 库模块帮助文档

web.form 成员列表 #

web.form.chat #

用于显示 Markdown 生成的 HTML 的 AI 助手专用 web 窗体。
此对象继承自 web.form.simpleMarkdown 与 web.form 对象。
支持 Markdown 自动渲染与就地增量更新,
例如 SSE 流式接收的增量 Markdown 可以就地快速插入当前页面。

使用标准库 string.markdown 提供的 Markdown 解析器,
可支持 NCR 编码的 Font Awesome 字符。

创建用于显示 Markdown 生成的 HTML 的 AI 助手专用 web 窗体。
此对象继承自 web.form.simpleMarkdown 与 web.form 对象。

web.form.chat() #

返回对象:webFormChatObject

web.form.chat(winform,hostFlags,dlControl,userAgent,securityTrusted) #

创建 Web 窗体。

参数 @winform 可指定窗体或 custom 控件作为网页宿主窗口。
@winform 也可以指定 null 值或 win.form 构造参数表以创建新窗体。

其他参数不必指定,这些参数的用法请参考 web.form 。

webFormChatObject 成员列表 #

webFormChatObject.aardioSystem #

自动创建 aardio 编程助手系统提示词。
除函数自带的基本的 aardio 助手提示词以外,EXE 目录下必须存在待添加的文档。

@cacheControl 为可选参数,仅 anthropic 协议与个别其他接口可支持此参数。
可指定为 true 时自动转换为 { "type": "ephemeral" }
请参考 anthropic 文档谨慎指定此参数。

webFormChatObject.aardioSystem(prompt,cacheControl) #

增加 aardio 编程助手提示词(如果已添加则忽略)。
如果指定参数 prompt 则追加到系统提示词(不检测之前是否已添加过)

webFormChatObject.assistant(content,silent) #

显示并记录 AI 接口返回的增量文本。
参数 @content 必须是文本(或流式输出的增量文本)或者表示输出完成的 null 值。
可选参数 @silent 如果为 true 则当前不在界面上输出(重新载入会话时忽略此设置)

webFormChatObject.assistantOnce(完整文本) #

在界面上直接输出并记录一条完整的 AI 助手回复。
此方法不会使用打字机流式渐进显示,而是一次性完整渲染。

webFormChatObject.beforerWriteEnd #

webFormChatObject.beforerWriteEnd = function(markdown){
    /*在输出完整回复以前,可在此回调中修改返回输出的全部 Markdown。  
错误输出不会触发此函数。*/
}

webFormChatObject.chatMessages #

消息队列,用于发送到 chat/completions 聊天接口。

返回对象:webRestChatMessagesObject

webFormChatObject.clear() #

清除会话记录

webFormChatObject.clearErrorMessage() #

清除页面上输出的错误信息

webFormChatObject.close() #

立即关闭窗口

webFormChatObject.close(true) #

异步关闭窗口

webFormChatObject.context(context,source) #

以插入问答对的方式添加上下文资料(文档、知识库、联网查询结果)。
可避免影响系统提示词缓存命中率或干扰对话结构。
必须用参数 @context 指定要添加的资料(字符串)。
可选用参数 @source 指定资料来源或网址。

webFormChatObject.doModal(ownerForm,showFlags) #

宿主窗口显示为模态对话框。
可选用参数 @ownerForm 指定所有者窗口,
参数 @showFlags 可选用 SW 前缀常量指定显示选项。

webFormChatObject.enableKatex(true) #

允许解析数学公式,参数为 false 则禁用此功能(默认)。
低于 Windows 10 系统忽略此设置。

webFormChatObject.errorMessage(错误信息) #

显示错误信息。
参数 @1 可指定字符串、table 对象或 null 值,其他类型转换为字符串显示。
参数 @1 指定 null 值忽略不执行任何操作。
如果会话未开始可将参数 @2 设为 true 以覆盖页面的其他内容。

webFormChatObject.findSystem(模式串) #

使用模式匹配语法查找消息队列中是否存在指定的系统提示词

webFormChatObject.getMarkdown() #

返回输出到页面的所有 Markdown 格式内容。

webFormChatObject.lastAssistantMessage() #

获取 AI 最后一次返回的消息。
如果最后一个消息不是 assistant 消息则返回 null。
无参数返回包含 content 字段的表对象。
参数 @1 为 true 返回 content 字段(通常是 Markdown 格式字符串)

webFormChatObject.prompt #

添加用户提示词,成功返回 true 。

webFormChatObject.prompt(content) #

添加用户提示词。
content 可以是字符串,也可以是对象数组。
content 为空字符串或 null 直接返回 null 。
请参考调用模型与接口的文档了解支持的对象格式。

webFormChatObject.prompt(txtContent,bitmap) #

添加并显示用户 @txtContent 参数指定的文本提示词。
可选使用参数 @bitmap 指定 gdip.bitmap 或 gdip.image 对象

webFormChatObject.prompt(txtContent,imageBufferOrPath) #

添加并显示用户 @txtContent 参数指定的文本提示词。
可选用 @imageBufferOrPath 指定图像数据(必须是 buffer 对象),
支持 JPG,PNG,GIF,WEBP 格式图像。

注意请参考接口文档以了解调用模型是否支持图像识别。

如果 @imageBufferOrPath 使用字符串指定文件路径则调用 string.loadBuffer 读取为 buffer。

webFormChatObject.prompt(txtContent,imageUrl,silent) #

添加并显示用户 @txtContent 参数指定的文本提示词。
可选用 @imageUrl 指定图像网址,
本地图像可调用 inet.urlData 转换为 Data URL(Base64) 格式。
注意请参考接口文档了解调用模型是否支持图像识别。
可选参数 @3 如果为 true 则界面不输出(导入会话时会显示),
显式指定为 true 则不显示 AI 思考状态。

webFormChatObject.promptOnce(content) #

添加用户提示词,不显示 AI 思考状态。

webFormChatObject.setMarkdown(markdown,scrollToEnd) #

输出参数 @1 指定的 Markdown 格式内容到页面,
覆盖控件存储的 Markdown。

可选用参数 @scrollToEnd 指定是否滚动到最后(默认为 true)

webFormChatObject.show(false) #

隐藏窗口

webFormChatObject.show(true) #

显示窗口

webFormChatObject.showLoading(title) #

显示加载动画,可选用 title 指定标题。
如果会话未开始可将参数 @2 设为 true 以覆盖页面的其他内容。

webFormChatObject.showThinking(reasoning) #

显示推理过程,reasoning 参数指定 AI 返回的推理响应文本。

webFormChatObject.started() #

是否已经发起对话。
发起对话指的是消息队列中包含非 system 角色的消息。

webFormChatObject.successMessage(成功信息) #

显示成功信息。
参数 @1 可指定字符串、table 对象或 null 值,其他类型转换为字符串显示。
参数 @1 指定 null 值忽略不执行任何操作。
如果会话未开始可将参数 @2 设为 true 以覆盖页面的其他内容。

webFormChatObject.system(prompt,cacheControl) #

添加系统提示词。
系统提示词总是会放在其他角色的消息之前。
系统提示词不应存放过于频繁变动的内容。
临时的动态的知识库应当改用 context 方法添加。
消息上限不计算系统提示词。

@cacheControl 为可选参数,仅 anthropic 协议与个别其他接口可支持此参数。
@cacheControl 指定为 true 自动转为 { "type": "ephemeral" }
请参考 anthropic 文档谨慎指定此参数。

webFormChatObject.url() #

获取参数 @1 指定网址的内容并转换为 Markdown 格式或者文本格式提示词。
参数 @1 也可以指定包含 url 字段的对象,或这样的对象数组。
参数为 包含 url 字段的对象时如果同时包含 text 字段,则直接自 text 字段获取网页文本。
如果参数 @1 指定数组参数,则将所有数组成员作为参数获取目标内容。
如果参数为空数组、空字符串、null 则返回 null。
成功返回添加的提示词,失败返回 null,错误信息 。

如果提前导入 web.turndown 库则支持自动转换 HTML 为 Markdown 格式文本。

webFormChatObject.write() #

清空页面内容,解析并显示参数 @1 指定的 Markdown 为网页。
控件仅解析与显示 Markdown,不会存储此 Markdown,
也不会改变 getMarkdown 函数的返回值。

webFormChatObject.writeDelta() #

向页面追加 Markdown 格式内容。
解析、显示、并存储写入的 Markdown。

AI 回复的消息应当调用 assistant 方法写入而不是调用 writeDelta 方法写入。
writeDelta 只会输出内容到页面,但不会添加到 chatMessages 属性保存的消息队列。

webFormChatObject 事件列表 #

webFormChatObject.onComplete() #

对话已完成,回调 onComplete 事件。

webFormChatObject.onComplete(success) #

webFormChatObject.onComplete = function(success){
    /*如果定义了此回调函数,则调用 errorMessage 会被自动调用(参数为 false)。  
建议在 AI 对话结束后主动调用此回调(参数为 true),  
并在此回调内添加对话完成后需要执行的代码。*/
}

webFormChatObject.onWriteEnd #

webFormChatObject.onWriteEnd = function(){
    /*AI 单次回复完成将回调此事件。  
部分支持交替思考的模型有可能在一轮对话中多次回调此事件,  
因此不能以来此事件判断会话是否完成。*/
}

Markdown 格式