基于Qwen2.5-Coder 快速搭建应用管理系统

简介: 本文介绍了如何利用Qwen2.5-Coder快速搭建一个应用管理系统。通过访问ModelScope通义千问Qwen模型库,选择Qwen2.5-Coder模型,生成Spring Boot项目代码包,并逐步解决项目运行中遇到的问题,如Java版本不兼容等。文章还展示了如何优化用户管理页面的功能和样式,最终实现了从零代码到完整应用的搭建过程,提供了良好的用户体验和开发效率。附带的可运行代码链接为:[https://gitee.com/null_096_1927/demo](https://gitee.com/null_096_1927/demo)。

序言

在过去的一段时间里,通义千问团队基于Qwen2 语言模型获得的更多语言模型反馈,专注于创建更智能、更博学的语言模型,最新发布包括了语言模型 Qwen2.5,以及专门针对编程的 Qwen2.5-Coder 和数学的 Qwen2.5-Math 模型。所有开放权重的模型都是稠密的、decoder-only的语言模型,提供多种不同规模的版本,包括:

  • Qwen2.5: 0.5B, 1.5B, 3B, 7B, 14B, 32B, 以及72B;
  • Qwen2.5-Coder: 1.5B, 7B, 以及即将推出的32B;
  • Qwen2.5-Math: 1.5B, 7B, 以及72B。

120801.png

除了3B和72B的版本外,Qwen2.5所有的开源模型都采用了 Apache 2.0 许可证。您可以在相应的模型仓库中找到许可证文件。此外,本次通义千问团队还开源了性能不输于GPT-4o的 Qwen2-VL-72B

官方对于Qwen2.5系列本次开源内容,给出了详细的内容阐述,包括:

  • 更大的训练数据集:Qwen2.5 语言模型的所有尺寸都在最新的大规模数据集上进行了预训练,该数据集包含多达 18T tokens。相较于 Qwen2,Qwen2.5 获得了显著更多的知识(MMLU:85+),并在编程能力(HumanEval 85+)和数学能力(MATH 80+)方面有了大幅提升。
  • 更强的指令遵循能力:新模型在指令执行、生成长文本(超过 8K 标记)、理解结构化数据(例如表格)以及生成结构化输出特别是 JSON 方面取得了显著改进。Qwen2.5 模型总体上对各种system prompt更具适应性,增强了角色扮演实现和聊天机器人的条件设置功能。
  • 长文本支持能力:与 Qwen2 类似,Qwen2.5 语言模型支持高达 128K tokens,并能生成最多 8K tokens的内容。
  • 强大的多语言能力:它们同样保持了对包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韩文、越南文、泰文、阿拉伯文等 29 种以上语言的支持。
  • 专业领域的专家语言模型能力增强,即用于编程的 Qwen2.5-Coder 和用于数学的 Qwen2.5-Math,相比其前身 CodeQwen1.5 和 Qwen2-Math 有了实质性的改进。具体来说,Qwen2.5-Coder 在包含 5.5 T tokens 编程相关数据上进行了训练,使即使较小的编程专用模型也能在编程评估基准测试中表现出媲美大型语言模型的竞争力。同时,Qwen2.5-Math 支持 中文 和 英文,并整合了多种推理方法,包括CoT(Chain of Thought)、PoT(Program of Thought)和 TIR(Tool-Integrated Reasoning)。

本文主要是基于Qwen2.5-Coder 快速搭建应用管理系统,那么下面先来了解一下什么是 Qwen2.5-Coder。

Qwen2.5-Coder

自从推出 CodeQwen1.5 以来,通义千问吸引了大量依赖该模型完成各种编程任务的用户,这些任务包括调试、回答编程相关的问题以及提供代码建议。Qwen2.5-Coder 特别为编程应用而设计。在本节展示了 Qwen2.5-Coder-7B-Instruct 的性能结果,并将其与领先的开源模型进行了基准测试,其中包括那些参数量大得多的模型。

Qwen2.5-Coder 是您个人编程助手的优秀选择。尽管它的体积较小,但在多种编程语言和任务中,它的表现超过了众多大型语言模型,展现了其卓越的编程能力。

120802.png

如何基于 Qwen2.5-Coder 快速搭建应用管理系统,下面开始详细讲解。

快速搭建应用管理系统

在快速搭建应用管理系统之前,我们先要进入到魔塔社区,通义千问Qwen开源模型库地址:https://www.modelscope.cn/organization/Qwen,点击链接地址进入ModelScope 通义千问Qwen 模型详情页

image.png

我们今天主要需要使用的通义千问Qwen开源模型 为 Qwen2.5-Coder,点击Qwen2.5-Coder 模型合集进入Qwen2.5-Coder 模型合集详情页,

image.png

这里我们选择 通义千问2.5-代码-demo 点击模型tab进入模型详情页,在模型详情页输入我们的需求【基于springboot生成一个项目代码包】

image.png

通义千问2.5-代码-demo 生成内容如下,我们按照通义千问2.5-代码-demo 提供的内容以及搭建项目代码包所需要的内容进行逐步操作,

创建Spring Boot项目

我直接按照 通义千问2.5-代码-demo 模型生成内容,先访问 https://start.spring.io/ 然后配置项目信息

image.png

这里配置项目信息我选择默认的项目信息,根据具体的环境选择需要的内容 包括开发语言 Java ,项目构建方式 Maven ,Springboot 版本 3.3.6以及打包方式 war ,Java 版本这里没有更低的版本可以选择,只能选择 Java 17

image.png

在Spring boot 初始化项目页面选择完之后,按照 Qwen2.5-Coder 的步骤,点击 Generate 生成代码,并将代码导入到本地的开发工具 IDEA

image.png

代码成功导入本地开发工具 IDEA中之后,我们为项目配置本地已经安装好的 Maven 工具,

image.png

配置完成后等待项目Maven 加载完成即可。

项目结构

这里我们根据 Qwen2.5-Coder 提供的项目结构,

image.png

结合 Spring Initializr 生成的初始化项目结构补充后面生成的 代码示例中的 HelloController.java 以及 HelloService.java 文件

image.png

这是我们可以直接复制 Qwen2.5-Coder 生成的 HelloController.java 和 HelloService.java 到项目中

package com.example.demo.controller;

import com.example.demo.service.HelloService;
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;

@RestController
public class HelloController {

    @Autowired
    private HelloService helloService;

    @GetMapping("/hello")
    public String sayHello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return helloService.getGreeting(name);
    }
}
package com.example.demo.service;

