LangChain 小白入门:10 分钟写出你的第一个 AI 程序 📅 发布时间:2026/9/7 8:19:43 👁 浏览次数: 最近很多人在学 AI Agent、RAG、MCP但如果你刚接触这些东西我不建议一上来就研究特别复杂的框架。先把最基础的东西跑起来。这一篇我们只做几件事安装 LangChain ↓ 调用一次大模型 ↓ 给 AI 设置一个角色 ↓ 传递变量 ↓ 最后让 AI 调用一个简单工具不讲复杂架构。不讲向量数据库。也不讲多 Agent。只要你会一点 Python基本就可以跟着做。一、LangChain 是干什么的先用一句话理解LangChain 是一个帮助我们开发大模型应用的 Python 框架。比如以前调用 AIPython ↓ 大模型 API ↓ 回答LangChain 可以帮我们慢慢变成用户 ↓ LangChain ↓ 大模型 ↓ 工具 ↓ 数据库 ↓ 搜索 ↓ 最终回答不过这些都是后面的事情。今天我们先解决第一个问题怎么让 Python 通过 LangChain 调用大模型二、准备 Python首先电脑需要安装 Python。终端输入python--version或者python3--version如果看到Python 3.11.9类似这样的内容就说明 Python 已经安装好了。建议使用Python 3.11三、创建项目新建一个目录mkdirlangchain-demo进入目录cdlangchain-demo我们的项目暂时非常简单langchain-demo │ ├── main.py │ └── .env就两个文件。四、创建虚拟环境虽然不是必须的但建议养成习惯。执行python3-mvenv .venv目录会变成langchain-demo │ ├── .venv ├── main.py └── .envMac / Linux 激活source.venv/bin/activateWindows.venv\Scripts\activate成功以后终端前面一般会出现(.venv)五、安装 LangChain执行pipinstall-Ulangchain langchain-openai再安装读取环境变量的工具pipinstallpython-dotenv一共就这几个langchain langchain-openai python-dotenv现在开发环境就准备好了。六、准备 API Key接下来需要一个可以调用大模型的 API。比如使用兼容 OpenAI API 的模型服务一般会有API Key Base URL 模型名称创建.env写入OPENAI_API_KEYsk-xxxxxxxx OPENAI_BASE_URLhttps://你的接口地址/v1 MODEL_NAME你的模型名称比如OPENAI_API_KEYsk-123456 OPENAI_BASE_URLhttps://example.com/v1 MODEL_NAMEyour-model这里不要直接把 Key 写到 Python 代码里面。因为以后代码传到 GitHub非常容易泄露。七、第一个 LangChain 程序打开main.py写入importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI# 读取 .envload_dotenv()# 创建大模型llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)# 给模型发送问题responsellm.invoke(什么是 LangChain请用一句话解释。)# 输出回答print(response.content)然后运行python main.py如果一切正常你应该能看到类似LangChain 是一个用于构建大模型应用和 AI Agent 的开发框架。到这里其实你的第一个 LangChain 程序已经完成了。八、这几行代码到底是什么意思代码不长我们拆开看。首先fromlangchain_openaiimportChatOpenAI表示从 langchain_openai 导入 ChatOpenAI它负责帮助我们调用聊天模型。然后llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)相当于告诉 LangChain我要使用哪个模型 API Key 是什么 API 地址在哪里然后最关键的是responsellm.invoke(什么是 LangChain)invoke可以简单理解成调用也就是调用大模型最后print(response.content)把模型回答打印出来。所以整个程序本质就是创建模型 ↓ 发送问题 ↓ 获取回答非常简单。九、试着换一个问题我们修改responsellm.invoke(给我写一个 Python Hello World)完整代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)responsellm.invoke(给我写一个 Python Hello World)print(response.content)可能返回print(Hello World)再换一个responsellm.invoke(用小白能理解的方式解释 Redis)你会发现LangChain 本身并没有创造一个新的 AI。真正负责回答问题的依然是大模型。LangChain 更像是把我们写的 Python 程序 和大模型连接起来。十、让用户自己输入问题现在不要把问题写死。改成questioninput(请输入你的问题)完整代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)questioninput(请输入你的问题)responsellm.invoke(question)print(\nAI)print(response.content)运行python main.py终端请输入你的问题你输入Docker 是干什么的AI 就会回答。再运行一次请输入你的问题输入Python 和 Java 有什么区别AI 又会回答。这时候你已经做出了一个最简单的AI 问答程序十一、让程序可以一直聊天刚才有个问题。每次问完一次程序就结束了。可以增加whileTrue:完整代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)whileTrue:questioninput(\n你)ifquestionexit:breakresponsellm.invoke(question)print(\nAI,response.content)运行python main.py现在可以一直聊天你什么是 MySQL AIMySQL 是一个关系型数据库…… 你什么是 Redis AIRedis 是一个高性能的键值数据库…… 你exit输入exit程序退出。现在这个程序已经有点像最简单的 ChatGPT 了。十二、给 AI 设置一个角色接下来增加一点 LangChain 的味道。比如我们希望 AI 永远是一名Python 老师可以使用消息。代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimport(SystemMessage,HumanMessage,)load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)messages[SystemMessage(content 你是一名 Python 入门老师。 用户都是第一次学习编程的小白。 回答要求 1. 尽量简单 2. 不要使用复杂术语 3. 多给简单例子 4. 每次代码不要太长 ),HumanMessage(content什么是变量),]responsellm.invoke(messages)print(response.content)这里多出了两个东西SystemMessage HumanMessage非常好理解。十三、SystemMessage 是什么例如SystemMessage(content 你是一名 Python 入门老师。 )它主要用于告诉 AI你是谁 你应该怎么回答 你需要遵守什么规则比如SystemMessage(content 你是一名 Java 老师。 回答所有问题都必须 1. 使用 Java 2. 给代码示例 3. 用中文回答 )这样用户问怎么遍历数组AI 就更倾向于使用 Java。十四、HumanMessage 是什么这个就更简单了。HumanMessage(content什么是变量)就是用户说的话。所以messages[SystemMessage(content你是一名 Python 老师),HumanMessage(content什么是变量),]可以理解成系统 你是一名 Python 老师 用户 什么是变量然后发送给大模型。十五、做一个简单的编程老师我们把前面的代码组合起来。importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimport(SystemMessage,HumanMessage,)load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)whileTrue:questioninput(\n你)ifquestionexit:breakmessages[SystemMessage(content 你是一名非常有耐心的编程老师。 用户是编程小白。 回答规则 1. 使用中文 2. 尽量简单 3. 多举例子 4. 涉及代码时给出代码 5. 不要一次讲太复杂 ),HumanMessage(contentquestion),]responsellm.invoke(messages)print(\nAI老师)print(response.content)现在运行python main.py输入什么是 Python 函数然后什么是 for 循环再输入给我写一个最简单的计算器。这已经可以作为一个简单的小项目了AI 编程老师十六、什么是 Prompt学 LangChain 一定会看到一个词Prompt不要把它想复杂。Prompt 就是给 AI 的提示词。比如请给我介绍 Python。这就是 Prompt。再复杂一点你是一名 Python 老师。 请面向第一次学习编程的人 解释什么是 Python 变量。 要求 1. 语言简单 2. 给一个代码示例 3. 控制在 300 字以内这也是 Prompt。简单理解Prompt 你告诉 AI 应该干什么。十七、使用 PromptTemplate假设我们要做一个代码解释器每次 Prompt 都差不多请使用小白能理解的方式解释下面代码 XXX只有XXX会变化。这时候就可以使用模板。fromlangchain_core.promptsimport(ChatPromptTemplate)promptChatPromptTemplate.from_messages([(system, 你是一名编程老师。 请使用最简单的语言解释代码。 ),(human, 请解释下面这段代码 {code} ),])注意{code}就是变量。例如messagesprompt.invoke({code: for i in range(10): print(i) })完整代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimport(ChatPromptTemplate)load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)promptChatPromptTemplate.from_messages([(system, 你是一名编程老师。 用户是初学者。 请用最简单的语言解释代码。 ),(human, 请解释下面这段代码 {code} ),])messagesprompt.invoke({code: for i in range(10): print(i) })responsellm.invoke(messages)print(response.content)现在只需要修改code: 这里放代码 就可以重复使用 Prompt。十八、Chain 是什么接下来会看到另外一个词Chain翻译过来就是链比如我们刚才做的是用户数据 ↓ Prompt ↓ 大模型 ↓ 回答LangChain 可以直接写chainprompt|llm这里的|可以简单理解成然后也就是先执行 Prompt 然后执行 LLM代码chainprompt|llm调用responsechain.invoke({code: for i in range(10): print(i) })完整代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimport(ChatPromptTemplate)load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)promptChatPromptTemplate.from_messages([(system, 你是一名编程老师。 请使用最简单的语言解释代码。 ),(human, 解释下面代码 {code} ),])chainprompt|llm responsechain.invoke({code: def add(a, b): return a b print(add(1, 2)) })print(response.content)这里已经出现了 LangChain 一个非常重要的思想把多个步骤连接起来。十九、LangChain 为什么叫 Chain现在你应该能理解这个名字了。比如Prompt ↓ LLM是一条 Chain。以后可能是用户问题 ↓ Prompt ↓ 搜索知识库 ↓ LLM ↓ 回答也可以是一条 Chain。甚至用户 ↓ Agent ↓ 搜索 ↓ 数据库 ↓ 计算器 ↓ LLM ↓ 回答所以 LangChain 很多能力本质都是把多个组件连接起来。二十、再体验一个最简单的 Tool如果只是Prompt LLM其实还不太能感受到 Agent 的有趣之处。所以最后我们只体验一个非常简单的工具。创建一个函数defget_weather(city:str)-str:returnf{city}今天晴天温度 26 度这只是模拟天气接口。真实项目里可能会调用真正的天气 API。二十一、让 Agent 调用天气工具现在使用create_agent代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain.agentsimport(create_agent)load_dotenv()llmChatOpenAI(modelos.getenv(MODEL_NAME),api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(OPENAI_BASE_URL),)defget_weather(city:str)-str: 查询城市天气。 return(f{city}今天晴天f温度26度。)agentcreate_agent(modelllm,tools[get_weather],system_prompt 你是一个生活助手。 如果用户询问天气 请使用天气查询工具。 )resultagent.invoke({messages:[{role:user,content:北京今天天气怎么样}]})print(result[messages][-1].content)运行以后Agent 会发现用户在问天气。然后调用 get_weather得到北京今天晴天温度26度。然后再告诉用户结果。二十二、这里发生了什么普通大模型用户 ↓ LLM ↓ 回答现在用户 ↓ Agent ↓ 发现需要查天气 ↓ get_weather() ↓ 获得天气 ↓ LLM ↓ 最终回答区别就在这里。以前 AI 只能聊天。现在 AI 可以调用函数。以后这个函数可以换成查询 MySQL或者查询 Redis或者调用天气 API或者搜索网页或者读取文件甚至操作服务器于是大模型 工具就开始慢慢变成Agent二十三、小白暂时不用学什么如果你刚刚学 LangChain到这里就够了。暂时不要急着研究LangGraph Multi-Agent 复杂 RAG 长期 Memory Middleware Human in the Loop MCP 向量数据库 多模态 Agent这些都可以以后再学。现在只需要真正搞懂四个东西1. LLM 2. Prompt 3. Chain 4. Tool二十四、用一句话理解这四个东西LLM就是大模型。代码llmChatOpenAI(...)Prompt就是告诉大模型应该做什么。例如你是一名 Python 老师 请给小白解释什么是函数。Chain就是把多个步骤连接起来。例如chainprompt|llm相当于Prompt ↓ LLMTool就是给 AI 一个可以调用的函数。例如defget_weather(city):...于是 AI 不只是回答问题。它还可以真正去做事情。二十五、最简单的学习路线如果你今天第一次学习 LangChain可以按照这个顺序。第一天ChatOpenAI ↓ llm.invoke()先保证Python 可以调用大模型。第二步SystemMessage HumanMessage理解系统提示词 用户消息第三步PromptTemplate学会使用{变量}第四步prompt|llm理解 Chain。第五步Tool最后再学习Agent这就够了。二十六、最后做一个最小练习如果你跟着做到这里可以自己写一个AI Java 老师需求非常简单。用户输入什么是 HashMapAI 使用Java 小白能理解的方式回答。你只需要修改SystemMessage(content 你是一名 Java 入门老师。 用户都是 Java 初学者。 要求 1. 使用中文 2. 尽量简单 3. 多给 Java 代码 4. 不要一次解释太多概念 )然后运行python main.py输入什么是 ArrayList或者什么是 HashMap或者接口和抽象类有什么区别你就已经做出了自己的AI Java 学习助手。总结如果只记住今天这篇文章的一句话LangChain 就是帮助我们把大模型和程序里的各种能力连接起来。最简单的时候Python ↓ LangChain ↓ LLM再进一步Prompt ↓ LLM再进一步Prompt ↓ LLM ↓ Tool最后慢慢发展成用户 ↓ Agent ↓ LLM ↓ Tool ↓ 数据库 / API / 搜索 / 文件 ↓ 最终完成任务但对于第一次学习 LangChain 的人来说真的不用一次学这么多。先把下面这几行代码跑起来fromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelyour-model,api_keyyour-api-key,base_urlhttps://example.com/v1,)responsellm.invoke(你好LangChain)print(response.content)只要这一段成功了你的 LangChain 学习就已经正式开始了。后面的 Prompt、Tool、RAG、Agent本质上都只是在这个基础上一点一点给 AI 增加新的能力。