什么是langchain

  1. 概念

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

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

支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI ...

Fake LLM,用于测试缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL用量记录

支持流模式(就是一个字一个字的返回,类似打字效果)

  1. 核心模块

Langchain有6大核心模块:

Models:模型,是各种类型的模型和模型集成。

Prompts:提示,包括提示管理、提示优化和提示序列化。

Memory:记忆,用来保存和模型交互时的上下文状态。

Indexes:索引,用来结构化文档,以便和模型交互。包括文档加载程序、向量存储器、文本分割器和检索器等。

Agents:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止。

Chains:链,一系列对各种组件的调用。

  1. 用途

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

  2. 落地实践

    1)通过 Loader 加载远程文档

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

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

r 复制代码
作者:京东云
链接: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 llm

loader = 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)
相关推荐
akhfuiigabv1 天前
探索LangChain中的最新NLP研究:创新与应用
人工智能·python·自然语言处理·langchain
人在旅途我渐行渐远1 天前
FewShotChatMessagePromptTemplate 和 FewShotPromptTemplate区别
langchain·少样本学习
akhfuiigabv1 天前
使用LangChain创建简单的语言模型应用程序【快速入门指南】
java·python·语言模型·langchain
洛阳泰山2 天前
Chainlit集成Langchain并使用通义千问AI知识库高级检索(多重查询)网页对话应用教程
人工智能·python·langchain·llm·chainlit
洛阳泰山3 天前
Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)
数据库·python·langchain·交互·通义千问·postgres·chainlit
aehrutktrjk4 天前
使用 LangChain 和 Neo4j 构建智能图数据库查询系统
数据库·python·langchain·neo4j
写程序的小火箭5 天前
如何评估一个RAG(检索增强生成)系统-上篇
人工智能·gpt·语言模型·chatgpt·langchain
yuanlaile7 天前
AI教程_AI大模型 Prompt提示词工程 Langchain AI原生应用开发视频教程分享(IT营)
人工智能·langchain·prompt
再不会python就不礼貌了8 天前
轻松上手LangChain:新手必读的入门指南
开发语言·python·学习·langchain·prompt
写程序的小火箭8 天前
langgraph tool如何获取上下文和RunableConfig
人工智能·语言模型·chatgpt·langchain