# chat-ollama **Repository Path**: VictorInfo/chat-ollama ## Basic Information - **Project Name**: chat-ollama - **Description**: 这是一个整合langchain4j与spring ai的chat聊天的demo,并整合RAG - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 158 - **Forks**: 63 - **Created**: 2024-09-20 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: ai **Tags**: 人工智能, SpringAI, langchain4j, ollama, AI ## README # Chat-ollama 项目说明 ## 简介 Chat-ollama 是一个基于 Java 的项目,集成了 Ollama 大模型,用于实现聊天、文档问答 (RAG)、PPT 生成、流式响应等功能。项目包含多个模块,分别对应不同的功能和服务。 ## 项目结构 - **langchain4j**: 提供基于 LangChain4j 的大模型集成,包括聊天记忆、配置等。 - **spring-mcp-server**: 提供 MCP 工具集成,例如获取当前时间等功能。 - **springai**: 提供 Spring AI 相关的聊天、文档问答、PPT 生成等功能。 - **ui**: 包含简单的前端页面,用于展示功能。 ## 依赖 - Java 17+ - Spring Boot - LangChain4j - Spring AI - Ollama 服务 - Redis (用于聊天记忆存储) - Maven 作为构建工具 ## Ollama Ollama 是一个本地大语言模型运行框架,支持如 llama3、mistral 等多种模型。请确保已安装 Ollama 并运行所需模型。 ## 功能说明 - **聊天接口**: 提供普通聊天和流式聊天接口。 - **RAG 文档问答**: 支持上传文档并进行检索增强生成 (RAG) 问答。 - **PPT 生成**: 输入描述,由大模型生成 PPT 内容。 - **MCP 工具**: 集成 MCP 工具,如获取当前时间。 - **聊天历史记录**: 支持带有历史记录的问答,使用 Redis 存储。 ## 如何运行 1. 确保 Ollama 正在运行,并选择所需模型。 2. 修改 `application.yaml` 或 `application.yml` 中的配置,如 Ollama 模型名称、Redis 地址等。 3. 使用 Maven 构建项目:`mvn clean install` 4. 启动项目: - Spring Boot 应用主类为 `SpringaiApplication.java` - LangChain4j 应用主类为 `Langchain4jApplication.java` ## 接口示例 ### 聊天接口 ``` GET /springaiChat/message?message=Hello ``` ### 流式聊天接口 ``` GET /springaiChat/message3?message=Tell me a joke ``` ### 上传文档并问答 (RAG) ``` POST /springaiRag/upload GET /springaiRag/chat?message=文档相关内容 ``` ### 生成 PPT ``` GET /springPpt/createPpt?message=人工智能介绍 ``` ### 获取当前时间 (MCP 工具) ``` GET /springaiChat/testMcp ``` ## 配置说明 - `ollama.model`: 设置默认使用的 Ollama 模型。 - `chat.history.max-size`: 聊天历史记录最大保存数量。 - Redis 相关配置在 `StoreProperties` 中定义。 ## 扩展建议 - 可以扩展 `ToolsService` 来支持更多 MCP 工具。 - 添加其他 Embedding 模型支持,替换 `OllamaEmbeddingModel`。 - 使用数据库替换 `InMemoryChatMemoryStore`,如 RedisChatMemoryStore。 ## 注意事项 - 确保 Ollama 服务正常运行。 - 文件上传功能需确保临时文件路径可写。 - 前端页面需引入 Vue、Tailwind CSS、Marked.js 等依赖。 ## 前端界面 - 使用 `WebFlux.html` 展示聊天界面,支持暗色/亮色模式切换。 ## 许可证 请查看仓库根目录的 LICENSE 文件。