最近两年,大语言模型(LLM)非常的火爆,ChatGPT、Claude、Gemini到国内的DeepSeek、Kimi 等一众模型相继出圈,让自然语言交互成为当下最 热门的技术方向,大家都想把LLM落地到实际业务中。但是有人发现在直接调用原生的LLM API开发时,总算踩各种坑,比如:提示词管理混乱;上下文记忆缺失;外部知识接入难;功能组合非常繁琐,需要写大量代码进行逻辑编排。我们这次要了解的LangChain就是为了解决这类问题的开源框架。Langchain是一款为LLM应用开发而打造的框架,它把大语言模型看作一个智能推理引擎,围绕这个引擎拆出了一系列的看可以自由组合、灵活复用的模块,拼在一起就能快速实现复杂的LLM应用。那么我们来看看它的六大核心模块,参考下面的表格: | |
| 统一调用接口,不管是 OpenAI、Anthropic,还是本地部署的模型,写法都一致 |
| 专业的提示词模板管理,支持变量替换、示例参考,告别手写拼接的麻烦 |
| 把多个开发步骤串联成完整工作流,比如「检索文档→生成答案」一键完成 |
| 专门解决多轮对话的上下文记忆问题,让机器人能记住聊天历史 |
| 处理外部知识库:加载文档、切分文本、向量存储,实现精准的知识检索 |
| 让 LLM 自主决策!能根据任务需求,自动调用搜索、计算器、数据库等工具完成目标 |
在了解它的核心后,它可以被应用于哪些场景呢?例如我们常见的企业问答、某电商的客服机器人、数据分析主力及自动化办公工具等等。接下来我们一步步地先搭建第一个LangChain程序,了解一下它的开发核心流程。1.安装环境:Python版本3.9以上,准备一个LLM服务商的API Key,可以考虑去腾讯云的知识引擎原子能力DeepSeek API接口,注册会送一部分试用的token。pip install langchain-openaipip install langchain
2.实现程序代码:我这里使用了腾讯的api,如果使用其它的可以自行替换open_ai_base 和 modelfrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserimport osfrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParseros.environ["DEEPSEEK_API_KEY"] = "自己的密钥" # 替换成自己的密钥model = ChatOpenAI( model="deepseek-r1-0528", # DeepSeek必用模型名 openai_api_base="https://api.lkeap.cloud.tencent.com/v1", # 不同提供商这个不一样 openai_api_key=os.environ["DEEPSEEK_API_KEY"])prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个乐于助人的技术博主。"), ("user", "请用一句话介绍 {topic} 的核心特点。")])# 管道式组合:Prompt → Model → 字符串解析chain = prompt | model | StrOutputParser()result = chain.invoke({"topic": "LangChain"})print(result)
LangChain 的核心特点在于 **简化开发与集成大型语言模型应用的过程**。它通过提供模块化工具链(如提示模板、链式调用、代理、记忆管理等),实现数据感知能力(连接外部数据源)和代理能力(调用API/工具),帮助开发者高效构建灵活、可扩展的复杂应用。
在上面的代码 中,ChatOpenAI 是LangChain对OpenAI Chat模型的封装,现在各大模型很多都支持这种方式;ChatPromptTemplate 支持system+user多角色消息,而'|' 管道操作符,是LangChain推荐的组合方式,依次将数据传递给prompt->model->parser. 而StrOutputParser将模型返回的AIMessage对象转换成普通字符串。认识了LangChain的定位和六大核心模块,完成了环境安装和API配置;编写了第一个LangChain体验程序。最后大家可以自己尝试用LangChain来调整一下system提示,来看看有什么变化。有什么问题欢迎评论区 讨论。