LangChain.js入门:AI应用开发的新时代
从不屑到佩服,我见证了AI领域的飞速发展。今天,我要向各位介绍一个改变游戏规则的工具:LangChain.js。它不仅仅是一个库,更是构建下一代AI应用的基石。
什么是LangChain.js?
LangChain.js是LangChain的JavaScript/TypeScript版本,是一个为大语言模型(LLM)应用开发而设计的框架。如果你曾经想过如何将ChatGPT这样的AI能力无缝集成到你的应用中,LangChain.js就是你的不二之选。
简单来说,LangChain.js就像是AI能力的"乐高积木",让你能够轻松组装出复杂的AI应用。
为什么选择LangChain.js?
当我第一次接触LangChain.js时,我的反应是:"这不就是我一直在寻找的东西吗?"作为一个经常与JavaScript打交道的开发者,我深知在JS生态中构建AI应用的挑战。
以下是LangChain.js的几大优势:
- 原生JavaScript支持:不需要Python环境,直接在Node.js或浏览器中运行
- 模块化设计:像搭积木一样构建你的AI应用
- 多模型支持:OpenAI、Anthropic、Hugging Face等,应有尽有
- 丰富的工具集:从文本处理到向量数据库,一应俱全
- 活跃的社区:问题解决和最佳实践触手可及
LangChain.js vs Python版本
"那么,LangChain.js和Python版本有什么区别呢?"这是我经常被问到的问题。
虽然两者在核心概念上保持一致,但LangChain.js针对JavaScript生态进行了优化:
- 使用Promise而非异步/等待语法
- 与Node.js和前端框架的无缝集成
- 针对JavaScript开发者的API设计
- 更轻量级的依赖
环境准备
在开始LangChain.js之旅前,你需要准备:
# 创建新项目
mkdir my-langchain-app
cd my-langchain-app
npm init -y
# 安装LangChain 核心库,提供langchain的基本能力
npm install @langchain/core
# 我们以使用deepseek llm为例,所以安装@langchain/deepseek,提供与deepseek交互的能力
npm install @langchain/deepseek
随后,在项目中找到package.json,添加 type为module配置,为让项目支持ES module形式的模块组织形式
# /package.json
{
...其他配置
"type": "module",
}
你的第一个LangChain.js应用
让我们创建一个简单的应用,向deepseek的模型提问。
首先,在项目文件夹下,创建入口文件index.js,编写应用代码:
import { ChatDeepSeek } from "@langchain/deepseek";
// 初始化 DeepSeek 模型
const llm = new ChatDeepSeek({
// DeepSeek API Key
apiKey: "sk-xxxxxxxx",
// 控制回答随机性
// 0:最稳定,适合代码、数学
// 0.7:平衡,适合日常聊天(常用)
// 越大:回答越有创造性
temperature: 0.7,
// 使用的模型
// deepseek-chat:通用聊天模型
// deepseek-coder:代码模型
// deepseek-reasoner:推理模型
modelName: "deepseek-chat",
// 最大输出 Token 数量
// 越大,回答越长
maxTokens: 100,
});
async function main() {
// 调用模型发送问题
const result = await llm.invoke(
"解释一下量子计算的基本原理,用通俗的语言"
);
// 打印完整 AIMessage 对象
console.log(result);
// 只打印 AI 回复内容
console.log(result.content);
}
// 执行函数
main();
2. 完成代码编写,可以运行你的AI 应用了
AIMessage {
// AI 消息的唯一 ID
"id": "a5c34373-4b81-4dea-b9a3-b1dbfa7d14bd",
// AI 实际返回的文本内容
"content": "好的,我们用最通俗的方式来聊聊量子计算。\n\n想象一下,你正在玩一个**迷宫游戏**,要找出口。\n\n**传统计算机(经典计算机)** 就像一个**很勤奋但一次只能走一条路**的探险家。他站在岔路口,先走左边,如果走不通,就退回来,再走右边。他速度很快,但本质上是一个一个地试,直到找到出口。\n\n**量子计算机** 则像一个\*\*会“分身术”的探险",
// 额外参数
"additional_kwargs": {},
// 模型返回的元数据
"response_metadata": {
// Token 使用情况
"tokenUsage": {
// 输入 Token 数量
"promptTokens": 14,
// 输出 Token 数量
"completionTokens": 100,
// 输入 + 输出 Token 总数
"totalTokens": 114
},
// 生成结束的原因
// length 表示达到 maxTokens 限制,导致输出被截断
"finish_reason": "length",
// 模型提供商
"model_provider": "deepseek",
// 实际使用的模型
"model_name": "deepseek-v4-flash",
// 更详细的 Token 使用情况
"usage": {
// 输入 Token
"prompt_tokens": 14,
// 输出 Token
"completion_tokens": 100,
// 总 Token
"total_tokens": 114,
// 输入 Token 的详细信息
"prompt_tokens_details": {
// 缓存命中的 Token
"cached_tokens": 0,
// Prompt Cache 命中的 Token
"prompt_cache_hit_tokens": 0,
// Prompt Cache 未命中的 Token
"prompt_cache_miss_tokens": 14
}
},
// DeepSeek 当前模型/服务版本相关的指纹
"system_fingerprint": "fp_a18b46594c_prod0820_fp8_kvcache_20260402"
},
// 工具调用相关的信息
// [] 表示本次没有调用工具
"tool_calls": [],
// 无效的工具调用
// [] 表示没有无效工具调用
"invalid_tool_calls": [],
// LangChain 对 Token 使用情况的统一记录
"usage_metadata": {
// 输出 Token
"output_tokens": 100,
// 输入 Token
"input_tokens": 14,
// 总 Token
"total_tokens": 114,
// 输入 Token 详细信息
"input_token_details": {
// 从缓存读取的 Token
"cache_read": 0
},
// 输出 Token 详细信息
"output_token_details": {}
}
}
就这么简单!几行代码,你就已经创建了一个基础的与AI交互的应用。
结语
这只是LangChain.js的冰山一角。在接下来的系列文章中,我们将深入探讨LangChain.js的各个模块,从链式调用到代理系统,从记忆机制到工具集成。
无论你是想构建一个智能客服机器人,还是开发一个AI驱动的内容生成平台,LangChain.js都能为你提供所需的工具和抽象。
记住,AI应用开发的未来不在于谁能访问最强大的模型,而在于谁能最巧妙地组合和应用这些模型。而LangChain.js,正是这场游戏的重要玩家。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)