Yang's blog Yang's blog
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xiaoyang

编程爱好者
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • SpringCloud

    • 微服务架构介绍
    • SpringCloud介绍
    • Spring Cloud:生产者与消费者
    • Spring Cloud Eureka:构建可靠的服务注册与发现
    • Spring Cloud Ribbon:负载均衡
    • Spring Cloud Fegin:服务调用
    • Spring Cloud Hystrix:熔断器
    • Spring Cloud Zuul:统一网关路由
    • Spring Cloud Config:配置中心
  • Java后端框架

    • LangChain4j

      • 介绍
      • 快速开始
      • Chat and Language Models
      • Chat Memory
      • Model Parameters
      • Response Streaming
      • AI Services
      • Agent
      • Tools (Function Calling)
      • RAG
      • Structured Outputs
      • Classification
      • Embedding (Vector) Stores
      • Image Models
      • Quarkus Integration
      • Spring Boot Integration
      • Kotlin Support
      • Logging
      • Observability
      • Testing and Evaluation
      • Model Context Protocol
        • 创建 MCP 工具提供者
          • 传输方式
          • 使用标准输入/输出(stdio)
          • 使用 HTTP
          • 客户端
          • 工具提供者
          • 绑定工具提供者到 AI 服务
  • 八股文

    • 操作系统
    • JVM介绍
    • Java多线程
    • Java集合框架
    • Java反射
    • JavaIO
    • Mybatis介绍
    • Spring介绍
    • SpringBoot介绍
    • Mysql
    • Redis
    • 数据结构
    • 云计算
    • 设计模式
    • 计算机网络
    • 锁核心类AQS
    • Nginx
  • 前端技术

    • 初识Vue3
    • Vue3数据双向绑定
    • Vue3生命周期
    • Vue-Router 组件
    • Pinia 集中式状态存储
  • 中间件

    • RocketMQ
  • 开发知识

    • 请求参数注解
    • 时间复杂度和空间复杂度
    • JSON序列化与反序列化
    • Timestamp vs Datetime
    • Java开发中必备能力单元测试
    • 正向代理和反向代理
    • 什么是VPN
    • 正则表达式
  • Java
  • Java后端框架
  • LangChain4j
xiaoyang
2025-01-16
目录

Model Context Protocol

# 模型上下文协议

LangChain4j 支持模型上下文协议(MCP),用于与支持 MCP 的服务器通信,这些服务器可以提供并执行工具。关于该协议的一般信息,请参阅 MCP 官方网站 (opens new window)。

该协议定义了两种传输方式,LangChain4j 均提供支持:

  • HTTP:客户端通过 HTTP POST 请求发送命令,并请求一个 SSE 通道来接收来自服务器的事件。
  • stdio:客户端可以将 MCP 服务器作为本地子进程运行,并直接通过标准输入/输出与其通信。

要使聊天模型或 AI 服务运行由 MCP 服务器提供的工具,需要创建一个 MCP 工具提供者实例。

# 创建 MCP 工具提供者

# 传输方式

首先,需要创建一个传输实例。

# 使用标准输入/输出(stdio)

以下示例展示了如何从 NPM 包中启动一个服务器作为子进程:

McpTransport transport = new StdioMcpTransport.Builder()
    .command(List.of("/usr/bin/npm", "exec", "@modelcontextprotocol/server-everything@0.6.2"))
    .logEvents(true) // 如果希望在日志中查看通信流量,请启用此项
    .build();
1
2
3
4

# 使用 HTTP

如果使用 HTTP,需要提供两个 URL:一个用于启动 SSE 通道,另一个用于通过 POST 提交命令:

McpTransport transport = new HttpMcpTransport.Builder()
    .sseUrl("http://localhost:3001/sse")
    .postUrl("http://localhost:3001/message")
    .logRequests(true) // 如果希望在日志中查看请求流量,请启用此项
    .logResponses(true) // 如果希望在日志中查看响应流量,请启用此项
    .build();
1
2
3
4
5
6

# 客户端

通过传输实例创建 MCP 客户端:

McpClient mcpClient = new DefaultMcpClient.Builder()
    .transport(transport)
    .build();
1
2
3

# 工具提供者

最后,通过客户端创建 MCP 工具提供者:

ToolProvider toolProvider = McpToolProvider.builder()
    .mcpClients(List.of(mcpClient))
    .build();
1
2
3

注意,一个 MCP 工具提供者可以同时使用多个客户端。如果使用多个客户端,可以通过 builder.failIfOneServerFails(boolean) 方法指定在从某个服务器检索工具失败时的行为。默认值为 false,表示工具提供者会忽略一个服务器的错误并继续使用其他服务器。如果设置为 true,任何服务器的失败都会导致工具提供者抛出异常。

# 绑定工具提供者到 AI 服务

可以通过 AI 服务构建器的 toolProvider 方法,将工具提供者绑定到 AI 服务:

Bot bot = AiServices.builder(Bot.class)
    .chatLanguageModel(model)
    .toolProvider(toolProvider)
    .build();
1
2
3
4
编辑 (opens new window)
上次更新: 2025/04/01, 01:48:12

← Testing and Evaluation 操作系统→

最近更新
01
操作系统
03-18
02
Nginx
03-17
03
后端服务端主动推送消息的常见方式
03-11
更多文章>
Theme by Vdoing | Copyright © 2023-2025 xiaoyang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式