跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言AIjava

从后端到前端:AI Agent 跨语言全栈项目实战记录(Java + Python + Vue3)

记录了两个 AI Agent 全栈实战项目:金融信贷平台与助学刷题系统,技术栈涵盖 Java Spring Boot 微服务、Python LangChain/LangGraph 智能体、Vue3 前端,并讨论了跨语言协作、性能优化、多模型集成及部署实践。金融项目通过微调与 RAG 将金融问答准确率从 61% 提升至 88%,查询耗时降低 86%;教育项目集成多模型并实现流式交互,服务 200+ 用户。文章分享了从后端 API 设计到 Agent 工作流封装的前端对接要点。

DataScient发布于 2026/6/300 浏览
从后端到前端:AI Agent 跨语言全栈项目实战记录(Java + Python + Vue3)

刚开始接触 AI Agent 开发时,LangChain 还没现在这么火。为了把 Java 后端、Python 智能体和 Vue3 前端真正串起来,我做了两个项目:一个金融信贷平台,一个助学刷题系统。下面按技术栈拆解一下当时的实现方案。

两大项目核心指标对比:

指标威武金融信贷平台AI 助学刷题系统
技术架构Java 微服务 + Python AgentJava 单体 + 独立 AI Module
AI 准确率提升61% → 88%(金融问答)85%(题目解析)
性能优化查询耗时 ↓86%,响应效率 ↑85%接口响应速度 ↑30%
用户规模内部测试(金融合规要求)200+ 学生
部署方式Docker + K8s(规划中)docker-compose 一键部署

威武金融信贷管理微服务平台 · Agent 全栈开发

项目地址:https://github.com/CelestialVisionary/wwCredit

技术栈

Java 21、Spring Boot 3、Spring Cloud Alibaba、MyBatis-Plus、MySQL、Redis、Nacos、Vue3、TypeScript、Vue Router、Pinia、Python、LangChain、LangGraph、FastAPI、JWT、Maven、RESTful API

这个项目的定位是普惠金融背景的全链路信贷管理,覆盖了用户借款全生命周期和 B 端管理。跨语言全栈架构里,Java 微服务做工程底座,Python Agent 提供智能核,TypeScript 前端负责交互。借款配置、积分、风控、公告管理、智能金融助手这些模块都跑在这套体系上。

后端做了什么

我用 Spring Boot 3 + MyBatis-Plus 搭了核心业务模块,用户管理、积分等级、借款、出借这些常规 CRUD 很快搞定。有个高频查询是用户登录记录 TOP50,之前没优化索引时响应很慢,改用 QueryWrapper 动态条件后,索引一加,效率直接提了 85%。

BorrowInfoMapper 的 Bean 注册踩过坑,默认映射别名对不上,最后手写了多表关联 SQL。原来代码里用循环子查询去拼数据,换成这条 SQL 后,整体查询耗时降了 86%。异常处理这块封装了 RequestHelper 做参数标准化,又定义了 11 类业务异常(比如 BatchSqlGrammarException),全局捕获后统一返回,接口容错和标准化程度明显改善。

微服务层面用 Spring Cloud Alibaba 拆的服务,Nacos 做注册发现和配置中心,Gateway 网关统一路由,Sentinel 控流。跑了一段时间,各服务间调用还算稳定。

// Java 后端调用 Python Agent 的安全封装(Spring Boot)
@Service
public class AiAgentService {
    @Value("${agent.service.url:http://ai-agent:8000/query}")
    private String agentUrl;
    private final RestTemplate restTemplate;

    public AiAgentService(RestTemplateBuilder builder) {
        this.restTemplate = builder.setConnectTimeout(Duration.ofSeconds(2)).setReadTimeout(Duration.ofSeconds(5)).build();
    }

    public String queryFinancialAssistant(String question, Long userId) {
        Map<String, Object> payload = Map.of(
            "question", question,
            "user_id", userId,
            "domain", "finance"
        );
        try {
            ResponseEntity<AgentResponse> response = restTemplate.postForEntity(agentUrl, payload, AgentResponse.class);
            return response.getBody().getAnswer();
        } catch (Exception e) {
            log.warn("AI Agent 调用失败,启用兜底回答", e);
            return "当前智能助手繁忙,请稍后重试或联系客服。";
        }
    }

    public static class AgentResponse {
        private String answer;
        // getter/setter omitted
    }
}

AI Agent 全栈落地

