0%
学习 Langchain Langgraph:代码也给你
发表于:
分类于:
人工智能/智能体
本文演示跑通 LangChain、LangGraph 相关概念的最小代码示例。
C1 创建智能体
- LLM 可以换成其它模型,因为我本地部署了 Ollama,所以这里用 qwen3.5:9b 模型
- 步骤:
create_agent创建智能体agent.invoke调用智能体
C2 带工具调用的智能体
| |
- @tool 装饰器定义一个工具
- 在 create_agent 中传入工具列表
C3 带工具调用的 LangGraph 智能体
| |
- 构建步骤如下:
- 定义工具:@tool
- 定义智能体:agent 函数
- 定义工具节点:ToolNode
- 定义边:add_edge, add_conditional_edges
- 编译图:builder.compile()
- 调用图:graph.invoke()
C4 短期记忆 checkpointer
| |
- checkpointer,适用于单个会话(thread)的短期记忆
- 在
graph.invoke中传入config=cfg,即可实现短期记忆
C5 长期记忆 store
| |
- NAMESPACE:用于区分不同的长期记忆空间,避免冲突
- @tool 定义两个工具:save_memory 和 get_memory,用于保存和回忆长期记忆
- builder.compile(checkpointer=checkpointer, store=store):编译图时传入 checkpointer 和 store,即可实现短期记忆和长期记忆
C6 Human-in-the-Loop
| |
- interrupt 获取人工审核请求的结果
- Command 用于继续执行图
C7 终端交互 Human-in-the-Loop
| |
- 从终端获取用户审核结果并按需执行图
C8 多智能体
| |
- create_supervisor 创建的是
StateGraph实例,langgraph_supervisor 包帮助我们定义了图的节点、边、状态等。
小结
示例简单,一跑就会,真实业务,就难得很。
RocketMQ:使用 5.x 客户端及代码示例
发表于:
分类于:
后端技术/RocketMQ
RocketMQ 消息类型:同步、异步、顺序、延时、事务
发表于:
分类于:
后端技术/RocketMQ

RocketMQ 按发送方式、消费顺序、投递时机、事务语义划分出最常用 5 类消息:同步消息、异步消息、顺序消息、延时消息、事务消息。
- 同步消息:发送方发消息后阻塞等待 Broker 返回结果,成功 / 失败立即感知,适合强可靠性、不能丢消息的业务;
- 异步消息:发送方发消息不阻塞,通过回调函数接收结果,吞吐量更高,适合高吞吐、允许异步感知发送结果场景;
- 顺序消息:保证同一分组内消息按发送顺序被消费,分全局顺序 / 分区顺序;牺牲部分并发,适合有先后依赖的业务;
- 延时消息:消息发送后不会立刻投递,等待指定时长才对消费者可见,不支持任意时间戳,只能选预设级别;
- 事务消息:实现分布式事务(半消息 + 确认 / 回查机制),保证本地事务和消息发送原子性,要么本地事务成功 + 消息可见,要么都不生效。
同步消息
| |
producer.send_sync(message) 用于发送同步消息,返回 SendResult 对象,包含消息 ID、状态、偏移量等信息。
RocketMQ 核心概念:Topic、队列、Tag、Key
发表于:
分类于:
后端技术/RocketMQ
RocketMQ 的 NameServer 介绍
发表于:
分类于:
后端技术/RocketMQ
LeetCode 4. 寻找两个正序数组的中位数
发表于:
分类于:
算法/LeetCode
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 。
算法的时间复杂度应该为 $O(log (m+n))$。
示例 1:
LeetCode 3. 无重复字符的最长子串
发表于:
分类于:
算法/LeetCode
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。注意 “bca” 和 “cab” 也是正确答案。
LeetCode 2. 两数相加
发表于:
分类于:
算法/LeetCode
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。



