什么是langchain

embedded/2024/9/22 19:39:03/
  1. 概念

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。他主要拥有 2 个能力:

-可以将 LLM 模型(大规模语言模型)与外部数据源进行连接
-允许与 LLM 模型进行交互
  1. 基础功能

支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI …
Fake LLM,用于测试缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL用量记录
支持流模式(就是一个字一个字的返回,类似打字效果)
在这里插入图片描述
3. 核心模块
Langchain有6大核心模块:
Models:模型,是各种类型的模型和模型集成。
Prompts:提示,包括提示管理、提示优化和提示序列化。
Memory:记忆,用来保存和模型交互时的上下文状态。
Indexes:索引,用来结构化文档,以便和模型交互。包括文档加载程序、向量存储器、文本分割器和检索器等。
Agents:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止。
Chains:链,一系列对各种组件的调用。

  1. 用途
    LangChain 通常被用作「粘合剂」,将构建 LLM 应用所需的各个模块连接在一起。使用Langchain中不同组件的特性和能力,可以构建不同场景下的应用,如聊天机器人、基于文档的问答、知识管理、个人助理、Agent智能体等等。

  2. 落地实践
    1)通过 Loader 加载远程文档

2)通过 Splitter 基于 Token 进行文档拆分

3)加载 summarize 链,链类型为 refine,迭代进行总结

作者:京东云
链接:https://www.zhihu.com/question/609483833/answer/3146379316
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。from langchain.prompts import PromptTemplate
from langchain.document_loaders import PlaywrightURLLoader
from langchain.chains.summarize import load_summarize_chain
from langchain.text_splitter import RecursiveCharacterTextSplitter
from azure_chat_llm import llmloader = PlaywrightURLLoader(urls=["https://content.jr.jd.com/article/index.html?pageId=708258989"])
data = loader.load()text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(model_name="gpt-3.5-turbo",allowed_special="all",separators=["\n\n", "\n", "。", ","],chunk_size=7000,chunk_overlap=0
)prompt_template = '''
作为一个资深编辑,请针对 >>><<< 中间的文本写一段摘要。 
>>> {text} <<<
'''
refine_template = '''
作为一个资深编辑,基于已有的一段摘要:{existing_answer},针对 >>><<< 中间的文本完善现有的摘要。 
>>> {text} <<<
'''PROMPT = PromptTemplate(template=prompt_template, input_variables=["text"])
REFINE_PROMPT = PromptTemplate(template=refine_template, input_variables=["existing_answer", "text"]
)chain = load_summarize_chain(llm, chain_type="refine", question_prompt=PROMPT, refine_prompt=REFINE_PROMPT, verbose=False)docs = text_splitter.split_documents(data)
result = chain.run(docs)
print(result)

http://www.ppmy.cn/embedded/16312.html

相关文章

Golang实现一个批量自动化执行树莓派指令的软件(3)下载

简介 话接上篇 Golang实现一个批量自动化执行树莓派指令的软件(2)指令&#xff0c; 这次实现文件的下载。 环境描述 运行环境: Windows&#xff0c; 基于Golang&#xff0c; 暂时没有使用什么不可跨平台接口&#xff0c; 理论上支持Linux/MacOS 目标终端&#xff1a;树莓派Debi…

电子证据的固定方法研究

序言 1.1 背景介绍 在当今数字化时代&#xff0c;网络诈骗已成为全球性的问题&#xff0c;随着互联网的普及和网络经济的发展&#xff0c;诈骗手段不断演化&#xff0c;变得更加隐蔽和复杂。这些诈骗行为不仅对个人和企业造成经济损失&#xff0c;还破坏了网络空间的安全和信任…

C 语言实例 - 输出浮点数

使用 printf() 与 %f 输出浮点数。 #include <stdio.h>int main() {float f; // 声明浮点数变量f 12.001234; // 定义浮点数变量printf("f 的值为 %f", f);return 0; }输出结果&#xff1a; f 的值为 12.001234

【ARMv9 DSU-120 系列 6.1 -- PPU power and reset control】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 PPU power and reset controlPPUs 功能特点Power policy unit operation静态策略动态策略Implicit resets from power modesPPU power and reset control DSU-120(DynamIQ™共享单元-120)的功耗模式控制由集成在集群…

Day20-Python基础学习之正则表达式和递归(完结)

正则表达式 基础 # 正则表达式 import re ​ s "python itcast" # match 从头开始匹配 头部不匹配返回None result re.match("python", s) print(result) print(result.span()) print(result.group()) ​ # search 从开头找到结尾搜索&#xff0c;找到…

面向初学者的网络安全(二)

原文&#xff1a;annas-archive.org/md5/8570b4b9b47974c7302ce023e1eb9bc8 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 九、攻击和防御方法的演变 当我写下这本书的第一版时&#xff0c;网络安全只是网络安全专家和精明的高管感兴趣的话题。这本书是为了让任何人…

【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第一章)LED灯闪烁实验例程

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 适用于板卡型号&#xff1a; 紫光同创PG2L50H_MBG324开发平台&#xff08;盘古PGX-Nano&#xff09; 一&#xff1a;…

Linux的自动化脚本:使用crul命令的从某个网站获取数据(从url获取数据),并将其写入一个文件中

目录 一、要求 二、思路 三、shell脚本实现演练 &#xff08;一&#xff09;脚本实现 &#xff08;二&#xff09;脚本代码说明 &#xff08;三&#xff09;脚本执行 &#xff08;四&#xff09;数据内容 一、要求 Linux的一个进程需要获取一个网站上的最新数据&#xf…