项目简介

'llmvectorapi4j' 是一个用Java编写的、利用Java向量API实现大语言模型(LLM)推理的框架。它扩展了'llama3.java'项目,增加了内部HTTP服务器以处理类似OpenAI的请求,支持KV缓存存储,并能显示注意力机制。更重要的是,它包含一个MCP(Model Context Protocol)服务器的初步实现,允许LLM通过标准化协议调用外部Java功能。

主要功能点

  • 高性能LLM推理: 利用Java Vector API优化LLM推理速度,支持多种GGUF格式模型,如DeepSeek、Llama-3、Phi-3、Qwen-2.5和Qwen3。
  • OpenAI兼容接口: 提供内部HTTP服务器,可响应OpenAI风格的API请求。
  • MCP工具服务: 实现一个Model Context Protocol (MCP) 服务器,允许LLM客户端通过JSON-RPC协议发现、注册并调用预定义的Java工具。
  • 注意力机制可视化: 可选地显示模型在推理过程中对不同tokens的关注程度,帮助用户理解模型决策。
  • KV缓存管理: 支持将模型状态的Key-Value(KV)缓存存储到文件,以加速后续的推理会话。

安装步骤

  1. Java环境准备: 确保您的系统安装了Java 21或更高版本,因为项目利用了Java 21的预览特性和向量API。
  2. 获取项目代码: 从GitHub克隆仓库到本地:
    git clone https://github.com/srogmann/llmvectorapi4j.git
    cd llmvectorapi4j
  3. 构建项目: 在项目根目录下,使用Maven(假定已安装Maven,或使用Maven Wrapper './mvnw')构建项目:
    ./mvnw clean install
    这将在 'target/' 目录下生成可执行的JAR包。

服务器配置 (MCP服务器)

MCP客户端需要配置MCP服务器的连接信息。以下是MCP服务器的配置示例(JSON格式),以及参数注释,方便MCP客户端集成:

{
  "server_name": "llmvectorapi4j-mcp-tool-server",
  "command": "java",
  "args": [
    "--enable-preview",
    "--add-modules",
    "jdk.incubator.vector",
    "-cp",
    "target/llmvectorapi4j-0.1.0-SNAPSHOT.jar",
    "org.rogmann.llmva4j.mcp.McpHttpServer",
    "127.0.0.1",
    "8081"
  ],
  "description": "一个基于llmvectorapi4j的本地MCP工具服务器,用于集成自定义Java功能。",
  "params_description": {
    "args[0]-args[2]": "Java虚拟机参数,启用预览特性和向量API模块。",
    "args[3]": "Java类路径参数,指向项目构建后的JAR文件。",
    "args[4]": "要运行的MCP服务器主类。",
    "args[5]": "MCP服务器将监听的IP地址,默认为127.0.0.1(本地回环地址)。",
    "args[6]": "MCP服务器将监听的端口号,默认为8081。"
  }
}

配置说明:

  • 'server_name': 给MCP服务器起一个易于识别的名称。
  • 'command': 启动MCP服务器的可执行命令,这里是'java'。
  • 'args': 启动Java应用程序所需的参数列表。这些参数会按顺序传递给'java'命令。
  • 'description': 对MCP服务器功能的简要描述。
  • 'params_description': 对'args'列表中特定索引处参数的详细说明,帮助MCP客户端的用户理解和配置。

基本使用方法

启动MCP服务器: 在项目根目录下,使用终端执行以下命令来启动MCP工具服务器:

java --enable-preview --add-modules jdk.incubator.vector -cp target/llmvectorapi4j-0.1.0-SNAPSHOT.jar org.rogmann.llmva4j.mcp.McpHttpServer 127.0.0.1 8081

命令执行后,MCP服务器将在 '127.0.0.1' 地址的 '8081' 端口开始监听传入的MCP请求。

集成自定义MCP工具: 如果您希望扩展此MCP服务器的功能,并添加自己的Java工具供LLM调用:

  1. 创建一个Java类,实现 'org.rogmann.llmva4j.mcp.McpToolImplementations' 接口。这个接口定义了如何提供MCP工具的具体实现。
  2. 在您的Java项目的 'src/main/resources/META-INF/services/' 目录下,创建一个名为 'org.rogmann.llmva4j.mcp.McpToolImplementations' 的文件。
  3. 在该文件中,写入您实现的 'McpToolImplementations' 类的完整限定名(例如 'com.example.MyToolSupplier')。
  4. 重新构建 'llmvectorapi4j' 项目,并按照上述步骤重新启动MCP服务器。您的自定义工具将被Java的 'ServiceLoader' 机制自动发现,并通过MCP协议向LLM客户端提供。

信息

分类

AI与计算