 :多模态应用)
多模态让机器能够同时理解和处理文本、图像、音频、视频、触觉信号等多种不同类型的数据并像人类一样进行跨模态的推理和生成。阿里云百炼平台提供了一些全模态模型能够进行文本视频语言图片等内容的混合输入而不是单独的文本输入。那么面对多模态输入我们同样额外将文件转换为Media然后通过user方法将Media交给大模型。privateFluxStringmultiModalityChat(StringchatId,Stringprompt){// 1. 创建媒体对象示例从本地文件加载MP3MediamedianewMedia(MimeType.valueOf(audio/mp3),// 媒体类型需与实际文件匹配newFileSystemResource(a.mp3)// 媒体资源本地文件);// 2. 发送多模态对话请求returnchatClient.prompt()// 3. 自定义用户消息同时包含文本提示和媒体内容.user(p-p.text(prompt).media(media))// 4. 绑定会话ID用于记忆上下文.advisors(a-a.param(CHAT_MEMORY_CONVERSATION_ID_KEY,chatId))// 5. 流式返回响应内容.stream().content();}多模态模型的应用配置多模态的模型可以通过defaultOptions 进行参数设置BeanpublicChatClientmultiChatClient(OpenAiChatModelopenAiChatModel,ChatMemorychatMemory){returnChatClient.builder(openAiChatModel).defaultOptions(ChatOptions.builder().model(qwen3.5-omni-flash).build())//指定模型,请见阿里百炼平台中支持多模态的模型.defaultSystem(你是一个热心的智能助手你的名字叫小可爱请以小可爱的名义回答用户的问题。).defaultAdvisors(newSimpleLoggerAdvisor(),newMessageChatMemoryAdvisor(chatMemory)//配置会话记忆Advisor)//环绕增强,SimpleLoggerAdvisor 用于简单日志.build();}编写改造聊天接口实现媒体文件传给模型privatefinalChatClientmultiChatClient;/** * 多模态对话 * param prompt * param chatId * return */RequestMapping(value/multiModal,producestext/html;charsetutf-8;)publicFluxStringmultiModal(RequestParam(prompt)Stringprompt,RequestParam(chatId)StringchatId,RequestParam(valuefiles,requiredfalse)ListMultipartFilefiles){//1.保存会话idchatHistoryRepository.save(chat,chatId);if(filesnull||files.isEmpty()){//2.请求模型returnmultiChatClient.prompt().user(prompt).advisors(a-a.param(CHAT_MEMORY_CONVERSATION_ID_KEY,chatId)).stream().content();//stream() 表示流式输出}else{//解析媒体ListMediamediaListfiles.stream().map(c-newMedia(MimeType.valueOf(Objects.requireNonNull(c.getContentType())),c.getResource())).toList();//2.请求模型returnmultiChatClient.prompt().user(p-p.text(prompt).media(mediaList.toArray(newMedia[]{}))).advisors(a-a.param(CHAT_MEMORY_CONVERSATION_ID_KEY,chatId)).stream().content();//stream() 表示流式输出}}启动测试用例图片的测试