这周我们讨论了系统各模块的开发环境,其中Vue前端、Spring Boot业务后端、FastAPI模型能力层的主要代码部分在开发阶段直接在本地开发、运行,之后我完成了这三部分代码框架的初始化和基础结构搭建,并整理为可供团队使用的代码仓库。

一、整体工程初始化和配置

我在项目根目录下创建了frontend、backend、ai-service这3个目录,分别对应Vue前端、Spring Boot业务后端和FastAPI模型能力层。三端全部在本地运行,通过端口区分服务,前端5173,后端8080,模型服务8000。

在这里插入图片描述

二、Vue前端初始化

在frontend目录下,用Vite初始化Vue3+TypeScript项目,并在此基础上补全了项目的基础目录结构,包括views、components、router、stores、api、utils等。

在前后端通信这一块,我utils目录中封装了一个axios实例,在其中配置了baseURL为后端地址,这样后续所有请求只需要直接调用封装好的request对象,不需要重复拼接地址,后期如果后端部署地址变化,只需要改一处配置。

在这里插入图片描述

在这里插入图片描述

三、Spring Boot业务后端框架初始化

后端部分,我使用IDEA创建Spring Boot项目,然后按照典型的分层结构创建了controller、service、mapper、model、payload、config、utils等包结构。Controller用于提供接口,Service用于实现业务逻辑,Mapper用于数据库操作,这是我们比较熟悉的代码结构。

期间我配置了后端与模型能力层的通信方式,在application.properties中增加了ai-service的base-url配置,并通过@Value注解注入到业务类中,这样后端在调用FastAPI接口时可以统一使用这个地址 。

另外我在config中加入了跨域配置,解决前端直接访问后端接口的问题。

在这里插入图片描述

四、FastAPI模型能力层框架初始化

我使用FastAPI搭建了基础服务结构,主要目录包括api、services和utils等,并在main.py中通过uvicorn启动服务,使得这个Python项目可以像一个独立服务一样运行。

模型能力层要承载的角色LLM调用、ActionParser推理以及RAG流程等后续会在services层实现。

在这里插入图片描述

五、框架上传和环境配置

在初始化过程中遇到的主要问题是三端之间的通信方式和配置统一问题。前端、后端和模型服务分别运行在不同端口,我在三个端分别做了统一配置:前端封装axios baseURL,后端配置ai-service.base-url

三端框架初始化完成后,我将本地内容推送到Gitee仓库上,供团队基于这套框架开始开发。

在这里插入图片描述

不过上传到Gitee仓库的只是代码框架,系统运行环境需要每个人自己配置。Vue前端目录下面有package.json记录项目的依赖,可以直接在frontend执行npm install安装依赖;Spring Boot后端可以根据pom.xml使用Maven加载依赖;FastAPI服务端需要用Python环境运行,我通过pip freeze > requirements.txt导出了环境依赖文件,修改了其中的本机特有配置以满足通用性,其他组员可以在创建、激活环境之后执行pip install -r requirements.txt安装依赖。


这一阶段完成后,前端、后端和模型能力层可以作为独立服务启动,之后需要接着部署一下业务数据库、向量数据库和模型服务。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