当前位置: 首页 > news >正文

一个Javaer的AI转型笔记(1):入坑LangChain,我的第一个hello world

文章目录

    • 我学新东西的「三板斧」
      • 能干嘛?
      • 有啥用?
      • 官方文档
    • LangChain 六大组件:先认地图
    • 0.3 vs 1.0版本
      • 代码对比:同一句话,两种写法
      • 确认环境
      • 0.3 风格
      • 1.0 写法 — `LangChainV1.0.py`
    • 踩坑笔记
      • 依赖安装
      • PyCharm 使用
      • 关键字参数语法

大家好,我是大煊,作为一个干了几年的javaer,最近终于决定把脚伸进了 AI agent开发。

第一脚踩的是LangChain。跑通之后我愣了一下:不得不感慨python封装的确实很便捷。

但这不代表它简单。LangChain 背后那套组件、版本、包装层,跟当年从 JDBC 摸到 Spring 的感觉有点像——表面一行invoke,底下好几层抽象。

这篇是我转型笔记的第 1 篇只做到 hello worldinvoke("你是谁")),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,都在这套积木上叠

官方文档

资源链接
LangChain 主站https://docs.langchain.com/
Python 组件架构Component architecture
1.0 迁移指南Migrate to LangChain v1
开源社区github

LangChain 六大组件:先认地图

老教程里常讲 LangChain六大组件。跟官网 1.0 的 Component architecture 不完全一一对应,但作为入门地图够用了:

经典六大干啥的本篇用到?
Models跟 LLM / Chat 模型对话是,全文核心
Prompts模板化提示词
Chains多步串成流水线,像责任链 / 管道
Memory多轮对话上下文
Agents模型自己决定调哪个 Tool
Indexes文档加载、切分、向量库、检索(RAG 地基)

LangChain 经典六大组件

本篇只点亮这块

Models

Prompts

Chains

Memory

Agents

Indexes

hello world


0.3 vs 1.0版本

这里为什么要单独写0.3和1.0版本的LangChain, 因为调研了解到现在主流的企业级写法大多是这两种,1.0版本差不多是2025年底才发版的,2026年开始大量投入到企业级项目中

LangChain 这套玩法,感觉和 Spring 的心路历程类似——不是推倒重来,而是一层一层往外包,把底层细节往后推

Spring 演进你在干啥LangChain 对应
Spring 3 / 4XML 或@Configuration手写DataSourceJdbcTemplate,哪个库一目了然0.3 风格ChatOpenAI(model=..., api_key=..., base_url=...),厂商和参数写死在初始化里
Spring Boot@SpringBootApplication一把梭,自动配置帮你选实现,你只关心业务LangChain 1.0init_chat_model(model=..., model_provider="openai", ...),统一入口屏蔽各家差异

代码对比:同一句话,两种写法

维度0.3 风格LangChainV0.3.py1.0LangChainV1.0.py
导入from langchain_openai import ChatOpenAIfrom langchain.chat_models import init_chat_model
初始化llm = ChatOpenAI(model=..., api_key=..., base_url=...)model = init_chat_model(model=..., model_provider="openai", ...)
调用llm.invoke("你是谁").contentmodel.invoke("你是谁").content

LangChainV0.3.py里还藏了段「配置演进史」,跟 Java 项目从写死常量到配置中心的路子一模一样:


确认环境

Javaer 类比:java -version再加个mvn dependency:tree。先确认装的是 LangChain 1.0,别跑错环境。

importsysimportlangchainimportlangchain_communitydefmain()->None:try:fromimportlib.metadataimportversionaspkg_version openai_pkg_version=pkg_version("langchain-openai")exceptException: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 风格

fromlangchain_openaiimportChatOpenAIimportconfig llm=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)中运行fromlangchain.chat_modelsimportinit_chat_modelimportconfig model=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-mvenv .venv - 激活 .venv\Scripts\activate - 安装所有依赖 pipinstall-rrequirements.txt-i

requirements.txt

langchain==1.0.0langchain-openai==1.0.0langchain-community==0.4.0python-dotenv==1.0.1openai==1.109.1

