0416 LangChain
·
简介
- LLM和提示(Prompt):LangChain对所有LLM进行了API抽象,统一了大模型访问API,同时提供了Prompt提示模板管理机制
- 链(Chain):LangChain对常见的场景封装了一些现成的模块,例如:基于上下文信息的问答系统,自然语言生成SQL查询等等,因为实现这些任务的过程,就像链式调用。
- LCEL(LangChain Expression Language ):LangChain新版本的核心特性,用于解决工作流编排问题,通过LCEL表达式,可以灵活定义AI任务处理流程链。
- 数据增强生成(RAG)rua各:因为LLM不了解最新信息,无法回答新问题,所以我们可以将新的信息导入LLM,用于增强LLM生成内容的质量,这种模式即 RAG模式(Retrieval Augmented Generation);RAG用于增强内容质量,微调改变模型回答方式。
- Agents:是基于LLM的应用设计模式,利用LLM的自然语言理解和推理能力,根据用户需求调用外部系统完成任务。
- 模型记忆(memory):让LLM记住之前的对话内容,这种能力成为模型记忆

LangChain框架
- LangChain库:Python库和JavaScript库
- LangChain模板:LangChain官方提供一些AI任务模板
- LangServe:基于FastAPI将LangChain定义的链Chain,发布成REST API
- LangSmith:开发平台,云服务,支持Debug,任务监控。
LangChain库

LangChain任务处理流程

LangChain提供提示词模板(prompt template )管理工具,负责处理提示词,然后传递给大模型处理,最后Parse处理成json等目标格式。
LangChain对大模型封装主要包括LLM和Chat Model 俩种类型。
- LLM-问答模型
- Chat Model-对话模型
核心概念
- LLMs:LangChain封装的基础模型,
- Chat Models:聊天模型(对话模型)
- 消息(Message):chatModels的消息内容,包括HumanMessage、AIMessage、SystemMessage、FunctionMessage 和 ToolMessage等。
- 提示(prompts):LangChain封装了一组专门提示词(prompts)的管理工具,方便我们格式化提示词(prompts)的内容
- 输出解析器(Output Parsers):LangChain接受LLM返回的文本内容后,可以使用专门的输出解释器对文本内容进行格式化,例如解析JSON、或则将LLM输出内容,转为python对象。
- Retrievers:为方便我们将私有数据导入到大模型LLM,提高模型回答问题的质量,LangChain封装了检索框架(Retrievers),方便我们加载文档数据、切割文档数据、存储和检索文档数据。
- 向量存储(Vector stores):为支持私有数据的语义相似搜索,LangChain支持多种向量数据库(chroma、faiss....)
- Agents:通常指LLM作为决策引擎,根据用户输入的任务,自动调用外部系统、硬件设备共同完成用户的任务。
应用场景
知识库问答:要结合RAG

调用OpenAI之前,需要配置环境变量;(调用时,要科学上网,或者代理地址。)

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
llm=ChatOpenAI()
# 基于LCEL 表达式构建LLM链,
#根据Message 生成提示词模板
prompt=ChatPromptTemplate.from_message([
('system',"你是世界级的技术专家"),
("user","{input}")
])
#创建一个字符串输出解析器
output_parser=StrOutputParser()
#通过langchain的链式调用,生成一个chain,即把 提示词模板、模型及字符串解析器 链接了起来
chain=prompt | llm | output_parser
# 此处的invoke,将参数回传给prompt,再按chain链式执行。
result=chain.invoke({"input":"帮我写一篇关于AI的技术文章,100个字"})
print(result)
无字符串解析Output:包含内容、附加参数、和response元数据 token的使用情况。
有解析器,只输出content的内容。

更多推荐


所有评论(0)