大家好,我是大煊,作为一个干了几年的javaer,最近终于决定把脚伸进了 AI agent开发。
第一脚踩的是 LangChain。跑通之后我愣了一下:不得不感慨python封装的确实很便捷。
但这不代表它简单。LangChain 背后那套组件、版本、包装层,跟当年从 JDBC 摸到 Spring 的感觉有点像——表面一行 invoke,底下好几层抽象。
这篇是我转型笔记的 第 1 篇:只做到 hello world(invoke("你是谁")),Agent、RAG 那些先不装懂。咱一步一步来。
我学新东西的「三板斧」
每碰一个新的知识点,我基本都按这个顺序:
能干嘛?
LangChain 是什么?一句话:开源的 Agent 工程积木盒。
官方在 Docs by LangChain 里把它定位成 agent engineering 平台——不光有 LangChain 本身,还有 LangGraph(编排)、Deep Agents(快速搭 Agent)、LangSmith(观测、评测、部署)。Clay、Cloudflare 这些公司都在用这套东西搞生产级 Agent。
对我这种 Javaer 来说,它像啥?像 Spring AI 的 Python 老大哥——帮你把各家 LLM 的调用方式统一起来,后面还能拼 Prompt、Chain、Tool、Memory。本篇我只碰最底层那一刀:调模型。
有啥用?
不用自己撸 HTTP 调 OpenAI 兼容接口(虽然底层还是 HTTP) 切换模型或更换厂商时,只需调整几个参数即可 后面做 RAG、Agent,都在这套积木上叠
官方文档
https://docs.langchain.com/ | |
https://docs.langchain.com/oss/python/langchain/component-architecture | |
https://docs.langchain.com/oss/python/migrate/langchain-v1 | |
https://github.com/langchain-ai/langchain/issues |
LangChain 六大组件:先认地图
老教程里常讲 LangChain 六大组件。跟官网 1.0 的 Component architecture(https://docs.langchain.com/oss/python/langchain/component-architecture) 不完全一一对应,但作为入门地图够用了:
| Models | 是,全文核心 | |
| Prompts | ||
| Chains | ||
| Memory | ||
| Agents | ||
| Indexes |

0.3 vs 1.0版本
这里为什么要单独写0.3和1.0版本的LangChain, 因为调研了解到现在主流的企业级写法大多是这两种,1.0版本差不多是2025年底才发版的,2026年开始大量投入到企业级项目中
LangChain 这套玩法,感觉和 Spring 的心路历程类似——不是推倒重来,而是一层一层往外包,把底层细节往后推:
| Spring 3 / 4 | @Configuration 手写 DataSource、JdbcTemplate,哪个库一目了然 | 0.3 风格ChatOpenAI(model=..., api_key=..., base_url=...),厂商和参数写死在初始化里 |
| Spring Boot | @SpringBootApplication | LangChain 1.0init_chat_model(model=..., model_provider="openai", ...),统一入口屏蔽各家差异 |
代码对比:同一句话,两种写法
LangChainV0.3.py | LangChainV1.0.py | |
|---|---|---|
from langchain_openai import ChatOpenAI | from langchain.chat_models import init_chat_model | |
llm = ChatOpenAI(model=..., api_key=..., base_url=...) | model = init_chat_model(model=..., model_provider="openai", ...) | |
llm.invoke("你是谁").content | model.invoke("你是谁").content |
LangChainV0.3.py 里还藏了段「配置演进史」,跟 Java 项目从写死常量到配置中心的路子一模一样:
确认环境
Javaer 类比:java -version 再加个 mvn dependency:tree。先确认装的是 LangChain 1.0,别跑错环境。
import sysimport langchainimport langchain_communitydefmain() -> None:try:from importlib.metadata import version as pkg_version openai_pkg_version = pkg_version("langchain-openai")except Exception: openai_pkg_version = "(not installed)" lc_version = langchain.__version__ print("langchain version: " + lc_version) print("langchain_community: " + langchain_community.__version__) print("langchain_openai: " + openai_pkg_version) print("langchain file: " + langchain.__file__) print() print("Python: " + sys.version)if __name__ == "__main__": main()
0.3 风格
from langchain_openai import ChatOpenAIimport configllm = ChatOpenAI( model="MiniMax-M2.7", api_key=config.require_api_key(), base_url="https://api.minimaxi.com/v1", temperature=1.0,)response = llm.invoke("你是谁")print(response)print()print(response.content)
可以看到返回值有 total_tokens,描述了当前一次交互消耗的总token
1.0 写法 — LangChainV1.0.py
全文就 17 行,我直接贴:
# LangChain 1.0+ 使用方式(init_chat_model + MiniMax)# 需在 .venv(requirements.txt)中运行from langchain.chat_models import init_chat_modelimport configmodel = init_chat_model( model="MiniMax-M2.7", model_provider="openai", api_key=config.require_api_key(), base_url="https://api.minimaxi.com/v1", temperature=1.0,)print(model.invoke("你是谁").content)
踩坑笔记
依赖安装
我之前有一点 Python 基础,知道默认的 pip 源在国外,速度较慢,需要换成清华源。在 AI 时代,直接让 AI 助手帮忙完成了安装。

为了方便学习各类框架,依赖隔离,不污染系统 Python,选择把依赖装到项目里面
- 创建新的虚拟环境python -m venv .venv - 激活.venv\Scripts\activate- 安装所有依赖pip install -r requirements.txt -irequirements.txt
langchain==1.0.0langchain-openai==1.0.0langchain-community==0.4.0python-dotenv==1.0.1openai==1.109.1PyCharm 使用
我使用的是PyCharm 2025.1.2版本,依赖安装好过后,让AI执行命令行已经可以跑程序,但是在Pycharm里面几个依赖一直爆红,还研究了好一会儿,最后发现可以通过下面两种入口去选择执行器(感觉像同时选了jdk版本和maven仓库地址一样)
方式一 右上角的设置图标


方式二 右下角的python版本

关键字参数语法
在翻阅python源码的时候 看见*就代表着后续的参数可以通过关键字的形式传值,也是 model_provider="openai"

如果直接写 "openai" 是会报错的(这和java只要位置顺序对了就可以有点区别),而 **则表示 接收任意数量的额外关键字参数 , **kwargs 指的是 keyword arguments ,kwargs 替换成其他值也是可以的

夜雨聆风