智能体是折腾最久的部分。我单独起了一个 Python 微服务,用 FastAPI 暴露 HTTP 接口,Java 后端通过 RestTemplate 调它。为了防止网络抖动,连接超时设 2 秒,读超时 5 秒,还加了兜底文本。Agent 内部基于 LangChain + LangGraph 实现 ReAct 工作流,总共 7 个核心步骤,专门针对金融场景。模型用 10 万多条高质量金融标注数据微调后,专业问答准确率从 61% 提到 88%。

RAG 这块用 Milvus 向量数据库建了嵌套结构的知识库,文档向量化和混合检索都接进去,召回率到 92%。封装了 12 个金融专属工具,包括资质校验、风险评估、理财推荐,Agent 能自主决定何时调用哪个接口。服务不可用时自动回退兜底,核心功能没断过。

前端及接口安全

前端用 Vue3 + TypeScript + Vite 从头搭,Pinia 管状态,Vue Router 管路由,累计写了 32 个页面、56 个通用组件。Axios 拦截器处理 JWT 自动携带、过期刷新和异常,TypeScript 全链路类型安全,杜绝 any。配合后端联调了借款申请、授信列表、智能金融助手等页面,交互效果符合预期。

接口层面基于 JWT 做无状态认证,前端按角色控制菜单和按钮权限。RESTful API 总共 86 个,Swagger/OpenAPI 3.0 生成文档,Maven 多模块统一构建和依赖管理。日志用 SLF4J + Logback 全链路输出,满足合规审计要求。

AI 助学刷题系统 · Agent 全栈开发

项目地址:https://github.com/CelestialVisionary/studyforge

技术栈

Java 17、Spring Boot 3.0.5、MyBatis Plus 3.5.3.1、MySQL 8.0+、Redis 6.0+、Spring Cache、JWT、Swagger/Knife4j、GPT-3.5-turbo、Kimi AI、阿里云百炼(qwen3-max)、Ollama(mgegemma)、FastAPI、LangChain、LangGraph、PEFT、LoRA、Vue 3、Vite、Element Plus、Axios、Pinia、Vue Router、Docker、docker-compose

这个项目初衷是给同学用,所以架构没整太复杂——Spring Boot 单体搭配独立的 AI Module。围绕知识点检索、智能刷题、错题复盘三个核心流程,小范围服务了 200 多个学生,复习效率提升约 40%。

后端与缓存

后端基于 Spring Boot + MyBatis Plus 做了题库 CRUD、知识标签管理、用户练习记录和错题本等接口,事务用 @Transactional 控制。Redis + Spring Cache 缓存高频知识点和热门排行榜,接口响应速度提了 30%。JWT 做无状态认证,接口文档用 Swagger/Knife4j 自动生成。

AI 功能全栈对接

AI 这边接了多个模型:GPT-3.5、Kimi、阿里云百炼,还有本地跑 Ollama。独立 AI Module 用 FastAPI 暴露接口,LangChain + LangGraph 构建对话流程,支持 PEFT 参数高效微调,LoRA 适配自定义学习数据。所有模型都走标准 OpenAI API 格式,切换很方便。

以下是 LangGraph 里教育场景 ReAct Agent 的核心工作流代码:

# Python: 教育场景 ReAct Agent 工作流(LangGraph 实现)
from langgraph.graph import StateGraph, END
from typing import TypedDict, List

class StudyState(TypedDict):
    question: str
    thought_steps: List[str]
    tool_results: List[dict]
    final_answer: str

def plan(state: StudyState):
    """Step 1: 让 LLM 分步思考"""
    prompt = f"""你是一名资深教师。请分步解答:
    问题:{state['question']}
    要求:1. 判断知识点类别 2. 决定是否需查题库或知识点库"""
    response = llm.invoke(prompt)
    state["thought_steps"].append(response.content)
    return state

def execute_tools(state: StudyState):
    """Step 2: 根据思考结果调用工具"""
    last_step = state["thought_steps"][-1]
    if "知识点" in last_step:
        knowledge = rag_retriever.search(state["question"])
        state["tool_results"].append({"type":"knowledge","content": knowledge})
    elif "题目" in last_step:
        similar_questions = question_db.find_similar(state["question"])
        state["tool_results"].append({"type":"questions","items": similar_questions})
    return state

def generate_answer(state: StudyState):
    """Step 3: 融合工具结果生成教学式回答"""
    context = "\n".join([ item.get("content","") or str(item.get("items","")) for item in state["tool_results"]])
    final_prompt = f"""基于以下教学资料,用通俗易懂的方式回答:
    {context}
    问题:{state['question']}
    要求:分点解释,避免专业术语堆砌"""
    state["final_answer"] = llm.invoke(final_prompt).content
    return state

