咱们演示如何结合 LangChain 和 Google 的 Gemini LLM 来总结互联网上的博客文章和文章。

译自Tutorial: Using LangChain and Gemini to Summarize Articles,作者 Janakiram MSV。

在本教程中,咱们将了解如何结合运用LangChain(一个用于在应用程序中运用大型言语模型 (LLM) 的编程框架)和 Google 的Gemini LLM来总结互联网上的博客文章或文章。

在继续本教程之前,请保证你已从 Google AI Studio 获取了 API 密钥。

此应用程序旨在总结根据网络的文章,供给其内容的简练概述。这关于快速了解长篇文章的要点非常有用,而无需阅览全文。

过程 1:初始化环境

创立一个 Python 虚拟环境,并从 requirements.txt 文件中装置所需的模块。

python -m venv venv
source venv/bin/activate

运用以下内容创立 requirements.txt 文件:

google.generativeai
langchain-google-genai
langchain
langchain_community
jupyter
pip install -r requirements.txt

设置一个环境变量,以便从代码中隐式拜访 API 密钥。

export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"

启动 Jupyter Notebook 并开始编写代码。

过程 2:导入模块

首先导入必要的 Python 模块。这些导入包括来自 LangChain 和 Google Generative AI 的类和函数,它们关于构建咱们的应用程序至关重要。在继续之前,请保证在 Python 环境中装置了这些库。

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_community.document_loaders import WebBaseLoader
from langchain.prompts import PromptTemplate
from langchain.chains import StuffDocumentsChain
from langchain.chains.llm import LLMChain

过程 3:加载博客

从根据网络的文章中加载内容。下面代码段中供给的 URL 仅仅一个示例;你可以随意将其替换为要总结的任何文章 URL。获取内容并将其存储起来以供进一步处理。

loader = WebBaseLoader("https://thenewstack.io/the-building-blocks-of-llms-vectors-tokens-and-embeddings/")
docs = loader.load()

过程 4:界说总结链

在此关键过程中,咱们将界说摘要模板并配置 LangChain 模型以生成摘要。该模板辅导模型如何构建其输出,重点是创立输入文本的简练摘要。

template = "Write a concise summary of the following:n"{text}"nCONCISE SUMMARY:"
prompt = PromptTemplate.from_template(template)
llm_chain = LLMChain(llm=llm, prompt=prompt)
stuff_chain = StuffDocumentsChain(llm_chain=llm_chain, document_variable_name="text"

过程 5:调用链

最后一步是调用链,它触发对已加载文档的摘要处理。输出是模型测验总结文章,为你供给其内容的浓缩版别。

response=stuff_chain.invoke(docs)
print(response["output_text"])

更多关于 LangChain 和 LLM 的信息

问题解答 (Q&A) 用例(如前一个教程中所示)和摘要用例(如上所述)利用了 LangChain 和 Gemini 的强壮功能,但服务于不同的意图并选用不同的办法。

问答应用程序专注于从给定文本(例如 PDF 文档)中提取特定答案,要求系统了解上下文并检索准确的信息以答复查询。此过程触及加载和将文档拆分为可办理的块,将这些块转换为嵌入,并运用检索机制查找最相关的文本部分来答复提出的问题。

另一方面,摘要用例旨在将根据网络的长篇文章浓缩成简练的摘要。此应用程序着重了解文章的总体主题和要点,需要一个摘要链来辅导模型生成内容的简要概述。与问答用例不同,摘要触及直接加载网络内容、应用摘要模板并生成文章的浓缩版别——杰出其核心信息,而无需深化了解具体内容。

这两个应用程序展示了 LangChain 在处理自然言语处理使命方面的多功能性,但它们各自满意不同的需求。一个专注于在文档中精确定位特定信息,而另一个旨在供给冗长文章的快速、易于消化的摘要。

您可以在下面找到摘要的完整代码:

### Install required modules and set the envvar for Gemini API Key
#pip install google.generativeai
#pip install langchain-google-genai
#pip install langchain
#pip install langchain_community
#pip install jupyter
#export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"
#Import Modules
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_community.document_loaders import WebBaseLoader
from langchain.chains import StuffDocumentsChain
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate
#Initialize Model
llm = ChatGoogleGenerativeAI(model="gemini-pro")
#Load the blog
loader = WebBaseLoader("https://thenewstack.io/the-building-blocks-of-llms-vectors-tokens-and-embeddings/")
docs = loader.load()
#Define the Summarize Chain
template = """Write a concise summary of the following:
"{text}"
CONCISE SUMMARY:"""
prompt = PromptTemplate.from_template(template)
llm_chain = LLMChain(llm=llm, prompt=prompt)
stuff_chain = StuffDocumentsChain(llm_chain=llm_chain, document_variable_name="text")
#Invoke Chain
response=stuff_chain.invoke(docs)
print(response["output_text"])

本文在云云众生yylives.cc/)首发,欢迎大家拜访。