news 2026/9/14 11:37:12

QuickBot 多剧本对话应用前端:基于 Angular 15 的生成式 AI 聊天界面开发与工程化指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QuickBot 多剧本对话应用前端:基于 Angular 15 的生成式 AI 聊天界面开发与工程化指南

QuickBot 多剧本对话应用前端:基于 Angular 15 的生成式 AI 聊天界面开发与工程化指南

【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai

本指南以 conversational-app-multi-playbook/frontend/README.md 为核心,系统讲解 QuickBot 多剧本对话应用前端工程(Angular 15 + TypeScript)的本地开发、代码脚手架、构建、测试与代码规范落地方法。文中将结合仓库内真实源码与配置,说明该前端如何对接后端 FastAPI 服务与 Vertex AI Conversation Agent,帮助读者掌握一套可直接复用的 AI 聊天前端开发与质量保障实践。

一、项目背景:QuickBot 前端在整体架构中的位置

QuickBot 是一个基于 Google Cloud 的对话式应用模板:后端使用自定义 Cloud Function 提供 RAG(检索增强生成)能力,并与 Google Cloud Agent Builder(Vertex AI Conversation)协同,跨多个可配置 playbook(剧本)管理对话流程。其整体结构见 项目根 README,包含:

  • backend/:Python 后端(FastAPI/Uvicorn),负责对话路由与 Agent 交互;
  • frontend/:TypeScript 前端(Angular),即本文主体;
  • functions/:Google Cloud Functions 源码(如create-intent);
  • docker-compose.yml:一键编排前后端服务的容器配置。

前端由 Angular CLI:Angular 15.x 全家桶、Angular Material、Angular Flex-Layout、ngx-markdown(渲染对话中的 Markdown)、marked、prismjs(代码高亮)、clipboard(复制代码)、Firebase 认证集成以及 Ionic 组件库。

二、环境准备与依赖安装

在进入具体命令之前,先确认本机具备以下环境(依据项目根 README 的前置条件):

  • Node.js 与 npm(或 yarn):Angular CLI 15 需 Node.js 版本与 npm 配合使用;
  • Python 3.x:后端开发(非 Docker 方式)时使用;
  • Docker 与 Docker Compose v2:容器化部署(可通过docker compose version验证版本);
  • Google Cloud SDK(gcloud CLI):用于认证与云服务交互。

安装前端依赖(在frontend/目录下):

cd frontend npm install

该工程的package.json中定义了postinstall: "ngcc"钩子,npm install完成时会自动执行 Angular 的兼容性编译(ngcc),因此安装后即可直接启动开发服务器,无需额外手工步骤。

三、开发服务器:ng serve

frontend/目录下运行:

ng serve
  • 开发服务器默认地址为http://localhost:4200/
  • 修改任何源文件后应用会自动热重载(live reload);
  • 若使用代理或需指定端口,可用ng serve --port <port>等参数。

package.json中对应的快捷命令为:

"start": "ng serve"

所以也可直接运行npm start

工程中配置了src/environments/environment.ts,其中backendURL: 'http://localhost:8080/api'指向本机后端 API 根路径,chatbotName: 'My New Agent'等字段用于界面展示。启动前端前请确保后端(uvicorn main:app --reload --port 8080,参见 根 README)已运行,或按需修改此环境文件。

四、代码脚手架:ng generate

使用 Angular CLI 生成新代码:

ng generate component component-name

也可以生成其他类型:

ng generate directive|pipe|service|class|guard|interface|enum|module

本仓库src/app/下的模块组织即是很好的脚手架范例(见 src/app 目录结构):

  • components/:按elements/footer/header/login/main/chat/chatbar/manage-intent/shared/等拆分 UI 组件,每个组件均含.ts/.html/.scss/.spec.ts四件套;
  • dialogue-box/:对话气泡展示组件;
  • models/:TypeScript 数据模型(chat.model.tsmessegeType.model.ts);
  • services/:业务服务层,如chat.service.tsintent.service.tsspeech-to-text.ts等。

这种“组件四件套 + 模型 + 服务”的规范组织,便于团队并行开发与后续维护,建议新生成的组件遵循同样的目录约定。

