【AI】文生图&文生视频
文章目录
1. 简介
在前面的文章中,我们使用了langchain4j提供的免费演示密钥去连接的gpt-4o–mi模型,但免费的apikey连接的模型总会有许多配额限制,这里我们接入阿里百炼平台,它集成了阿里的通义系列大模型和其它第三方大模型(如deepseek),涵盖文本、 图像、音视频等不同模态,最主要的是,新用户有千万token(不同模型合计)免费送,用于我们平时学习使用已经足够了。
2. 接入阿里百炼平台
2.1 申请免费体验
进入官网点击大模型模块:官网链接
点击免费体验
点击开通服务,并确认开通
2.2 配置API-KEY
前往申请:大模型服务平台百炼控制台
创建完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, InputRequiredExceptio String 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; }
执行结果如下:
以上便是对文生图和文生视频的介绍与使用了,如果上述内容对大家有帮助的话请给一个三连关注吧💕( •̀ ω •́ )✧✨