前言
百炼平台集成了通义系列大模型和第三方模型,涵盖文本、图像、音视频等多种模态,支持 LlamaIndex 等开源框架,提供丰富的模型选择。
本文来实践一下使用 LangChain4j 接入通义千问和通义万象。
一、简单比较百炼和deepseek
特性 | 阿里云百炼平台 | DeepSeek |
---|---|---|
模型支持 | 多模态、多模型,支持第三方接入 | 主要提供 DeepSeek 系列模型 |
应用构建 | 智能体、工作流、插件生态 | 主要关注模型性能和推理效率 |
部署方式 | 云端托管,提供 API 接口 | 支持开源模型,可进行私有化部署 |
开发工具链 | 完善的开发工具链,支持 Prompt 优化、流程编排等 | 提供基础的模型接口,需自行构建应用层 |
生态建设 | 丰富的生态服务,支持模型和应用共享 | 以模型为核心,生态建设相对较少 |
适用企业类型 | 适合需要快速构建多模态 AI 应用的企业 | 适合需要高性能、低成本模型部署的企业 |
二、创建百炼平台API-KEY
通义大模型首页:通义大模型_AI大模型_一站式大模型推理和部署服务-阿里云,笔者在写文章的时候,通义大模型开放免费试用,后续关闭的话只能氪金了。
进入百炼控制台后,会有一个免费试用开通的协议,根据提示勾选同意协议即可。我这里已经完成开通了。
点击左下角的API-key,就可以进入key管理界面了,在管理界面的右上角我们点击创建我的API-KEY。
选择默认的业务空间确认即可创建完成
查看我的key
三、接入通义大模型
① 添加通义的依赖
官方文档地址:DashScope (Qwen) | LangChain4j,官方文档中有直接引入 Starter 的方案,我们直接照做使用即可。
(1)父工程管理清单
<!--引入通义依赖管理清单-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
(2)服务工程引入依赖
<!-- langchain4j-Qwen -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
</dependency>
② 添加配置
还是按照官方文档的说明,添加配置,官方文档地址:DashScope (Qwen) | LangChain4j。
模型的名称我们可以在百炼平台的模型广场获取,先用 qwen-max 尝尝鲜。
#open-ai相关配置
langchain4j:
open-ai:
chat-model:
# 这里需要你自己的 api-key
api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxx
model-name: deepseek-chat
log-requests: true
log-responses: true
base-url: https://api.deepseek.com
ollama:
chat-model:
base-url: http://127.0.0.1:11434
# 这里需要修改成自己部署运行的模型名称
model-name: deepseek-r1:8b
log-requests: true
log-responses: true
#通义配置
community:
dashscope:
chat-model:
# 这里需要你自己的 api-key
api-key: xxxxxxxxxxxxxxx
model-name: qwen-max
③ 创建千问的测试接口
private final QwenChatModel qwenChatModel;
/**
* 测试LangChain4j的Qwen功能
* 向Qwen模型发送预设问题并获取回答
*
* @return Result<String> 包含成功状态和模型回答结果的封装对象
* 当调用成功时返回模型回答文本,失败时返回错误信息
*/
@Operation(summary = "测试LangChain4j功能-Qwen")
@PostMapping("/Qwen")
public Result<String> Qwen() {
// 向 模型 提问
String answer = qwenChatModel.chat("请说明你的模型名称以及回答我你的特长是什么");
return Result.success(answer);
}
④ 验证功能
此步骤直接展示接口调用结果,测试具体步骤请查看专栏第一篇文章的测试章节。
⑤ 创建万象的测试接口
首先需要选择一个模型,点击查看详情可以获取模型名称,有好多免费试用次数。
/**
* 测试LangChain4j的Wanxiang功能
* 向Wanxiang模型发送预设问题并获取回答
*
* @return Result<String> 包含成功状态和模型回答结果的封装对象
* 当调用成功时返回模型回答文本,失败时返回错误信息
*/
@Operation(summary = "测试LangChain4j功能-Wanxiang")
@PostMapping("/wanxiang")
public Result<String> wanxiang() {
// 手动配置模型配置
WanxImageModel wanxImageModel = WanxImageModel.builder()
.modelName("wanx2.1-t2i-plus")
.apiKey("xxxxxxxxxxxxx") // 这里需要你自己的 api-key
.build();
// 向 模型 提问
Response<Image> response = wanxImageModel.generate("LOL英雄皮城女警正在参与5V5团战,战况十分激烈,正处于对抗高潮阶段");
// 获取图片的路径
String imageUrl = response.content().url().toString();
return Result.success(imageUrl);
}
⑥ 验证功能
此步骤直接展示接口调用结果,测试具体步骤请查看专栏第一篇文章的测试章节。
生成的图片下载地址如下,感觉图片质量还不错,内容可能需要额外补充才能更准确。
https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/1d/72/20250515/4615cd53/388bb94a-bb80-4b64-90a8-8b6ea7db24842587851093.png?Expires=1747359946&OSSAccessKeyId=LTAI5tKPD3TMqf2Lna1fASuh&Signature=cOvoB32IEnvVcrDZIguNyKpkE9I%3D
后记
按照一篇文章一个代码分支,本文的后端工程的分支都是 LangChain4j-3,前端工程的分支是 LangChain4j-1。
后端工程仓库:后端工程
前端工程仓库:前端工程