基于 LangChain4j 构建智能 AI 助手:从零到一的实战指南

基于 LangChain4j 构建智能 AI 助手:从零到一的实战指南

前言

在人工智能快速发展的今天,构建一个功能强大的 AI 助手已经不再是遥不可及的梦想。本文将通过一个实际的 Java 项目,详细介绍如何使用 LangChain4j 框架构建一个具备工具调用能力的智能 AI 助手。

项目概述

本项目是一个基于 LangChain4j 的 AI 对话应用,主要特点包括:

  • 🤖 流式对话:支持实时流式响应,提供更好的用户体验
  • 🛠️ 工具集成:通过 MCP (Model Context Protocol) 集成外部工具
  • 💭 思考过程:支持显示 AI 的思考过程
  • 🔄 异步处理:采用 CompletableFuture 进行异步响应处理
  • 📝 记忆管理:内置对话历史记忆功能

核心架构解析

1. 主应用类 - AiTool.java

这是整个应用的核心入口,负责初始化 AI 模型、工具提供者和用户交互逻辑。

关键组件初始化
// 创建流式模型
StreamingChatModel model = OpenAiStreamingChatModel.builder()
    .baseUrl("https://api.siliconflow.cn")
    .apiKey("xxxxxxxxxxxx")
    .modelName("Qwen/Qwen3-8B")
    .temperature(0.01)
    .logRequests(true)
    .logResponses(true)
    .timeout(Duration.ofSeconds(3000))
    .maxTokens(50000)
    .returnThinking(true)
    .build();

技术亮点:

  • 使用 SiliconFlow API 作为模型提供商
  • 配置了 Qwen3-8B 模型,具备强大的中文理解能力
  • 启用思考模式 (returnThinking(true)),可以观察 AI 的推理过程
  • 设置较低的温度值 (0.01) 确保回答的一致性和准确性
MCP 工具集成
// 创建mcp工具
McpClient mcpClient = LangChain4jUtils.createMcpClient(
    List.of("D:\\vfox\\nodejs\\current\\npx.cmd", "-y", "howtocook-mcp")
);

McpToolProvider toolProvider = McpToolProvider.builder()
    .mcpClients(mcpClient)
    .build();

技术特色:

  • 集成了 howtocook-mcp 工具,为 AI 提供烹饪相关的知识和功能
  • 通过 MCP 协议实现工具的标准化接入
  • 支持动态工具调用和结果处理
流式响应处理
tokenStream
    .onPartialResponse(partialResponse -> System.out.print(partialResponse))
    .onPartialThinking(partialThinking -> System.out.println("[思考中] " + partialThinking))
    .onRetrieved(contents -> System.out.println("[检索到内容] " + contents))
    .beforeToolExecution(beforeToolExecution -> System.out.println("【工具请求参数】" + beforeToolExecution))
    .onToolExecuted(toolExecution -> System.out.println("【工具请求结果】" + toolExecution))
    .onCompleteResponse(response -> {
        futureResponse.complete(response);
        System.out.println("\n--- 回复结束 ---");
    })
    .start();

设计优势:

  • 实时反馈:用户可以实时看到 AI 的回复过程
  • 透明化:显示思考过程、工具调用参数和结果
  • 异步处理:使用 CompletableFuture 确保主线程不被阻塞
  • 错误处理:完善的异常捕获和处理机制

2. 工具类 - LangChain4jUtils.java

这是一个专门用于创建和管理 MCP 客户端的工具类,体现了良好的代码组织和复用性。

核心功能
public static McpClient createMcpClient(List<String> command, String key){
    McpTransport transport = new StdioMcpTransport.Builder()
        .command(command)
        .logEvents(true)
        .build();
    
    if (key == null) {
        return new DefaultMcpClient.Builder()
            .transport(transport)
            .build();
    }
    return new DefaultMcpClient.Builder()
        .key(key)
        .transport(transport)
        .build();
}

PixPin_2025-10-24_14-42-29.png

相关资源