workflow = StateGraph(StudyState)
workflow.add_node("plan", plan)
workflow.add_node("tools", execute_tools)
workflow.add_node("answer", generate_answer)
workflow.set_entry_point("plan")
workflow.add_edge("plan", "tools")
workflow.add_edge("tools", "answer")
workflow.add_edge("answer", END)
study_agent = workflow.compile()

实时响应用流式输出,前端展示思考过程,体验提升不少。同样也有回退机制,高级模型挂了就切内置模型,服务可用性没掉过线。

前端与部署

前端用 Vue3 + Vite + Element Plus,Pinia 状态管理,核心页面包括知识点检索、智能刷题、错题本、练习统计。智能刷题页面集成 AI 答题按钮,流式结果展示用 EventSource 实现:

<!-- Vue3 + TypeScript: 流式 AI 回答组件 -->
<template>
  <div>
    <div v-html="streamedAnswer"></div>
    <button @click="fetchAIAnswer" :disabled="loading">
      {{ loading ? '思考中...' : '问 AI' }}
    </button>
  </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const streamedAnswer = ref('')
const loading = ref(false)
const fetchAIAnswer = () => {
  const question = '如何求解一元二次方程?'
  streamedAnswer.value = ''
  loading.value = true
  const eventSource = new EventSource(`/api/ai/stream?question=${encodeURIComponent(question)}`)
  eventSource.onmessage = (event) => {
    const data = JSON.parse(event.data)
    if (data.type === 'token') {
      streamedAnswer.value += data.text
    } else if (data.type === 'end') {
      eventSource.close()
      loading.value = false
    }
  }
  eventSource.onerror = () => {
    eventSource.close()
    loading.value = false
    streamedAnswer.value += '\n\n⚠️ 连接中断,请重试。'
  }
}
</script>
<style scoped>
.ai-response { font-family: 'Courier New', monospace; white-space: pre-wrap; }
</style>

部署用 docker-compose 编排了五个服务:后端、前端、AI Module、MySQL、Redis,一键启动。线上跑了 200 多个用户,未出现明显瓶颈。

小结

两个项目走下来,算是把 Java 后端、Python Agent、Vue3 前端这三者协作的路子摸了一遍。如果你的场景不需要极致的服务拆分,单体能先跑起来,验证模型效果和业务闭环后再切微服务,成本更低踩坑也少。跨语言通信的稳定性和调试是长期要留意的点,但整体来说,这套组合应对中小规模 AI 应用够用。

目录

  1. 威武金融信贷管理微服务平台 · Agent 全栈开发
  2. 技术栈
  3. 后端做了什么
  4. AI Agent 全栈落地
  5. 前端及接口安全
  6. AI 助学刷题系统 · Agent 全栈开发
  7. 技术栈
  8. 后端与缓存
  9. AI 功能全栈对接
  10. Python: 教育场景 ReAct Agent 工作流(LangGraph 实现)
  11. 前端与部署
  12. 小结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 2026 算法求职:为什么我劝你深耕多模态大模型
  • 用 MGeo 和 Neo4j 搭建中文地址语义知识图谱
  • Linux 进程控制实战:微型 Shell 命令行解释器实现
  • 上手 Llama 3:推理与 LoRA 微调实践
  • 给 Wan2.2 装个风格插件:LoRA 微调实战指南
  • 2026毕业季:多校公布论文AI率红线与应对指南
  • 2026低代码选型:AI融合下,三个核心维度
  • PyCharm 断点排查 GLM-4.6V-Flash-WEB 脚本错误
  • 2023年网络安全趋势观察:十个绕不开的方向
  • 无人机植物病害检测数据集:1500张标注航拍图像
  • iOS 18.2 上 Flutter WebView 点击失效的来龙去脉
  • 三台 Win11 笔记本跑 VMware Ubuntu 24:网络配置实录
  • 上手 YOLO12 WebUI:浏览器里跑目标检测,不用装环境
  • 花10美元买的“GPT-5”,结果只是个套壳免费模型
  • 10 个 Python 脚本让日常重复活自动跑起来
  • 字节跳动前端面试回顾:一面到三面常见考点与高频题
  • 给 OpenCode 接上 Kimi K2.5:三种方式与一些选择
  • 用 Claude 在 Android Studio 里 10 分钟搭好 WebView 模块
  • 7款国内AI助手横评:豆包、元宝、千问、Kimi、DeepSeek、MiniMax、GLM
  • 2026 大模型落地观察:国产反超、百万上下文与 Agent 工程化实践

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online