Langchain.js| deno+Jupyter Notebook😀 | js也可以和python玩交互式🤔

387 阅读7分钟

前言

大家好 , 我是浪遏 ~ 之前在魔搭社区提供的 Notebook 上做过相关实验 , 截图如下 :

我所用的 , 就是 notebook , 它的特点有 :

  • 它是开源的 Web 应用程序,能创建扩展名为.ipynb的文档。
  • 提供交互式计算环境,可整合代码、markdown 格式文本、可视化结果。
  • 支持 Python、R、Julia 等多种编程语言,代码按单元格运行,能实时反馈结果。

如下图 : 便可以边写代码 , 边运行结果 , 还可以做笔记 , 简直不要太爽 ~

让我没想到的是 , 在魔搭社区上 , 只提供了 python 的环境 , 也就是无法使用 js ,ts 等前端特色语言来写代码 , 为了让 js 也能玩上这种交互式的体验 ,我搜遍大江南北 , 找到了合适的方法 —— deno + jupyter NoteBook

往期魔搭社区实验回顾:

小白也可以直播预测 😱| 数据分析、可视化、数据训练 | 魔搭社区🤔

开箱即用的LLM,遥遥领先!!! --魔搭社区超级详细教程

那么疑问来了 : 什么是jupyter NoteBook ? 什么又是deno ?

什么是jupyter NoteBook ?

Jupyter Notebook 是一款开源的、基于 Web 的交互式计算环境,以下是对它的详细解释:

它以一种独特的文档形式呈现,文档扩展名为 .ipynb ,在这样的文档里,能够将代码、文本描述以及可视化输出(比如图表等)整合在一起。文本部分可以采用 markdown 格式书写,方便添加标题、段落、列表、链接等内容来详细阐释代码功能、项目背景等信息。

支持多种编程语言,像 Python、R、Julia 等。用户可以把代码按照逻辑划分成不同的单元格,代码能以单元格为单位逐个运行,运行后马上就能在相应单元格下方看到输出结果,例如输入一段 Python 代码去读取和处理数据,立刻就能看到处理后的数据情况,这一特性使得代码调试、探索性分析等操作变得十分便捷。

vs code 中有 jupyter 插件 : 后期需要使用 pyhton 环境下载 notebook , 请往后看

交互性强,可灵活调整代码逻辑与探索思路,文档整合度高利于分享交流,且有助于知识传播与协作,广泛应用于数据科学、数据分析、机器学习、深度学习、教育教学、科研等诸多领域,是相关活动的得力工具。

功能特点

  • 交互性强:使用者可以随时返回之前的单元格修改代码,重新运行后,后续与之相关的结果也会随之更新,便于灵活调整代码逻辑和探索不同思路。
  • 文档整合度高:把代码与对应的解释说明、可视化呈现有机结合在一个文档内,方便使用者回顾整个项目流程,也利于与他人分享交流,他人拿到文档后既能看到代码实现,又能通过文字理解思路,还能查看相应的可视化成果。
  • 利于知识传播与协作:在教学场景中,教师可以通过它制作内容丰富的教学资料,学生能对照操作实践;在科研、工作等场景下,团队成员之间可以基于它分享研究或项目进展,便于协作推进以及成果复用。

什么是 deno ?

Deno 是一个基于 V8 引擎、采用 Rust 语言编写的安全的 JavaScript 和 TypeScript 运行时环境,以下是关于它的详细介绍:

大家可以观看 deno 的官方宣传视频 , 我看了几遍 , 很有趣 :

【Nodejs官方指定继任者 - Deno 2.0 官方宣传片】www.bilibili.com/video/BV1Dr…

一下是对视频中提到的点进行总结 :

