LangChain4j 开发Java Agent智能体- 多模态支持

LangChain4j 开发Java Agent智能体- 多模态支持 大家好我是Java1234_小锋老师最近更新《2027版本 LangChain4j 开发Java Agent 智能体 视频教程》专辑感谢大家支持。本课程主要介绍和讲解 LangChain4j 简介阿里云百炼大模型 平台接入Ollama简介以及安装和使用HelloWorld 实现日志配置集成SpringBootAi Service 使用对话与提示词工程(Prompt)结构化输出会话记忆工具调用(Function Calling)嵌入模型 与向量数据库RAG(检索增强生成)MCP(模型上下文协议)多模态支持视频教程课件源码打包下载链接https://pan.baidu.com/s/1o-zRfndo1HHrS_uFroOiCw?pwd1234提取码0000LangChain4j 开发Java Agent智能体- 多模态支持一什么是多模态多模态Multimodal指大模型不仅能处理文本还能理解或生成其他类型的媒体内容。常见场景举例场景输入模型输出图片描述一张猫的照片 「请描述这张图」自然语言描述票据识别发票截图 「提取金额和日期」结构化文字文档问答PDF 论文 「总结核心观点」摘要视频理解短视频 「列出关键章节」章节列表在 LangChain4j 中多模态内容通过Content接口的不同实现类来表达最终组装进UserMessage发送给支持该能力的ChatModel。二LangChain4j里支持的多模态核心类UserMessage └── ListContent ├── TextContent 文本 ├── ImageContent 图片URL 或 Base64 ├── AudioContent 音频 ├── VideoContent 视频 └── PdfFileContent PDF 文件对应包路径dev.langchain4j.data.message.UserMessagedev.langchain4j.data.message.TextContentdev.langchain4j.data.message.ImageContentdev.langchain4j.data.message.AudioContentdev.langchain4j.data.message.VideoContentdev.langchain4j.data.message.PdfFileContent三适用模型LangChain4j 支持多种多模态模型。在选择时你需要注意模型支持的“模态”如图像、音频。常用模型支持情况如下模型提供商 (Provider)支持的多模态输入 (Supported Modalities)特点描述 (Key Features)OpenAI(如 GPT-4/GPT-4o)文本 (Text)、图像 (Image)技术领先支持JSON模式等性能强大。Google Gemini文本、图像、音频、视频、PDF(Text, Image, Audio, Video, PDF)原生多模态支持文件类型最丰富适合复杂场景。DashScope (阿里云)文本、图像、音频(Text, Image, Audio)提供如Qwen-VL等国产模型对中文场景支持友好。智谱AI (Zhipu AI)主要支持图像生成和理解 (Primarily Text and Image)提供视觉推理模型等并提供免费模型便于测试。Anthropic (Claude)文本 (Text)、图像 (Image)以强大的推理能力和安全性著称。Amazon Bedrock文本、图像、PDF (Text, Image, PDF)平台服务适合已在AWS上的用户。Ollama (本地)支持文本、图像等 (Supports various local models)可在本地运行模型保证数据隐私。四具体示例我们先准备一个图片apple.png为了测试方便我们把图片放target目录下新建一个VisionAssistantServicepackagecom.java1234.service;importdev.langchain4j.data.message.ImageContent;importdev.langchain4j.service.SystemMessage;importdev.langchain4j.service.UserMessage;importdev.langchain4j.service.spring.AiService;importdev.langchain4j.service.spring.AiServiceWiringMode;AiService(wiringModeAiServiceWiringMode.EXPLICIT,// 手动指定接入模型 手动装配chatModelopenAiChatModel// 指定模型)publicinterfaceVisionAssistantService{SystemMessage(你是图片理解助手。请根据用户提供的图片用中文准确、简洁地回答用户问题。)Stringanalyze(UserMessageStringquestion,UserMessageImageContentimage);}再新建一个MyVisionControllerpackagecom.java1234.controller;importcom.java1234.service.*;importdev.langchain4j.data.message.ImageContent;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.Base64;RestControllerpublicclassMyVisionController{AutowiredprivateVisionAssistantServicevisionAssistantService;GetMapping(/image)publicStringanalyzeApple(RequestParam(defaultValue请描述这张图片中的内容)Stringquestion)throwsException{PathimagePathPaths.get(target/apple.png);byte[]bytesFiles.readAllBytes(imagePath);Stringbase64Base64.getEncoder().encodeToString(bytes);ImageContentimageImageContent.from(base64,image/png);returnvisionAssistantService.analyze(question,image);}}我们可以浏览器测试下http://localhost:8080/image成功解析