agent迭代器AgentExecutorAgent 迭代器( AgentExecutor)是 LangChain 中实际执行 Agent 决策循环的引擎
即思考 → 行动 → 观察 → 再思考 → … → 结束
特性
Agent自带迭代器
自定义迭代器
开发难度
✅ 零配置
🟡 需要编程
标准化
✅ 符合ReAct框架
🟡 任意设计
错误处理
✅ 内置完善
🟡 需自行实现
工具集成
✅ 自动适配
🟡 手动集成
循环控制
🟡 固定模式
✅ 完全定制
状态管理
✅ 自动维护
🟡 手动管理
性能优化
🟡 一般优化
✅ 可深度优化
特殊需求...
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...