Node.js 的对比

  • 模块系统:如前文所述,Deno 的模块系统基于 URL,更为简洁直观,而 Node.js 的 CommonJS 模块系统相对复杂,需要遵循特定的 require 语法及模块查找规则。
  • 安全性:Deno 默认有安全沙箱机制保障安全,Node.js 则更多需要开发者自行采取措施保障应用安全,例如谨慎处理文件读写、网络访问权限等问题。
  • 内置工具:Deno 自带了不少实用开发工具,Node.js 虽然也有一些核心工具,但在一些功能如代码格式化等方面,往往需要依赖大量外部安装的第三方工具。

deno 由 Node.js 的原作者 Ryan Dahl 开发,旨在解决 Node.js 在开发过程中出现的一些痛点问题,比如模块系统的复杂性、安全性方面的隐患等,为开发者提供一个更简洁、高效且安全的运行环境来执行 JavaScript 和 TypeScript 代码。

Deno 默认运行在安全沙箱模式下,在没有明确授权的情况下,脚本无法访问文件系统、网络以及环境变量等资源,这样能有效避免很多因代码漏洞引发的安全风险,例如防止恶意脚本随意读取或篡改本地文件等情况发生。

采用了基于 URL 的模块导入方式,与浏览器中的模块加载机制较为相似,摆脱了 Node.js 中复杂的 CommonJS 模块和 require 语法,开发者可以直接从网络地址或者本地文件路径导入模块,让代码的模块依赖关系更加清晰直观,例如可以像这样导入模块 import { something } from "https://example.com/module.ts"

自带了如代码格式化工具deno fmt)、代码检查工具deno lint)等实用的开发辅助工具,开发者无需再额外安装大量第三方工具就能完成代码的格式化、遵循规范检查等基础工作,提升了开发效率和代码质量。

全面支持 JavaScript 和 TypeScript 的最新语言特性以及 ECMAScript 标准,开发者可以方便地运用诸如异步 / 等待(async/await)、箭头函数等新特性编写代码,并且能很好地兼容使用 TypeScript 进行开发,享受类型系统带来的代码可维护性提升等好处。

应用场景


  • Web 开发:可以用于构建服务器端应用程序,开发人员利用其特性编写后端接口,处理 HTTP 请求、响应等,同时也能在前端开发中,作为代码运行和测试的环境,帮助调试 JavaScript 和 TypeScript 代码,确保其在浏览器端的正确执行。
  • 命令行工具开发:开发者能够基于 Deno 创建各种实用的命令行工具,借助其简洁的模块系统和内置功能,快速实现工具的逻辑,并且方便地进行打包发布,例如开发一个文件处理的命令行工具,实现文件的加密、解密等功能。
  • 脚本编写与自动化任务:编写一些自动化的脚本,如数据处理脚本、系统运维相关脚本等,通过 Deno 来运行这些脚本,利用其安全特性和对现代语言特性的支持,确保脚本在执行过程中的安全性和高效性。

why deno+Jupyter Notebook ?

  • 用 Jupyter Notebook 的原因是其可以分段运行代码,来节约调试大模型相关 API 的耗时/耗费 操作。

  • Jupyter Notebook 目前不支持 nodejs ,deno 有 jupyter 的环境 且Deno 的基本 API 跟 node 一致

安装好环境后 : notebook 提供 deno 内核 选项

安装

这是一种体力活 , 我经过几天的熬夜学习 与 抢救水课"地球科学概论" , 已经肉体疲惫 , 故而偷个懒 , 提供我参考的安装资料 :

stickerwu.net/archives/17…

在此之前 , 你必须有 python 环境

还有一个小坑就是 ,你可能需要关闭一些杀毒软件 , 来安装 deno , 我的电脑由于在购买时被小姐姐安装了 360🤡 , 所以必须关掉 !

其他安装参考资料 ,或许对你有用 :

  1. www.python.org/downloads/
  2. docs.deno.com/runtime/man…
  3. docs.deno.com/runtime/man…
  4. jupyter.org/install
  5. marketplace.visualstudio.com/items?itemN…

总结

倔友们 ,下次见 , 我将用这套环境做一系列实验 , 请等我考完期末考试 😁