# web.rest.aiChat.messages 库模块帮助文档

## web.rest.aiChat.messages 成员列表 <a id="web.rest.aiChat.messages" href="#web.rest.aiChat.messages">&#x23;</a>

### web.rest.aiChat.messages.mergeContext(prompt, context, source) <a id="web.rest.aiChat.messages.mergeContext" href="#web.rest.aiChat.messages.mergeContext">&#x23;</a>
合并上下文到参数 @prompt 指定的用户提示词。  
所有参数与返回值都是字符串。  
可选用参数 @source 指定资料来源或网址。  

返回格式为一个或多个 XML 标签 context + user_request 标签组合。  
每个 user_request 前面必须至少有一个 context，context 后面的 user_request 是可选的。  
所有非空白字符必须被包围在 context 与 user_request 之内。  
web.rest.aiChat.messages 对象的 context 方法自动调用此函数。  
参数 context 包含的 XML 标签  context 或 user_request 总是会被转义处理。

### web.rest.aiChat.messages.mergePrompt(prompt, request) <a id="web.rest.aiChat.messages.mergePrompt" href="#web.rest.aiChat.messages.mergePrompt">&#x23;</a>
如果两个都符合或不符合 mergeContext 函数返回的格式，  
则直接连接参数 @prompt 与 @request （以换行分隔）。  
如果仅其中一个符合 mergeContext 格式，另一个将会被转义并置入 user_request 标签  
web.rest.aiChat.messages 对象的 prompt 方法自动调用此函数。

## web.rest.aiChat 成员列表 <a id="web.rest.aiChat" href="#web.rest.aiChat">&#x23;</a>

### web.rest.aiChat.messages() <a id="web.rest.aiChat.messages" href="#web.rest.aiChat.messages">&#x23;</a>
创建 AI 聊天助手消息队列。  
可选用参数 @1 指定初始化消息数组。  
可以在界面线程单独创建与管理消息队列，  
然后再通过线程参数发给后台线程的 web.rest.aiChat 对象。  

[返回对象:webRestChatMessagesObject](#webRestChatMessagesObject)

## webRestChatMessagesObject 成员列表 <a id="webRestChatMessagesObject" href="#webRestChatMessagesObject">&#x23;</a>

### webRestChatMessagesObject.aardioSystem <a id="webRestChatMessagesObject.aardioSystem" href="#webRestChatMessagesObject.aardioSystem">&#x23;</a>
自动创建 aardio 编程助手系统提示词（仅限 IDE 内有效）。

### webRestChatMessagesObject.aardioSystem(prompt,cacheControl) <a id="webRestChatMessagesObject.aardioSystem" href="#webRestChatMessagesObject.aardioSystem">&#x23;</a>
增加 aardio 编程助手提示词（如果已添加则忽略）。  
如果指定参数 prompt 则追加到系统提示词（不检测之前是否已添加过）。  

@cacheControl 为可选参数，仅 anthropic 协议与个别其他接口可支持此参数。  
@cacheControl 指定为 `true` 自动转为 `{ "type": "ephemeral" }`，  
请参考 anthropic 文档谨慎指定此参数。

### webRestChatMessagesObject.aardioSystemPrompt <a id="webRestChatMessagesObject.aardioSystemPrompt" href="#webRestChatMessagesObject.aardioSystemPrompt">&#x23;</a>
是否自动附加了 aardio 编程助手系统提示词。  
不可手动修改此属性。

### webRestChatMessagesObject.assistant(增量文本) <a id="webRestChatMessagesObject.assistant" href="#webRestChatMessagesObject.assistant">&#x23;</a>
显示并记录 AI 接口返回的增量文本。  
参数必须是文本或者表示输出完成的 null 值。

### webRestChatMessagesObject.clear() <a id="webRestChatMessagesObject.clear" href="#webRestChatMessagesObject.clear">&#x23;</a>
清除会话记录。

### webRestChatMessagesObject.context(context,source) <a id="webRestChatMessagesObject.context" href="#webRestChatMessagesObject.context">&#x23;</a>
在最后一个用户消息前添加上下文资料（文档、知识库、联网查询结果）。  
连续添加的 context 会自动合并。  
之前或之后调用 prompt 添加的用户提示词与 context 会自动合并。  
必须用参数 @context 指定要添加的资料（字符串）。  
可选用参数 @source 指定资料来源或网址。

### webRestChatMessagesObject.findSystem(模式串) <a id="webRestChatMessagesObject.findSystem" href="#webRestChatMessagesObject.findSystem">&#x23;</a>
使用模式匹配语法查找消息队列中是否存在指定的系统提示词

### webRestChatMessagesObject.lastAssistantMessage() <a id="webRestChatMessagesObject.lastAssistantMessage" href="#webRestChatMessagesObject.lastAssistantMessage">&#x23;</a>
获取 AI 最后一次返回的消息，如果没有则返回 null。  
无参数返回包含 content 字段的表对象。  
参数 @1 为  true 返回 content 字段（通常是 Markdown 格式字符串）

### webRestChatMessagesObject.lastUserMessage() <a id="webRestChatMessagesObject.lastUserMessage" href="#webRestChatMessagesObject.lastUserMessage">&#x23;</a>
如果最后一条是用户消息则返回该消息，返回返回 null 。

### webRestChatMessagesObject.limit <a id="webRestChatMessagesObject.limit" href="#webRestChatMessagesObject.limit">&#x23;</a>
可选指定一个限制消息队列大小的数值。  
limit 限制的队列大小不包含第一个系统提示词与最后一个系统提示词。

### webRestChatMessagesObject.prompt <a id="webRestChatMessagesObject.prompt" href="#webRestChatMessagesObject.prompt">&#x23;</a>
添加提示词，连续调用 prompt 或 context 会自动合并。  
成功返回添加的消息对象。  

所有用法里，参数 @3（@cacheControl） 都是可选参数，  
仅 anthropic 协议与个别其他接口可支持 @cacheControl 参数。  
@cacheControl 指定为 `true` 自动转为 `{ "type": "ephemeral" }`，  
请参考 anthropic 文档谨慎指定此参数。

### webRestChatMessagesObject.prompt(content,,cacheControl) <a id="webRestChatMessagesObject.prompt" href="#webRestChatMessagesObject.prompt">&#x23;</a>
添加用户提示词。  
content 可以是字符串，也可以是对象数组。  
请参考调用模型与接口的文档了解支持的对象格式。

### webRestChatMessagesObject.prompt(txtContent,bitmap,cacheControl) <a id="webRestChatMessagesObject.prompt" href="#webRestChatMessagesObject.prompt">&#x23;</a>
添加 @txtContent 参数指定的用户提示词（文本）。  
可选使用参数 @bitmap 指定 gdip.bitmap 或 gdip.image 对象

### webRestChatMessagesObject.prompt(txtContent,imageBufferOrPath,cacheControl) <a id="webRestChatMessagesObject.prompt" href="#webRestChatMessagesObject.prompt">&#x23;</a>
添加 @txtContent 参数指定的用户提示词（文本）。  
可选用 @imageBufferOrPath 指定图像数据（必须是 buffer 对象），  
支持 JPG,PNG,GIF,WEBP 格式图像。  

注意请参考接口文档以了解调用模型是否支持图像识别。  

如果 @imageBufferOrPath 使用字符串指定文件路径则调用 string.loadBuffer 读取为 buffer。

### webRestChatMessagesObject.prompt(txtContent,imageUrl,cacheControl) <a id="webRestChatMessagesObject.prompt" href="#webRestChatMessagesObject.prompt">&#x23;</a>
添加用户 @txtContent 参数指定的用户提示词（文本）。  
可选用 @imageUrl 指定图像网址（通常不支持远程网址），  
本地图像可调用 inet.urlData 转换为 Data URL（Base64) 格式。  
注意请参考接口文档了解调用模型是否支持图像识别。