import org.springframework.stereotype.Service;

@Service
public class HelloService {

    public String getGreeting(String name) {
        return String.format("Hello, %s!", name);
    }
}

补充了 HelloController.java 以及 HelloService.java 文件 后的代码结构如图

image.png

运行项目

springboot项目可以直接使用 DemoApplication 来运行,这里我们选择 DemoApplication.java 文件,执行 Main 函数

image.png

执行报错,【java: 警告: 源发行版 17 需要目标发行版 17】 这是因为我本地电脑环境只有 Java 8 ,而刚才在 Qwen2.5-Coder 生成的springboot项目初始化的页面最低只能选择 Java 17,因此这里我在当前的 demo项目中,将 Java 的版本更改回 Java 8。

变更Java 版本

这里假设我们并不懂代码如何变更 Java 版本,那么我们将运行项目时的报错信息直接给 Qwen2.5-Coder  ,让 Qwen2.5-Coder  来为我们解决问题

image.png

这里我按照 Qwen2.5-Coder 提供的解决方案,先是验证当前本地环境的java 版本

java -version

可以看到目前的 Java 版本是 Java 8,那么按照 Qwen2.5-Coder 将 pom.xml 中的 java.version  更改为当前本地的 Java 版本后再运行项目

image.png

修改后的 pom.xml文件如图

image.png

变更java 版本后再次启动项目,提示如下错误信息,

java: 无法访问org.springframework.beans.factory.annotation.Autowired
  错误的类文件: /D:/Repositories/ricet/org/springframework/spring-beans/6.1.15/spring-beans-6.1.15.jar!/org/springframework/beans/factory/annotation/Autowired.class
    类文件具有错误的版本 61.0, 应为 52.0

这里猜想应该是由于Java 版本变更引起的问题,那么我们这里继续处理这个问题,将错误信息放在 Qwen2.5-Coder 询问可知应是Spring Boot 版本与 Java 8 是否兼容问题,根据 Qwen2.5-Coder 给出的提示,

image.png

修改项目中springboot相关jar 包版本为 2.7.5,再次执行 mvn clean 之后启动项目尝试

image.png

image.png

再次执行 mvn clean install 后运行项目,看到项目启动成功

image.png

这里需要注意一点就是,项目运行成功后,立刻就结束了,这里看到如下信息 Process finished with exit code 0 ,基于此是什么原因,那么再次将错误信息抛给 Qwen2.5-Coder 来看具体的解决办法。

运行报错

