LangGraph 与 LangChain 到底怎么分工?一篇讲清两者区别与选型
LangChain 和 LangGraph 经常被一起提起,但它们解决的并不是同一类问题。前者偏向快速搭建 LLM 应用,后者更适合处理循环、共享状态和复杂工作流。本文从开发痛点、能力边界和实战场景三部分拆开讲清楚,帮助你判断什么时候该继续用链,什么时候该换成图。
LangChain 和 LangGraph 经常被一起提起,但它们解决的并不是同一类问题。前者偏向快速搭建 LLM 应用,后者更适合处理循环、共享状态和复杂工作流。本文从开发痛点、能力边界和实战场景三部分拆开讲清楚,帮助你判断什么时候该继续用链,什么时候该换成图。
这篇文章用 Jetpack Compose 官方 `HorizontalPager` 实现一个可复用轮播图组件,覆盖基础滑动、伪无限循环、自动轮播、拖拽暂停和底部指示器。文中保留完整 Kotlin 示例,并说明从 Accompanist 迁移到 `androidx.compose.foundation.pager` 后的实现重点。 在 Android 传统 View 体系里,轮播图通常要把 ViewPager 或 ViewPager2 、定时器和手势处理拼在一起,代码不算复杂,但零散且不够直观。
这篇文章用 Spring Boot 官方 Starter 为主线,重新梳理了 Druid 的接入步骤、`application.yml` 配置方式、核心参数含义和监控台访问方法,同时补充了容易踩坑的冲突项与性能取舍,方便直接落地到项目中。 在 Spring Boot 项目中接入 Druid,本身并不复杂,难点往往在于参数多、配置层级容易写混,真正上线后又会遇到连接有效性、监控入口和性能取舍这些。
Agent 并不是一个抽象口号,落到工程实现,核心通常就五层:感知、规划、工具、记忆、执行。本文结合 Go 代码,把这套最小可用架构拆开讲清楚,并补上组件协作方式、落地时的关键约束,以及 Go 生态里的实际选择。
AI Agent 不是把聊天机器人换个名字,而是在大模型之上补齐感知、执行与工具调用能力,让系统能围绕目标自主规划并持续行动。本文用工作机制、典型场景和发展方向三部分,说明它为何被视为 AI 从“会回答”走向“会办事”的关键一步。
Anaconda 启动时自动进入 `(base)`,现在最稳妥的处理方式是关闭 `auto_activate_base`。本文按场景说明如何正确禁用自动激活、排查 PowerShell 启动残留,以及在 Linux/macOS 中改为默认进入自定义环境,同时避开改 PATH、反向 init 这类高风险做法。
Go 不只是高并发后端语言,也开始成为构建 AI Agent 的现实选择。本文从并发、类型安全和部署效率切入,对比 LangChainGo、Google ADK-Go、Eino 三个代表性框架,并给出按团队栈、项目复杂度和生态诉求做判断的选型思路。
SSE 和 WebSocket 都能做实时通信,但在 AI 场景里,SSE 往往更贴近“边生成边输出”的产品需求。本文从通信模型、实现复杂度、Go 示例和 AI 流式接口实践几方面拆开说明,帮助你判断什么时候该优先选 SSE,什么时候该换成 WebSocket。
Prompt 注入已经从概念风险变成了 AI 应用里的常见攻击面,尤其在会拼接用户输入、网页内容和外部文档的 Go 服务中更容易出现。本文结合 OWASP 的定义、典型业务场景与 Go 示例代码,梳理直接注入、间接注入和多层防护做法,帮助你判断哪些措施能真正降低风险。
Go 的多路复用并不只是一个 `select` 语法点,它同时牵涉 `goroutine` 调度、`channel` 协作以及底层 `epoll`、`kqueue`、`IOCP` 的事件通知机制。本文从工作原理、平台支撑到三类常见场景拆开说明,帮助你判断它适合解决什么问题、该怎么用,以及哪些地方最容易踩坑。
Function Calling 解决的不是模型会不会“思考”,而是它能不能安全、可靠地把意图交给程序执行。本文用 Go 语言拆解这一机制的关键环节:工具描述、函数分发、参数校验、结果回传,以及并发和权限控制该怎么落地。
许多开发者认为在php.ini中禁用allow_url_fopen即可彻底解决远程文件包含(RFI)漏洞,但这会破坏大量依赖URL流的应用且存在误解。事实上,攻击者可通过php://input或data:等协议绕过该限制直接执行代码。本文解析这一安全盲区,并指出彻底防护需结合Suhosin扩展或更严格的输入验证。