五、构建:ng build

运行:

ng build

构建产物默认输出到dist/目录(本工程为dist/quick-bot-app-frontend,见 angular.json 中outputPath配置)。

工程在 package.json 中预置了多套构建脚本:

"build:prod": "ng build --configuration production --aot --output-hashing=all", "build:dev": "ng build --configuration development", "build:staging": "ng build --configuration staging", "build": "ng build", "watch": "ng build --watch --configuration development"

其中production配置(angular.jsonconfigurations.production)默认开启 AOT 编译、outputHashing: all,并设置资源体积预算(initial 警告 4mb / 报错 10mb,任意组件样式警告 20kb / 报错 50kb);development配置则关闭优化、开启 sourceMap 与 namedChunks,便于调试。

该前端还内置了生产构建后的静态服务能力:Dockerfile 采用两阶段构建——先在node:18.17.1中执行npm cinpm run build:prod,再将产物复制进nginx:alpine,配合 nginx.conf 中try_files $uri $uri/ /index.html的 SPA 回退配置,监听 8080 端口对外提供服务。

六、单元测试:ng test

运行:

ng test

单元测试通过 Karma 执行(angular.jsontestbuilder 为@angular-devkit/build-angular:karma,配 Jasmine + Karma 全家桶:karma-chrome-launcherkarma-coveragekarma-jasminekarma-jasmine-html-reporter)。工程在package.json中把测试与质量检查串成流水线:

"pretest": "npm run compile", "test": "ng test", "posttest": "npm run lint"

即每次测试前先执行tsc编译,测试后自动执行 lint 检查。仓库内所有组件与服务都配套了*.spec.ts测试文件,例如 chat.service.spec.ts、auth.guard.spec.ts 等,可作为编写新测试时的参考。

七、端到端测试:ng e2e

运行:

ng e2e

端到端测试通过你选择的平台执行(如 Cypress 等)。在使用此命令之前,你需要先添加一个实现了端到端测试能力的 npm 包(当前工程的package.json未内置 e2e runner,Angular CLI 默认不再捆绑 Protractor,因此需要按提示自行接入)。

八、进一步帮助:ng help

如需查看 Angular CLI 的全部命令与参数:

ng help

或查阅 Angular CLI 官方 Overview 与 Command Reference 文档。

九、代码规范与提交约定(Code Styling & Commit Guidelines)

为保证代码质量与一致性,工程制定了如下规范(与根 README 保持一致):

  • TypeScript(前端):遵循 Angular 编码风格指南,借助 Google 的 TypeScript 风格指南工具gts(Google TypeScript Style),内置格式化、lint 与自动修复能力;
  • Python(后端):遵循 Google Python 风格指南,使用pylintblack做 lint 与格式化;
  • 提交信息:建议遵循 Angular 的 Commit Message Guidelines,写出清晰、可描述性的提交信息。

9.1 前端:TypeScript 使用gts

gts已作为 devDependency 引入("gts": "^5.3.1"),并在 package.json 中注册了lintfixcleancompile等脚本。

步骤 1:初始化gts(若工程中尚未配置)

frontend/目录下运行:

npx gts init

它会完成gts的初始化并生成必要的配置文件(如tsconfig.json)。务必确保tsconfig.json(或相关的gts配置文件如.gtsrc)包含对gts默认配置的扩展,典型写法为:

{ "extends": "./node_modules/gts/tsconfig-google.json" }

仓库的 tsconfig.json 正是采用此写法,并在此基础上开启了strictTemplatesstrictInjectionParameters等 Angular 严格模板检查,以及noImplicitOverridenoPropertyAccessFromIndexSignature等 TypeScript 严格选项。

步骤 2:检查 lint 问题

npm run lint

gts lintpackage.json"lint": "gts lint")。

步骤 3:自动修复 lint 问题

npm run fix

gts fix,可自动修复大部分可机械修正的风格问题。

9.2 后端:Python 使用pylintblack

步骤 1:安装依赖

backend/requirements.txt中追加:

pylint black

然后在虚拟环境中安装:

pip install pylint black # 或 pip install -r requirements.txt