这里我们将控制台打印信息抛给 Qwen2.5-Coder 来看具体的解决办法,输入【Process finished with exit code 0 启动成功就结束了,怎么解决

这里可以看到 Qwen2.5-Coder 给与的详细分析

image.png

按照 Qwen2.5-Coder 详细排查具体的启动类注解配置 @SpringBootApplication 以及 pom.xml文件中关于 spring-boot-starter-tomcat 的配置,这里看到在 Qwen2.5-Coder  的解决方案描述中,spring-boot-starter-tomcat 的 scope  并没有限定具体的范围

image.png

而我们通过 springboot 初始化项目生成的项目配置中却指定了具体的 scope  为 provided

image.png

这里我将具体的 <scope>provided</scope> 在 Qwen2.5-Coder 页面进行询问可以看到具体的解释信息,可以看到在第一行就已经给出了解决方案

image.png

下面继续对于这个标识给出了详细的解释,这样就明白为什么对于刚才的运行项目,已经成功,但是却自动结束

image.png

下面我们再来访问我们已经搭建好的应用管理系统。

访问应用

项目运行成功之后,在浏览器中输入 http://localhost:8080/hello?name=Qwen可以看到项目的具体返回结果

image.png

应用优化

这时,虽然我们看到我们的应用管理系统已经可以成功运行了,但是页面只有一个 Hello, Qwen! 的返回有点太粗糙了,那么这时候我们可以再让 Qwen2.5-Coder 再帮我们生成一个用户管理的内容,在 Qwen2.5-Coder 对话框输入【生成一个用户管理页面】这时候可以看到具体的信息。

功能优化

按照Qwen2.5-Coder 提供的步骤执行,先在  pom.xml 中添加Thymeleaf依赖

image.png

添加依赖完成后,再创建一个 User 的实体类,在项目中添加文件夹 model,复制 User.java 到指定目录下

image.png

User 实体类创建完成之后,在 controller 目录下创建创建一个控制器UserController.java 来处理用户管理的请求

image.png

控制器UserController.java 创建完成后,继续 在 src/main/resources/templates 目录下创建以下Thymeleaf模板文件 users.html

image.png

同时依次创建 add-user.html 、edit-user.html文件

image.png

添加完成之后再次看一下具体的目录结构,可以看到我们刚才添加的关于用户管理的页面信息

image.png

运行项目,项目启动后,你可以通过浏览器访问 http://localhost:8080/users 来查看用户管理页面

20241208_180642 00_00_00-00_00_30~1.gif

这里可以看到,虽然我们的页面虽然已经不是单单的字母的展示了,但是这里页面没有对应的样式,觉得还是不够丰富。

页面优化

那么我们再继续让 Qwen2.5-Coder 为我们的页面增加一点样式,继续输入内容【为用户管理页面添加样式】,

image.png

下面继续按照 Qwen2.5-Coder 提供的操作步骤逐步进行,再次操作完成之后,项目的目录结构发生了如下变化,同时更新了页面,加入了页面css 元素内容

image.png

再次运行项目后,访问 http://localhost:8080/users 可以看到页面样式生效了,但是显示效果很不好,

image.png

另外根据刚才的对用户管理页面,新增,修改,列表页的操作来看,页面加载比较慢,这个时候打开浏览器 F12 工具查看,可以看到加载时间长是因为获取远程的 bootstrap.min.css 失败导致的,那么这个时候我们就可以将 bootstrap.min.css  下载下来放到项目中,这样就可以减少到远程访问的时间浪费

image.png

下载 bootstrap.min.css 放到本地项目中之后,再来看下增加了css 的 bootstrap.min.css 后页面的目录结构,同时将三个页面中对 bootstrap.min.css 的引用都改成从本地项目中引用,

image.png

再次启动项目后,在浏览器输入 http://localhost:8080/users 可以看到页面的效果以及 静态文件的加载结果

image.png

最终,经过页面优化以及功能优化后的应用管理系统的效果如图

20241208_183431 00_00_00-00_00_30.gif

到这里,基于Qwen2.5-Coder 快速搭建应用管理系统的操作就完成了,下面来说一下这次操作的体验感受。

体验感受

这次基于 Qwen2.5-Coder 快速搭建应用管理系统 ,整个过程中对于代码的操作完全基于在Qwen2.5-Coder 提出问题后,返回的操作步骤内容上,个人并没有任何多余的代码编写操作。在提出想要的内容后,通过 Qwen2.5-Coder 的反馈进行逐步的操作,目录结构以及代码类名等也是按照生成的进行编写。最终运行的结果是完全符合预期的。在整个快速搭建应用管理系统的过程中,遇到的问题也同样通过 Qwen2.5-Coder 得到了有效的处理。


