我用 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 SOLO | 10 分钟 |
| AI 接入开发 | LangChain4J | 30 分钟 |
| 前端问答页面 | Vue3 | 30 分钟 |
| 一键部署上线 | Docker | 15 分钟 |
📣 最后
如果你是 Java 开发者,想搞 AI 项目,不妨试试:
- LangChain4J:让你用 Java 写出 AI 应用
- TRAE SOLO:让你开发不再掉进“结构陷阱”
- 从小项目开始练手,一步一步掌握 AI 能力