步骤 2:配置pylint

建议在backend/目录放置.pylintrc以配置规则,可通过生成标准配置后按需修改:

pylint --generate-rcfile > .pylintrc

步骤 3:用pylint检查

backend/目录下运行:

pylint . # 或指定模块:pylint your_module_name

步骤 4:用black格式化

python -m black . --line-length=80

即对当前目录及子目录下所有 Python 文件按 Google Python Style 风格、行宽 80 进行自动格式化。

十、源码级细节:前端如何与 AI 后端交互

为便于读者理解前端工程的实战价值,这里补充几处可直接验证的源码要点(均来自本仓库):

  • 对话请求ChatService.postChat()在发送前会执行query.replace(/\s+/g, ' ').trim()清洗用户输入,然后 POST 到${environment.backendURL}/chats,请求体为{text: query}(见 chat.service.ts);
  • 语音输入SpeechToTextService.transcribeAudio()将录音 Blob 以audio.wav字段封装为FormData,POST 到${environment.backendURL}/audio_chat实现语音转文字(见 speech-to-text.ts);
  • 意图管理manage-intent/模块提供了多剧本场景下的意图创建/编辑界面(create-intent-formintent-form组件),对应functions/create-intent云函数,用于动态扩展对话剧本;
  • Markdown 渲染与代码高亮:构建配置中注入了marked.min.jsprism.jsprism-csharpprism-css语言组件与clipboard.min.js(见 angular.json 的scripts数组),使 AI 返回的 Markdown 与代码块能在对话气泡中友好呈现并一键复制;
  • 会话与登录services/login/auth.service.tsauth.guard.ts)与services/user/session.service.ts)负责认证与会话管理,environment.ts中的requiredLogin字段可控制是否需要登录。

这些实现共同构成了“输入清洗 → 后端 /chats 或 /audio_chat → 多剧本 Agent 路由 → RAG 检索生成 → Markdown 渲染展示”的完整链路,与 项目根 README 描述的架构一一对应。

十一、容器化运行方式(前端视角)

若想以最快方式体验完整应用,可使用项目根目录的 docker-compose.yml:

# 首次部署自动创建 Agent 与示例 playbook docker compose build --build-arg IS_FIRST_DEPLOYMENT="True" docker compose up
  • 前端容器将宿主机4200端口映射到容器内8080(nginx 服务端口),访问http://localhost:4200即可;
  • 前端环境变量通过src/environments/environment.ts修改(compose 文件中注释也指明“To change the env variables in the frontend, change the environment.ts file”);
  • 前端目录以 volume 挂载,且使用匿名卷隔离node_modules,避免宿主机 node_modules 干扰镜像构建。

若需修改前端环境配置(如后端地址、机器人名称、是否要求登录),编辑 environment.ts 后按需重新构建即可。

十二、小结

本文完整继承了 frontend/README.md 的全部操作要点(开发服务器、脚手架、构建、单元/端到端测试、gtspylint/black代码规范),并结合仓库源码补充了环境配置、多环境构建脚本、容器化部署、SPA 回退配置与前后端交互链路等纵深细节。按此流程,读者可以快速在本地启动 QuickBot 前端、规范地扩展新组件,并将工程质量控制(lint、单测、格式化)无缝纳入日常开发。

【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 11:31:39

构建 kt-kernel 时 CMake 报 “CUDA compiler not found“ 怎么修复?

构建 kt-kernel 时 CMake 报 "CUDA compiler not found" 怎么修复&#xff1f; 【免费下载链接】ktransformers A Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations 项目地址: https://gitcode.com/GitHub_Trending/ktr/…

作者头像 李华
网站建设 2026/9/14 11:28:41

SpringBoot酒店预约系统开发实战与优化

1. 项目概述&#xff1a;SpringBoot酒店预约系统开发实录 去年接手的一个酒店管理系统项目让我对SpringBoot在实际业务中的应用有了全新认识。这个基于SpringBoot 2.7的酒店预约系统&#xff0c;从需求分析到上线部署共耗时三个月&#xff0c;期间踩过的坑和积累的经验值得系统…

作者头像 李华