<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [LangChain] 09. Runnable接口 - 1

      在 LCEL 中,幾乎所有的模塊:

      • 提示詞模板
      • 模型
      • 解析器

      都是實現了 Runnable 接口的,可以將這些模塊稱之為 Runnable 類型。這種類型的模塊可以快速插入到鏈條里面。

      RunnableLambda

      RunnableLambda 是 LangChain.js 提供的一種輕量級工具,它能把 普通函數 封裝成符合 Runnable 接口規范的實例,從而讓該函數能夠無縫參與到 LCEL 的鏈式調用與流式處理流程中。

      1. 快速上手案例

        import { RunnableLambda } from "@langchain/core/runnables";
        
        const fn = (text) => {
          return text.toUpperCase();
        };
        
        const runnableFn = RunnableLambda.from(fn);
        
        const res = await runnableFn.invoke("hello");
        
        console.log(res);
        
      2. 關鍵詞高亮插件

        閉包 --> *&*閉包*&*

        import { ChatOllama } from "@langchain/ollama";
        import { PromptTemplate } from "@langchain/core/prompts";
        import { StringOutputParser } from "@langchain/core/output_parsers";
        import { RunnableLambda } from "@langchain/core/runnables";
        
        // 1. 創建一個提示詞模板
        const pt = PromptTemplate.fromTemplate("請使用中文解釋下面的概念:{topic}");
        
        // 2. 創建模型
        const model = new ChatOllama({
          model: "llama3",
          temperature: 0.7,
        });
        
        // 3. 解析器
        const parser = new StringOutputParser();
        
        // 4. 創建一個鏈條
        let chain = pt.pipe(model).pipe(parser);
        
        // 5. 創建一個簡單的插件
        const fn = (text) => text.replace(/閉包/g, "*&*閉包*&*");
        const highlight = RunnableLambda.from(fn);
        
        chain = chain.pipe(highlight);
        
        const res = await chain.invoke({
          topic: "閉包",
        });
        
        console.log(res);
        

      更多場景:

      • 插入日志收集模塊
      • 插入翻譯模塊(調用外部 API)
      • 插入開關:判斷某個條件是否中斷執行
      • 格式調整、結構清洗、敏感詞過濾

      pipe() 方法可接受的三種類型:

      1. Runnable 實例:這是最常用的,也是最推薦的

      2. 普通函數:LCEL 內部會自動用 RunnableLambda.from(fn) 包裝成一個 Runnable

      3. 對象:將上游的輸入(或結果)分別傳給多個 runnable,然后返回一個對象。

        import { ChatOllama } from "@langchain/ollama";
        import { PromptTemplate } from "@langchain/core/prompts";
        import { StringOutputParser } from "@langchain/core/output_parsers";
        import { RunnableLambda } from "@langchain/core/runnables";
        
        // 創建模型
        const model = new ChatOllama({
          model: "llama3",
          temperature: 0.7,
        });
        
        // 解析器
        const parser = new StringOutputParser();
        
        // 創建兩個子鏈
        const chain1 = PromptTemplate.fromTemplate(
          "請用中文用 2-3 句概括以下主題的核心含義:{input}"
        )
          .pipe(model)
          .pipe(parser);
        
        const chain2 = PromptTemplate.fromTemplate(
          "請用中文從以下主題中提取 5 個關鍵詞,以逗號分隔:{input}"
        )
          .pipe(model)
          .pipe(parser);
        
        let chain = RunnableLambda.from((x) => x);
        
        chain = chain.pipe({
          summary: chain1,
          keywords: chain2,
        });
        
        const res = await chain.invoke({
          input: "閉包",
        });
        console.log(res);
        

      RunnableMap

      RunnableMap(也叫 RunnableParallel),它可以讓多個鏈條 并發執行,并返回一個結構化的對象結果。

      RunnableMap.from({ ... }) 會并發執行多個子鏈,并將它們的結果組合成一個對象返回。

      import { ChatOllama } from "@langchain/ollama";
      import { PromptTemplate } from "@langchain/core/prompts";
      import { StringOutputParser } from "@langchain/core/output_parsers";
      import { RunnableMap } from "@langchain/core/runnables";
      
      // 創建模型
      const model = new ChatOllama({
        model: "llama3",
        temperature: 0.7,
      });
      
      // 解析器
      const parser = new StringOutputParser();
      
      const chain1 = PromptTemplate.fromTemplate("用中文講一個關于 {topic} 的笑話")
        .pipe(model)
        .pipe(parser);
      const chain2 = PromptTemplate.fromTemplate("用中文寫一首關于 {topic} 的兩行詩")
        .pipe(model)
        .pipe(parser);
      
      const chain = RunnableMap.from({
        joke: chain1,
        poem: chain2,
      });
      
      const res = await chain.invoke({
        topic: "小狗",
      });
      console.log(res);
      

      -EOF-

      posted @ 2025-11-02 16:14  Zhentiw  閱讀(7)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品久久久久久久久久吃药| 免费午夜无码片在线观看影院 | 亚洲av永久无码一区二区三区| 精品久久人人妻人人做精品| 浴室人妻的情欲hd三级国产| 色综合天天综合网天天看片| 亚洲国产欧美一区二区好看电影| 成人永久性免费在线视频| 毛片无遮挡高清免费| 日韩伦理片| 国产一区二区三区九九视频| 久久精品国产一区二区三| 欧美成年黄网站色视频| 免费看黄色片| 国产精品一区二区三区日韩| 国产在线不卡精品网站| 精品国产一国产二国产三| 男人扒女人添高潮视频| 色吊a中文字幕一二三区| 成人免费亚洲av在线| 日本区二区三区不卡视频| 人妻少妇邻居少妇好多水在线| 国产精品亚洲А∨怡红院| 亚洲中文字幕国产精品| 精品无码久久久久国产电影| 99在线精品免费视频| 亚洲粉嫩av一区二区黑人| 免费十八禁一区二区三区| 国产成人亚洲精品成人区 | 欧美不卡无线在线一二三区观| 久女女热精品视频在线观看| 国产成人综合亚洲欧美日韩| 在线观看中文字幕国产码| 国产毛片子一区二区三区| 国产激情艳情在线看视频| 都昌县| 国产360激情盗摄全集| 免费观看在线A级毛片| 老师破女学生处特级毛ooo片| 日本一区二区三区黄色网| 一区二区三区av天堂|