我用 TRAE SOLO + LangChain4J 从零构建一个 Java 智能问答系统

152 阅读4分钟

我用 TRAE SOLO + LangChain4J 从零构建一个 Java 智能问答系统

🧠 作者:天天摸鱼的java工程师
🚀 标签:LangChain4J、TRAE SOLO、AI问答、Spring Boot、全栈实践


🧠 为什么我决定搞一个“Java 智能问答系统”?

作为一名有 8 年经验的 Java 后端开发,我一直对 AI 很感兴趣,但总觉得:

“AI 太遥远,像是 Python 工程师的专属领域。”

直到我偶然发现了两个让我眼前一亮的项目:

  • LangChain4J:LangChain 的 Java 实现,专为 Java 开发者设计的 LLM 接入框架
  • TRAE SOLO:一个能帮开发者快速组织项目结构、生成代码、理清开发任务的开发助手

于是我产生了一个想法:

“能不能用我最熟悉的 Java,把 AI 问答系统从零构建出来?”

目标明确:不用 Python,也不用复杂的 prompt 编排,只用 Java + LangChain4J + TRAE SOLO,构建一个轻量级的问答服务。


🎯 项目目标

构建一个基于 Spring Boot 的 Java Web 服务,具备如下能力:

  • 用户通过页面输入问题
  • 后端调用 LangChain4J 接入大模型(OpenAI or 阿里通义)
  • 返回自然语言回答
  • 支持简单的上下文记忆能力
  • 最终支持 Docker 部署

🧰 技术栈选型

模块技术方案
开发框架Spring Boot 3.x
AI 接入LangChain4J
前端界面Vue(简单输入框+展示)
项目管理Maven
工程辅助TRAE SOLO
部署方式Docker + docker-compose

🧩 第一步:用 TRAE SOLO 构建基础项目骨架

我先在 TRAE SOLO 中创建一个新项目卡片:

项目名称:Java智能问答系统

任务拆解:
1. 创建 Spring Boot 项目,暴露 /ask 接口
2. 集成 LangChain4J,调用 OpenAI 接口
3. 添加简单的上下文支持
4. 构建前端输入框,展示问答记录
5. Docker 一键部署

TRAE SOLO 帮我生成了如下结构:

src/
├── controller/AskController.java
├── service/LangChainService.java
├── config/OpenAIConfig.java
└── model/AskRequest.java

不仅结构清晰,还带了注释和接口文档说明,开发效率直接起飞。


🧠 第二步:集成 LangChain4J,调用大模型

LangChain4J 的配置非常 Java 风格,简洁优雅。

✅ 添加依赖(Maven)

<dependency>
  <groupId>dev.langchain4j</groupId>
  <artifactId>langchain4j-openai</artifactId>
  <version>0.28.0</version>
</dependency>

✅ 配置 OpenAI Key

openai:
  api-key: sk-xxx

✅ 编写调用逻辑

@Service
public class LangChainService {

    private final OpenAiChatModel chatModel;

    public LangChainService(@Value("${openai.api-key}") String apiKey) {
        this.chatModel = OpenAiChatModel.builder()
            .apiKey(apiKey)
            .modelName("gpt-3.5-turbo")
            .temperature(0.7)
            .build();
    }

    public String ask(String question) {
        return chatModel.generate(question);
    }
}

🚀 第一次调用就成功返回回答,LangChain4J 的封装真心舒服!


🌐 第三步:暴露 REST 接口

@RestController
@RequestMapping("/api")
public class AskController {

    @Autowired
    private LangChainService langChainService;

    @PostMapping("/ask")
    public ResponseEntity<String> ask(@RequestBody AskRequest request) {
        return ResponseEntity.ok(langChainService.ask(request.getQuestion()));
    }
}

前端通过 /api/ask 提交问题,后端返回回答,接口通畅无阻。


💬 第四步:前端构建问答页面(Vue + Tailwind)

我用 TRAE SOLO 生成了一个 Vue 前端页面,支持:

  • 输入问题
  • 展示历史问答
  • 滚动到底部自动聚焦
<template>
  <div class="p-6 max-w-2xl mx-auto">
    <div v-for="(item, index) in history" :key="index">
      <p class="font-semibold text-blue-600">Q: {{ item.q }}</p>
      <p class="mb-4">A: {{ item.a }}</p>
    </div>
    <input v-model="question" @keydown.enter="submit" placeholder="请输入问题..." class="border p-2 w-full" />
  </div>
</template>
const submit = async () => {
  const res = await fetch('/api/ask', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ question }),
  });
  const answer = await res.text();
  history.push({ q: question, a: answer });
  question = '';
};

🐳 第五步:Docker 一键部署(含挂载 API KEY)

✅ 后端 Dockerfile

FROM openjdk:17
COPY target/ask-ai.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

✅ docker-compose.yml

version: '3.8'
services:
  backend:
    build: ./backend
    ports:
      - "8080:8080"
    environment:
      - OPENAI_API_KEY=sk-xxx
  frontend:
    build: ./frontend
    ports:
      - "80:80"

✅ 最终效果展示

  • 🌐 输入任意问题,比如:“Java 中的 Stream 有哪些常用操作?”
  • 🤖 系统返回自然语义回答
  • 📜 支持多轮问答记录
  • 🐳 可部署到服务器,支持公网访问

🧠 我的收获:AI 应用开发,Java 也能很优雅

这次项目让我真正体会到:

  • LangChain4J 不只是“Java 接口”,它是一个为 Java 生态量身定制的 AI 框架
  • TRAE SOLO 真的提升了我在日常开发中的组织力,结构清晰、代码规范、省去了大量重复劳动
  • Java 开发者,完全可以高效进入 AI 应用开发的世界

✅ 总结:从构想到上线,Java 开发者也能玩转 AI

模块工具所用时间
项目结构构建TRAE SOLO10 分钟
AI 接入开发LangChain4J30 分钟
前端问答页面Vue330 分钟
一键部署上线Docker15 分钟

📣 最后

如果你是 Java 开发者,想搞 AI 项目,不妨试试:

  1. LangChain4J:让你用 Java 写出 AI 应用
  2. TRAE SOLO:让你开发不再掉进“结构陷阱”
  3. 从小项目开始练手,一步一步掌握 AI 能力