Langchain结合AI大模型

478 阅读3分钟

Langchain

LangChain 是一个用于构建应用程序的框架,特别是那些与语言模型(如 GPT-3、GPT-4 等)交互的应用。它的主要目标是简化与自然语言处理(NLP)相关的开发过程,使开发者能够更容易地创建、管理和部署基于语言模型的应用。

LangChain 的主要特点包括:

  1. 模块化设计:提供了多个模块,允许开发者根据需要组合使用,例如数据加载、模型调用和结果处理等。
  2. 集成性:支持与多种语言模型和 API 的集成,方便开发者使用不同的模型进行实验和比较。
  3. 工作流管理:支持构建复杂的工作流,能够处理多轮对话、上下文管理等功能。
  4. 数据处理:提供工具帮助处理和转换数据,以便更好地与语言模型交互。
  5. 社区和文档:有活跃的社区支持和丰富的文档,方便开发者快速上手。

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: "瓜农老姚的南瓜花",
});

运行并打印我们可以看到结果

image.png

完整代码

需要替换成自己的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);