可以说,本文基于Qwen2.5-Coder 快速搭建应用管理系统  真正的实现了 0 代码搭建网站应用的操作。虽然项目的整体内容目前看是比较简单,但是可以在当前代码结构的基础上继续通过 Qwen2.5-Coder 来不断丰富完善。这里有一点比较好,就是 Qwen2.5-Coder 生成的内容有上下文的关联,当你后面的操作是基于前面操作的优化时,Qwen2.5-Coder 生成的代码目录结构往往是和上面生成的目录结构是有一定的关联关系的,这样就可以使得每一位想要使用 Qwen2.5-Coder 大模型来进行代码开发的小伙伴可以基于最初的需求一直不断的优化丰富下去,最终形成一个可以落地,比较有功能性的应用管理系统。


最后附上可运行代码链接:https://gitee.com/null_096_1927/demo



















相关文章
|
8月前
|
自然语言处理 API Swift
Qwen1.5开源!魔搭最佳实践来啦!
近几个月来,通义千问团队一直在努力探索如何构建一个“好”的模型,同时优化开发者体验。就在刚刚,中国新年前夕,通义千问团队分享了Qwen开源系列的下一个版本,Qwen1.5。
|
8月前
|
人工智能 PyTorch 算法框架/工具
AI 容器镜像部署 Qwen-VL-Chat
本文将基于阿里云 AMD 服务器和龙蜥 AI 容器服务,快速搭建出个人版视觉 AI 助手服务
|
1月前
|
自然语言处理 前端开发 网络协议
用 Qwen2.5-Coder 开发一个网页应用,完全0基础,已部署上线,代码开源!
利用Qwen2.5-Coder成功开发了一个简洁实用的网页应用,该应用能够在浏览器Tab标题中显示北京时间,并在页面中集成了实时时间显示和番茄时钟功能。通过Qwen2.5-Coder的强大代码生成能力,从零基础开始,仅需简单提示便完成了HTML、CSS和JavaScript的编写。经过几次优化调整,最终实现了美观且功能完善的网页应用,并顺利部署至Vercel平台,满足了作者在全屏模式下查看时间的需求。
用 Qwen2.5-Coder 开发一个网页应用,完全0基础,已部署上线,代码开源!
|
15天前
|
程序员 API 开发者
实战阿里qwen2.5-coder 32B,如何配置Cline的Ollama API接口。
阿里Qwen2.5大模型开源免费,适合编程应用。在Ollama平台下载时,推荐选择带有“cline”字样的Qwen2.5-Coder版本,仅需额外下载适配文件,无需重复下载模型文件。Ollama环境永久免费,配置简单,效果出色,适合开发者使用。
735 77
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
|
29天前
|
人工智能 自然语言处理 算法
Qwen-Coder:通过Qwen 2.5模型实现智能代码生成的技术实践
Qwen-Coder:通过Qwen 2.5模型实现智能代码生成的技术实践
|
1月前
|
前端开发 安全 API
Qwen-coder实现本地 RAG 框架能力Bootstrap
本文介绍了如何利用Qwen-coder在本地实现RAG框架能力提升,解决了企业知识库管理中的数据安全和半结构化文档处理问题。通过Qwen2.5-72b模型和多轮对话推理,成功实现了对包含图表内容的文档的高效预处理,提升了知识库检索的准确性和安全性。
|
2月前
|
数据采集 小程序 API
通义千问Qwen2.5-Coder 全系列来咯!强大、多样、实用
千问团队开源了强大的 Qwen2.5-Coder 系列模型,涵盖 0.5B 到 32B 六种尺寸,旨在推动开放代码模型的发展。该系列模型在代码生成、修复和推理等方面表现出色,支持多种编程语言,并在多个基准测试中达到 SOTA 水平。此外,Qwen2.5-Coder 还提供了丰富的应用场景,如代码助手、Artifacts 和 Interpreter,满足不同开发者的需求。
1394 14
|
6月前
|
人工智能 前端开发 API
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
【7月更文挑战第9天】RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
|
8月前
|
人工智能 算法 开发工具
通义千问Qwen-72B-Chat基于PAI的低代码微调部署实践
本文将以 Qwen-72B-Chat 为例,介绍如何通过PAI平台的快速开始(PAI-QuickStart)部署和微调千问大模型。