当前位置: 首页 > 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()

在这里插入图片描述

相关文章:

  • 【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应用开发——线性布局
  • 网站seo优化要懂得做微调/seo怎么快速提高排名
  • 承德北京网站建设/河南网站优化公司哪家好
  • php 做视频网站/保定百度seo排名
  • 免费自建网站步骤/网络营销费用预算
  • 自己做网站卖货多少钱/快速排名seo
  • 关于加强政府网站信息内容建设的实施意见/宁波seo公司排名