使用LangChain和OpenAI API 创建一个简易鲜花描述生成器

293 阅读3分钟

前言

在本中,我们将使用 LangChainOpenAI API 创建一个简单的鲜花描述生成器。这个生成器可以根据鲜花的价格和名称生成一段吸引人的描述,帮助大家对学习如何使用这些工具进行自然语言处理任务有一定的了解。

正文

准备工作

首先,初始化项目,确保你已经安装了必要的依赖项。你可以通过以下命令安装:

npm init -y //初始化项目
npm install @langchain/openai @langchain/core

image.png

有这些文件

如果你没有OpenAI API 密钥可以来到(github.com/chatanywher…) 这个网站免费申请一个key,不过好像得翻墙才能访问,点击申请内测免费Key就可以领取了

image.png

点击快速开始来到下面这个页面

image.png

可以看到使用方法

如果都准备好了,接下来,开始正式操作。

代码解析

// 导入必要的模块
import { ChatOpenAI } from "@langchain/openai";  // 聊天大模型
import { PromptTemplate } from "@langchain/core/prompts"; // 提示词模块

// 创建一个提示模板
const personalizedGreetingPrompt = new PromptTemplate({
    inputVariables: ["price", "flower_name"],  // 输入变量
    template: "`您是一位专业的鲜花店文案撰写员,\n对于售价${price}元的${flower_name},提供一个吸引人的简短描述?`"  // 提示模板
});

// console.log(personalizedGreetingPrompt);  // 打印提示模板

// 实例化 LLM(大语言模型)
const model = new ChatOpenAI({
    configuration: {
        apiKey: '输入你自己的OpenAI API 密钥',  // OpenAI API 密钥
        baseURL: 'https://api.chatanywhere.tech/v1'  // API 基础 URL
    },
    model: 'gpt-3.5-turbo'  // 使用的模型版本
});

// 创建一个链式调用
const chain = personalizedGreetingPrompt.pipe(model);

// 调用链式方法生成描述
const result = await chain.invoke({
    price: '99',  // 鲜花价格
    flower_name: '玫瑰'  // 鲜花名称
});

console.log(result);  // 打印生成的描述

使用指令node main.mjs让项目运行起来

效果:

image.png

也可以console.log(result.content)只打印内容,效果为:

image.png

逐行解释

  1. 导入必要的模块:

    import { ChatOpenAI } from "@langchain/openai";  // 聊天大模型
    import { PromptTemplate } from "@langchain/core/prompts"; // 提示词模块
    
    • 导入 ChatOpenAI 类,用于实例化聊天模型。
    • 导入 PromptTemplate 类,用于创建提示模板。
  2. 创建一个提示模板:

    const personalizedGreetingPrompt = new PromptTemplate({
        inputVariables: ["price", "flower_name"],  // 输入变量
        template: "`您是一位专业的鲜花店文案撰写员,\n对于售价${price}元的${flower_name},提供一个吸引人的简短描述?`"  // 提示模板
    });
    
    • 创建一个 PromptTemplate 对象,指定输入变量 price 和 flower_name
    • 设置提示模板,其中 ${price} 和 ${flower_name} 是占位符,将被实际输入值替换。
  3. 实例化 LLM(大语言模型) :

    const model = new ChatOpenAI({
        configuration: {
            apiKey: 'OpenAI API 密钥',  // OpenAI API 密钥
            baseURL: 'https://api.chatanywhere.tech/v1'  // API 基础 URL
        },
        model: 'gpt-3.5-turbo'  // 使用的模型版本
    });
    
    • 实例化 ChatOpenAI 对象,设置 API 密钥和基础 URL。
    • 指定使用的模型版本 gpt-3.5-turbo
  4. 创建一个链式调用:

    const chain = personalizedGreetingPrompt.pipe(model);
    
    • 使用 .pipe() 方法连接提示模板和模型,创建一个链式调用。
  5. 调用链式方法生成描述:

    const result = await chain.invoke({
        price: '99',  // 鲜花价格
        flower_name: '玫瑰'  // 鲜花名称
    });
    
    • 调用 invoke 方法传入实际输入值 price 和 flower_name
    • 使用 await 关键字等待异步调用完成。

完整代码

// langchain 所有的主流LLM 接口一致
import { ChatOpenAI } from "@langchain/openai";  // 聊天大模型
// prompt 接受参数
import {PromptTemplate} from "@langchain/core/prompts" //提示词模块

const personalizedGreetingPrompt = new PromptTemplate({
    inputVariables:["price","flower_name"],
    template:"`您是一位专业的鲜花店文案撰写员,\n对于售价${price}元的${flower_name},提供一个吸引人的简短描述?`"
})
// console.log(personalizedGreetingPrompt);
// LLM实例化
const model = new ChatOpenAI({
    configuration:{
        apiKey:'输入你自己的OpenAI API 密钥',
        baseURL:'https://api.chatanywhere.tech/v1'
    },
    model:'gpt-3.5-turbo'
})

// chain
const chain= personalizedGreetingPrompt.pipe(model)

const result =await chain.invoke({
    price:'99',
    flower_name:'玫瑰'
})
console.log(result);

总结

通过以上步骤,我们创建了一个简单的鲜花描述生成器。这个生成器可以根据输入的鲜花价格和名称生成一段吸引人的描述。希望这篇教程对你有所帮助,让你对使用 LangChain 和 OpenAI API 进行自然语言处理任务有一定的了解,感谢你的阅读!