AI 全栈应用开发实战:从前端到 LLM 接入

80 阅读4分钟

在 AI 技术飞速发展的今天,传统的全栈工程师角色正在向“AI 全栈”演进。本文将通过一个完整的示例项目,带你从零搭建一个结合前端展示、后端数据服务与大语言模型(LLM)问答能力的 AI 全栈应用。


一、岗位演变与技能图谱

随着 AI 工具(如 GitHub Copilot、通义灵码等)的普及,开发者角色正发生深刻变化:

岗位核心能力AI 赋能点
前端工程师HTML/CSS/JS、React/VueUI 自动生成、交互逻辑辅助
大前端工程师Node.js、BFF 层开发服务端逻辑快速生成
全栈工程师前后端联调、数据库设计全流程代码生成与调试
AI 应用开发工程师Prompt 工程、API 集成、Agent 设计主导 AI 与业务融合

“全干工程师” :借助 AI 工具,一人可高效完成从前端到部署的全流程开发。


二、项目结构设计

我们采用经典的三层架构,并新增 llm 模块用于对接大模型:

ai-fullstack-app/
├── frontend/          # 前端页面(HTML + Bootstrap)
├── backend/           # 数据接口服务
│   ├── users.json     # 模拟用户数据
│   └── package.json   # 启动 json-server
└── llm/               # LLM 服务(Node.js HTTP 服务)
    ├── server.js      # 接收问题,调用 OpenAI API
    └── .env           # 存放 API Key

三、后端数据服务(Mock API)

使用 json-server 快速搭建 RESTful API,无需写一行后端代码。

1. 安装与配置

cd backend
pnpm i json-server

2. package.json 脚本

{
  "scripts": {
    "dev": "json-server --watch users.json --port 3001"
  },
  "dependencies": {
    "json-server": "1.0.0-beta.3"
  }
}

3. users.json 数据格式

{
  "users": [
    { "id": 1, "username": "曹威威", "hometown": "九江" },
    { "id": 2, "username": "张三", "hometown": "北京" },
    { "id": 3, "username": "里斯", "hometown": "上海" },
    { "id": 4, "username": "王五", "hometown": "广州" }
  ]
}

终端输入npm run dev启动服务器脚本,访问 http://localhost:3001/users 即可获取 JSON 数据。


四、前端页面开发

使用 Bootstrap 构建响应式界面,包含用户列表和 AI 问答表单。

关键代码解析

<div class="container">
  <!-- 用户表格 -->
  <table class="table table-striped" id="user_table">...</table>

  <!-- AI 问答表单 -->
  <form name="aiForm">
    <input type="text" name="question" required placeholder="请输入问题">
    <button type="submit" class="btn btn-primary">提交</button>
  </form>

  <!-- 显示 AI 回答 -->
  <div id="message"></div>
</div>

JavaScript 逻辑

  1. 加载用户数据

    fetch('http://localhost:3001/users')
      .then(res => res.json())
      .then(data => {
        users = data;
        // 渲染表格
      });
    

    fetch是浏览器提供的原生 API,用于发起网络请求(类似 AJAX)。默认发送 GET 请求(除非你传入第二个参数配置 method 等)。

    user是数据存储的后端json文件

    虽然res包含了状态码,响应头,响应体,但json方法自动解析响应体内容返回,只包含了users数据

  2. 提交问题给 LLM 服务

    fetch(`http://localhost:1314/?question=${question}&data=${JSON.stringify(users)}`)
      .then(res => res.json())
      .then(data => {
        document.getElementById('message').innerHTML = data.result;
      });
    

注意:前端需处理跨域(CORS),后端已设置 Access-Control-Allow-Origin: *


五、LLM 服务集成(Node.js)

创建一个轻量级 HTTP 服务,接收前端问题,调用大模型 API 并返回答案。

1. 安装依赖

cd llm
pnpm init -y
pnpm add openai dotenv

2. .env 文件(保密!)

OPENAI_API_KEY=your_api_key_here

建议使用国内代理如 https://api.agicto.cn/v1 加速访问。

3. server.js 核心逻辑

import http from 'http';
import OpenAI from 'openai';
import URL from 'url';
import { config } from 'dotenv';

config({ path: '.env' });

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: 'https://api.agicto.cn/v1', // 可选代理
});

// 调用大模型
const getCompletion = async (prompt) => {
  const result = await client.chat.completions.create({
    model: 'gpt-3.5-turbo',
    messages: [{ role: 'user', content: prompt }],
    temperature: 0.1 // 降低随机性
  });
  return result.choices[0].message.content;
};

// 创建 HTTP 服务
http.createServer(async (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Content-Type', 'application/json');

  const { query } = URL.parse(req.url, true);
  const { question, data } = query;

  // 构造 Prompt:注入上下文数据
  const prompt = `
    你是一个智能助手。以下是用户数据(JSON 格式):
    ${data}

    请根据以上数据,准确回答以下问题:
    ${question}
  `;

  try {
    const result = await getCompletion(prompt);
    res.end(JSON.stringify({ result }));
  } catch (err) {
    res.end(JSON.stringify({ error: err.message }));
  }
}).listen(1314);

console.log('LLM 服务运行于 http://localhost:1314');

六、运行整个应用

  1. 启动数据服务:

    cd backend && pnpm run dev  # 端口 3001
    
  2. 启动 LLM 服务:

    cd llm && node server.js    # 端口 1314
    
  3. 打开 frontend/index.html(可用 Live Server 或直接浏览器打开)

测试示例

  • 输入问题: “谁来自上海?”
  • AI 返回: “里斯来自上海。”

七、扩展方向

  1. 安全增强:对 data 参数做 JSON 校验,防止注入攻击。
  2. 性能优化:缓存常用问题结果,减少 LLM 调用次数。
  3. 多模态支持:接入图像识别、语音输入等能力。
  4. 部署上线:使用 Vercel(前端)、Render(后端)、Docker 容器化。

结语

通过这个项目,你不仅掌握了全栈开发的基本流程,更学会了如何将大语言模型无缝集成到实际应用中。未来,AI 不再是“附加功能”,而是应用的核心驱动力。作为新一代开发者,掌握“AI + 全栈”能力,将成为你的核心竞争力。

提示:实际开发中,请务必保护 API Key,避免泄露;生产环境应使用 HTTPS 和身份验证。


动手试试吧! 用不到 100 行代码,打造属于你的第一个 AI 应用 🚀