LainChain
是什么
LangChain是一个基于大语言模型(LLMs)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。
LangChain提供了一系列工具、套件和接口,可以简化创建由LLMs和聊天模型提供支持的应用程序的过程。
- 主要组件:
- Models=>模型,各类型的模型和模型的集成,eg:GPT-4
- Prompts=>提示
- Memory=>记忆,保存和模型交互时的上下文状态
- Indexes=>索引,用来结构化文档,以便和模型交互
- Chains=>链,对各种组件进行调用
- Agents=>代理,决定模型采取哪些行动,执行并观察流程,直到完成为止
- 使用场景
- 个人助手
- 输入标题问答系统
- 聊天机器人
- 表格数据查询
- 文档总结
- API交互
- 信息提取
模型
模型,位于LangChain框架的最底层,它是基于语言模型构建的应用的核心元素,因为所谓LangChain应用开发,就是以LangChain作为框架,通过API调用大模型来解决具体问题的过程。
Model I/O
对模型的使用过程拆解成三块,分别是输入提示(对应图中的Format)、调用模型(对应图中的Predict)和输出解析(对应图中的Parse)。这三块形成了一个整体,因此在LangChain中这个过程被统称为 Model I/O(Input/Output)。
- 提示模板:使用模型的第一个环节是把提示信息输入到模型中,你可以创建LangChain模板,根据实际需求动态选择不同的输入,针对特定的任务和应用调整输入。
- 语言模型:LangChain允许你通过通用接口来调用语言模型。这意味着无论你要使用的是哪种语言模型,都可以通过同一种方式进行调用,这样就提高了灵活性和便利性。
- 输出解析:LangChain还提供了从模型输出中提取信息的功能。通过输出解析器,你可以精确地从模型的输出中获取需要的信息,而不需要处理冗余或不相关的数据,更重要的是还可以把大模型给回的非结构化文本,转换成程序可以处理的结构化数据。
提示工程(Prompt Engineering)
Prompt(提示词)即发送给大模型的指令。
-
Prompt组成成分
- 指令:想要模型执行的特定任务或指令
- 上下文:包含外部信息或额外的上下文信息,引导语言模型更好的响应
- 输入数据:用户输入的内容或问题
- 输出指示:指定输出的类型或格式
-
从Prompt的内容和形式可分为
- 零样本提示(Zero-shot prompts)
- 少样本提示(Few-shot prompts)
- 思维链(Chain of Thoughts,CoT):在样本中添加思维链
- LTM(Least-To-Most Promoting):为了提高泛化能力
- 思维树(Tree of Thoughts,ToT):将问题划分成多个子问题
- Prompt攻击与防范