https://baijiahao.baidu.com/s?id=1769509377621631060&wfr=spider&for=pc

介绍

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.

执行结果做了两件事,

  1. 1. 使用SerpAPI工具获取周杰伦的老婆的名字:Quinlivan

  2. 2. 然后获取她的年龄:29岁

  3. 3. 最后使用Calculator工具加上10:最终得到39岁的结果

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

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

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

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

Javascript版Langchain入门的更多相关文章

  1. JavaScript版拼图小游戏

    慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ...

  2. 《zw版·Halcon入门教程与内置demo》

    <zw版·Halcon入门教程与内置demo> halcon系统的中文教程很不好找,而且大部分是v10以前的版本. 例如,QQ群: 247994767(Delphi与halcon), 共享 ...

  3. 前端优秀作品展示,JavaScript 版水果忍者

    <水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Rapha ...

  4. javascript日历控件——纯javascript版

    平时只有下班时间能code,闲来写了个纯javascript版.引用该calendar.js文件,然后给要设置成日历控件的input的id设置成calendar,该input就会变成日历控件. < ...

  5. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

  6. 在线聊天室的实现(1)--websocket协议和javascript版的api

    前言: 大家刚学socket编程的时候, 往往以聊天室作为学习DEMO, 实现简单且上手容易. 该Demo被不同语言实现和演绎, 网上相关资料亦不胜枚举. 以至于很多技术书籍在讲解网络相关的编程时, ...

  7. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  8. Javascript版选择下拉菜单互移且排序

    效果图如下: 代码如下: <html> <head> <title>Javascript版选择下拉菜单互移且排序</title> <meta ht ...

  9. javascript版QQ在线聊天挂件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. JavaScript版排序算法

    JavaScript版排序算法:冒泡排序.快速排序.插入排序.希尔排序(小数据时,希尔排序会比快排快哦) //排序算法 window.onload = function(){ var array = ...

随机推荐

  1. DBA必备神器:让Oracle关库不再心惊胆战!

    我们的文章会在微信公众号"Oracle恢复实录"和博客网站同步更新,欢迎关注收藏.也欢迎大家转载,但请在文章开始处标注文章出处,谢谢! 由于博客中包含大量代码,建议通过网页浏览以获 ...

  2. 使用 Firefox (火狐)浏览器 必开的配置

    首先,在网址输入框中输入 about:config 进入浏览器配置页面 设置打开书签的时候在新标签页打开 然后搜索 browser.tabs.loadBookmarksInTabs 并将它的值改为tr ...

  3. SqlServer 查看所有触发器信息的命令

    https://blog.csdn.net/chenghaibing2008/article/details/45332993 SELECT       object_name(a.parent_ob ...

  4. C# DES (cbc) 加密解密 (最简单的加密解密)

    https://www.cnblogs.com/tianma3798/p/8807906.html 感谢这位大哥的代码提示 微软官网的这个示例正的是该换了,一点用处没看出来 https://docs. ...

  5. asp.net mvc 获取请求服务器信息

    HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] /// <summary>        /// ...

  6. FFmpeg安装与使用

    前言 ffmpeg 是十分强大的视频录制及格式转换的命令行工具 安装 windows教程 而Mac可以直接用 Homebrew 来安装 ffmpeg: brew install ffmpeg 视频转w ...

  7. 我的毕设总结所用的技术和只是要点 基于stm32F4的AGV嵌入式控制系统的设计

    小疑惑 TP[num]这种应该是测试端口 OR应该是磁珠或者是.. Altium Designer shift+s 切换单双面 T+ C 查找对应的元器件 J+ C 查找编号 J+L 查找原点 T+M ...

  8. unable to find string literal operator ‘operator""format’ with ‘const char [10]’, ‘long unsigned int’ arguments

    简介 遇到问题 unable to find string literal operator 'operator""format' with 'const char [10]', ...

  9. 销帮帮CRM与电商运营增效的关系?

    在电商运营中,不同部门之间往往存在信息壁垒,导致客户体验的不连贯.销帮帮CRM通过提供跨职能管理客户关系的共享平台和一体化工作流引擎,使员工能够使用正确的工具和数据更有效地管理跨业务线的客户关系,实现 ...

  10. MySQL 17 如何正确地显示随机消息?

    假设有一个场景,一个英语学习APP首页有一个随机显示单词的功能,用户每次访问首页的时候,都会随机滚动显示三个单词. 已知表里有10000条记录,来看看随机选择3个单词有什么方法,又存在什么问题. 建表 ...