Spring AI 聊天记忆
简绍Spring AI 会自动配置一个 bean,您可以直接在应用程序中使用该 bean。默认情况下,它使用内存中的存储库来存储消息 () 和实现来管理对话历史记录。如果已经配置了不同的存储库(例如,Cassandra、JDBC 或 Neo4j),Spring AI 将改用它。
内存类型该抽象允许您实现各种类型的内存以适应不同的用例。内存类型的选择会显着影响应用程序的性能和行为。本节介绍Spring AI提供的内置内存类型及其特点。ChatMemory
消息窗口聊天记忆MessageWindowChatMemory将消息窗口保持到指定的最大大小。当消息数超过最大值时,将删除较旧的消息,同时保留系统消息。默认窗口大小为 20 封邮件。
123MessageWindowChatMemory memory = MessageWindowChatMemory.builder() .maxMessages(10) .build();
这是 Spring AI 用于自动配置 bean 的默认消息类型。ChatMemory
内存存储Spring AI 提供了用于存储聊天内存的抽象。本节描 ...
Java 设计 MCP SSE 配置
简述在开发一个结合了 Server-Sent Events (SSE) 和 Model Context Protocol (MCP) 的Java应用时,目标是构建一个能够实时与AI模型交互并接收更新的系统。这样的系统可以用于多种场景,比如实时数据分析、智能监控或个性化推荐等。下面是一个基于Spring Boot框架的示例,展示了如何使用Java来实现这种类型的集成。
当前 mcp 情况
默认方式
spring支持
stdio
webflux sse
sse
webmvc sse4.2
studio
使用 Cherry studio 作为 ai 引擎配置 mcp 链接 选择 类型为 sse, 地址为spring boot 项目启动地址
问答情况
mcp 服务配置类配置 McpServerConfig
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162package com.mcp;imp ...
Spring AI MCP 客户端
简述Spring AI MCP(模型上下文协议)客户端启动启动器为 Spring Boot 应用程序中的 MCP 客户端功能提供自动配置。它支持具有各种传输选项的同步和异步客户端实现。
MCP 客户端启动器提供:
管理多个客户端实例
自动客户端初始化(如果启用)
支持多个命名传输
与 Spring AI 的工具执行框架集成
适当的生命周期管理,在应用程序上下文关闭时自动清理资源
通过定制器创建可定制的客户端
maven 配置标准 MCP 客户端1234<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-client</artifactId></dependency>
标准启动器通过(进程内)和/或(远程)传输同时连接到一个或多个 MCP 服务器。 SSE 连接使用基于 HttpClient 的传输实现。 与 MCP 服务器的每次连接都会创建一个新的 MCP 客户端 ...
Flutter Provider 使用教程:Consumer_of_watch_read 全解析
简介Provider 最常用场景是 Flutter 状态管理,也广泛用于 React、鸿蒙、.NET 等框架,核心是跨组件共享数据、解耦状态与视图
123456789101112┌───────────────────-─┐│ Provider 架构 │├────────────────-────┤│ ChangeNotifier → 状态数据 + 通知机制││ ↓ ││ Provider → 状态提供 ││ ↓ ││ Consumer → 状态消费/监听 ││ ↓ ││ InheritedWidget → 跨组件树共享状态 │└──────────────────-──┘
添加依赖pubspec.yaml 中添加相关依赖
1234de ...
xinference docker 部署方式
简绍Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。
docker 安装方式配置 gpu 文件支持 docker,在daemon .json 中添加主要配置
123456"runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } }
完整配置
12345678910111213141516171819202122232425262728{ "builder": { "gc": { "defaultKeepStorage&q ...
Spring AI MCP 服务端
简述Spring AI MCP(模型上下文协议)服务器启动启动器提供了在 Spring Boot 应用程序中设置 MCP 服务器的自动配置功能。它支持 MCP 服务器功能与 Spring Boot 的自动配置系统无缝集成。MCP 服务器启动器提供:
MCP 服务器组件的自动配置
支持同步和异步操作模式
多种传输层选项
灵活的工具、资源和提示规范
更改通知功能
配置信息maven 配置MCP STDIO服务器传输。
1234<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-server</artifactId></dependency>
yaml 配置
12345678# Using spring-ai-starter-mcp-serverspring: ai: mcp: server: name: stdio-mcp-server ...
dify docker 部署方式
简绍Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。
docker dify 部署官网地址https://docs.dify.ai/zh-hans/guides/knowledge-base
去官方仓库 将代码 拉下来
1git clone https://github.com/langgenius/dify.git
进入 Dify 源代码的 Docker 目录
1cd dify/docker
复制配置环境
1cp .env.example .env
启动 docker compose 安装容 ...
Flutter 中 JavaScript(JS)与 Dart 双向通信实现方案
基于官方 webview_flutter 插件的通信方式基于官方 webview_flutter 插件的通信方式
在 pubspec.yaml 中添加添加 webview 包 方便后面使用,记得 pub get 更新
1234567dependencies: flutter: sdk: flutter # 移动端 WebView 通信核心依赖 webview_flutter: ^4.4.4 # Web 平台 JS 通信依赖 js: ^0.6.7
配置自己使用的 js 路径地址信息, 该地址位于项目根目录中添加对应 js 文件
12345678910flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true # To add assets t ...
flutter 父子组件互相调用方法,值更新
父组件向子组件传值父传子是最基础的传值方式,核心是子组件定义接收参数的变量,父组件在创建子组件时传入数据。实现步骤
子组件:通过构造函数定义需要接收的参数(推荐用 final 保证不可变);
父组件:创建子组件时,通过构造函数传递数据
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import 'package:flutter/material.dart';// 子组件(接收父组件传递的值)class ChildWidget extends StatelessWidget { // 1. 定义接收的参数(final + 构造函数必填) final String title; final int count; final Color bgColor; // 2. 构造函数(推荐用 required 标记必填参数) const ChildWidget({ super.key, requ ...
Flutter 存储权限:适配主流系统
简述你提供的这套 Flutter 存储权限申请代码和配置,核心逻辑是对的,但缺少关键细节、异常处理、全场景适配(比如 Android 11/12 的特殊逻辑、iOS 细分权限、权限组申请等),我会补充完整的细节,让代码更健壮、适配所有主流系统版本(Android 10-14、iOS 11-17)。
一、补充 pubspec.yaml 依赖(完整)
除了 permission_handler,device_info_plus 是代码中依赖的(判断 Android 版本),需要一起添加,同时指定稳定版本:
123456dependencies: flutter: sdk: flutter permission_handler: ^11.3.1 # 最新稳定版,修复了Android 14适配问题 device_info_plus: ^10.1.0 # 必须添加,用于判断Android SDK版本 path_provider: ^2.1.2 # 可选,配合权限获取文件路径(常用)
添加后执行:
flutter pub get
Android 配 ...
