简要介绍langchain(其实是一个较为简单的包装)
⚠️ This post is created with the help of an artificial intelligence
Topics
-
Models:
- LLM:最原本的LLM,就只能完成正常的文本补全任务
- Chat Models:较常用,经过微调,接受含
system
,user
,ai
等角色(这个是基座训练时就定好的,langchain提供抽象SystemMessage
、HumanMessage
、AIMessage
等)的文本list作为输入。 - Embedding Models: text→embedding vectors,比如RAG里查询就要用
注意:API也是有相应类型的,需要接到正确的models上
-
Prompt Templates:
- 作用:自动化、结构化地构建提示词,将静态文本与动态变量分离。
- 类型:
PromptTemplate
(用于 LLM) 和ChatPromptTemplate
(用于聊天模型)。 - 细节:参数名和**文档字符串(docstring)**会被模型解析,因此必须清晰、有意义。这个必须特别注意,很多其他库的参数名/函数def下方那段文档是不发挥任何作用的
- Chains:
- 作用:将多个模块(如模板、模型)串联成一个自动化工作流。
- 类型:
LLMChain
:最基础的链,将模板和模型组合,一次性完成提示词生成和模型调用。SequentialChain
:按顺序执行多个链,前链输出作为后链输入。RouterChain
:根据 LLM 的判断将请求动态路由到不同的子链上,用来搞MOE等。RetrievalQA
:实现 RAG。可以选chain_type
- Agents
- 最简单的实现就是
initialize_agent
,然后type选ZERO_SHOT_REACT_DESCRIPTION之类 - 自定义工具:@tool
- 注意选较新的,基于agent finetune过的基座,太老的玩不转
此外还有evaluation以及memory等模块,用的时候再慢慢看