# web.rest.aiChat.settingForm 库模块帮助文档

<details>  <summary>说明</summary>  <p>

### web.rest.aiChat.settingForm 对象属性

web.rest.aiChat.settingForm 继承自 win.form ，并扩展了以下属性与事件：

- userAgent 属性

	用于指定 AI 请求模型列表时 HTTP 客户端使用的 User-Agent 请求头。

### web.rest.aiChat.settingForm 对象事件

1. onSelChange 事件

	~~~aardio
	onSelChange = function(selIndex,configItem){

	}
	~~~

	在配置界面切换助手时触发。

	- 参数 selIndex 为当前选项索引。
	- 参数 configItem 为当前配置项。

2. onSelChange 事件

	~~~aardio
	onHyperlink = function(apiUrl,apiKey){

	}
	~~~

	点击超链接时触发。

	- 参数 apiUrl 为当前接口 URL。
	- 参数 apiKey 为当前接口 API key 。

	如果 onHyperlink 返回 true 则默认打开选中 API 地址的对应厂商主页。

	可通过配置窗体的 hyperlink1 属性访问超链接控件。  
	hyperlink1 默认为隐藏状态，可通过 hyperlink1 控件的 hide , disabled 属性控制其显示状态。
	可在 onSelChange 事件中动态设置 hyperlink1 控件是否显示。
	hyperlink1 的 text 属性默认为空值，可根据需要修改。

### 配置项右键菜单

在配置列表框中右键点击配置名，弹出的右键菜单包含以下菜单项：

- 智能粘贴
- 复制分享链接
- 粘贴分享链接
- 复制到 JSON
- 粘贴自 JSON

这里的`分享链接`指的是 `ai+` 格式链接。
复制的 JSON 可以直接粘贴为 web.rest.aiChat 的构造参数（除了双引号内的字符串字面值编译时不处理转义，aardio 兼容 JSON 语法）。

智能粘贴则除了支持 `ai+` 与 JSON 格式以外 ，
还能识别各种常用配置格式与不同的 API key 特征，
并且会自动识别复制来源网址并自动生成 API 接口网址。
细节请查看源码。

另外点击配置列表顶部的 &#xF067; 增加新配置项，
输入配置名并回车确认后如果复制内容来源于网页则会自动执行`智能粘贴`操作。
粘贴 API key 时如果尚未输入接口网址也会自动调用“智能粘贴”输入。

### 配置项

web.rest.aiChat.settingForm 使用的配置表为 fsys.table 对象（或 fsys.config 的成员表）。

配置表读写以下字段

- selItem: 当前配置索引
- itemNames: 所有 AI 接口配置的名称数组
- itemData: 所有 AI 接口配置的数组，数组元素是表对象。

	每个接口配置包含的字段与 web.rest.aiChat 需要的参数相同：

	* url: 接口地址
	* key: API key
	* model: 模型 ID
	* temperature: 温度
	* systemPrompt: 可选的系统提示词
	* msgLimit: 最大对话轮数
	* proxy: 代理服务器地址
	* protocol: 可选的接口协议
	* reasoning: 可选的推理参数（包含推是强度的表对象）
	* extraParameters: 可选的自定义参数，表对象（界面上显示为 JSON ）
	* f1: 自定义选项 flags1

- katex: 启用数学公式
- playSound: 允许提示音效（可用 sys.midiOut.play 函数播放指定音效）

</p></details>

[ai+ URL 协议规范（配置列表右键复制粘贴分享链接）](https://www.aardio.com/zh-cn/docs/specs/ai-plus-url-scheme.md)

## web.rest.aiChat.settingForm 成员列表 <a id="web.rest.aiChat.settingForm" href="#web.rest.aiChat.settingForm">&#x23;</a>

用于创建设置 AI 接口配置的窗口。  
此窗口用到了 FontAwesome 图标 `\uF067`，`\uF044`，`\uF1F8`，  
调用者必须提前导入 fonts.fontAwesome 或精简的 fontAwesome 字体库。

### web.rest.aiChat.settingForm.getWebSite(apiUrl) <a id="web.rest.aiChat.settingForm.getWebSite" href="#web.rest.aiChat.settingForm.getWebSite">&#x23;</a>
返回接口官网 URL

## web.rest.aiChat 成员列表 <a id="web.rest.aiChat" href="#web.rest.aiChat">&#x23;</a>

### web.rest.aiChat.settingForm(parentForm,configFile) <a id="web.rest.aiChat.settingForm" href="#web.rest.aiChat.settingForm">&#x23;</a>
窗口类。  
- 参数 @parentForm 可指定父窗体对象，也可指定空值（null ）。  
- 参数 @configFile 必须指定配置文件对象（fsys.table 对象或 fsys.config 对象的成员）。  

参数 @configFile 可选预先指定以下字段：  
- title: 自定义窗口标题  
- f1Title: 自定义复选框 1 的标题，自动绑定配置值 configFile.f1（flag1 的缩写）。  
如果不指定 f1Title 则不显示 自定义复选框 1 。  
- f1MultiSelect: 如果为 true 则允许多个助手启用 f1，否则为单选切换模式，默认为 false。  
- allowKatex: 是否允许启用数学公式（Win10 以下总是禁用）。  
- hyperlink1Title: 指定超链接标题，指定则默认显示 hyperlink1 控件。  
- itemNames：字符串数组，指定 AI 助手名称列表。  
- itemData：AI 接口配置数组，必须与 itemNames 的元素一一对应。  
- urls: 字符串数组，接口 URL 显示的默认接口 URL 列表。  

[返回对象:winform](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/_.html#winform)
