- 博客(182)
- 收藏
- 关注
原创 Langchain核心组件---文本向量
本文介绍了LangChain中的文本向量化核心组件,重点讲解了嵌入(Embedding)的概念及其应用。嵌入通过将文本转换为数值向量(如OpenAI的3072维向量),使计算机能够理解语义信息。文章阐述了向量空间中的相似性度量方法(余弦相似度、欧氏距离),并列举了嵌入模型在语义搜索、RAG、推荐系统等场景的应用。同时详细说明了LangChain中OpenAIEmbeddings类的使用方法,包括embed_documents()和embed_query()两个核心API的区别及实际代码示例,展示了如何将Ma
2026-07-25 23:26:17
356
原创 Langchain核心组件---文档加载器
本文介绍了LangChain的核心组件之一——文档加载器(Document loaders),重点围绕RAG(检索增强生成)技术展开。RAG通过结合大语言模型的语义理解能力与本地/私有知识库检索,解决了传统AI搜索无法获取实时或私有数据的问题。文章详细阐述了RAG的完整流程,包括离线数据处理(文档加载、文本分割、向量化存储)和在线检索(语义搜索、结果生成),并通过租房项目Q&A的代码示例展示了实际应用效果。最后介绍了LangChain的基础文档类Document,说明其包含文本内容(page_content
2026-07-22 19:12:25
157
原创 Langchain核心组件--提示词模板
摘要: LangChain的提示词模板(Prompt Template)是其核心组件之一,用于动态生成大语言模型(LLM)的请求内容。它通过占位符实现可复用性,分离提示词结构与数据,提升一致性和维护性。 字符串模板:通过PromptTemplate类定义模板(如"Translate into {language}"),运行时填充变量生成完整提示词。 聊天消息模板:ChatPromptTemplate支持构建包含系统、用户消息的模板(如翻译任务),结合StrOutputParser可链式调用模型输出结果。 消
2026-07-22 19:08:43
215
原创 Langchain核心组件---消息
本文摘要主要介绍了LangChain框架中的消息组件及其在聊天模型交互中的应用。文章首先阐述了消息在聊天模型中的作用,包括消息角色(系统、用户、助理、工具)、内容格式和元数据。接着详细说明了LangChain提供的统一消息格式(SystemMessage、HumanMessage、AIMessage等),这些格式可跨不同模型提供商使用。文章还演示了如何通过缓存历史消息实现多轮对话功能,并指出在旧版LangChain中可通过RunnableWithMessageHistory类来管理聊天历史记录。整体而言,该
2026-07-22 19:01:58
211
原创 Langchain学习---大模型具有的四个核心能力
主要聚焦大模型具备的四个核心能力:1.模型定义 2.工具调用 3.结构化输出 4.流式输出!
2026-07-20 21:56:40
242
原创 AI Agent 设计模式:ReAct 深度解析
AI Agent设计模式:ReAct解析摘要 ReAct模式(Reasoning+Acting)由普林斯顿大学与Google联合提出,通过交替推理与行动解决纯推理导致幻觉和纯行动无法纠偏的问题。其核心是三步闭环循环:Thought(分析现状)→ Action(调用工具)→ Observation(获取结果),最终输出Final Answer。实现关键在于系统提示词而非模型微调,提示词严格规定输出格式和工具调用规则。典型实现包含70行左右Python代码,通过循环调用大模型、解析输出、执行工具并将结果反馈给模
2026-06-12 22:48:30
355
5
原创 部署OpenClaw
本文档提供了在Ubuntu 22.04系统(ARM64/X86_64)上部署OpenClaw Linux环境的完整指南,主要内容包括: 前置依赖安装:基础环境和Node.js 22的安装 两种安装方式:官方一键安装和NPM全局安装 初始化配置流程:模型选择、插件安装、权限设置等关键步骤 飞书机器人专项配置:扫码授权和通讯规则 日常启停操作和常见问题解决方案 特别提醒ARM架构下避免安装brew依赖 完整的卸载清理方法 文档强调轻量化部署,跳过不兼容的依赖项,确保在Linux命令行环境下稳定运行。
2026-06-12 22:40:08
264
原创 FFmpeg视频录制
本文介绍了使用FFmpeg库进行视频采集、转码和编码输出的完整流程。首先概述了FFmpeg的核心组件(libavcodec、libavformat等),然后详细说明了从设备初始化、参数设置、解码器准备到编码输出的关键步骤。重点包括:通过avdevice_register_all注册设备,使用avformat_open_input打开摄像头输入,配置解码器和H.264编码器参数,利用sws_getContext进行图像格式转换,最后通过主循环实现读取、解码、转换、编码和写入MP4文件的全过程。整个过程展示了F
2026-03-24 15:33:28
357
原创 gflags框架安装与使用
本文介绍了gflags框架的安装与使用方法。安装只需执行sudo apt-get install libgflags-dev命令。使用步骤包括:1)包含头文件并定义参数(字符串、整型、布尔型);2)解析命令行参数;3)通过FLAGS_前缀访问参数值。文章展示了如何通过命令行参数或配置文件来覆盖默认参数值,并提供了对应的Makefile编译命令。gflags框架简化了命令行参数处理,支持运行时动态修改参数配置。
2025-08-18 22:08:23
298
原创 【仿muduo库实现并发服务器】LoopThreadPool模块
我们要避免那么线程创建之后,但是我们的eventloop,还没有被实例化之前就去获取loop的操作,这样的获取是会出问题,就是一个空了对不对所以要给它同步管理起来,也就是说你获取loop的时候,必须是它loop已经那么实例化完了才可以之间的,你如果没有实例化完那就不让你获取。比如在执行各种操作的时候,进行事件监控的时候,它就会绑定到我们eventloop对应的线程里边去,要进行某些操作的时候也是把任务压入到我们对eventloop,它的任务队列里边。而我们的从属react呢?
2025-07-01 23:05:50
1132
原创 【仿muduo库实现并发服务器】Acceptor模块
还要注意监听套接字的读事件监听不能放在构造函数中执行,因为会存在刚创建好监听套接字连接,并且启动了读事件监控,同时读事件也就绪了,调用读事件回调函数,获取新连接,但是这个时候服务器对新连接的操作回调函数还没有设置进去,监听套接字的读事件回调函数就只会获取新连接,然后调用空的回调函数,什么都不干。因为channel初始化时是需要两个参数一个是绑定的eventloop,一个是对应的套接字,而想要获取套接字,就必须要先创建套接字,创建套接字连接只能在函数体中进行,那这样channel就无法初始化了。
2025-07-01 23:05:16
1093
原创 【仿muduo库实现并发服务器】Connection模块
不过有一个注意点,就是Send()函数,将服务器处理完的数据放入到用户态的发送缓冲区中,这个外界传入的data数据可能是一个临时的数据,而Send函数只是将发送操作压入到任务队列中,有可能没有被立刻执行,所以当真正执行时,存储这个data数据的空间已经被释放了,就无法再去访问了,所以在Send()函数还没有将操作压入到任务队列中时,先将这个空间的数据拷贝出来,用一个buffer对象存储,然后传入传入给SendInLoop,SendInLoop访问的就是buffer一个拷贝对象。然后直接真正的释放连接。
2025-07-01 23:04:45
974
原创 【仿muduo库实现并发服务器】eventloop模块
不需要每次都一次一次的加锁访问任务队列,我们只需要加锁一次,然后定义一个临时的任务队列,将原来的任务队列中的任务全部交换到临时的中去,当全部取出来就可以解锁了。作用:如果别的线程要执行当前的线程中的conn的对象的函数的时候,是不会执行的,因为会涉及到安全问题,所以就需要吧他执行的任务放到这个任务队列中去,让当前线程自己执行。因为如果别的线程要执行当前的线程中的conn的对象的函数的时候,是不会执行的,因为会涉及到安全问题,所以就需要吧他执行的任务放到这个任务队列中去,让当前线程自己执行。
2025-07-01 23:04:06
1267
原创 【仿muduo库实现并发服务器】Poller模块
就绪的信息有哪个文件描述符的什么事件就绪了,光有这些信息是没有用的,因为对于描述符的channel对象不知道什么事件就绪啊,只有channel对象才能知道就绪后该怎么操作。所以需要将该描述符的什么事件就绪信息设置进对应的channel对象中(通过描述符在哈希表中映射找到channel对象),这样channel对象才能知道它就绪了什么事件,并且可以进行对应的处理,2.当事件就绪时,就绪的事件信息就会保存在struct epoll_event 结构体数据中,保存的信息有就绪的描述符fd,就绪的事件。
2025-07-01 23:00:35
873
原创 【仿muduo库实现并发服务器】Channel模块
实现Channel模块,主要是对连接进行事件管理,主要管理这个连接监控了什么事件,以及事件就绪之后该如何处理等操作。
2025-07-01 22:58:46
1084
原创 【Linux网络编程十】网络原理之IP协议【网络层】
本文介绍网络层的IP协议相关内容,谈路由问题与分片问题,运营商在网络中的作用是什么,NAT技术等
2025-04-21 19:43:00
1011
原创 【Linux网络编程九】网络原理之TCP协议【传输层】
TCP是面向连接,可靠的网络协议,可靠性主要由确认应答,流量控制,滑动窗口,超时重传,拥塞控制,连接管理,序号与确认序号等策略保证。TCP在保证可靠性的同时还在效率上做了努力,使用快重传,捎带应答,延迟应答等策略提高效率。TCP通过三次握手建立连接,四次挥手断开连接。
2025-04-03 14:58:40
892
原创 【Linux网络编程八】实现最简单Http服务器(基于Tcp套接字)【应用层】
实现一个最简单的Http服务器,分析Http服务器是如何工作的,理解Http协议。
2024-09-04 12:24:24
1384
原创 【Linux网络编程七】网络序列化和反序列化(网络版本计算器)
【Linux网络编程七】网络序列化和反序列化(网络版本计算器):本篇重点:自定义协议和序列化反序列化。以网络版本计算器为例子来理解协议定制的诸多细节问题。理解序列化和反序列化间的套路。
2024-03-15 17:43:09
1284
原创 【Linux网络编程五】Tcp套接字编程(四个版本服务器编写)
【Linux网络编程四】Tcp套接字编程(四个版本服务器编写):本篇重点:四个服务器版本:单进程版本,多进程版本,多线程版本,线程池版本。以及更多细节问题。带你学会如何使用Tcp套接字编程。
2024-02-16 16:04:29
1551
1
原创 【Linux网络编程四】Udp套接字编程网络应用场景
【Linux网络编程三】Udp套接字编程网络应用场景:场景一远程控制命令;场景二:Linux与Windows通信;场景三:简单聊天
2024-02-04 19:06:46
1501
1
原创 【Linux网络编程三】Udp套接字编程(简易版服务器)
【Linux网络编程三】Udp套接字编程(简易版服务器)本篇重点:UDP网络编程步骤:①创建套接字②绑定网络信息③接发消息;服务器端和客户端绑定细节,以及代码实现。
2024-02-02 18:34:40
1308
1
原创 【Linux网络编程二】网络基础2(网络框架)
【Linux网络编程二】网络基础2(网络框架)本篇重点:①跨网络如何通信②网络通信的本质③端口号④TCP/UDP协议⑤通用网络接口⑥网络字节序
2024-02-01 18:43:21
1131
1
原创 【Linux网络编程一】网络基础1(网络框架)
【Linux网络编程一】网络基础(网络框架)重点:①什么是协议②协议分层③操作系统与网络协议栈关系④局域网下如何通信⑤以太网下如何通信⑥交换机作用
2024-01-31 22:18:14
1180
1
原创 【Linux系统编程二十九】基于信号量的环形队列生产消费模型
【Linux系统编程二十九】基于信号量的环形队列生产消费模型,本篇重点,理解使用信号量,在环形队列生产消费模型中,信号量维持的是生产和消费者之间的同步与互斥关系,而加锁维护的是生产者和生产者,消费者和消费者之间的互斥关系。理解这层概念就能真正的理解基于信号量的环形队列生产模型!
2024-01-21 21:53:41
1069
原创 【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型)
【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型):重点:条件变量(原理,接口),321原则,真正理解生产消费模型,伪唤醒。
2024-01-21 15:16:55
1058
原创 【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)
【Linux系统编程二十七】:本文主要总结什么是互斥,为什么要互斥,以及互斥如何实现,主要原因是因为多线程并发访问共享资源,会造成数据不一致问题。介绍互斥锁的概念和相关接口使用,锁的应用场景,探讨同步场景下又该如何解决以及死锁问题。
2024-01-09 18:18:41
1210
原创 【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)
【Linux系统编程二十六】:本篇总结Linux下线程库中如何控制线程,理解线程控制块都是在线程库中被统一管理起来,线程tid的本质就是TCB在共享区里的起始地址。熟悉掌握线程的创建,退出,等待等操作,了解线程的一些特性:独立栈,局部存储,可分离线程等。
2024-01-03 19:38:59
1236
1
原创 【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)
【Linux系统编程二十五】:本篇知识点诸多,建议反复理解。线程是进程的一个执行分支,执行粒度比进程要细,如何理解?进程是系统资源分配的基本实体,而线程是系统的调度单位。如何理解?线程要比进程更轻量化,又该如何理解?页表是如何完成从虚拟地址到物理地址的映射的?什么是轻量级进程?
2023-12-29 18:52:24
1367
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