aardio 文档
aardio 范例: AI 聊天界面
import win.ui;
import fonts.fontAwesome;
/*DSG{{*/
var winform = win.form(text="AI 助手";right=900;bottom=600;bgcolor=0xFFFFFF)
winform.add(
btnSend={cls="plus";text="发送";left=790;top=550;right=885;bottom=590;bgcolor=0xFF0078D7;border={radius=4};db=1;dr=1;font=LOGFONT(h=-14);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=15}};iconText='\uF1D8';notify=1;textPadding={left=15};z=3};
customChat={cls="custom";text="聊天区域";left=0;top=0;right=900;bottom=540;db=1;dl=1;dr=1;dt=1;z=1};
editPrompt={cls="edit";left=15;top=550;right=780;bottom=590;db=1;dl=1;dr=1;edge=1;multiline=1;z=2}
)
/*}}*/
//创建 AI 聊天界面
import web.form.chat;
var chatUi = web.form.chat(winform.customChat);
//chatUi.renderPollinationsAsImg = true;
//添加系统指令
//chatUi.system(``);
/*
// OpenRounter 的 Claude 模式缓存设置示例。
// 如果太短的提示词,缓存不会生效。支持自动缓存的模型不必设置。
chatUi.aardioSystem()
var msg = chatUi.chatMessage[1];
msg.content = [
{
"type": "text",
"text": msg.content ,
"cache_control": {
"type": "ephemeral"
}
}
]
*/
var sendApiMessage = function(){
var prompt = winform.editPrompt.text;
// 检查输入是否为空(移除首尾空白)
if(!#string.trim(prompt)){
winform.editPrompt.setFocus();
winform.editPrompt.showWarningTip("请输入提示词");
return;
}
// UI 状态变更
winform.editPrompt.text = ""; // 清空输入
winform.btnSend.disabled = true; // 禁用按钮防止重复点击
chatUi.showLoading(" 正在思考...");
chatUi.prompt(prompt);
// 创建 AI 对话线程
thread.invoke(
function(chatUi,winform){
import web.rest.aiChat;
// 创建 AI API 客户端
var aiClient = web.rest.aiChat(
key = '\0\1\96'; // 替换为你的 Key
url = "https://ai.aardio.com/api/v1/";
model = "test-model-id"; // 替换为实际模型名称
temperature = 0.5;
)
// 调用接口
var ok,err = aiClient.messages(chatUi.chatMessage,
function(deltaText,reasoning){
if(reasoning) chatUi.showThinking(reasoning);
chatUi.assistant(deltaText);
}
);
if(err){
chatUi.errorMessage(err)
}
// 恢复按钮状态
winform.btnSend.disabled = false;
},chatUi,winform
)
// 发送后焦点切回输入框
winform.editPrompt.setFocus();
}
winform.btnSend.oncommand = function(id,event){
sendApiMessage();
}
//回车发送(Ctrl+Enter 换行)
winform.editPrompt.onOk = function(ctrl,alt,shift){
if(ctrl){
winform.btnSend.oncommand();
return true;
}
}
winform.btnSend.skin({
background={
default=0xFF0078D7;
hover=0xFF0088EE;
active=0xFF005BB5;
disabled=0xFFCCCCCC;
};
color={
default=0xFFFFFFFF;
disabled=0xFF888888;
}
})
winform.show();
win.loopMessage();
Markdown 格式