从零开始部署你的第一个机器学习应用:LangChain + 前端实战

预发守门员
2026-05-15 08:00
阅读 1351

大家好,我是一名干了五年后端开发的老兵。这几年,我帮不少团队把 AI 模型从“笔记本上能跑”变成了“线上真能用”。很多新手朋友总以为机器学习部署是科学家的事,其实不然——只要懂点代码、有点耐心,你也能做到。今天这篇教程,就是想用一个真实的小项目,带你亲手把 LangChain 和前端串起来,做出一个能对话的 AI 应用。


为什么需要“部署”?模型不能直接用吗?

你可能在本地用 Jupyter Notebook 跑过 ChatGPT 风格的问答程序,效果很酷。但那只是“玩具”——用户没法访问,也没法和别人分享。

部署,就是把你的模型变成一个网络服务,让任何人通过浏览器(前端)就能使用它。就像微信小程序、网页聊天机器人那样。

LangChain,正是帮你快速搭建这类 AI 应用的“脚手架”。它封装了调用大模型、管理记忆、连接数据库等复杂逻辑,让你专注业务。


环境准备:三步搞定开发环境

💡提示:全程只需 Python 和 Node.js,无需 Docker 或云服务器(本地先跑通!)

第一步:安装 Python(3.9+)

  • Windows/Mac 用户去 python.org 下载安装
  • 安装时勾选 “Add to PATH”

第二步:创建虚拟环境(推荐)

python -m venv ml-deploy-env
source ml-deploy-env/bin/activate  # Mac/Linux
# 或
ml-deploy-env\Scripts\activate     # Windows

第三步:安装关键库

pip install langchain openai fastapi uvicorn python-dotenv
npm install -g create-react-app  # 前端用 React(简单易上手)

⚠️注意:你需要一个 OpenAI API Key,免费账户即可测试。


核心概念三句话讲清楚

  1. LangChain 是什么?
    它不是模型,而是“胶水”——帮你把大模型(如 GPT)、数据源、记忆模块粘在一起。

  2. 前端怎么和 AI 对话?
    前端发 HTTP 请求 → 后端(Python)调用 LangChain → 返回答案 → 前端显示。

  3. 部署的本质是什么?
    把你的 Python 代码变成一个 Web 接口(API),前端通过 fetch 调用它。


实战:做一个“天气助手”聊天机器人

我们来做一个能回答“北京明天天气如何?”的 AI 助手。它会自动联网查天气(用 fake 数据演示),然后给出人性化回答。

步骤一:搭建后端 API(FastAPI + LangChain)

创建文件 main.py

from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI
from pydantic import BaseModel
import os
from dotenv import load_dotenv

load_dotenv()  # 从 .env 文件加载 OPENAI_API_KEY

app = FastAPI()

class QueryRequest(BaseModel):
    question: str

# 模拟天气查询函数(实际可用 requests 调真实 API)
def fake_weather_tool(city: str) -> str:
    return f"根据最新数据,{city}明天晴,25°C。"

@app.post("/ask")
async def ask(query: QueryRequest):
    # 构建提示词:告诉 AI 如何回答
    prompt = ChatPromptTemplate.from_template(
        "用户问:{question}\n"
        "请先调用 weather_tool 获取天气,再组织自然语言回答。\n"
        "weather_tool({city}) 返回:{weather_info}"
    )
    
    city = "北京"  # 简化:默认北京
    weather = fake_weather_tool(city)
    
    # 调用大模型
    model = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    response = model.predict_messages([
        ("human", prompt.format(question=query.question, city=city, weather_info=weather))
    ])
    
    return {"answer": response.content}

同时创建 .env 文件:

OPENAI_API_KEY=你的API密钥

启动后端:

uvicorn main:app --reload

访问 http://localhost:8000/docs 可看到自动生成的 API 文档!


步骤二:搭建前端页面(React)

create-react-app weather-ai-frontend
cd weather-ai-frontend
npm start

编辑 src/App.js

import { useState } from 'react';

function App() {
  const [input, setInput] = useState('');
  const [answer, setAnswer] = useState('');

  const handleSubmit = async (e) => {
    e.preventDefault();
    const res = await fetch('http://localhost:8000/ask', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ question: input })
    });
    const data = await res.json();
    setAnswer(data.answer);
  };

  return (
    <div style={{ padding: '20px', maxWidth: '600px', margin: '0 auto' }}>
      <h1>天气助手</h1>
      <form onSubmit={handleSubmit}>
        <input
          value={input}
          onChange={(e) => setInput(e.target.value)}
          placeholder="比如:北京明天天气怎么样?"
          style={{ width: '70%', padding: '8px' }}
        />
        <button type="submit" style={{ padding: '8px 16px' }}>问AI</button>
      </form>
      {answer && <div style={{ marginTop: '20px', padding: '10px', background: '#f0f0f0' }}>
        {answer}
      </div>}
    </div>
  );
}

export default App;

现在打开 http://localhost:3000,输入问题,就能看到 AI 回答啦!


新手常见问题 & 解决方案

问题 原因 解决办法
CORS error 前端访问后端被浏览器拦截 在 FastAPI 中添加 fastapi.middleware.cors 中间件(见下方代码)
OPENAI_API_KEY not found 环境变量没加载 确保 .env 文件在项目根目录,且已 load_dotenv()
页面卡住无响应 后端没启动或端口不对 检查 uvicorn 是否运行在 8000 端口

解决 CORS 的代码补充(加到 main.py):

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 生产环境应指定具体域名
    allow_methods=["*"],
    allow_headers=["*"],
)

避坑指南:我当初踩过的雷

  1. 不要一上来就搞 Docker
    很多教程直接让你容器化,但对新手极不友好。先本地跑通,再考虑部署到云。

  2. LangChain 版本很重要
    它更新飞快!建议固定版本:pip install langchain==0.1.0(本文基于此版本)

  3. 前端别用复杂的框架
    Vue、Svelte 都行,但 React 生态最成熟,遇到问题 Google 一搜就有答案。

  4. API Key 别提交到 GitHub
    .env 并加入 .gitignore,否则可能被盗刷费用!


下一步学什么?

你现在已经有能力做简单的 AI 应用了。接下来可以:

  1. 替换 fake_weather_tool 为真实天气 API(如 OpenWeatherMap)
  2. 给 LangChain 加上记忆功能,让它记住用户之前的提问
  3. 用 Streamlit 替代前端,快速做内部工具(适合非专业前端)
  4. 部署到 Vercel + Render:前端上 Vercel,后端上 Render,完全免费!

我当初学的时候,也是从这样一个“假天气”项目开始的。别小看它——当你看到自己写的代码真的在网页上和人对话时,那种成就感,比调通十个 SQL 还爽!


总结

今天我们用不到 100 行代码,完成了:

  • 用 LangChain 构建 AI 逻辑
  • 用 FastAPI 暴露接口
  • 用 React 做交互界面

机器学习部署的核心,从来不是算法多高深,而是让技术真正被人用起来。

动手试试吧!遇到问题欢迎留言,我会尽力解答。下次我们聊聊如何把这套东西免费部署上线~

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