项目简介
'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)缓存存储到文件,以加速后续的推理会话。
安装步骤
- Java环境准备: 确保您的系统安装了Java 21或更高版本,因为项目利用了Java 21的预览特性和向量API。
- 获取项目代码: 从GitHub克隆仓库到本地:
git clone https://github.com/srogmann/llmvectorapi4j.git cd llmvectorapi4j - 构建项目: 在项目根目录下,使用Maven(假定已安装Maven,或使用Maven Wrapper './mvnw')构建项目:
这将在 'target/' 目录下生成可执行的JAR包。./mvnw clean install
服务器配置 (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调用:
- 创建一个Java类,实现 'org.rogmann.llmva4j.mcp.McpToolImplementations' 接口。这个接口定义了如何提供MCP工具的具体实现。
- 在您的Java项目的 'src/main/resources/META-INF/services/' 目录下,创建一个名为 'org.rogmann.llmva4j.mcp.McpToolImplementations' 的文件。
- 在该文件中,写入您实现的 'McpToolImplementations' 类的完整限定名(例如 'com.example.MyToolSupplier')。
- 重新构建 'llmvectorapi4j' 项目,并按照上述步骤重新启动MCP服务器。您的自定义工具将被Java的 'ServiceLoader' 机制自动发现,并通过MCP协议向LLM客户端提供。
信息
分类
AI与计算