找回密码
 立即注册
首页 业界区 安全 001:LangChain的LCEL语法学习

001:LangChain的LCEL语法学习

昝梓菱 1 小时前
本文是 refine-rag 系列教程的第二篇,带你体验一下LangChain 的 LCEL 语法。
本文所有代码都在:https://github.com/zonezoen/refine-rag
前言

LCEL (LangChain Expression Language),语言链表达式语言,是LangChain的表达式语言,用于描述数据处理逻辑。有点类似 Unix 的管道符号。本质就是把前面的输出
传递给后面作为输入。
基础使用

Chain = Prompt | Model | OutputParser
这个比较简单,就是先写好几个实例,然后用 | 连接起来,形成一个链。想要尽快掌握的话,可以教大模型给你出几道 LCEL 相关的题目给你,写完之后叫AI 给你评分并指导正确答案。
本文所有代码都在:https://github.com/zonezoen/refine-rag
创建 .env 文件,放到项目根目录,文件里面写入以下配置信息:
  1. # DeepSeek API 配置
  2. DEEPSEEK_API_KEY=sk-xxx
  3. # 千问
  4. DASHSCOPE_API_KEY=sk-yyy
复制代码
如何获取 API Key:

  • DeepSeek: https://platform.deepseek.com/
  • 千问(DashScope): https://dashscope.aliyun.com/
  1. from langchain_deepseek import ChatDeepSeek
  2. from langchain_core.prompts import ChatPromptTemplate
  3. from dotenv import load_dotenv
  4. from langchain_core.output_parsers import StrOutputParser
  5. import os
  6. load_dotenv()
  7. prompt_01 = ChatPromptTemplate.from_template(
  8.     """
  9.     介绍这个人物的生平事迹:{person}
  10.     """
  11. )
  12. prompt_02 = ChatPromptTemplate.from_template(
  13.     """
  14.     把这个介绍转换成文言文:{text}
  15.     """
  16. )
  17. llm = ChatDeepSeek(
  18.     model="deepseek-chat",  # DeepSeek API 支持的模型名称
  19.     temperature=0.7,  # 随机性
  20.     max_tokens=2048,  # 最大输出长度
  21.     api_key=os.getenv("DEEPSEEK_API_KEY")  # 从环境变量加载API key
  22. )
  23. ps = {"text": (prompt_01 | llm | StrOutputParser())}
  24. chain = ps | prompt_02 | llm | StrOutputParser()
  25. answer = chain.invoke({"person": "周杰伦"})
  26. print(answer)
复制代码
运行结果
  1. 周杰伦(Jay Chou),己未年(西元一九七九)正月十八日生于台湾新北。乃华语乐坛巨擘,集歌者、制乐、词曲、导演、伶人于一身,世誉“亚洲流行天王”。
  2. **早年志学**
  3. 幼习琴律,天赋初显。丙子年(一九九七)参演《超级新人王》,擢亚魁,其才为吴宗宪所识,遂入阿尔发乐司为助。初为他人撰曲(若《眼泪知道》《双截棍》皆尝见拒),曲风新奇,时人未尽纳。
  4. **乐业腾骞**
  5. *   **首辑破局**:庚辰年(二〇〇〇)发专辑《Jay》,融R&B、嘻哈并中国雅韵,一举革新乐坛旧制,夺金曲奖最佳专辑。
  6. *   **开宗中国风**:以传统文脉入流行宫商,作《东风破》《发如雪》《青花瓷》《千里之外》诸名篇,倡“中国风”为一时潮流。
  7. *   **丰产屡进**:嗣后岁出一辑,若《范特西》《叶惠美》《七里香》《十一月的萧邦》等,皆风行四海。曲格多元,兼摄古典、摇滚、电子;其词多与方文山共谋,诗象盎然。
  8. *   **荣冠载途**:累获金曲奖十五座,销录屡破,实千禧年后华语乐坛之圭臬。
  9. **跨界骋才**
  10. *   **影戏**:乙酉年(二〇〇五)初主演《头文字D》,获金马奖新人魁首。丁亥年(二〇〇七)自导自演《不能说的秘密》,成乐影合璧之经典。
  11. *   **导艺与演游**:掌镜多部曲影,戊戌年(二〇一八)主创《周游记》。壬寅年(二〇二二)监制并出演好莱坞影戏《极限追杀》。
  12. *   **商略**:创潮服牌“PHANTACi”、电竞赛旅“J Team”,亦涉饮馔诸业。
复制代码
RunnableParallel和RunnablePassthrough

现实中,数据流不会总是这么简单。有时候你需要同时处理多个输入,或者把某些数据原样传递。这时候就需要 RunnableParallelRunnablePassthrough
2.1 RunnableParallel (并行处理)

当你需要把一份输入分发给多个组件,或者构造一个复杂的字典传给下一个环节时,用它。
2.2 RunnablePassthrough (原样通过)

它像是一个透明的管道,把输入数据直接传给下一级,不做任何修改。
代码示例:
  1. from langchain_deepseek import ChatDeepSeek
  2. from langchain_core.prompts import ChatPromptTemplate
  3. from dotenv import load_dotenv
  4. from langchain_core.output_parsers import StrOutputParser
  5. import os
  6. from langchain_core.runnables import RunnablePassthrough, RunnableParallel
  7. load_dotenv()
  8. prompt_01 = ChatPromptTemplate.from_template(
  9.     """
  10.     生成该公司的“口号(Slogan):{company}
  11.     """
  12. )
  13. prompt_02 = ChatPromptTemplate.from_template(
  14.     """
  15.     预测该公司“明年的股价”:{company}
  16.     """
  17. )
  18. llm = ChatDeepSeek(
  19.     model="deepseek-chat",  # DeepSeek API 支持的模型名称
  20.     temperature=0.7,  # 随机性
  21.     max_tokens=2048,  # 最大输出长度
  22.     api_key=os.getenv("DEEPSEEK_API_KEY")  # 从环境变量加载API key
  23. )
  24. chain1 = {"company": RunnablePassthrough()} | prompt_01 | llm | StrOutputParser()
  25. chain2 = {"company": RunnablePassthrough()} | prompt_02 | llm | StrOutputParser()
  26. chain = RunnableParallel({"slogan": chain1, "stock": chain2})
  27. answer = chain.invoke("百度")
  28. print(answer)
复制代码
ok,这些你掌握之后,就算基本掌握了 LCEL 的语法了,后续学习中可能会陆陆续续用到这些知识。
学习路径


  • 简易RAG 学习
  • LCEL 语法学习
  • LangChain 读取数据

    • LangChain 读取文本数据
    • LangChain 读取图片数据
    • LangChain 读取 PDF 数据
    • LangChain 读取表格数据

  • 文本切块
  • 向量嵌入
  • 向量存储
  • 检索前处理
  • 索引优化
  • 检索后处理
  • 响应生成
  • 系统评估
项目地址

本文所有代码示例都在 GitHub 开源:
https://github.com/zonezoen/refine-rag
欢迎 Star 和 Fork,一起学习 RAG 技术!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册