【自动思考记忆系统】demo (Java版)

article/2025/6/10 15:25:38

背景:看了《人工智能》中的一段文章,于是有了想法。想从另一种观点(⭕️)出发,尝试编码,告别传统程序员一段代码解决一个问题的方式。下图是文章原文和我的思考涂鸦✍️,于是想写一个自动思考记忆系统。
最初的思路::
【大数据集】 流到 【知识集】 使用 【工具集】 得到 【新知识集】 改造【工具集】
在这里插入图片描述
以下是"自动思考与记忆模型"的设计思路和Java实现代码。该模型模拟了大数据经过工具处理生成知识,并能持续改造知识的过程。

设计思路

使用
改造
存储
提供历史
大数据集
思考引擎
工具集
新知识集
记忆系统

核心组件

  1. 大数据集(DataSet):原始输入数据
  2. 知识集(KnowledgeSet):结构化知识存储
  3. 工具集(ToolSet):可扩展的处理工具
  4. 思考引擎(ThinkingEngine):协调处理流程
  5. 记忆系统(MemorySystem):存储历史知识

Java实现代码

import java.util.*;
import java.util.concurrent.atomic.AtomicLong;// 数据集基类
abstract class DataSet {protected String source;public DataSet(String source) {this.source = source;}public abstract String getContent();
}// 知识表示
class Knowledge {private static final AtomicLong idCounter = new AtomicLong(0);private final long id;private final String content;private final String source;private final long timestamp;public Knowledge(String content, String source) {this.id = idCounter.getAndIncrement();this.content = content;this.source = source;this.timestamp = System.currentTimeMillis();}// Getterspublic long getId() { return id; }public String getContent() { return content; }public String getSource() { return source; }public long getTimestamp() { return timestamp; }@Overridepublic String toString() {return String.format("Knowledge#%d [%tF %<tT]: %s", id, new Date(timestamp), content);}
}// 知识集合
class KnowledgeSet {private final Map<Long, Knowledge> knowledgeMap = new HashMap<>();public void addKnowledge(Knowledge knowledge) {knowledgeMap.put(knowledge.getId(), knowledge);}public void merge(KnowledgeSet other) {knowledgeMap.putAll(other.knowledgeMap);}public List<Knowledge> getAllKnowledge() {return new ArrayList<>(knowledgeMap.values());}public int size() {return knowledgeMap.size();}
}// 工具接口
interface KnowledgeTool {String getName();KnowledgeSet process(DataSet input);
}// 工具集管理
class ToolSet {private final Map<String, KnowledgeTool> tools = new HashMap<>();public void registerTool(KnowledgeTool tool) {tools.put(tool.getName(), tool);}public KnowledgeSet applyTools(DataSet input) {KnowledgeSet result = new KnowledgeSet();for (KnowledgeTool tool : tools.values()) {KnowledgeSet toolResult = tool.process(input);result.merge(toolResult);}return result;}public void upgradeTool(String name, KnowledgeTool newTool) {tools.put(name, newTool);}
}// 记忆系统
class MemorySystem {private final KnowledgeSet longTermMemory = new KnowledgeSet();private final Map<String, KnowledgeSet> contextualMemory = new HashMap<>();public void store(KnowledgeSet knowledge) {longTermMemory.merge(knowledge);}public KnowledgeSet recallContext(String context) {return contextualMemory.getOrDefault(context, new KnowledgeSet());}public void setContext(String context, KnowledgeSet knowledge) {contextualMemory.put(context, knowledge);}public List<Knowledge> searchMemory(String keyword) {List<Knowledge> results = new ArrayList<>();for (Knowledge k : longTermMemory.getAllKnowledge()) {if (k.getContent().contains(keyword)) {results.add(k);}}return results;}
}// 思考引擎
class ThinkingEngine {private final ToolSet toolSet;private final MemorySystem memory;public ThinkingEngine(ToolSet toolSet, MemorySystem memory) {this.toolSet = toolSet;this.memory = memory;}public KnowledgeSet process(DataSet input) {// 步骤1: 使用工具集处理输入数据KnowledgeSet newKnowledge = toolSet.applyTools(input);// 步骤2: 与记忆中的知识结合KnowledgeSet contextKnowledge = memory.recallContext(input.source);newKnowledge.merge(contextKnowledge);// 步骤3: 存储到记忆系统memory.store(newKnowledge);memory.setContext(input.source, newKnowledge);return newKnowledge;}public void upgradeTool(String name, KnowledgeTool newTool) {toolSet.upgradeTool(name, newTool);}
}// 示例工具实现
class AnalysisTool implements KnowledgeTool {@Overridepublic String getName() { return "DataAnalyzer"; }@Overridepublic KnowledgeSet process(DataSet input) {KnowledgeSet result = new KnowledgeSet();// 模拟数据分析过程String content = input.getContent();String analysis = "分析结果: " + content.toUpperCase() + " 长度=" + content.length();result.addKnowledge(new Knowledge(analysis, "Analyzer"));return result;}
}class PatternTool implements KnowledgeTool {@Overridepublic String getName() { return "PatternFinder"; }@Overridepublic KnowledgeSet process(DataSet input) {KnowledgeSet result = new KnowledgeSet();// 模拟模式发现String content = input.getContent();if (content.contains("Java")) {result.addKnowledge(new Knowledge("发现Java相关模式", "PatternFinder"));}return result;}
}// 示例数据集
class TextDataSet extends DataSet {private final String text;public TextDataSet(String source, String text) {super(source);this.text = text;}@Overridepublic String getContent() {return text;}
}// 使用示例
public class AutoThinkingSystem {public static void main(String[] args) {// 初始化系统ToolSet toolSet = new ToolSet();toolSet.registerTool(new AnalysisTool());toolSet.registerTool(new PatternTool());MemorySystem memory = new MemorySystem();ThinkingEngine engine = new ThinkingEngine(toolSet, memory);// 处理第一份数据DataSet data1 = new TextDataSet("Source1", "Java是一种编程语言");KnowledgeSet result1 = engine.process(data1);System.out.println("===== 第一轮处理结果 =====");result1.getAllKnowledge().forEach(System.out::println);// 处理第二份数据DataSet data2 = new TextDataSet("Source2", "Python也是一种编程语言");KnowledgeSet result2 = engine.process(data2);System.out.println("\n===== 第二轮处理结果 =====");result2.getAllKnowledge().forEach(System.out::println);// 升级工具engine.upgradeTool("PatternFinder", new PatternTool() {@Overridepublic KnowledgeSet process(DataSet input) {KnowledgeSet result = new KnowledgeSet();String content = input.getContent();if (content.contains("Python")) {result.addKnowledge(new Knowledge("发现Python高级模式", "UpgradedPatternFinder"));}return result;}});// 使用升级后的工具处理数据DataSet data3 = new TextDataSet("Source2", "Python在AI领域很流行");KnowledgeSet result3 = engine.process(data3);System.out.println("\n===== 工具升级后处理结果 =====");result3.getAllKnowledge().forEach(System.out::println);// 记忆检索System.out.println("\n===== 记忆检索结果 =====");memory.searchMemory("Python").forEach(System.out::println);}
}

关键特性说明

  1. 动态工具系统

    • 工具可热升级(upgradeTool方法)
    • 新工具自动加入处理流程
    • 每个工具独立处理原始数据
  2. 记忆机制

    • 长期记忆存储所有知识
    • 上下文记忆关联数据来源
    • 支持关键词检索历史知识
  3. 知识进化流程

    大数据集 思考引擎 工具集 记忆系统 输出 原始数据 应用处理工具 生成新知识 存储知识 提供关联知识 增强后的知识集 反馈改进需求 自我改造升级 大数据集 思考引擎 工具集 记忆系统 输出
  4. 执行示例输出

===== 第一轮处理结果 =====
Knowledge#0 [2025-06-03 17:26:25]: 分析结果: JAVA是一种编程语言 长度=11
Knowledge#1 [2025-06-03 17:26:25]: 发现Java相关模式===== 第二轮处理结果 =====
Knowledge#2 [2025-06-03 17:26:25]: 分析结果: PYTHON也是一种编程语言 长度=14===== 工具升级后处理结果 =====
Knowledge#4 [2025-06-03 17:26:25]: 发现Python高级模式
Knowledge#2 [2025-06-03 17:26:25]: 分析结果: PYTHON也是一种编程语言 长度=14
Knowledge#3 [2025-06-03 17:26:25]: 分析结果: PYTHON在AI领域很流行 长度=14===== 记忆检索结果 =====
Knowledge#4 [2025-06-03 17:26:25]: 发现Python高级模式

后期改进

  1. 分布式处理

    • 将大数据集分片处理
    • 并行执行工具处理
    • 使用MapReduce合并结果
  2. 工具链编排

    // 示例:添加工具依赖管理
    class ToolChain {private List<KnowledgeTool> sequence = new ArrayList<>();public void addTool(KnowledgeTool tool, int position) {sequence.add(position, tool);}public KnowledgeSet execute(DataSet input) {KnowledgeSet result = new KnowledgeSet();for (KnowledgeTool tool : sequence) {result.merge(tool.process(input));}return result;}
    }
    
  3. 知识关联分析

    // 在Knowledge类中添加
    private Set<Long> relatedKnowledgeIds = new HashSet<>();// 在MemorySystem中添加
    public void relateKnowledges(long id1, long id2) {Knowledge k1 = longTermMemory.get(id1);Knowledge k2 = longTermMemory.get(id2);if(k1 != null && k2 != null) {k1.addRelation(k2.getId());k2.addRelation(k1.getId());}
    }
    

此模型实现了从数据到知识的自动化转换流程,支持工具热更新和知识记忆,可作为智能决策系统的基础框架。
后期会持续更新,同步到GitHub(https://github.com/vvsvv/MI.git)上。


http://www.hkcw.cn/article/YrUsNKgOsX.shtml

相关文章

小白的进阶之路系列之十二----人工智能从初步到精通pytorch综合运用的讲解第五部分

在本笔记本中,我们将针对Fashion-MNIST数据集训练LeNet-5的变体。Fashion-MNIST是一组描绘各种服装的图像瓦片,有十个类别标签表明所描绘的服装类型。 # PyTorch model and training necessities import torch import torch.nn as nn import torch.nn.functional as F impor…

pytorch3d+pytorch1.10+MinkowskiEngine安装

1、配置pytorch1.10cuda11.0 pip install torch1.10.1cu111 torchvision0.11.2cu111 torchaudio0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html 2、配置 MinkowskiEngine库 不按下面步骤&#xff0c;出现错误 1、下载MinkowskiEngine0.5.4到本地 2、查看…

ORACLE 缺失 OracleDBConsoleorcl服务导致https://xxx:port/em 不能访问

这个原因是&#xff0c;操作过一下 ORCL的服务配置变更导致的。 再PATH中添加个环境变量&#xff0c;路径如下 管理员权限运行cmd 等待创建完成 大概3分钟 查看服务 点击第一个访问&#xff0c;下图登录后的截图

分布式流处理与消息传递——向量时钟 (Vector Clocks) 算法详解

Java 实现向量时钟 (Vector Clocks) 算法详解 一、向量时钟核心原理 #mermaid-svg-JcZ1GT0r1ZNSy6W7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JcZ1GT0r1ZNSy6W7 .error-icon{fill:#552222;}#mermaid-svg-JcZ…

深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式

背景 在当今的软件开发领域&#xff0c;尽管主流开发模式往往倾向于采用单表模式&#xff0c;力图尽可能地减少表之间的连接操作&#xff0c;以期达到提高数据处理效率、简化应用逻辑等目的。然而&#xff0c;对于那些已经上线运行多年的运维老系统而言&#xff0c;它们内部往…

多模态大语言模型arxiv论文略读(104)

Talk Less, Interact Better: Evaluating In-context Conversational Adaptation in Multimodal LLMs ➡️ 论文标题&#xff1a;Talk Less, Interact Better: Evaluating In-context Conversational Adaptation in Multimodal LLMs ➡️ 论文作者&#xff1a;Yilun Hua, Yoav…

【Oracle】游标

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 游标基础概述1.1 游标的概念与作用1.2 游标的生命周期1.3 游标的分类 2. 显式游标2.1 显式游标的基本语法2.1.1 声明游标2.1.2 带参数的游标 2.2 游标的基本操作2.2.1 完整的游标操作示例 2.3 游标属性2.3.1…

Ethernet/IP转DeviceNet网关:驱动大型矿山自动化升级的核心纽带

在大型矿山自动化系统中&#xff0c;如何高效整合新老设备、打通数据孤岛、实现统一控制&#xff0c;是提升效率与安全的关键挑战。JH-EIP-DVN疆鸿智能EtherNet/IP转DeviceNet网关&#xff0c;正是解决这一难题的核心桥梁&#xff0c;为矿山各环节注入强劲连接力&#xff1a; …

Nginx + Tomcat 负载均衡、动静分离群集

一、 nginx 简介 Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;在 BSD-like 协议下发行。其特点是占有内存少&#xff0c;并发能力强&#xff0c;在同类型的网页服务器中表现优异&#xff0c;常用…

5.Nginx+Tomcat负载均衡群集

Tomcat服务器应用场景&#xff1a;tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。一般来说&#xff0c;Tomcat虽然和Apache或…

【算法设计与分析】实验——汽车加油问题, 删数问题(算法实现:代码,测试用例,结果分析,算法思路分析,总结)

说明&#xff1a;博主是大学生&#xff0c;有一门课是算法设计与分析&#xff0c;这是博主记录课程实验报告的内容&#xff0c;题目是老师给的&#xff0c;其他内容和代码均为原创&#xff0c;可以参考学习&#xff0c;转载和搬运需评论吱声并注明出处哦。 4-1算法实现题 汽车…

网络爬虫 - App爬虫及代理的使用(十一)

App爬虫及代理的使用 一、App抓包1. App爬虫原理2. reqable的安装与配置1. reqable安装教程2. reqable的配置3. 模拟器的安装与配置1. 夜神模拟器的安装2. 夜神模拟器的配置4. 内联调试及注意事项1. 软件启动顺序2. 开启抓包功能3. reqable面板功能4. 夜神模拟器设置项5. 注意事…

SQLite详细解读

一、SQLite 是什么&#xff1f; SQLite 是一个嵌入式关系型数据库管理系统&#xff08;RDBMS&#xff09;。它不是像 MySQL 或 PostgreSQL 那样的客户端-服务器数据库引擎&#xff0c;而是一个自包含的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 核心特点 嵌入式/库…

线程池详细解析(三)

本章我们来讲一讲线程池的最后一个方法shutdown&#xff0c;这个方法的主要作用就是将线程池进行关闭 shutdown&#xff1a; public void shutdown() {ReentrantLock var1 this.mainLock;var1.lock();try {this.checkShutdownAccess();this.advanceRunState(0);this.interrup…

口碑对比:杭州白塔岭画室和燕壹画室哪个好?

从口碑方面来看&#xff0c;杭州燕壹画室和白塔岭画室各有特点&#xff0c;以下是具体分析&#xff1a; 燕壹画室 教学成果突出&#xff1a; 其前身燕壹设计工作室在2019 - 2023年专注美院校考设计&#xff0c;有一定的教学积淀&#xff0c;2023年转型后第一年攻联考就斩获浙…

车载雷达:超声波雷达、毫米波雷达、激光雷达相关技术场景介绍和技术比较

随着技术发展,如今的汽车智能化程度越来越高,配备的传感器也越来越多,特别是与辅助驾驶相关的汽车雷达,它们如同汽车的 “眼睛”,帮助车辆感知周围环境。为了适配不同的使用场景和功能需求,汽车雷达也分为很多类型,并且各具特点。 一、技术特点 一)超声波雷达 超声波…

Spring AI Advisor机制

Spring AI Advisors 是 Spring AI 框架中用于拦截和增强 AI 交互的核心组件&#xff0c;其设计灵感类似于 WebFilter&#xff0c;通过链式调用实现对请求和响应的处理5。以下是关键特性与实现细节&#xff1a; 核心功能 ‌1. 请求/响应拦截‌ 通过 AroundAdvisor 接口动态修…

GPTBots在AI大语言模型应用中敏感数据匿名化探索和实践

背景 随着人工智能技术的快速发展&#xff0c;尤其是大语言模型&#xff08;LLM-large language model&#xff09;在金融、医疗、客服等领域的广泛应用&#xff0c;处理海量数据已成为常态。然而&#xff0c;这些数据中往往包含个人可识别信息&#xff08;PII-Personally Ide…

使用 C++/OpenCV 制作跳动的爱心动画

使用 C/OpenCV 制作跳动的爱心动画 本文将引导你如何使用 C 和 OpenCV 库创建一个简单但有趣的跳动爱心动画。我们将通过绘制参数方程定义的爱心形状&#xff0c;并利用正弦函数来模拟心跳的缩放效果。 目录 简介先决条件核心概念 参数方程绘制爱心动画循环模拟心跳效果 代码…

入门AJAX——XMLHttpRequest(Get)

一、什么是 AJAX AJAX Asynchronous JavaScript And XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 1、XML与异步JS XML: 是一种比较老的前后端数据传输格式&#xff08;已经几乎被 JSON 代替&#xff09;。它的格式与HTML类似&#xff0c;通过严格的闭合自定义标…