Javascript版Langchain入门教程解析

 更新时间:2023年06月25日 09:35:25   作者:文质彬彬的煎饼  
这篇文章主要介绍了Javascript版Langchain入门教程解析

引言

我是AI小火箭的HB,我探索和写作人工智能和语言交叉点的所有事物,范围从LLM,聊天机器人,语音机器人,开发框架,以数据为中心的潜在空间等。

介绍

LangChain是一个开源Python库,用于构建由大型语言模型(LLM)支持的应用程序。它提供了一个框架,将LLM与其他数据源(如互联网或个人文件)连接起来,允许开发人员将多个命令链接在一起,以创建更复杂的应用程序。

LangChain创建于2022年10月,是围绕LLMs(大语言模型)建立的一个框架,LLMs使用机器学习算法和海量数据来分析和理解自然语言。LangChain自身并不开发LLMs,它的核心理念是为各种LLMs实现通用的接口,把LLMs相关的组件“链接”在一起,简化LLMs应用的开发难度,方便开发者快速地开发复杂的LLMs应用。

支持的语言

LangChain目前有两个语言的实现:Python和Node.js。

组件

LangChain的组件包括:

  • Models:模型,各种类型的模型和模型集成,比如GPT-4。
  • Prompts:提示,包括提示管理、提示优化和提示序列化。
  • Memory:记忆,用来保存和模型交互时的上下文状态。
  • Indexes:索引,用来结构化文档,以便和模型交互。
  • Chains:链,一系列对各种组件的调用。
  • Agents:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止。

使用场景

LangChain的使用场景包括:构建聊天机器人、文本生成、文本分类、问答系统、语言翻译、语言模型微调等。

安装依赖库

npm install -S langchain

Hello World

首先,使用Langchain来调用OpenAI模型。

import { OpenAI } from "langchain/llms/openai";
const model = new OpenAI({
    openAIApiKey: 'sk-xxxx',//你的OpenAI API Key
    temperature: 0.9
});
const res = await model.call(
    "写一首诗,限制20个字"
);
console.log(res);

输出

春风迎新年,喜气绕家园。
祝福短信语,友谊永绵长。

替换提示语中的参数

import { OpenAI } from "langchain/llms/openai";
import { PromptTemplate } from "langchain/prompts";
import { LLMChain } from "langchain/chains";
const model = new OpenAI({
    openAIApiKey: 'sk-xxxx',//你的OpenAI API Key
    temperature: 0.9
});
const template = "What is a good name for a company that makes {product}?";
const prompt = new PromptTemplate({
    template: template,
    inputVariables: ["product"],
});
const chain = new LLMChain({ llm: model, prompt: prompt });
const res = await chain.call({ product: "colorful socks" });
console.log(res);

开始见识Langchain的强大

截止上个实例,你还没见识到Langchain的强大。

接下来,你先注册一个SerpApi帐号,获取api key

点击这里注册

然后执行以下的代码,

import { OpenAI } from "langchain/llms/openai";
import { initializeAgentExecutorWithOptions } from "langchain/agents";
import { SerpAPI } from "langchain/tools";
import { Calculator } from "langchain/tools/calculator";
const model = new OpenAI({
    streaming: true,
    openAIApiKey: 'sk-xxxx',//你的OpenAI API Key
    temperature: 0.9
});
const tools = [
    new SerpAPI('你的SerpAPI的key', {
        location: "Austin,Texas,United States",
        hl: "en",
        gl: "us",
    }),
    new Calculator(),
];
const executor = await initializeAgentExecutorWithOptions(tools, model, {
    agentType: "zero-shot-react-description",
});
console.log("Loaded agent.");
const input =
    "谁是周杰伦的老婆?" +
    "她的年纪加上10是多少?"
console.log(`Executing with input "${input}"...`);
const result = await executor.call({ input });
console.log(`Got output ${result.output}`);

输出:

Loaded agent.
Executing with input "谁是周杰伦的老婆?她的年纪加上10是多少?"...
Got output Hannah Quinlivan is Zhou Jielun's wife and she is 39 years old.

执行结果做了两件事,

  • 使用SerpAPI工具获取周杰伦的老婆的名字:Quinlivan
  • 然后获取她的年龄:29岁
  • 最后使用Calculator工具加上10:最终得到39岁的结果

这里引进了Langchainagents概念:代理。

决定模型采取哪些行动,执行并且观察流程,直到完成为止。

代码中引进了两个工具:SerpAPICalculator

const tools = [
    new SerpAPI('你的SerpAPI的key', {
        location: "Austin,Texas,United States",
        hl: "en",
        gl: "us",
    }),
    new Calculator(),
];

以上就是Javascript版Langchain入门教程解析的详细内容,更多关于Javascript版Langchain入门的资料请关注脚本之家其它相关文章!

相关文章

  • 微信小程序之页面跳转和参数传递的实现

    微信小程序之页面跳转和参数传递的实现

    这篇文章主要介绍了微信小程序之页面跳转和参数传递的实现的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • 洋葱模型 koa-compose源码解析

    洋葱模型 koa-compose源码解析

    这篇文章主要为大家介绍了洋葱模型 koa-compose源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 解决React中的re-render问题

    解决React中的re-render问题

    这篇文章主要介绍了解决React中的re-render问题,相信很多人都遇到过。接下来给大家具体讲讲这个问题,需要的朋友可以参考y一下,洗碗给对你有所帮助
    2022-01-01
  • 微信小程序  网络请求API详解

    微信小程序 网络请求API详解

    这篇文章主要介绍了微信小程序 网络请求API详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • Wireshark基本介绍和学习TCP三次握手

    Wireshark基本介绍和学习TCP三次握手

    本文主要介绍Wireshark基本介绍和学习TCP三次握手,这里详细整理了相关资料,并给出详细流程,有需要的小伙伴可以参考下
    2016-08-08
  • 微信小程序之数据双向绑定与数据操作

    微信小程序之数据双向绑定与数据操作

    这篇文章主要介绍了微信小程序之数据双向绑定与数据操作的相关资料,需要的朋友可以参考下
    2017-05-05
  • 自行实现Promise.allSettled的Polyfill处理

    自行实现Promise.allSettled的Polyfill处理

    这篇文章主要为大家介绍了自行实现Promise.allSettled 的 Polyfill处理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解微信小程序Page中data数据操作和函数调用

    详解微信小程序Page中data数据操作和函数调用

    这篇文章主要介绍了详解微信小程序Page中data数据操作和函数调用的相关资料,希望通过本文能帮助到大家掌握这方法,需要的朋友可以参考下
    2017-09-09
  • JS图形编辑器场景坐标视口坐标的相互转换

    JS图形编辑器场景坐标视口坐标的相互转换

    这篇文章主要为大家介绍了JS图形编辑器之场景坐标视口坐标的相互转换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • js 标签语法使用详情

    js 标签语法使用详情

    这篇文章主要介绍了js 标签语法使用,在 JavaScript 中提供了标签语句,用于标记指定的代码块,便于跳转到指定的位置。本文来记录一下标签语句的使用方法,需要的朋友可以参考一下
    2021-10-10

最新评论