当前位置: 首页 > news >正文

【AI】文生图文生视频

【AI】文生图&文生视频

文章目录

  • 【AI】文生图&文生视频
    • 1. 简介
    • 2. 接入阿里百炼平台
      • 2.1 申请免费体验
      • 2.2 配置API-KEY
      • 2.3 添加依赖
      • 2.4 配置模型参数
      • 2.5 模型测试
    • 3. 文生图
    • 4. 文生视频

1. 简介

在前面的文章中,我们使用了langchain4j提供的免费演示密钥去连接的gpt-4o–mi模型,但免费的apikey连接的模型总会有许多配额限制,这里我们接入阿里百炼平台,它集成了阿里的通义系列大模型和其它第三方大模型(如deepseek),涵盖文本、 图像、音视频等不同模态,最主要的是,新用户有千万token(不同模型合计)免费送,用于我们平时学习使用已经足够了。

2. 接入阿里百炼平台

2.1 申请免费体验

  • 进入官网点击大模型模块:官网链接
    在这里插入图片描述

  • 点击免费体验

    在这里插入图片描述

  • 点击开通服务,并确认开通
    在这里插入图片描述

2.2 配置API-KEY

  1. 前往申请:大模型服务平台百炼控制台

    在这里插入图片描述

  2. 创建完api-key后,在环境变量配置DASH_SCOPE_API_KEY,变量值为刚创建的api-key

    在这里插入图片描述

2.3 添加依赖


<dependencies><!-- 接入阿里云百炼平台 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId><version>1.0.0-beta3</version></dependency>
</dependencies><dependencyManagement><dependencies><!--引入langchain4j依赖管理清单 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-bom</artifactId><version>${langchain4j.version}</version><type>pom</type><scope>import</scope></dependency><!--引入百炼依赖管理清单 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-bom</artifactId><version>${langchain4j.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
<dependencyManagement>

2.4 配置模型参数

这里使用的是qwen-max模型

# 阿里百炼平台
langchain4j.community.dashscope.chat-model.api-key=${DASH_SCOPE_API_KEY}
langchain4j.community.dashscope.chat-model.model-name=qwen-max

2.5 模型测试

编写接口如下:

@Autowired
QwenChatModel qwenChatModel;@GetMapping("/chat")
public String model(@RequestParam(value = "message", defaultValue = "Hello") String message){String chat = qwenChatModel.chat(message);return chat;
}

执行结果:

在这里插入图片描述

在这里插入图片描述

到这里我们的模型引入就完成了!!

3. 文生图

引入阿里百炼平台后,我们接入内置的通义模型就方便多了,想要实现文生图的话我们可以引入通义万象这个模型来构建文生图的逻辑,构建模型代码如下:

WanxImageModel wanxImageModel = WanxImageModel.builder().modelName("wanx2.1-t2i-turbo").apiKey(System.getenv("DASH_SCOPE_API_KEY")).build();

之后直接在接口中进行引用即可:

Response<Image> response = wanxImageModel.generate(message);
return response.content().url().toString();

:如果想要实现让ai根据输入的提示词判断现在是直接生成文本还是生成图片,可以再加一层判断逻辑来进行捕获:

@GetMapping("/chat")
public String model(@RequestParam(value = "message", defaultValue = "Hello") String message) throws {String chatJudge = qwenChatModel.chat("对下述内容进行判断,如果是要求生成一张图片,则返回数字1;以上情况都不符合则返回数字0\n" + message);if (chatJudge.equals("1")) {Response<Image> response = wanxImageModel.generate(message);return response.content().url().toString();}String chat = memoryChatAssistant.chat(message);return chat;
}

执行结果:

在这里插入图片描述

4. 文生视频

文生视频的实现方式与文生图类似,也是通过万象大模型来进行生成的,具体代码如下:

  • 封装视频生成方法:

    private static String getVideo(String message) throws NoApiKeyException, InputRequiredException {VideoSynthesis vs = new VideoSynthesis();VideoSynthesisParam param =VideoSynthesisParam.builder().model("wanx2.1-t2v-turbo").prompt(message).size("1280*720").apiKey(System.getenv("DASH_SCOPE_API_KEY")).build();System.out.println("please wait...");VideoSynthesisResult videoSynthesisResult = vs.call(param);return videoSynthesisResult.getOutput().getVideoUrl();
    }
    
  • 接口修改

    @GetMapping("/chat")
    public String model(@RequestParam(value = "message", defaultValue = "Hello") String message) throws NoApiKeyException, InputRequiredExceptioString chatJudge = qwenChatModel.chat("对下述内容进行判断,如果是要求生成一张图片,则返回数字1;如果是要求生成一个视频,则返回数字2;以上情况都不符合则返回数字0\n" + message);if (chatJudge.equals("1")) {Response<Image> response = wanxImageModel.generate(message);return response.content().url().toString();}else if (chatJudge.equals("2")) {return getVideo(message);}String chat = memoryChatAssistant.chat(message);return chat;
    }
    

执行结果如下:

在这里插入图片描述

以上便是对文生图和文生视频的介绍与使用了,如果上述内容对大家有帮助的话请给一个三连关注吧💕( •̀ ω •́ )✧✨

http://www.lryc.cn/news/593840.html

相关文章:

  • 吴恩达机器学习笔记(3)—线性代数回顾(可选)
  • 17.TaskExecutor与ResourceManager交互
  • 微服务雪崩防护最佳实践之sentinel
  • ThinkSound:阿里开源首个“会思考”的音频生成模型——从“看图配音”到“听懂画面”的技术跃迁
  • SpringBoot 整合 Langchain4j 实现会话记忆存储深度解析
  • Node.js 与 Java 性能对比
  • 【Kafka】深入理解 Kafka MirrorMaker2 - 实战篇
  • Node.js v20.19.4 (LTS)升级
  • Python模块和包
  • 【PTA数据结构 | C语言版】邻接矩阵表示的图基本操作
  • simulink系列之模型接口表生成及自动连线脚本
  • LeetCode|Day19|14. 最长公共前缀|Python刷题笔记
  • CSS篇——第一章 六十五项关键技能(上篇)
  • Python高级数据类型:集合(Set)
  • 【通识】PCB文件
  • 【Linux服务器】-MySQL数据库参数调优
  • day11 ADC
  • 深入解析Linux文件重定向原理与dup2系统调用
  • MyBatis之缓存机制详解
  • 立创EDA中双层PCB叠层分析
  • 如何快速学习一门新技术
  • Java SE 讨论String类
  • QML 动画效果详解
  • Temperature 是在LLM中的每一层发挥作用,还是最后一层? LLM中的 Temperature 参数 是怎么计算的
  • 车载通信架构 --- DoIP协议通信
  • 2025年睿抗机器人开发者大赛CAIP-编程技能赛(省赛)-RoboCom 世界机器人开发者大赛-本科组
  • 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)解题报告 | 珂学家
  • Lock4j 使用说明
  • 使用Python进行文件拷贝的方法
  • 地图定位与导航