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

大家好,我是Java1234_小锋老师,最近更新《2027版本 LangChain4j 开发Java Agent 智能体 视频教程》专辑,感谢大家支持。

在这里插入图片描述

本课程主要介绍和讲解 LangChain4j 简介,阿里云百炼大模型 平台接入,Ollama简介以及安装和使用,HelloWorld 实现,日志配置,集成SpringBoot,Ai Service 使用,对话与提示词工程(Prompt),结构化输出,会话记忆,工具调用(Function Calling),嵌入模型 与向量数据库,RAG(检索增强生成),MCP(模型上下文协议),多模态支持

视频教程+课件+源码打包下载:

链接:https://pan.baidu.com/s/1o-zRfndo1HHrS_uFroOiCw?pwd=1234
提取码:0000

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

一,什么是多模态

多模态(Multimodal) 指大模型不仅能处理文本,还能理解或生成其他类型的媒体内容。

常见场景举例:

场景输入模型输出
图片描述一张猫的照片 +「请描述这张图」自然语言描述
票据识别发票截图 +「提取金额和日期」结构化文字
文档问答PDF 论文 +「总结核心观点」摘要
视频理解短视频 +「列出关键章节」章节列表

在 LangChain4j 中,多模态内容通过 Content 接口的不同实现类来表达,最终组装进 UserMessage 发送给支持该能力的 ChatModel

二,LangChain4j里支持的多模态核心类

UserMessage
  └── List<Content>
        ├── TextContent      文本
        ├── ImageContent     图片(URL 或 Base64)
        ├── AudioContent     音频
        ├── VideoContent     视频
        └── PdfFileContent   PDF 文件

对应包路径:

  • dev.langchain4j.data.message.UserMessage
  • dev.langchain4j.data.message.TextContent
  • dev.langchain4j.data.message.ImageContent
  • dev.langchain4j.data.message.AudioContent
  • dev.langchain4j.data.message.VideoContent
  • dev.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目录下,

在这里插入图片描述

新建一个VisionAssistantService

package com.java1234.service;

import dev.langchain4j.data.message.ImageContent;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;

@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT, // 手动指定接入模型 手动装配
        chatModel = "openAiChatModel"  // 指定模型
)
public interface VisionAssistantService {

    @SystemMessage("你是图片理解助手。请根据用户提供的图片,用中文准确、简洁地回答用户问题。")
    String analyze(@UserMessage String question, @UserMessage ImageContent image);
}

再新建一个MyVisionController

package com.java1234.controller;

import com.java1234.service.*;
import dev.langchain4j.data.message.ImageContent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;

@RestController
public class MyVisionController {

    @Autowired
    private VisionAssistantService visionAssistantService;

    @GetMapping("/image")
    public String analyzeApple(
            @RequestParam(defaultValue = "请描述这张图片中的内容") String question) throws Exception {
        Path imagePath = Paths.get("target/apple.png");
        byte[] bytes = Files.readAllBytes(imagePath);
        String base64 = Base64.getEncoder().encodeToString(bytes);
        ImageContent image = ImageContent.from(base64, "image/png");
        return visionAssistantService.analyze(question, image);
    }
}

我们可以浏览器测试下:http://localhost:8080/image

成功解析:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值