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

LangChain--(2)

3 LangChain Expression Language(LCEL)

LCEL是LangChain用于构建和编排AI工作流的声明式编程语言,通过标准化接口简化了大型语言模型(LLM)应用的开发流程。LCEL的所有组件(模型、提示模板、解析器等)均实现Runnable接口,支持一致的调用方法(invokestreambatch等)。即Langchain提供了一个顶级父类,Runnable,只要是Runnable的子类都可以放入chain中。

==声明式编程:==用户描述“做什么”而非“如何做”。

3.1 串行条构建

单个链条的构建

def qwen_single_chain():os.environ.setdefault("DASHSCOPE_API_KEY", load_key("DASHSCOPE_API_KEY"))# 提示词模板from langchain_core.prompts import ChatPromptTemplateprompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant that translates {input_language} to {output_language}."),("human", "{text}"),])# 模型调用llm = ChatQwen(model="qwen-plus", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")# 结果解析器from langchain_core.output_parsers import StrOutputParserparser = StrOutputParser()# chain链chain = prompt_template | llm | parserprint(chain.invoke({"input_language": "English", "output_language": "Chinese", "text": "I love programming."}))
------------------------------
我爱编程

注意事项:

串行链时,| 与 RunnableSequence不能直接替换。

# 等价关系
chain = prompt | llm | parser  
# RunnableSequence本应等价于|,但 | 操作符会自动插入许多组件、类型转化,所以会抛出异常: TypeError: Expected str, got PromptValue
chain = RunnableSequence([prompt, llm, parser]) # 原因分析:
# prompt_template 输出的是 PromptValue 类型
# llm 期望接收 str 类型(需调用 .to_string() 转换)
# RunnableSequence 不会自动插入类型转换步骤

差异对比如下:

在这里插入图片描述

3.2 并行链条构建

def qwen_parallel_chain():os.environ.setdefault("DASHSCOPE_API_KEY", load_key("DASHSCOPE_API_KEY"))from langchain_core.prompts import ChatPromptTemplate# 模板1prompt_template_zh = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant that translates English to Chinese."),("human", "{text}"),])# 模板2prompt_template_fr = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant that translates English to French."),("human", "{text}"),])# 模型llm = ChatQwen(model="qwen-plus", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")# 结果解析器from langchain_core.output_parsers import StrOutputParserparser = StrOutputParser()# chain链chain_zh = prompt_template_zh | llm | parserchain_fr = prompt_template_fr | llm | parser# 并行执行两个链条(RunnableMap = RunnableParallel可以互相替换)from langchain_core.runnables import RunnableMap, RunnableLambdaparallel_chains = RunnableMap({"Chinese": chain_zh,"French": chain_fr})# 合并结果final_chain = parallel_chains | RunnableLambda(lambda x: "\n".join([f"{k}: {v}" for k, v in x.items()]))# 调用chainprint(final_chain.invoke({"text": "I love programming."}))

3.3 查看图形化链条

# 利用langgraph产看图形化链条
final_chain.get_graph().print_ascii()

在这里插入图片描述

http://www.dtcms.com/a/248838.html

相关文章:

  • 【Python系列】Python 中 yield 关键字
  • SpringCloudAlibaba怎么学?
  • Angular入门的环境准备步骤工作
  • 智能客服系统开发方案:RAG+多智能体技术实现
  • 【插件推荐】WebRTC Protect — 防止 IP 泄漏
  • Vite 及生态环境:新时代的构建工具
  • oceanbase导出导入数据csv
  • 基于 STM32 七段数码管显示模块详解
  • 圆与 π | 从几何之美到数学与物理的奇妙之旅
  • 快速解决软件测试的逻辑方法运用
  • 238. 除自身以外数组的乘积
  • Android 实体键盘 设置默认布局
  • LX-YST-1
  • BeckHoff_FB --> F_SEQ_X3_TrigJob 函数
  • 快速掌握Django框架设计思想(图解版)
  • 用数学融智学人力资源模型的核心架构:建立可量化的理论框架
  • Snipaste:一款简单强大的跨平台截图工具
  • 高并发场景下接口安全实现方案:全方位构建防护体系
  • Linux环境下安装和使用RAPIDS平台的cudf和cuml - pip 安装方法
  • HarmonyOS应用开发——线性布局
  • MongoDB详细安装步骤(Windows 系统)
  • 安卓开发常用框架与库详解
  • 在职申硕|中南财院校专业直选
  • Java性能问题排查
  • 上传视频报错 413 Request Entity Too Large
  • 【动手学深度学习】3.5. 图像分类数据集
  • Python 高级主题与性能优化指南
  • 体系结构论文(八十六):The Dark Side ofComputing: SilentData Corruptions
  • C++ —— STL容器 —— string的模拟实现
  • 北京大学:AI+Agent与Agentic+AI的原理与应用(适合科研从业者和技术爱好者阅读)