langchain快速入门

langchain快速入门 AI全栈知识LangChain入门 - AI应用开发框架写在前面你可能已经会用Python调大模型的API了发一个请求拿到一个回答。但真实的AI应用远不止一问一答要让对话有记忆记住之前聊了什么要先搜资料再回答RAG要让模型自己调工具完成任务Agent这些如果全部自己手写代码量大、容易出bug。LangChain就是帮你把这些常见模式封装好的框架你拼装组件就行不用从零造轮子。LangChain是什么一句话 AI应用开发的脚手架。把对话、RAG、Agent这些常见模式封装成现成组件几行代码就能搭建复杂的AI应用。生活类比为什么需要它直接调API只能做到一个问题 一个回答。但真实需求是三个核心概念概念一Chain链- 把多步骤串成流水线类比你去奶茶店点了一杯饮料后厨的流程是取杯加茶底加奶加糖封口出品。每一步都依赖上一步的结果不能跳着来。Chain就是这样把AI应用的多个步骤像做奶茶一样串起来前一步做完自动流转到下一步。RAG的Chain就像奶茶制作流水线 用户问题(点单) 转向量(备料) 搜索向量库(找配方) 拼装Prompt(调配) 调大模型(制作) 输出回答(出品)用户问题 转向量 搜索向量库 拼装Prompt 调大模型 输出回答每一步的输出 下一步的输入像链条一样串起来。**代码形式LCEL管道符写法** python # 像Linux管道一样前一步 | 后一步 | 后一步 chain prompt_template | llm | output_parser result chain.invoke({question: 什么是K8s})如果你熟悉Linux的管道cat file | grep error | wc -l这个概念你秒懂每个组件处理完传给下一个。概念二Memory记忆- 让对话有上下文问题 大模型的API每次请求都是独立的它不记得上一轮你说了什么。这就像你每次打电话给客服都换一个人接你得从头解释一遍你的问题。Memory做的事 帮你当记录员把每轮对话记下来下次自动带上。这样模型每次都能看到之前聊了什么。注意不是模型真的记住了而是每次请求都把聊天记录一起发过去。 就像你把之前的聊天截图发给新客服看不是客服记性好是你把记录带上了。没有Memory 用户我叫张三 模型你好张三 用户我叫什么 模型我不知道独立请求没记忆 有Memory 用户我叫张三 模型你好张三Memory保存 用户我叫什么 模型你叫张三Memory自动把上轮对话加到Prompt实际上模型看到的Prompt是[历史] 用户说我叫张三你回答了你好张三 [当前] 用户说我叫什么Memory帮你自动管理这个历史记录拼接的过程。概念三Tool工具- 让模型能动手问题模型只能生成文字不能真的去查数据库、调API、执行命令。它就像一个被关在房间里的超级大脑很聪明但没有手脚做不了房间外面的事。Tool的作用给这个大脑接上手脚定义一组工具函数查Pod、查日志、重启服务……模型可以决定什么时候伸手去用哪个工具。tool def get_unhealthy_pods(namespace: str default) - str: 获取异常状态的Pod列表 # 调用K8s API return pod/order-service: CrashLoopBackOff tool def get_pod_logs(pod_name: str) - str: 获取Pod的最近日志 # 调用K8s API return java.lang.OutOfMemoryError你只需要定义函数写好描述LangChain帮你处理模型决定调哪个工具 自动解析执行工具 自动调用你的函数结果返回给模型 自动拼装模型再决定下一步 自动循环这就是你K8sChat项目的核心机制。代码示例最基础直接对话from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, SystemMessage # 创建模型客户端指向你公司的API或通义千问 llm ChatOpenAI( base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, api_key你的key, modelqwen-turbo ) # 对话 messages [ SystemMessage(content你是一个K8s运维专家), HumanMessage(contentPod Pending怎么排查) ] response llm.invoke(messages) print(response.content)进阶Agent模式自动调工具from langchain_openai import ChatOpenAI from langchain.agents import tool, AgentExecutor, create_openai_tools_agent from langchain_core.prompts import ChatPromptTemplate # 1. 定义工具 tool def get_unhealthy_pods(namespace: str default) - str: 获取异常状态的Pod列表 return pod/order-service-xxx: CrashLoopBackOff tool def get_pod_logs(pod_name: str) - str: 获取Pod的最近日志 return java.lang.OutOfMemoryError: Java heap space # 2. 创建Agent llm ChatOpenAI(base_url..., api_key..., modelqwen-turbo) tools [get_unhealthy_pods, get_pod_logs] prompt ChatPromptTemplate.from_messages([ (system, 你是K8s运维助手用工具帮用户排查问题), (human, {input}), (placeholder, {agent_scratchpad}) ]) agent create_openai_tools_agent(llm, tools, prompt) executor AgentExecutor(agentagent, toolstools) # 3. 用户提问Agent自动调工具 result executor.invoke({input: 有哪些Pod异常帮我看下日志}) print(result[output])Agent执行过程用户有哪些Pod异常帮我看下日志 模型决定调 get_unhealthy_pods 拿到结果order-service CrashLoopBackOff 模型决定调 get_pod_logs(order-service-xxx) 拿到结果OutOfMemoryError 模型总结order-service因为内存不足(OOM)一直重启建议增加memory limitLangChain的生态LCEL管道符写法LangChain现在推荐用管道符串联组件。如果你是Linux运维出身这个你绝对秒懂因为它跟Shell的管道一模一样# 你每天在用的Linux管道每个命令处理完传给下一个 cat access.log | grep 500 | sort | uniq -c | sort -rn # LangChain管道LCEL完全一样的思路 chain prompt | llm | output_parser水管接水管前一段流出的水自动流进下一段。定义好管道线路一个.invoke()就跑通了。Callback插入监控逻辑LangChain支持在执行过程中插入监控from langchain.callbacks import StdOutCallbackHandler # 执行时会打印调了什么模型、花了多少Token、每步耗时 result chain.invoke({input: xxx}, config{callbacks: [StdOutCallbackHandler()]})运维应用 你可以用Callback做Token消耗统计、调用链追踪、延迟监控这些是AI应用可观测性的基础。LangChain vs 竞品学一个LangChain就够了它覆盖面最广。LangChain的局限要知道每个框架都有代价。LangChain就像一把瑞士军刀功能齐全但有时候你只想削个苹果却要掏出一个20种功能的大家伙反而不顺手。所以有些团队选择自己手写需求明确时不需要框架的全部功能。就像你家装修简单贴个壁纸不用请装修公司自己动手更快。对K8sChat的建议面试时从零手写了Agent循环比用了LangChain更加分前者证明理解原理后者只证明会用工具。但如果赶时间出Demo用LangChain也完全可以后面可以重构。面试怎么说如果被问你了解LangChain吗了解LangChain是AI应用开发框架核心解决三个问题Chain把多步骤串成流水线Memory管理对话历史Tool让模型能调外部API。我开发的K8sChat运维助手就用到了Tool机制定义K8s查询工具让模型通过Function Calling自动调用。不过LangChain也有局限抽象重、版本迭代快。简单场景我倾向手写复杂编排时才用框架。延伸思考小结本篇核心收获LangChain AI应用的脚手架把常见模式封装成组件三个核心Chain流水线、Memory记忆、Tool工具箱LCEL管道符写法跟Linux的pipe一样前步输出是后步输入Tool是K8sChat的核心机制定义工具函数让模型调用有局限抽象重、版本不稳定。简单场景可以手写面试时手写Agent比用框架更加分下一篇预告AI全栈知识06RAG实战检索增强生成下一篇我们将动手搭建一个RAG应用文档切分的策略Embedding是什么把文字变成向量向量检索的原理用LangChain搭建一个简单的知识库问答参考链接LangChain官方文档LangChain GitHubLCEL教程LangChain Agent教程LangGraph文档LangSmith调用链追踪资料展示下面是我整理的AI大模型学习资料和工具包预览适合收藏后按主题逐步学习。如果你想看完整资料目录可以在评论区留言「资料」也欢迎告诉我你更关注AI大模型里的哪类内容。