admin管理员组

文章数量:1573292

使用LangChain构建应用

LangChain支持构建应用程序,将外部数据源和计算源连接到LLM。我们将从一个简单的 LLM 链开始,它只依赖于提示模板中的信息来响应。 接下来,我们将构建一个检索链,该链从单独的数据库获取数据并将其传递到提示模板中。 然后,我们将添加聊天记录,以创建对话检索链。这允许您以聊天方式与此 LLM 进行交互,因此它会记住以前的问题。 最后,我们将构建一个代理,利用 LLM 来确定它是否需要获取数据来回答问题。

Conversation Retrieval Chain

到目前为止,我们创建的链只能回答单个问题。人们正在构建的LLM应用程序的主要类型之一是聊天机器人。那么,我们如何将这条链转化为一条可以回答后续问题的链呢?

我们仍然可以使用create_retrieval_chain函数,但我们需要更改两件事:

  • 检索方法现在不应该只针对最近的输入,而是应该考虑整个历史。
  • 最后的LLM链同样应考虑整个历史。

背景

基于百度百科的《让子弹飞》介绍,设计一个带历史对话的聊天机器人。

准备工作

主要是网页数据的加载、嵌入模型的初始化、向量数据库的初始化等,具体代码如下。

python复制代码from langchain_community.document_loaders import WebBaseLoader
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
import torch
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter 

# 词嵌入模型
EMBEDDING_DEVICE = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
embeddings = HuggingFaceEmbeddings(model_name='D:\models\m3e-base', model_kwargs={'device': EMBEDDING_DEVICE})
# 加载外部文档
loader = WebBaseLoader("https://baike.baidu/item/%E8%AE%A9%E5%AD%90%E5%BC%B9%E9%A3%9E/5358?fr=ge_ala")
docs = loader.load()
# 文档向量化到FAISStext_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(docs)
vector = FAISS.from_documents(documents, embeddings)
# 得到一个检索器
retriever = vector.as_retriever()

Updating Retrieval

为了更新检索,我们将创建一个新的链。该链将接收最近的输入(input)和会话历史(chat_history),并使用LLM生成搜索查询。

python复制代码from langchain.chains import create_history_aware_retriever
from langchain_core.prompts import MessagesPlaceholder  
prompt = ChatPromptTemplate.from_messages([    
    MessagesPlaceholder(variable_name="chat_history"),    
    ("user", "{input}"),    
    ("user", "Given the above conversation, generate a search query to look up in order to get information relevant to the conversation")
])
retriever_chain = create_history_aware_retriever(llm, retriever, prompt)

现在我们有了这个新的检索器,我们可以创建一个新的链来继续对话,并牢记这些检索到的文档。

python复制代码prompt = ChatPromptTemplate.from_messages([    
    ("system", "Answer the user's questions based on the below context:\n\n{context}"), 
    MessagesPlaceholder(variable_name="chat_history"),    
    ("user", "{input}"),
])
document_chain = create_stuff_documents_chain(llm, prompt) 
retrieval_chain = create_retrieval_chain(retriever_chain, document_chain)

测试一下效果

python复制代码chat_history = [
    HumanMessage(content="《让子弹飞》什么时候在大陆上映的?"), 
    AIMessage(content="《让子弹飞》的大陆上映时间是2010年12月16日。")
]
retrieval_chain.invoke({    
    "chat_history": chat_history,    
    "input": "那韩国上映时间呢?"
})

最终输出

python

复制代码《让子弹飞》在2011108日在韩国上映。

以上就是一个简单的,带历史记录的聊天机器人。整个的流程大概是:检索文档找到关联的文档(一条或者多条),基于文档和历史对话进行问答,得到问题的答案。如果如果还要继续进行问答,往chat_history中添加新的问答对即可。

零基础如何学习大模型 AI

领取方式在文末

为什么要学习大模型?

学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。

大模型实际应用案例分享

①智能客服:某科技公司员工在学习了大模型课程后,成功开发了一套基于自然语言处理的大模型智能客服系统。该系统不仅提高了客户服务效率,还显著降低了人工成本。
②医疗影像分析:一位医学研究人员通过学习大模型课程,掌握了深度学习技术在医疗影像分析中的应用。他开发的算法能够准确识别肿瘤等病变,为医生提供了有力的诊断辅助。
③金融风险管理:一位金融分析师利用大模型课程中学到的知识,开发了一套信用评分模型。该模型帮助银行更准确地评估贷款申请者的信用风险,降低了不良贷款率。
④智能推荐系统:一位电商平台的工程师在学习大模型课程后,优化了平台的商品推荐算法。新算法提高了用户满意度和购买转化率,为公司带来了显著的增长。

这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。

学习资料领取

如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

部分资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段

二、AI大模型实战案例

涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。

三、视频和书籍PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。

如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~

本文标签: 入门快速教程LangChain是全网最丝滑