- Software Architect & Problem Solver
AI 时代下的你我
首先我认同 AI 时代会改变很多生活,生产,工作的形态,甚至更多……,当然这个主题很大,谁都难以精确的的预测各行各业的发展, 很荣幸为一个 软件工作者 及 普通居民 的角色能站在这场变革的一线,几乎从23年开始一直持续关注相关的动态,参与到一些 AI 产品的使用中,并且参与到一些 AI 产品的开发中。 就宏观上输出下我个人的感受,后面会继续在一些细节(产品发展,相关技术,及个人重度参与的 vibe coding)上深入讨论 类比以往的变革 我认为历史上重要的变革包含:语言产生,各种标准,各种度量,电,工业革命等。这些都是突破人类自然能力的变革,这一轮 AI 的发展也是的,因为能大幅提升人类输出内容 预制菜 为什么要提这个似乎概念离得很远的词。因为看到当前 AI 输出的内容,很像是预制菜的感觉,简单分析下: 预制菜的特点是: 预包装,提前做了食材处理 便捷,通过简单加热即可快速出货 多样化:种类繁多 Pros: 节省时间 体验自己不会的菜谱 成本降低 Cons: 食品安全 营养价值 仔细品一品,是不是当前 AI 生成的内容很类似。市场中,不乏有好的与坏的预制菜,总之也占领了一部分市场,人们多少都会接纳一些,默默的改变生活方式。我相信 AI 输出的内容是同理,有好有坏,有很大的市场,也在 默默改变生活生产方式。 再想一想人类社会发展进程出现的一些工具基本都会改变人自然属性,从打猎到农业,从农业到工业,从工业到信息化,这些都是人类社会的进步。AI 也是一样,能大幅提升人类的输出能力。 换言之:市场很大,拥抱接受,吸收,取其精华,去其糟粕。 AI 下催生的机会 已经靠 AI 赚到的有哪些人? 我发现这波浪潮下已经赚到的一些普通人,大概是这几类方向 自媒体 & 卖课 出海的一些 AI 产品,出海更容易做商业化 国内的一些 AI 平台:Dify 等 靠这波热点拉投资的公司 公司转型,做这个方向的工作者 吃政策福利,研究经费的一些公职,教育者 总结下来看基本都是在原有行当做的很好的这波人,刚好了来了个 AI 机会给抓住了,比如卖课的人家本来就在卖课,吃政策拉投资的,人家就是这个圈里的,外人难以挤进来。单纯靠改变方向到 AI 硬靠的又赚到钱的并不多。 所以还是那句话:机会是留给有准备的人的。普通人呢做好自己本来该做好的事情,然后添加一些爱学习的思维,当这波来的时候,能喝喝汤就好,如果能吃上肉那就偷着乐吧。 提升个人战斗力 如果能提升个人战斗力,意味着能输出更多,进而能收入更多。现在市面上出现了一些 AI 产品,可以武装你让你从普通兵变为特种兵,具备一个人挑战一个团队的能力。所以市面上出现的 一人公司 概念也不是空穴来风。 ...
AI 应用技术
前言 梳理下自己在 AI 产品开发中用到的一些技术,自己了解的一些业界中的技术
AI 产品思考
前言 我是 AI应用开发者,开发过 AI Agent,Agent 搭建平台,也是 AI 产品的使用者。本文将分享我对 AI 产品的思考。主要是AI产品思路,列举一些好用的 AI 产品,和一些 AI 产品的使用技巧。 AI 产品核心之核心 毋庸置疑核心是模型:LLM,Difusion Model,CV 模型等。与模型唯一通信载体是 Prompt,请记住这个唯一,非常重要,基本上功能都是围绕这个来做的。所以早期的AI产品都是称为 Prompt 产品,开发者是 prompt 工程师。 而 Prompt 也有种类繁多的范式,不同场景不同目的使用不同的 Prompt。Prompt 设计的好坏直接影响 AI 产品的效果,这里暂且不表。 Agent 与 Workflow
Devops概念梳理
前言 Devops 从18年左右发展至今已经非常的成熟。可以作为一个独立职业,因为里面有很多细节。作为互联网软件开发者,我从开发的视角梳理下一些应知应会的框架,主要达到一个能使用,能了解架构,出了问题大概知道在哪个环节。具体细节暂时不追求。 从 Docker 开始 Docker,是一种容器化的概念,属于虚拟化技术的一种形式。以颗粒度更小的方式,隔离性也更好的方式完成宿主机的资源榨取。他与虚拟机的核心区别是 Docker与虚拟机的核心区别主要在于以下几个方面: 架构层级: 虚拟机(Virtual Machine, VM):虚拟机在宿主操作系统之上运行一个完整的客户操作系统。它使用Hypervisor(如VMware、KVM、Hyper-V等)来虚拟化硬件资源,每个虚拟机都有自己的内核、操作系统和应用程序。 Docker容器:Docker容器在宿主操作系统之上运行,但它们与宿主共享相同的操作系统内核。容器是通过容器引擎(如Docker)来管理和隔离的。每个容器包含应用程序及其所有依赖项,但不包含完整的操作系统。 资源利用效率: 虚拟机:由于每个虚拟机都需要一个完整的操作系统,因此启动和运行时会消耗更多的内存和CPU资源。 Docker容器:由于所有容器共享宿主操作系统的内核,启动时间更快,资源开销也更小。这使得容器更加轻量级,可以在同样的硬件上运行更多实例。 启动时间: 虚拟机:由于需要启动一个完整的操作系统,虚拟机通常需要数分钟时间才能完全启动并准备好使用。 Docker容器:因为没有完整的OS启动过程,Docker容器通常可以在几秒钟内完成启动。 隔离性与安全性: 虚拟机:提供了强隔离,因为每个VM运行在完全独立的环境中,包括独立的内核。因此,安全性较高。 Docker容器:虽然提供了进程级别的隔离,但仍共享宿主OS内核,因此理论上存在一些安全风险。不过,通过适当配置和使用工具(如SELinux、AppArmor等),可以增强安全性。 存储与持久化数据管理方式: 虚拟机:通常使用虚拟磁盘文件来存储数据,这些文件可以独立于其他VM进行管理。 Docker容器:使用卷(volumes)和绑定挂载(bind mounts)来持久化数据,这些可以被多个容器共享或独立管理。 总而言之,Docker作为一种轻量级、便捷、高效且快速部署的方法,在云原生应用开发中得到了广泛应用。而虚拟机则仍然适用于需要强隔离、安全要求高以及需要运行不同类型操作系统等场景。 Docker的核心原理是: Docker的核心原理是利用操作系统级的虚拟化技术(即容器化技术)来创建、部署和运行应用程序。具体来说,Docker 的核心原理包括以下几个方面: Namespace(命名空间)隔离: Docker 使用 Linux 内核的命名空间(Namespace)功能来实现进程隔离。这些命名空间包括 UTS(主机和域名)、IPC(进程间通信)、PID(进程 ID)、Network(网络)、Mount(文件系统挂载点)等。 每个容器都有独立的命名空间,因此它们之间不会互相干扰,提供了类似虚拟机的隔离效果。 Cgroups(控制组)资源控制: Cgroups 是 Linux 内核提供的一种机制,用于限制、记录和隔离单个进程组的资源使用情况。Docker 使用 Cgroups 来限制容器可以使用的 CPU、内存、磁盘 I/O 等资源。 通过这种方式,Docker 能够确保每个容器在资源分配上互不干扰,并且可以避免某个容器滥用系统资源。 Union File System(联合文件系统): Docker 使用联合文件系统,如 AUFS、OverlayFS 等,来实现镜像和容器的分层存储。每个 Docker 镜像由多层组成,每一层都是只读的,当需要对镜像进行修改时,会在顶层添加一个可写层。 这种分层设计不仅提高了存储效率,还使得镜像可以快速构建和共享。 Container Image(容器镜像): 容器镜像是一个包含应用程序及其所有依赖项的只读模板。Docker 容器是从这些镜像创建出来的一种运行实例。 镜像可以通过 Dockerfile 定义,并且支持版本管理,这使得应用程序环境变得可移植且易于复制。 Container Runtime: ...
LLM 长记忆工具总结
背景 近期工作中做了 LLM 长记忆功能,对此中的思路,技术做下总结。顺便为了练习自己的系统设计能力,这里按照系统设计的方式来整理 什么是长记忆 简单来说就是让大模型具备记忆功能,记住某个人。产品形态上可以是个人助手。不同于某次会话上下文记忆,长记忆具备的特点: 跟随个人的:我们目前常见的短期记忆只是跟随某次会话 时间长:1年,5年,10年,……,终生 个人信息相关的:比如个人爱好,心情变化,健康,工作,生活等这些属于个人记忆。客观信息事实信息比如:美国在北美洲,地球是圆的等这些不需要作为记忆信息。 多种类型的:如上条有不同类型的记忆,不同类型的记忆里处理方式有很大差异,比如:日程相关的需要处理时间,绝对时间的转换,个人爱好相关的,比较简单,直接用类似图谱的三元组信息即可,办公工作内容型的记忆类似。 功能点及非功能点梳理 总体其实为了实现个人助手的产品功能。这个助手在产品形态上是一个普通对话机器人,系统的具备的功能及非功能点需求大致如下: 功能点 登录,因为是私人助手嘛,得知道用户是谁。 对话:这个不用说了,是助手的主题功能 配置功能,因为记忆有很多种类型,在助手里最好有配置,比如我想主要是工作,那日程安排比较重要,生活。如果多有记忆都要配置,那就是一个超级个人助手 记忆生产:根据配置信息,做不同类型的记忆提取存储 记忆消费:是指根据记忆:做下健康管理,饮食管理,工作学习计划,日程计划,等等。 非功能点 短期能同时处理 1w+ 人数的并发,长期的话人数可能扩充到 10W+,甚至更多。每天可能有 50W 的请求 响应时间:在记忆消费时能做到 3s - 5s 内有响应,3s-30s 内响应完成。 数据规模,根据每个人的配置,记忆长短不同,数据规模有不同要求 方案 工作流程图 如图所示。总体为一个 RAG 流程,其中核心是记忆引擎的部分。由于rag流程基础的东西,在社区里做的比较多,也比较简单,不做过多强调。核心强调记忆引擎的东西。 记忆引擎 记忆引擎里完成的功能: 记忆生产 根据配置信息生产一些垂类记忆 记忆存储 把记忆抽出来后 记忆消费 根据用户的问题,召回相关的记忆,并做简单推理规划 记忆生产 这里输入是会话信息,需要做的是从会话信息里提取记忆实体。主要涉及到自然语言处理的部分。 知识图谱,我们使用知识图谱来完成记忆的载体。 知识图谱的实体抽取,以及图数据库语法都是用额外的大模型来推理完成 提示词设计 // 信息抽取 ` 你是一个信息提取专家 用户的输入如下:{query} 实体信息: ` // 记忆更新 ` 你是一个图数据专家,请生成neo4j的sql语句 历史记忆如下:{memories} 新的记忆如下:{memory} sql: ` 这里只给出部分,因为其他一些垂类的内容。其他还有很多,也算是核心。 ...