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

【程序员AI入门:应用开发】8.LangChain的核心抽象

一、 LangChain 的三大核心抽象

1. ChatModel(聊天模型)

  • 核心作用:与大模型(如 GPT-4、Claude)交互的入口,负责处理输入并生成输出。
  • 关键功能
    • 支持同步调用(model.invoke)和流式处理(model.stream)。
    • 兼容多种模型供应商(如 OpenAI、Anthropic),通过社区生态集成。
  • 示例代码
    from langchain_openai import ChatOpenAI  
    model = ChatOpenAI(model="gpt-4o-mini")  
    result = model.invoke(messages)  
    

2. PromptTemplate(提示词模板)

  • 核心作用:结构化提示词,分离开发者预置内容与用户输入。
  • 关键功能
    • 支持占位符(如 {text}),动态替换用户输入。
    • 提供预置模板库(如 ReAct、RAG),便于复用和优化。
  • 示例代码
    from langchain_core.prompts import ChatPromptTemplate  
    prompt_template = ChatPromptTemplate.from_messages([  ("system", "Translate the following from English into Chinese:"),  ("user", "{text}")  
    ])  
    

3. OutputParser(输出解析器)

  • 核心作用:解析模型输出,转换为标准化格式(如字符串、JSON)。
  • 关键功能
    • 内置解析器:StrOutputParser(字符串)、JsonOutputParser(JSON)。
    • 自动生成格式指令(parser.get_format_instructions()),约束模型输出格式。
  • 示例代码
    from langchain_core.output_parsers import JsonOutputParser  
    parser = JsonOutputParser(pydantic_object=Work)  
    chain = prompt_template | model | parser  
    

二、链式调用与 LCEL

  • 链式组装:通过管道符 | 连接组件(如 chain = prompt_template | model | parser)。
  • 执行顺序:声明顺序即处理顺序(先模板替换 → 模型调用 → 结果解析)。
  • 优势:声明式代码,逻辑清晰,易于维护。
  • LCEL(LangChain表达式语言)
    chain = (PromptTemplate.from_template("总结{text}")| model | OutputParser()
    )
    

三、流式处理与同步调用

1. 同步调用

  • 使用 model.invoke(),等待完整结果返回。
  • 适用于非实时场景(如批量处理)。

2. 流式处理

  • 使用 model.stream(),逐块返回结果(SSE 技术)。
  • 提升用户体验(逐 Token 输出),适用于聊天等实时场景。
  • 示例代码
    stream = model.stream(messages)  
    for response in stream:  print(response.content, end="")  
    

四、核心抽象的应用场景

  • ChatModel:直接调用模型生成内容(如翻译、问答)。
  • PromptTemplate:预置系统提示词(如角色设定、任务描述)。
  • OutputParser
    • 标准化输出格式(如 JSON 解析)。
    • 结合 pydantic 模型定义数据结构(如 Work 类)。

五、开发建议与最佳实践

  • 优先使用 ChatModel:覆盖大部分场景,替代旧版 LLM 接口。
  • 复用社区模板:通过 hub.pull("hwchase17/react") 加载预置提示词。
  • 灵活选择解析器:根据需求选择 StrOutputParserJsonOutputParser 等。

六、一句话总结

LangChain 的核心抽象 ChatModel、PromptTemplate、OutputParser 通过链式调用(LCEL)实现输入处理、模型交互与输出解析,支持同步与流式响应,是构建模块化、可维护 AI 应用的基石。

http://www.xdnf.cn/news/338023.html

相关文章:

  • 基于springboot+vue的校园部门资料管理系统
  • 2025最新免费视频号下载工具!支持Win/Mac,一键解析原画质+封面
  • 小刚说C语言刷题—1341银行存款问题
  • 到达最后一个房间的最少时间II 类似棋盘转移规律查找
  • python打卡day19
  • 爱普生FC2012SN晶振在TWS蓝牙耳机中的应用优势
  • 代理服务器
  • 《Zabbix Proxy分布式监控实战:从安装到配置全解析》
  • uniapp|获取当前用户定位、与系统设定位置计算相隔米数、实现打卡签到(可自定义设定位置、位置有效范围米数)
  • 【本地搭建npm私服】使用Verdaccio
  • K8s中的containerPort与port、targetPort、nodePort的关系:
  • ping_test_parallel.sh 并行网络扫描脚本
  • 《零基础学机器学习》学习大纲
  • ruoyi-flowable-plus 前端框架启动报错修复
  • openwrt之UCI 增删改查(add/get/set /add_list...)
  • c++进阶——红黑树的实现
  • 使用Jmeter对AI模型服务进行压力测试
  • CSS3 过渡与动画
  • 体绘制中的传输函数(transfer func)介绍
  • JDBC:java与数据库连接,Maven,MyBatis
  • 3D医学影像开发<五>:利用Hessian矩阵增强影像并设置固定阈值进行血管模型自动分割
  • 认识不同格式的点云数据 -PCD点云数据 文本点云数据
  • 【前端】webstorm运行程序浏览器报network error
  • PyTorch 版本、torchvision 版本和 Python 版本的对应关系
  • iptables 访问控制列表使用记录
  • 在UI原型设计中,低、高保真原型图有什么区别?
  • 用NVivo革新企业创新:洞悉市场情绪,引领金融未来
  • 使用thymeleaf模版导出swagger3的word格式接口文档
  • 【每天学习一点点】使用Python的pathlib模块分割文件路径
  • HBuilderX安卓真机运行安装失败解决汇总