LangChain Agent 是一个让大型语言模型(LLM)自主决策、选择工具并执行任务的框架。它把 LLM 从一个”纯对话者”变成了一个”能动手的智能助手”。用户问题 → LLM分析 → 选择工具 → 执行工具 → 观察结果 → 继续思考 → … → 最终答案
类型
特点
适用场景
ZERO_SHOT_REACT
无需示例,根据工具描述决策
通用任务,结构清晰
CONVERSATIONAL
记忆对话历史,上下文感知
多轮对话任务
STRUCTURED_CHAT
结构化输出,更可控
复杂多步骤任务
OPENAI_FUNCTIONS
利用OpenAI函数调用
需要...
个性化对话前缀
多输入memory
实体记忆
对话知识图谱记忆
个性化前缀这个个性化只限于在memory中,如果是希望在对话中有前缀,直接在prompt中规定就行了
123456789101112131415161718192021222324252627282930313233343536373839from langchain_deepseek import ChatDeepSeekfrom langchain.chains import ConversationChainfrom langchain.memory import ConversationBufferMemoryf...
会话缓冲记忆ConversationBufferMemory
将预设的聊天记录保存起来,为之后的聊天提供上下文信息,同时也可以将实时聊天信息保存起来
会话缓冲窗口记忆ConversationBufferWindowMemory
记录最近k次的聊天交互信息
会话缓冲记忆ConversationBufferMemory123456789101112131415161718192021222324252627from langchain.memory import ConversationBufferMemoryfrom langchain.chains import Conversa...
路由chain路由链是LangChain中用于智能决策和分发的核心机制,它可以根据输入内容自动选择最合适的处理路径。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970from langchain_core.runnables import RunnablePassthrough, RunnableLambda, RunnableBranchfrom langchain.pro...
前情提要:https://akemi.zj.cn/2025/08/26/Pacemaker-NFS/忘记做nfs迁移测试了
后续的权限挂载问题使用nfs-client 10.163.2.109挂载10.163.2.150后,发现写入失败,这个问题是因为nfs server共享后,虽然共享权限为rw,但server默认给client的权限为nobody匿名用户,为的是防止client使用root权限直接操作server文件。(默认选项root_squash,即默认对root权限进行控制
有两种处理方法:
nfs server把挂载目录给777权限
nfs server共享时指定挂载选项n...
隔壁桌的嵌入式哥们ubutnu机器满了
一看根目录200G 100%,家目录1.8T 50%
结果全是空的文件夹,这种一看就是docker的问题,果然使用docker system df 可以看到所有容器都是用的临时存储,并且几个exited状态的容器占了大量空间
12345678910# 删除所有不使用的容器docker container prune -f# root@master:~# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点udev devtmpfs 16G 0 16G 0% /devtmpf...
Chain是一种接口,将多个组件(llm、prompt等)串联在一起,以实现更复杂的应用或功能
模块化:将复杂的应用拆解成多个更简单,更易于管理和维护的模块,每个模块都可以独立进行开发和测试
可重用性:创建可以重复使用的组件和功能
可扩展性:可以轻松添加、修改、删除链中的组件,以满足应用的新需求或改变现有功能
API异步调用123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import asyncioimport timefrom lan...
回调的基本概念:
在llm应用执行的每个阶段,比如日志记录、监控、流处理等
回调处理器是实现了callbackhandler接口的对象,每个可以订阅的事件都有一个方法,当事件被触发时,CallbackManager会在每个处理器上调用相应的方法
在哪些地方定义回调函数:
构造函数时定义:llmchain=(callbacks=[handler])
发出请求时定义:llm.invoke(callbacks=…
构造函数中设置verbose为true,调用StdOutCallHandler
使用最简单回调123456789101112131415161718...
用以查询嵌入到向量数据库中的数据
MultiQueryRetriever请求拆分多索引:将问题拆分出不同的问答
Contextual compression上下文压缩:对每个文件块进行摘要,方便于定位
self-querying元数据过滤器:将请求过滤成请求+过滤器,进行查询
时间加权向量存储检索器:加上时间因素
请求拆分多索引MultiQueryRetriever通过请求拆分多索,生成多维度的查询输入,其本身是一种增强了的检索器,可以被RetrievalQAWithSourcesChain所引用
1234567891011121314151617181920212223242526...
维度
Chroma
FAISS
Milvus
类型
嵌入式向量数据库
向量检索库(非数据库)
分布式向量数据库
部署方式
轻量级,Python集成或独立服务
库形式集成,无独立服务
独立的数据库服务,支持集群
持久化
✅ 支持(本地/云)
❌ 不支持(需额外实现)
✅ 支持(内置)
扩展性
中等,支持简单扩展
低,单机为主
高,分布式架构
生产就绪
适合中小规模
研究/中小应用
企业级大规模
查询功能
基础向量检索+元数据过滤
高性能向量检索
向量+标量混合查询、复杂过滤
社区生态
较新但增长快
成熟,Meta维护
活跃,CNCF项...