### webRestChatMessagesObject.push() <a id="webRestChatMessagesObject.push" href="#webRestChatMessagesObject.push">&#x23;</a>
添加消息对象。  
参数 @1 可指定包含 role,content 字段的表或字符串。  
如果指定字符串参数，则他和丰田与调用 assistant 方法相同。  
一般不应直接调用此函数，此函数不会自动合并 context / user 消息。

### webRestChatMessagesObject.started() <a id="webRestChatMessagesObject.started" href="#webRestChatMessagesObject.started">&#x23;</a>
是否已经发起对话。  
发起对话指的是消息队列中包含非 system 角色的消息。

### webRestChatMessagesObject.system(prompt,cacheControl) <a id="webRestChatMessagesObject.system" href="#webRestChatMessagesObject.system">&#x23;</a>
添加系统提示词。  
系统提示词总是会放在其他角色的消息之前。  
系统提示词不应存放过于频繁变动的内容。  
临时的动态的知识库应当改用 context 方法添加。  
消息上限不计算系统提示词。  

@cacheControl 为可选参数，仅 anthropic 协议与个别其他接口可支持此参数。  
@cacheControl 指定为 `true` 自动转为 `{ "type": "ephemeral" }`，  
请参考 anthropic 文档谨慎指定此参数。

### webRestChatMessagesObject.url() <a id="webRestChatMessagesObject.url" href="#webRestChatMessagesObject.url">&#x23;</a>
获取参数 @1 指定网址的内容并转换为 Markdown 格式或者文本格式提示词。  
参数 @1 也可以指定包含 url 字段的对象，或这样的对象数组。  
参数为 包含 url 字段的对象时如果同时包含 text 字段，则直接自 text 字段获取网页文本。  
如果参数 @1 指定数组参数，则将所有数组成员作为参数获取目标内容。  
如果参数为空数组、空字符串、null 则返回 null。  

可选用参数 @2 指定每个 URL 返回内容的最大字节数（默认为 64000），超过设定的页面将被忽略。  

成功返回添加的提示词，失败返回  null,错误信息 。  

如果提前导入 web.turndown 库则支持自动转换 HTML 为 Markdown 格式文本。
