建设企业网站的十大外贸电商平台
LangChain学习笔记(一)-LangChain简介
langChain是一个人工智能大语言模型的开发框架,主要构成为下图。
一、核心模块
(一)模型I/O模块
负责与现有大模型进行交互,由三部分组成:
- 提示词管理部分:用于模版化、动态选择和管理模块输入;
- 语言模型部分:通过接口调用各类大模型,如遇需要调用现有的模型,如chatglm可以去其官网查看调用api;
- 输出解析器:负责从模型的返回中提取信息。
(二)检索模块
能从外部检索用户特定数据并将其整合到大模型中。
(三)链模块
它定义为对一系列组件的组合调用,其中LangChain提供了LCEL(LangChain expression language)表达式语言来实现链。
(四)记忆模块
用于保存应用运行期间的信息,以维持应用的状态。
(五)代理模块
其核心思想是用大模型来选择一系列需要采取的行动,其包含了4个关键组件。
- Agent:通过模型和提示词来决定下一步操作的决策组件。这个组件的输入包括可用工具列表、用户输入、之前执行的步骤。基于这些输入Agent会产生下一步的操作或直接返回结果。
- Tool:代理调用函数,对于构建智能代理至关重要。需要对这些工具进行合适的描述,以便正确被调用。
- ToolKit:LangChain官方提供的工具包。
- AgentExecutor:代理运行时环境,负责调用代理并执行其选择的动作。内部有对不同情况(工具出错,选取了不存在工具,结果无法解析)的处理,还有日志功能。
(六)回调模块
用于在特定操作时,调用预定的程序,类似触发器。
二、快速开始
import osfrom typing import List
from langchain_openai import ChatOpenAI
from langchain.schema import BaseOutputParser
from langchain.prompts import ChatPromptTemplate# 定义模型
llm = ChatOpenAI(temperature=0.95,model="GLM-4-Air",openai_api_key="9c9ef279e10a0a244ba097f5699f86b8.F0yarghEKK7OeSpI",openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)# 定义解析器
class CommaSeparatedListOutputParser(BaseOutputParser[List[str]]):"""输出解析器:将逗号分割的词组,解析成词组"""def parse(self, text: str) -> List[str]:return text.strip().split(",")# 定义提示词模板
template = "你是一个生成逗号分隔的列表助手,用户会传入一个问题,你生成该问题的5个答案,并以逗号分隔的形式返回。只返回逗号分隔的内容,不要包括其他内容"
human_template = "{text}"chat_prompt = ChatPromptTemplate.from_messages([("system" , template),("human" , human_template),
])# 定义链
first_chain = chat_prompt | llm | CommaSeparatedListOutputParser()if __name__ == "__main__":print(first_chain.invoke({"text": "我开发了一个厨房模拟器,请给该应用取个名字"}))