Langchain
LangChain 是一个用于构建应用程序的框架,特别是那些与语言模型(如 GPT-3、GPT-4 等)交互的应用。它的主要目标是简化与自然语言处理(NLP)相关的开发过程,使开发者能够更容易地创建、管理和部署基于语言模型的应用。
LangChain 的主要特点包括:
- 模块化设计:提供了多个模块,允许开发者根据需要组合使用,例如数据加载、模型调用和结果处理等。
- 集成性:支持与多种语言模型和 API 的集成,方便开发者使用不同的模型进行实验和比较。
- 工作流管理:支持构建复杂的工作流,能够处理多轮对话、上下文管理等功能。
- 数据处理:提供工具帮助处理和转换数据,以便更好地与语言模型交互。
- 社区和文档:有活跃的社区支持和丰富的文档,方便开发者快速上手。
LangChain 适用于需要自然语言理解和生成的各种应用场景,如聊天机器人、自动化内容生成、数据分析等
结合AI大模型
接下来我们就通过一个demo演示一下,如何通过langchain结合ai大模型去使用
首先我们需要两个依赖
"@langchain/core": "^0.2.18",
"@langchain/openai": "^0.2.5"
@langchain/core
- 功能: 这是 LangChain 的核心库,提供了基本的功能和工具,使开发者能够构建以语言模型为基础的应用程序。
- 用途: 包含处理文本、管理对话状态、支持各种数据源等功能。
@langchain/openai
- 功能: 这个库专门用于与 OpenAI 的语言模型(如 GPT-3、GPT-4 等)进行交互。
- 用途: 提供接口和工具,使开发者能够轻松调用 OpenAI 的 API,生成文本、处理请求和管理响应。
接下来结构拿到openai的聊天大模型,以及一个模板
// 让所有的主流大模型接口一致
import { ChatOpenAI } from "@langchain/openai"; // 聊天大模型
// prompt 接收参数
import { PromptTemplate } from "@langchain/core/prompts"; // 提示模板
先创建一个PromptTemplate模板
const personallzedGreetingPrompt = new PromptTemplate({
inputVariables: ["price", "flower_name"],
template:
"你是一位专业的鲜花店文案撰写者,\n对于售价{price}元的{flower_name},提供一个吸引人的简短介绍",
});
接下来需要去实例化一下大模型,我们这里使用的是gpt-3.5-turbo
// 实例化大模型
const model = new ChatOpenAI({
configuration: {
apiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
baseURL: "https://api.chatanywhere.tech/v1",
},
model: "gpt-3.5-turbo",
});
接下来将写好的模板和我们指定的大模型进行链接
const chain = personallzedGreetingPrompt.pipe(model);
personalizedGreetingPrompt: 这是一个提示模板的实例,通常用于生成个性化的问候语或消息。它可能使用了PromptTemplate来定义输入格式和变量。.pipe(model):pipe方法将personalizedGreetingPrompt的输出传递给model,使得模型可以生成基于该提示的响应。
最后将我们链接好的结果通过提供的invoke方法,发送请求就可以得到响应了
const res = await chain.invoke({
price: "99",
flower_name: "瓜农老姚的南瓜花",
});
运行并打印我们可以看到结果
完整代码
需要替换成自己的key以及baseURL
// 让所有的主流大模型接口一致
import { ChatOpenAI } from "@langchain/openai"; // 聊天大模型
// prompt 接收参数
import { PromptTemplate } from "@langchain/core/prompts"; // 提示模板
const personallzedGreetingPrompt = new PromptTemplate({
inputVariables: ["price", "flower_name"],
template:
"你是一位专业的鲜花店文案撰写者,\n对于售价{price}元的{flower_name},提供一个吸引人的简短介绍",
});
// 实例化大模型
// 需要替换成自己的key以及baseURL
const model = new ChatOpenAI({
configuration: {
apiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
baseURL: "https://api.chatanywhere.tech/v1",
},
model: "gpt-3.5-turbo",
});
// langchain chain
const chain = personallzedGreetingPrompt.pipe(model);
const res = await chain.invoke({
price: "99",
flower_name: "瓜农老姚的南瓜花",
});
console.log(res);
console.log(res.content);