PyCharm 使用

我使用的是PyCharm 2025.1.2版本,依赖安装好过后,让AI执行命令行已经可以跑程序,但是在Pycharm里面几个依赖一直爆红,还研究了好一会儿,最后发现可以通过下面两种入口去选择执行器(感觉像同时选了jdk版本和maven仓库地址一样)

  • 方式一 右上角的设置图标

  • 方式二 右下角的python版本

关键字参数语法

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

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

http://www.jsqmd.com/news/914896/

相关文章:

  • 2026年泡沫板厂家口碑推荐榜:聚乙烯闭孔泡沫板、伸缩缝填缝板、嵌缝板、泡沫棒、EVA 发泡材料厂家选购指南,产能、工艺、品控多维度实用解析 - 海棠依旧大
  • 2026管段式电磁流量计品牌综合实力排行榜:技术参数、实战案例与选型指南 - 仪表品牌排行榜
  • 多机器人密度控制:基于PDE约束优化实现安全与能量可持续的群体智能
  • Vue3大屏可视化模板:适配多种屏幕、图表可热替换、支持实时数据更新
  • 意外的好处-----opencv可以用来识别抖音的评论区图标
  • 光学神经网络与神经切线知识蒸馏技术解析
  • 2026 电焊石笼网源头工厂生产厂家与专业石笼网定制厂家综合实力榜单汇总 - 栗子测评
  • 图解DRM框架:用大白话和流程图搞懂CRTC、Plane、Encoder都是干嘛的
  • 2026 防火阻燃密封条厂家车辆轮船设备密封条厂家幕墙密封条厂家产品性能测评 - 栗子测评
  • 从‘单打独斗’到‘团队协作’:在GEE里玩转Landsat-8和Sentinel-2数据融合的保姆级流程
  • 告别白纸拍照!用Python+OpenCV一键生成透明背景电子签名(附完整代码)
  • VMware虚拟机突然没网了?别急着重装!手把手教你修复VMnet1/VMnet8虚拟网卡驱动(代码31)
  • 从规格书到PCB:华冠/中科芯达林顿阵列的选型避坑指南与散热设计
  • 企业AI智能体平台技术深度解析:从低代码编排到多智能体协同的实现路径
  • 如何用XUnity自动翻译器5分钟实现Unity游戏汉化:终极指南
  • 第七史诗E7Helper自动化脚本:解放双手的游戏助手使用指南
  • 兰州火锅食材批发哪家好?2026兰州川渝特色餐饮食材供应商指南:兰州饭店专用红油食材批发+西北中餐火锅食材源头供货 - 栗子测评
  • Azuki Elementals事件复盘:Web3社区信任危机与治理教训
  • 藏友必看!2026北京字画回收TOP5榜单,不同藏品、不同场景精准适配指南 - 品牌排行榜单
  • 浪潮NF5280M6服务器配置RAID1操作步骤
  • MATLAB实现柔性车间调度的蚁群算法工具包(含动态甘特图与迭代收敛可视化)
  • 避坑指南:DVC1006被动均衡调试中遇到的‘奇偶均衡’与‘DIE间干扰’问题
  • Win11新电脑到手别急着联网!保姆级跳过激活验机流程(含Shift+F10命令详解)
  • 苹果设备启用 LE Audio 可期:续航提升、延迟降低,或仍不支持 Auracast
  • 告别等长布线烦恼!用Allegro Constraint Manager为差分对和Xnet信号组设置‘交通规则’
  • 从显卡到SSD:图解PCIe x16、x4、x1插槽到底该怎么选?装机避坑指南
  • 用商业语言解读BERT:从技术黑箱到商业价值的实战指南
  • MATLAB一键式实验曲线绘图与交互拟合工具(含示例数据和图形界面)
  • 2026杭州西湖龙井哪里买最正宗?杭州解放路茶叶市场本地人私藏靠谱店铺 - 栗子测评
  • 除了激活,还有这招!用批处理脚本临时‘冻结’Windows Server 2016的自动关机进程wlms.exe