# aardio 范例: AI 图像识别，图生文，视觉模型



```aardio
//AI 图像识别，图生文，视觉模型
/*
web.rest.aiChat 用于标准聊天对话接口（ API 端点: v1/chat/completions ），
可支持能识别图像的视觉模型。
*/

import gdip.snap;
import web.form.chat;
var chatUi = web.form.chat(text="图像识别");
chatUi.showLoading(" 正在识别图像");

//创建屏幕选区，截图作为测试图像
import mouse.screenArea;
var screenArea = mouse.screenArea(chatUi);

//接收屏幕截图数据
screenArea.onBufferReady = function(pngBuffer){

	/*
	下面添加提示词与图像。
	参数 2 可以指定图像 URL或者用 buffer 对象指定 JPG/PNG/GIF/WEBP 内存数据。
	如果参数 2 指定 buffer，chatUi.prompt 函数会自动将其转换为 Data URL 格式。
	*/
	chatUi.prompt("识别图像并分析总结", pngBuffer )
	
	owner.endModal(true);	
} 
	 
if(!screenArea.doModal()) return;

//创建 AI 对话线程，下面的代码与调用其他文本大模型是一样的
thread.invoke( 
	function(chatUi){
		
		//创建 AI 客户端
		import web.rest.aiChat;
		var aiClient = web.rest.aiChat(
			key = "密钥";//密钥（API key）
			url = "https://ai.aardio.com/api/v1/";//请更更换为实际接口地址）
			model = "模型ID";
		)  
		
		//调用聊天接口。
		var resp,err = aiClient.messages(chatUi.chatMessages,
			function(deltaText,reasoning){
				
				//输出思考过程
				if(reasoning) { 
					chatUi.showThinking(reasoning);
				}
				
				//输出回复，自带高性能 Markdown 解析器。
				chatUi.writeDelta(deltaText);
			}
		);
		
		if(err){
			chatUi.errorMessage(err);
		}
		
	},chatUi //将窗口对象作为参数传入工作线程
)
	
//显示模态窗口
chatUi.doModal();
```

