LLM工具调用服务

一个基于Server-Sent Events的实时通信系统,集成多种LLM模型和工具调用功能,适用于需要实时交互和工具调用的AI应用场景。

  • by nlinhvu
  • Java
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 nlinhvu/llm-sse-mcp-demo-2025

使用说明

具有可观测性的LLM SSE MCP(普罗米修斯/度量、时间/轨迹、洛基/日志、格拉法纳)

该项目演示了使用服务器发送事件(SSE)进行实时通信的LLM客户端和MCP(模型上下文协议)服务器之间的集成。它由三个Spring Boot应用程序组成,展示了OAuth 2.0安全性、各种LLM模型的工具调用功能和安全身份验证服务。

项目结构

1.授权服务器演示(authorization-server-demo)

一个实现OAuth 2.0授权服务器功能的Spring Boot应用程序,提供安全的身份验证和授权服务。

特征:

  • OAuth 2.0授权服务器:发放访问令牌并验证它们

端口: 9000

2.SSE MCP服务器演示(sse-mcp-server-demo)

一个充当MCP服务器的Spring Boot应用程序,通过SSE端点公开数学和日期/时间工具。

特征:

  • 数学工具:加法和乘法运算
  • DateTime工具:当前时间检索和报警设置
  • SSE支持:通过服务器发送事件进行实时通信
  • MCP协议:实现用于工具发现和执行的模型上下文协议

可用工具:

  • sumNumbers(int, int) -将两个数字相加
  • multiplyNumbers(int, int) -将两个数字相乘
  • getCurrentDateTime() -获取用户时区中的当前日期/时间
  • setAlarm(String) -为指定的ISO-8601时间设置警报

端口: 8080(默认)

3.LLM MCP客户端演示(llm-mcp-client-demo)

一个Spring Boot web应用程序,连接到MCP服务器,并提供与多个LLM提供商的交互式聊天界面。

特征:

  • 多种LLM支持:拟人克劳德、OpenAI GPT、谷歌双子座、Ollama
  • 交互式网络聊天:使用Thymeleaf的实时聊天界面
  • MCP集成:连接到SSE MCP服务器进行工具调用
  • 工具发现:自动发现并使用MCP服务器中的可用工具

支持的LLM型号:

  • 人物克劳德:claude-sonnet-4-20250514
  • OpenAI:o4-mini-2025-04-16
  • 谷歌双子座:双生-2.5激光预览-05-20
  • 奥拉马:qwen3:8b(本地)

端口: 10101

先决条件

  • Java 17或更高版本
  • Gradle
  • 云LLM提供程序的API密钥(可选)
  • Ollama本地安装(适用于本地型号)
  • Docker&Docker编写

环境变量

对于LLM客户端,为云提供商设置以下环境变量:

export ANTHROPIC_API_KEY=your_anthropic_key
export OPENAI_API_KEY=your_openai_key
export GOOGLE_PROJECT_ID=your_google_project_id
export GOOGLE_ZONE=your_google_zone

快速开始

1.启动普罗米修斯、天波、洛基、格拉法纳

docker compose up -d

2.启动授权服务器

cd authorization-server-demo
./gradlew bootRun

3.启动MCP服务器

cd sse-mcp-server-demo
./gradlew bootRun

4.启动LLM客户端

cd llm-mcp-client-demo
./gradlew bootRun

5.访问聊天界面

打开浏览器并导航到: http://localhost:10101

6.进入格拉法纳,探索普罗米修斯、天宝、洛基

打开浏览器并导航到: http://localhost:3000

Data sources -> Prometheus -> Explore

Data sources -> Tempo -> Explore

Data sources -> Loki -> Explore

用法

  1. 启动这两项服务 按照上述顺序
  2. 打开web界面 在 http://localhost:9090
  3. 发送消息 需要数学运算或时间查询
  4. 观看LLM 自动发现和使用可用工具

示例查询:

  • “5乘以4加7等于多少?”
  • “现在几点了?”
  • “设置2025-01-01T10:00:00的闹钟”

技术栈

  • 弹簧靴3.x
  • Spring Security OAuth2
  • 春季AI -LLM集成框架
  • 模型上下文协议(MCP) -工具发现和执行
  • 服务器发送事件(SSE) -实时通信
  • 百里香叶 -Web模板
  • Gradle -构建系统

配置

所有应用程序都使用YAML配置文件:

  • 中的授权服务器配置 authorization-server-demo/src/main/resources/application.yml
  • MCP服务器配置 sse-mcp-server-demo/src/main/resources/application.yml
  • LLM客户端配置 llm-mcp-client-demo/src/main/resources/application.yml

发展

该项目展示了:

  • MCP协议实现 使用Spring AI
  • 基于SSE的实时通信
  • 多提供商LLM集成
  • 工具调用和发现
  • 交互式Web界面
  • 使用OAuth2的MCP授权
  • 使用弹簧执行器和千分尺进行观察(OpenTetry、普罗米修斯、Tempo、洛基、格拉法纳)

此演示为构建具有外部工具功能的更复杂的LLM驱动应用程序奠定了基础。