LangChain三款神器实战,打造能查能搜能算的AI Agent

发布时间:2026/10/10 1:53:04
LangChain三款神器实战,打造能查能搜能算的AI Agent 文章目录前言一、数据库查询神器SQLDatabasePostgreSQL 实战1.1 这玩意儿是干嘛的1.2 安全这块拿捏得死死的1.3 看看效果二、消除大模型幻觉DuckDuckGo 联网检索工具2.1 先说幻觉这回事2.2 一行接入拒绝内卷2.3 完整可运行代码2.4 看看效果三、最实用日常工具PythonREPL 代码解释器3.1 它是什么3.2 注意别让它乱跑3.3 完整可运行代码3.4 看看效果结语P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者这个教程里内容讲解通俗易懂且风趣幽默对我帮助很大。我想与大家分享这个宝藏教程请点击下方链接查看 传送门https://blog.csdn.net/qq_74013365前言先说个扎心的事实现在的程序员一半时间在写 Prompt另一半时间在跟大模型的幻觉作斗争剩下那点时间用来怀疑人生。今天不整那些唬人的架构图咱们直接翻一翻 LangChain 社区这个百宝箱挑三件趁手的兵器出来晒晒。件件都是那种不贵、好用、关键时刻能救命的货色。一、数据库查询神器SQLDatabasePostgreSQL 实战1.1 这玩意儿是干嘛的让大模型直接写 SQL胆子不小。这就好比让刚学会写字的小学生给你写起诉状——字是认识了写出来你敢用吗SQLDatabase 干的事儿很朴素先把表结构、字段、样例数据全摸清楚再喂给模型。相当于考试前有人帮你把重点画好了还顺手贴上了便利贴。更省心的是它原生支持 MySQL、PostgreSQL、SQLite、SQL Server不用你自己去适配语法开箱即用。比某些买回来还要自己拧三天螺丝的家具强多了。1.2 安全这块拿捏得死死的它支持表白名单还内置了一道只读紧箍咒。你想让它删个表工具反手一句仅支持只读查询禁止修改数据库比你家路由器管得还宽。以前手写 SQL 是把青龙偃月刀能杀敌也能伤己现在这把刀配了刀鞘、上了锁还得刷脸才能用。importosfromdotenvimportload_dotenvfromlangchain_community.utilities.sql_databaseimportSQLDatabasefromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_agentfromlangchain_core.toolsimporttoolfromlanggraph.checkpoint.memoryimportInMemorySaver load_dotenv()# 连接PostgreSQL数据库dbSQLDatabase.from_uri(postgresqlpsycopg2://postgres:123456127.0.0.1:5432/mydb,include_tables[users,articles],sample_rows_in_table_info2,)# 安全封装SQL查询工具仅只读tooldefquery_sql(sql:str)-str:执行PostgreSQL只读查询禁止修改、删除、新增数据forbidden[drop,delete,alter,insert,update,truncate]ifany(kinsql.lower()forkinforbidden):return仅支持只读查询禁止修改数据库try:returndb.run(sql)exceptExceptionase:returnfSQL执行失败{str(e)}请修正语法重试# 初始化AgentllmChatOpenAI(modelos.getenv(DASHSCOPE_MODEL),base_urlos.getenv(DASHSCOPE_BASE_URL),api_keyos.getenv(DASHSCOPE_API_KEY))checkpointerInMemorySaver()agentcreate_agent(modelllm,tools[query_sql],checkpointercheckpointer,system_promptf你是数据分析助手根据表结构生成正确SQL返回自然语言结果。表结构{db.get_table_info()})defchat_db(question:str):resagent.invoke({messages:[(user,question)]},config{configurable:{thread_id:sql_demo}})returnres[messages][-1].contentif__name____main__:print(chat_db(查询所有用户信息))print(chat_db(查询10篇文章按时间倒叙))1.3 看看效果你瞅瞅模型自己就把用户列表查出来了还顺手把最近十篇文章按时间排好了序。张三李四王五赵六孙七读起来跟背百家姓似的——就差周吴郑王了。1. **张三** (zhangsan) - 邮箱: zhangsanexample.com - 昵称: 张三 - 头像: https://example.com/avatar/1.jpg - 状态: 正常 2. **李四** (lisi) - 邮箱: lisiexample.com - 昵称: 李四 - 头像: https://example.com/avatar/2.jpg - 状态: 正常 3. **王五** (wangwu) - 邮箱: wangwuexample.com - 昵称: 王五 - 头像: https://example.com/avatar/3.jpg - 状态: 正常 4. **赵六** (zhaoliu) - 邮箱: zhaoliuexample.com - 昵称: 赵六 - 头像: https://example.com/avatar/4.jpg - 状态: 正常 5. **孙七** (sunqi) - 邮箱: sunqiexample.com - 昵称: 孙七 - 头像: https://example.com/avatar/5.jpg - 状态: 正常 以下是按创建时间倒序排列的最近 10 篇文章 | 序号 | 文章标题 | 创建时间 | |------|----------|----------| | 1 | PostgreSQL 入门指南 | 2026-10-04 09:04:39 | | 2 | Nodejs 开发RESTful接口 | 2026-10-04 09:04:39 | | 3 | React 组件设计思路 | 2026-10-04 09:04:39 | | 4 | Docker 容器基础命令 | 2026-10-04 09:04:39 | | 5 | TypeScript 类型体操 | 2026-10-04 09:04:39 | | 6 | Nginx反向代理配置 | 2026-10-04 09:04:39 | | 7 | Git 工作流规范 | 2026-10-04 09:04:39 | | 8 | Redis缓存设计 | 2026-10-04 09:04:39 | | 9 | Linux 常用运维命令 | 2026-10-04 09:04:39 | | 10 | 前端工程化Vite | 2026-10-04 09:04:39 | **注意** 示例数据中所有文章的 created_at 时间戳相同实际数据库中会显示真实的发布时间顺序。二、消除大模型幻觉DuckDuckGo 联网检索工具2.1 先说幻觉这回事大模型幻觉是什么就是它不懂但它敢答。像极了酒桌上那位喝了二两就上知天文、下知地理的朋友——你问他明朝有几个皇帝他能当场给你编一部穿越小说还带分卷的。平时聊天幻觉就当个乐子听可一到医疗、法律、金融这些场合幻觉就是事故现场谁也笑不出来。解决办法千千万最朴素的思路就一条不懂你就搜啊2.2 一行接入拒绝内卷DuckDuckGoSearchRun一行初始化不用自己对接 API。以前你想让模型联网得先跟搜索引擎的 API 文档大战三百回合赢了才能接上现在一行代码模型就学会了不懂先搜。这学习速度比我当年学会用百度还快。装起来也省事一条命令搞定uvaddduckduckgo-search ddgs2.3 完整可运行代码importosfromdotenvimportload_dotenvfromlangchain.agentsimportcreate_agentfromlangchain_community.toolsimportDuckDuckGoSearchRunfromlangchain_openaiimportChatOpenAIfromlanggraph.checkpoint.memoryimportInMemorySaver load_dotenv()# 初始化国内可用的联网检索工具search_toolDuckDuckGoSearchRun()# 初始化基础组件llmChatOpenAI(modelos.getenv(DASHSCOPE_MODEL),base_urlos.getenv(DASHSCOPE_BASE_URL),api_keyos.getenv(DASHSCOPE_API_KEY),temperature0)checkpointerInMemorySaver()# 创建检索Agentagentcreate_agent(modelllm,tools[search_tool],checkpointercheckpointer,system_prompt遇到不确定的技术概念、常识知识、实时信息主动调用联网搜索工具基于检索到的权威内容作答严禁编造信息。)defchat_search(question:str):resagent.invoke({messages:[(user,question)]},config{configurable:{thread_id:search_agent_demo}})returnres[messages][-1].contentif__name____main__:print(chat_search(LangGraph是什么核心优势有哪些))print(chat_search(大模型幻觉的成因和主流解决方案))2.4 看看效果提问LangGraph 是什么它引经据典给你讲得明明白白再问幻觉的成因它把 RAG、微调、提示词工程挨个梳理了一遍比复习资料还齐全。有了搜索引擎当外挂模型终于从一本正经地胡说八道进化成了一本正经地引用资料。建议给它评个进步奖。**LangGraph** 是由 LangChain 团队开发的一个开源库专门用于构建**有状态Stateful、多步Multi-step**的 AI Agent 应用。 简单来说如果说传统的 LLM 应用像是一条线性的流水线Chain那么 LangGraph 就是让开发者可以构建复杂的**流程图Graph**从而创建出具备自我修正、循环思考能力的智能体。 以下是关于 LangGraph 的详细解释及其核心优势 ### 1. LangGraph 是什么 LangGraph 是一个**低级别的编排框架Orchestration Framework**。它不直接提供高级别的业务逻辑封装而是提供构建复杂工作流的积木。 * **核心模型**它将应用程序建模为一个**图Graph**。 * **节点Nodes**代表具体的步骤或动作例如调用一个 LLM、查询数据库、执行一段 Python 代码。 * **边Edges**代表节点之间的连接和控制流例如如果 A 成功则去 B否则去 C或者从 B 回到 A 进行重试。 * **定位**它是 LangChain 生态系统的下一代核心组件旨在取代传统的 LangChain Chains因为 Chain 很难处理复杂的循环和状态管理。 --- ### 2. 核心优势有哪些 LangGraph 解决了传统 LLM 应用开发中的几个痛点其核心优势主要体现在以下五个方面 #### ① 原生支持循环Cycles—— Agent 的核心 这是 LangGraph 与传统 Chain 最大的区别。 * **问题**传统的线性流程无法处理思考-行动-观察的循环如 ReAct 模式。如果一个 Agent 发现第一步做错了它需要回头重新做这在普通 Chain 中很难实现。 * **优势**LangGraph 允许你在图中设置**循环边**。这使得构建具备自我反思、自我纠错能力的 Agent 变得非常简单。 #### ② 强大的状态管理State Management * **问题**在多步应用中如何优雅地传递数据Context是一个难题。 * **优势**LangGraph 提供了一个统一的**状态字典State Dictionary**。所有节点共享同一个状态对象你可以轻松地在不同步骤间传递和更新数据而不需要在每个函数之间手动传递大量参数。 #### ③ 持久化执行与检查点Durable Execution Checkpointing * **问题**如果 Agent 运行了 10 分钟突然崩溃或网络中断之前的进度就丢失了。 * **优势**LangGraph 内置了**检查点Checkpoints**机制。它可以自动保存当前的状态快照。即使应用重启也可以从上次停止的地方继续运行Resume这对于长时间运行的复杂任务至关重要。 #### ④ 人类介入Human-in-the-Loop * **问题**在生产环境中关键决策往往需要人工审核。 * **优势**LangGraph 允许你在图的任意节点设置**中断Interrupt**。当程序运行到该节点时它会暂停并等待人类的指令例如批准这个操作或修改这个参数然后再继续执行。这极大地提高了 AI 应用在金融、医疗等高风险场景的安全性。 #### ⑤ 细粒度的控制流Fine-grained Control Flow * **优势**你可以精确控制每一步的执行顺序。 * **条件路由**根据上一步的结果动态决定下一步去哪里。 * **并行执行**可以同时启动多个独立的子图或节点进行处理。 * **错误处理**可以定义专门的错误处理节点当某个步骤失败时自动跳转到修复逻辑。 ### 总结 如果你只需要简单的问答机器人使用标准的 LangChain Chain 可能就够了但如果你想构建**复杂的、需要多步推理、具备记忆能力、或者需要人工审核的智能体应用**LangGraph 是目前最主流且强大的选择。 大模型LLM的幻觉Hallucination是指模型生成的内容在表面上看起来通顺、合理但实际上包含事实错误、逻辑矛盾或完全虚构的信息。 这是目前制约大模型在医疗、法律、金融等高风险领域落地的最大瓶颈之一。以下是关于其成因及主流解决方案的详细解析 ### 一、 大模型幻觉的成因 大模型产生幻觉并非因为它有主观恶意而是由其底层机制决定的 1. **概率预测的本质Next-Token Prediction** * **原理**大模型本质上是一个极其复杂的文本补全工具。它的任务是根据上文预测下一个字出现的概率最高是什么。 * **问题**它追求的是语义上的连贯性和统计上的合理性而不是事实上的真实性。如果训练数据中某种错误的搭配出现频率很高模型就会认为那是正确的。 2. **训练数据的局限性与噪声** * **数据污染**互联网数据本身包含大量谣言、错误信息和过时知识。 * **缺乏特定领域知识**通用大模型可能没有经过足够深度的垂直领域如量子物理、罕见病训练遇到不懂的问题时它会尝试用通用的语言模式去编造一个看似合理的解释。 3. **上下文窗口与注意力机制的限制** * **遗忘现象**当输入信息量极大超过上下文窗口时模型可能会忽略关键约束条件或者混淆不同来源的信息导致张冠李戴。 * **长尾分布**对于生僻的知识模型往往无法准确召回从而产生幻觉。 4. **提示词Prompt的模糊性** * 如果用户的问题模棱两可或者指令不够清晰模型为了完成任务往往会倾向于过度发挥补充一些不存在的信息来填补空白。 --- ### 二、 主流解决方案 目前业界主要通过**外部辅助**和**内部优化**两个维度来缓解幻觉 #### 1. 检索增强生成 (RAG, Retrieval-Augmented Generation) —— 最核心方案 这是目前解决幻觉最有效的手段。 * **原理**在回答之前先让模型去向量数据库或搜索引擎中查找相关的真实文档片段然后将这些片段作为参考资料喂给模型。 * **优势**强制模型基于给定的事实进行回答Grounding大幅减少了凭空捏造的可能。 * **关键点**需要配合高质量的切片Chunking和重排序Re-ranking技术确保检索到的内容是准确的。 #### 2. 微调 (Fine-Tuning) * **监督微调 (SFT)**使用高质量、无幻觉的标准问答对QA pairs对模型进行训练让它学习正确的回答范式。 * **人类反馈强化学习 (RLHF / DPO)**通过人工对模型的输出进行打分和排序奖励那些诚实、准确的答案惩罚那些胡编乱造的答案从而从价值观层面抑制幻觉。 #### 3. 提示词工程优化 (Prompt Engineering) * **思维链 (Chain of Thought, CoT)**要求模型一步步思考Lets think step by step。研究表明强迫模型展示推理过程可以显著降低幻觉率因为逻辑链条比直接给出结论更不容易出错。 * **少样本提示 (Few-Shot Prompting)**在Prompt中提供几个正确的示例引导模型模仿正确的格式和内容。 * **明确边界**在Prompt中加入指令如如果你不知道答案请直接说不知道不要编造。 #### 4. 自我反思与验证 (Self-Reflection amp; Verification) * **多路投票 (Self-Consistency)**让模型针对同一个问题生成多个不同的回答然后由另一个模块或模型自身进行投票选择最一致的那个答案。 * **批判者模式 (Critic Mode)**构建两个Agent一个负责生成答案另一个专门负责挑刺和验证。如果验证不通过生成者必须重写。 #### 5. 引入外部工具与校验层 (Guardrails) * **代码执行**对于数学计算或逻辑问题不让模型直接算而是让它写Python代码通过运行代码得到结果。 * **引用溯源**强制要求模型在每句话后面标注信息来源Citation。如果模型无法提供来源系统自动判定为不可信。 ### 总结 目前没有任何单一技术能彻底消除幻觉。**最佳实践通常是组合拳** gt; **RAG提供事实依据 思维链提升推理能力 严格的数据清洗源头治理** 随着模型参数量的增大和训练数据的净化幻觉率正在逐渐降低但在高可靠性要求的场景中依然需要依靠上述技术手段进行人工干预和校验。 进程已结束退出代码为 0三、最实用日常工具PythonREPL 代码解释器3.1 它是什么PythonREPLTool字面意思让 Agent 自己写 Python、自己跑。你只管提问它负责写代码、执行、交结果。以前是你写代码让机器干活现在是 AI 写代码让机器干活你在旁边看。那一刻你终于体会到了老板的快乐活儿都是别人干的锅……大概率也是别人的。3.2 注意别让它乱跑这里必须敲黑板生产环境一定要做沙箱隔离。这工具权限有多大相当于你把家里钥匙配了三把还递给一个陌生人说随便用。不隔离分分钟家被搬空连猫都保不住。3.3 完整可运行代码importosfromdotenvimportload_dotenvfromlangchain_experimental.utilitiesimportPythonREPLfromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_agentfromlanggraph.checkpoint.memoryimportInMemorySaverfromlangchain_core.toolsimportTool load_dotenv()# 初始化代码执行工具python_replPythonREPL()# 封装成Agent可用的toolrepl_toolTool(namepython_repl,descriptionPython代码执行器。用于做数学计算、数据运算。输入必须是合法python代码需要输出结果请用print()打印,funcpython_repl.run,)llmChatOpenAI(modelos.getenv(DASHSCOPE_MODEL),base_urlos.getenv(DASHSCOPE_BASE_URL),api_keyos.getenv(DASHSCOPE_API_KEY),temperature0)checkpointerInMemorySaver()agentcreate_agent(modelllm,tools[repl_tool],checkpointercheckpointer,system_prompt遇到数学计算、统计、数据处理问题请主动写Python代码执行用运行结果回答用户。)defchat_python(question:str):resagent.invoke({messages:[(user,question)]},config{configurable:{thread_id:python_demo}})returnres[messages][-1].contentif__name____main__:print(chat_python(计算1~100的平方和))print(chat_python(生成斐波那契数列前20项并求和))3.4 看看效果1 到 100 的平方和338350一秒出结果比算工资都快。斐波那契前 20 项也整整齐齐排好了队还自觉把总和报上了。你让模型口算试试它可能给你回一句我觉得大概是……后面跟一长串自信的胡话。现在好了代码一跑答案比你的工资条还精确。1~100的平方和为338350 斐波那契数列的前20项为 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765] 这20项的总和为17710结语三件兵器介绍完毕总结一下SQLDatabase 治乱写 SQLDuckDuckGo 治胡编乱造PythonREPL 治手算不靠谱。三件套凑齐一个能查、能搜、能算的 Agent 直接上岗比某护肤品牌的三件套实用多了。其实 LangChain 社区的好东西远不止这些今天先晒这三件。剩下的等你入坑之后慢慢挖——毕竟自己动手挖出来的宝藏才有开盲盒的快乐嘛。最后说句掏心窝子的工具再好也别忘了真正写出好代码的还是你本人。嗯至少目前是。P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者这个教程里内容讲解通俗易懂且风趣幽默对我帮助很大。我想与大家分享这个宝藏教程请点击下方链接查看传送门https://blog.csdn.net/qq_74013365

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询