<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      6. LangChain4j + 多模態視覺理解詳細說明

      LangChain4j + 多模態視覺理解詳細說明

      @

      LangChain4j進行圖像理解

      多模態之視覺理解:

      • TextContent 文本交流大模型
      • ImageContent圖像交流大模型
      • AudioContent 音頻交流大模型
      • VideoContent 視頻交流大模型
      • PdfFileContent PDF 交流大模型

      eg:

      LangChain4j 多模態實戰

      首先:準備工作:切換阿里百煉大模型選擇選擇模型qwen-vl-max,能支持圖像的qwen-vl-max。

      阿里百煉地址:https://bailian.console.aliyun.com/

      結合LangChain4j進行圖像理解,其支持視覺-語言的多模態任務

      就是讓大模型,解讀我們圖像信息。

      編寫 Moudle 項目:

      1. 導入 pom.xml 依賴。

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
              <groupId>com.rainbowsea</groupId>
              <artifactId>langchain4j-studys</artifactId>
              <version>1.0-SNAPSHOT</version>
          </parent>
      
          <artifactId>langchain4j-04chat-image</artifactId>
          <packaging>jar</packaging>
      
          <name>langchain4j-04chat-image</name>
          <url>http://maven.apache.org</url>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          </properties>
      
          <dependencies>
      
      
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <!--langchain4j-open-ai 基礎-->
              <!--所有調用均基于 OpenAI 協議標準,實現一致的接口設計與規范LangChain4j 提供與許多 LLM 提供商的集成
              從最簡單的開始方式是從 OpenAI 集成開始https://docs.langchain4j.dev/get-started    -->
              <dependency>
                  <groupId>dev.langchain4j</groupId>
                  <artifactId>langchain4j-open-ai</artifactId>
              </dependency>
              <!--langchain4j 高階-->
              <dependency>
                  <groupId>dev.langchain4j</groupId>
                  <artifactId>langchain4j</artifactId>
              </dependency>
              <!--lombok-->
              <dependency>
                  <groupId>org.projectlombok</groupId>
                  <artifactId>lombok</artifactId>
                  <optional>true</optional>
              </dependency>
              <!--hutool-->
              <dependency>
                  <groupId>cn.hutool</groupId>
                  <artifactId>hutool-all</artifactId>
                  <version>5.8.22</version>
              </dependency>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>3.8.1</version>
                  <scope>test</scope>
              </dependency>
          </dependencies>
      </project>
      
      
      1. 編寫大模型基本配置三件套(大模型 key,大模型 name,大模型 url)的配置類

      package com.rainbowsea.langchain4j04chatimage.config;
      
      import dev.langchain4j.model.chat.ChatModel;
      import dev.langchain4j.model.openai.OpenAiChatModel;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      /**
       * https://docs.langchain4j.dev/tutorials/chat-and-language-models/#image-content
       */
      @Configuration
      public class LLMConfig {
          @Bean
          public ChatModel ImageModel() {
              return OpenAiChatModel.builder()
                      .apiKey(System.getenv("aliQwen_api"))
                      //qwen-vl-max 是一個多模態大模型,支持圖片和文本的結合輸入,適用于視覺-語言任務。
                      .modelName("qwen-vl-max")
                      .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                      .build();
          }
      
      }
      
      
      1. 業務類的編寫:

      1)resources目錄下放入mi.jpg圖片。該圖片就是用于讓大模型讀取的圖片資料。

      package com.rainbowsea.langchain4j04chatimage.controller;
      
      import dev.langchain4j.data.message.ImageContent;
      import dev.langchain4j.data.message.TextContent;
      import dev.langchain4j.data.message.UserMessage;
      import dev.langchain4j.model.chat.ChatModel;
      import dev.langchain4j.model.chat.response.ChatResponse;
      import lombok.extern.slf4j.Slf4j;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.core.io.Resource;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RestController;
      
      import java.io.IOException;
      import java.util.Base64;
      
      /**
       *
       */
      @RestController
      @Slf4j
      public class ImageModelController {
          @Autowired
          private ChatModel chatModel;
      
          @Value("classpath:static/images/mi.jpg")
          // 圖片也是一種資源,也可以用 @Value 進行賦值注入
          // classpath表示 resources 根目錄
          private Resource resource;    //import org.springframework.core.io.Resource;
      
          /**
           * @Description: 通過Base64編碼將圖片轉化為字符串,結合ImageContent和TextContent
           * 一起發送到模型進行處理。
           * 測試地址:http://localhost:9004/image/call
           */
          @GetMapping(value = "/image/call")
          public String readImageContent() throws IOException {
      
              // 注意:這里我們的計算機還是大模型是無法直接識別,傳輸圖片的
              // 我們需要將圖片轉換為 byte[] 二進制比特數據才能傳輸,才能識別
              byte[] byteArray = resource.getContentAsByteArray();
              String base64Data = Base64.getEncoder().encodeToString(byteArray);
      
              // 將發送給大模型的信息,封裝到 UserMessage 對象當中
              UserMessage userMessage = UserMessage.from(
                      TextContent.from("從以下圖片中獲取來源網站名稱,股價走勢和5月30號股價"),
                      // mimeType 指明讓大模型解讀的文件類型是::image/jpg ,讓大模型更容易解讀
                      ImageContent.from(base64Data, "image/jpg")
              );
      
              ChatResponse chatResponse = chatModel.chat(userMessage);
              String result = chatResponse.aiMessage().text();
      
              System.out.println(result);
      
              return result;
          }
      }
      
      

      運行測試:

      結合阿里巴巴通義萬相進行圖像生成(文本生成圖像)

      LangChain4J引l入第3方平臺和自己整合:

      注意:這里我們的 DashScope 是 Qwen 通義千問。

      官方說明,新增 Maven 配置

      1. **導入對應大模型依賴的 xml **

      這里我們統一一下,將配置放到我們的頂級 pom.xml 當中。

              <!--langchain4j-community 引入阿里云百煉平臺依賴管理清單-->
              <langchain4j-community.version>1.0.1-beta6</langchain4j-community.version>
      
      
                  <!--引入阿里云百煉平臺依賴管理清單
         https://docs.langchain4j.dev/integrations/language-models/dashscope
         -->
                  <dependency>
                      <groupId>dev.langchain4j</groupId>
                      <artifactId>langchain4j-community-bom</artifactId>
                      <version>${langchain4j-community.version}</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
      

      阿里巴巴通義萬相 WanxlmageModel:

      切換通義萬相-文生圖模型 wanx2.1-t2i-turbo ,它支持通過一句話生成圖像

      1. 在我們對應的子模塊的 pom.xml 當中導入我們 '通義千問文圖' 的依賴 jak 包

      版本信息,從頂級 pom.xml 當中繼承獲取

      1. 切換我們配置類當中的大模型為 “wanx2.1-t2i-turbo”可以文生圖的大模型

      package com.rainbowsea.langchain4j04chatimage.config;
      
      import dev.langchain4j.community.model.dashscope.WanxImageModel;
      import dev.langchain4j.model.chat.ChatModel;
      import dev.langchain4j.model.openai.OpenAiChatModel;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      /**
       * https://docs.langchain4j.dev/tutorials/chat-and-language-models/#image-content
       */
      @Configuration
      public class LLMConfig {
      
          /**
           * @Description: 測試通義萬象來實現圖片生成,
           * 知識出處,https://help.aliyun.com/zh/model-studio/text-to-image
           * @Auther: zzyybs@126.com
           */
          @Bean
          public WanxImageModel wanxImageModel()
          {
              return WanxImageModel.builder()
                      .apiKey(System.getenv("aliQwen_api"))
                      .modelName("wanx2.1-t2i-turbo") //圖片生成 https://help.aliyun.com/zh/model-studio/text-to-image
                      .build();
          }
      }
      
      
      1. 編寫 文生圖的 controller 類方法

      package com.rainbowsea.langchain4j04chatimage.controller;
      
      import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
      import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
      import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
      import com.alibaba.dashscope.exception.ApiException;
      import com.alibaba.dashscope.exception.NoApiKeyException;
      import com.alibaba.dashscope.utils.JsonUtils;
      import dev.langchain4j.community.model.dashscope.WanxImageModel;
      import dev.langchain4j.data.image.Image;
      import dev.langchain4j.model.output.Response;
      import lombok.extern.slf4j.Slf4j;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RestController;
      
      import java.io.IOException;
      
      /**
       */
      @RestController
      @Slf4j
      public class WanxImageModelController
      {
          @Autowired
          private WanxImageModel wanxImageModel;
      
          // http://localhost:9006/image/create2
          @GetMapping(value = "/image/create2")
          public String createImageContent2() throws IOException
          {
              System.out.println(wanxImageModel);
              Response<Image> imageResponse = wanxImageModel.generate("小兔子");
      
              System.out.println(imageResponse.content().url());
      
              return imageResponse.content().url().toString();
      
          }
      
      
      
      
          // http://localhost:9006/image/create3
          @GetMapping(value = "/image/create3")
          public String createImageContent3() throws IOException
          {
      
              String prompt = "近景鏡頭,18歲的中國女孩,古代服飾,圓臉,正面看著鏡頭," +
                      "民族優雅的服裝,商業攝影,室外,電影級光照,半身特寫,精致的淡妝,銳利的邊緣。";
              ImageSynthesisParam param =
                      ImageSynthesisParam.builder()
                                  .apiKey(System.getenv("aliQwen-api"))
                                  .model(ImageSynthesis.Models.WANX_V1)
                                  .prompt(prompt)
                                  .style("<watercolor>")
                                  .n(1)
                                  .size("1024*1024")
                              .build();
      
              ImageSynthesis imageSynthesis = new ImageSynthesis();
              ImageSynthesisResult result = null;
      
              try {
                  System.out.println("---sync call, please wait a moment----");
                  result = imageSynthesis.call(param);
              } catch (ApiException | NoApiKeyException e){
                  throw new RuntimeException(e.getMessage());
              }
      
      
              System.out.println(JsonUtils.toJson(result));
      
              return JsonUtils.toJson(result);
          }
      }
      
      
      1. 運行測試:

      最后:

      “在這個最后的篇章中,我要表達我對每一位讀者的感激之情。你們的關注和回復是我創作的動力源泉,我從你們身上吸取了無盡的靈感與勇氣。我會將你們的鼓勵留在心底,繼續在其他的領域奮斗。感謝你們,我們總會在某個時刻再次相遇。”

      在這里插入圖片描述

      posted @ 2025-09-04 11:42  Rainbow-Sea  閱讀(139)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 天天爽夜夜爽人人爽一区二区| 精品一区二区三区在线成人| 人妻 日韩精品 中文字幕| 午夜福利电影| 日韩av不卡一区二区在线| 天堂网国产| 亚洲尤码不卡av麻豆| 日本一区二区三区小视频| 人妻少妇偷人精品一区| 久久66热人妻偷产精品| 久久日产一线二线三线| 老熟妇国产一区二区三区 | 人妻无码∧V一区二区| 蜜臀av一区二区三区精品| 欲乱人妻少妇邻居毛片| 99久久亚洲综合精品成人网| 丰满熟妇乱又伦在线无码视频| 麻豆精品一区二区综合av| 天堂在线中文| 伦理片午夜视频在线观看| 蜜臀久久精品亚洲一区| 无套内谢少妇毛片aaaa片免费| 国产精品久久久久影院色| 国产精品一区二区麻豆蜜桃| 亚洲一区二区日韩综合久久| 天天澡日日澡狠狠欧美老妇| 欧美成人h亚洲综合在线观看| 欧美成人aaa片一区国产精品| 亚洲av日韩av综合在线观看| 大尺度国产一区二区视频| 97久久超碰亚洲视觉盛宴| 国产日韩精品欧美一区喷水| 国产性生大片免费观看性| 野外做受三级视频| 国产成人精品aa毛片| 成人av天堂网在线观看| 中文字幕无线码在线观看| 亚洲人成网站在线观看播放不卡| 人与禽交av在线播放| 日本黄色三级一区二区三区 | 人人做人人澡人人人爽|