aardio 文档
aardio 范例: AI 调用本地函数(function calling )
调用 AI (function calling )
//AI 调用本地函数(function calling )
//调用 AI (function calling ): https://www.aardio.com/zh-cn/doc/library-guide/std/web/rest/aiChat.html#function-calling
import console.int;
import web.rest.aiChat;
/*
web.rest.aiChat 支持 OpenAI 兼容接口的 function calling 功能。
注意有些接口不支持这功能。
如果服务端报错缺少 content 字段,这是因为接口不支持 function calling,只能处理包含 content 的普通消息。
不支持 function calling 接口可能会不停地重复调用本地函数,而非直接出错。
DeepSeek V3 0324 以上版本支持 function calling。
注意智能体接口通常不支持 function calling,因为它自己就要占用这个功能。
*/
var aiClient = web.rest.aiChat(
key = '\0\1\96';
url = "https://ai.aardio.com/api/v1/";//接口地址
model = "test-model-id";//模型名称首字符为 @ 则使用 Anthropic 接口
toolChoice = "required"; //设置为必须调用工具,不指定则默认由 AI 自动决定是否调用工具
temperature = 0.5,
tools = { //关键在于增加 tools 字段声明可以调用的本地函数,细节请参考 API 文档。
{
"type": "function",
"function": {
"name": "getWeather",
"description": "获取给定地点的天气",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "地点的位置信息,比如北京"
},
"unit": {
"type": "string",
"enum": {
"摄氏度",
"华氏度"
}
}
},
"required": {
"location"
}
}
}
}
}
)
//导出允许 AI 调用的函数,与前面的 tools 里声明的函数名称与原型说明要匹配。
aiClient.external = {
getWeather = function(args){
//如果重复调用相同的函数,是因为模型实际并不支持 function calling
console.log("正在调用函数,参数:",args.location,args.unit)
//如果返回值不是字符串会自动调用 JSON.stringify 转为字符串
//尽量用自然语言描述清楚,DeepSeek 偶尔会输出 JSON,所以在这里提示一下 AI 不要这么做。
return args.location + "天气晴,24~30 度,以自然语言回复不要输出 JSON"
}
}
//单独 创建 AI 会话消息队列以保存聊天上下文。
var chatMsg = web.rest.aiChat.message();
//添加用户提示词
chatMsg.prompt("杭州天气如何?" );
console.showLoading(" Thinking ");
/*
调用聊天接口。
如果参数 2 指定回调函数,则启用流式输出,并将 AI 逐步回复的增量文本作为回调参数。
可选用参数 3 指定一个表,表中可指定要添加的其他请求参数。
*/
var ok,err = aiClient.messages(chatMsg,
function(deltaText,reasoning){
if(reasoning) return console.writeColorText(reasoning,0xA);
console.writeText(deltaText)
}
);
console.log(err)
Markdown 格式