开篇
EL简单实现,原理初探
AI菜鸟向前飞 — LangChain系列之六 - 深入浅出LCEL与Chain(上篇)
上一篇文档给大家介绍的Expression Language 特别提到了,
每个运行对象(即:Runnable)通过"|"(管道)连接组成了Chain,可以通过更快速书写且更易读的方式带来了很好的体验效果,在文章中的最后,我给大家展示了每一个Runnable对象的输入/输出Schema,可能有些小伙伴还是有点懵,这样我通过一个简单的实例,自己来实现一个`Pipeline`
程序实现
1 | ruby复制代码class MyPipeline: |
再准备一下
1 | python复制代码def hello(name) -> str: |
试出效果
1 | scss复制代码# my_chain = mychain = hello.__or__(welcome).__or__(attach_date) |
输出结果
- 1
1 | 复制代码欢迎来到我的公众号, hello,Song榆钱儿。现在是2024-04-26。 |
分析过程
以图代言 —— 可以直接看懂通过管道(“|”)让可运行对象(Runnable)之间如何传递数据的。(这样也更好理解上一篇最后的内容)
简单解析
1 | arduino复制代码这里主要用到了Python的魔法函数__or__,所以"|"这里对于Python实现还是比较简单的,若大家对此感兴趣,可以持续关注我哈 |
1 | 复制代码 |
思考题
1 | ini复制代码# LangChain还支持这种形式pipe连接多个Runnable对象,你可以自行实现下:) |
LangChain的其它相关函数
Runnable对象支持的函数比较多,如下所示:官网API地址:
[api.python.langchain.com/en/stable/r…](https://api.python.langchain.com/en/stable/runnables/langchain_core.runnables.base.Runnable.html#langchain_core.runnables.base.Runnable)
这里挑比较有代表性的三个给大家介绍,
RunnableLambda
让我们再回到LangChain中,看看RunnableLambda是怎么用的
RunnableLambda能将普通函数转换为Runnable对象,并使用EL(Expression Language)语法
with_fallbacks
程序
1 | ini复制代码from langchain_openai import ChatOpenAI |
输出结果
分析过程
Bind
以后Tool相关知识的会用到它
程序&输出结果
不加bind(stop...)呈现的效果如下:
期待下篇吧~ ㊗️大家周末愉快
本文转载自: 掘金