25个版本 (14个破坏性版本)

新增 0.15.0 2024年8月20日
0.14.0 2024年7月26日
0.13.0 2024年7月5日
0.1.0 2024年3月6日

#224 in 异步

Download history 684/week @ 2024-05-15 1107/week @ 2024-05-22 1051/week @ 2024-05-29 893/week @ 2024-06-05 1755/week @ 2024-06-12 4309/week @ 2024-06-19 3783/week @ 2024-06-26 4131/week @ 2024-07-03 5642/week @ 2024-07-10 3073/week @ 2024-07-17 3403/week @ 2024-07-24 4210/week @ 2024-07-31 2817/week @ 2024-08-07 2715/week @ 2024-08-14

每月13,597次 下载
2 个crate中使用 (通过 deno)

BSD-3-Clause

120KB
2.5K SLoC

runtimed

lilrunt

RuntimeD 是基于 Jupyter 内核构建的 REPL 守护进程。它专门用于将交互式计算原语暴露给托管或本地的大型语言模型。

runtimed 交互的主要 CLI 是 runt

目标

runt 的目标是提供简单、易于使用且强大的交互式计算访问权限。我们希望使新一代构建者能够

  • 创建新的笔记本应用程序
  • 创建新的 REPL 类型
  • 允许大型语言模型对代码和数据进行推理

有三个主要接口

  • runt - 用于管理运行时的 CLI
  • runtimed - 用于处理交互式计算运行时的守护进程
  • runtimelib - 用于直接与运行时交互的 Rust 库

开始使用 runtimelib

cargo install runtimelib

异步分发选项

默认情况下,runtimelib 使用 tokio。然而,在编译时可以使用 async-dispatcher 运行时

cargo build --feature async-dispatch-runtime

这将允许您使用 runtimelib 构建 GPUI 应用程序。

开发 - 入门

git clone [email protected]:runtimed/runtimed.git
cd runtimed
# Install the cli, `runt` into your path
cargo install --path runt
# Install the CLI for the `runtimed` daemon.
cargo install --path runtimed
# Start the daemon
runtimed

用法

如果您尚未开始,请启动 runtimed 守护进程。

$ runtimed

列出可用的运行时。

$ runt ps
╭─────────────┬────────────┬──────────────────────────────────────┬───────────┬───────────┬───────╮
 Kernel Name │ Language   │ ID                                   │ IP        │ Transport │ State │
├─────────────┼────────────┼──────────────────────────────────────┼───────────┼───────────┼───────┤
 python3     │ python     │ 6a090dec-08cb-5429-a6c7-ea19d71fc06e │ 127.0.0.1 │ tcp       │ alive │
 deno        │ typescript │ 79c4c28f-1ffb-579a-b77c-23e4a1bb45ec │ 127.0.0.1 │ tcp       │ alive │
╰─────────────┴────────────┴──────────────────────────────────────┴───────────┴───────────┴───────╯

提交执行

$ runt exec 79c4c28f-1ffb-579a-b77c-23e4a1bb45ec $'function X() { return Math.random() };\nX()'
Execution "2d3827a2-4a7f-4a1f-bc41-5091f9ade2ab" submitted, run

runt get-results "2d3827a2-4a7f-4a1f-bc41-5091f9ade2ab"

to get the results of the execution.

获取结果

$ runt get-results "2d3827a2-4a7f-4a1f-bc41-5091f9ade2ab"
╭────────────────────────────────────────────────────╮
 Execution Results                                  │
├────────────────────────────────────────────────────┤
 Execution ID: 2d3827a2-4a7f-4a1f-bc41-5091f9ade2ab │
 Status: idle                                       │
 Started: 2024-03-05T23:57:46.680992Z               │
 Finished: 2024-03-05T23:57:46.688572Z              │

 -- Code --                                         │
 function X() { return Math.random() };             
 X()                                                

 -- Output --                                       │
 0.21616865512200545                                │

╰────────────────────────────────────────────────────╯

runtimed API 的理念 💡

我们正在通过 REST API 暴露面向文档的接口,用于与内核交互。

RuntimeD 跟踪运行时的执行情况,以便于回忆和与交互式应用程序(如笔记本和终端)一起工作。我们跟踪 ExecutionRuntime(正在运行的内核)之间的关联。我们还跟踪特定笔记本应用程序与 Code Cell -> Execution 之间的关联。

Execution {
  id: ULID,
  execution_started: timestamp,
  execution_end: timestamp,
  status: running | queued | ...
  runtime: Runtime
}
Runtime {
  id: ULID,
  status: dead | alive | unresponsive,
  last_keepalive: timestamp
}
CodeCell {
  src: str,
  execution: Execution
}

开发

与数据库一起工作

数据库由sqlx库管理。数据库的创建和任何迁移都会自动运行。如果您正在更新模式或向应用程序添加更多查询,则需要安装更多工具。

cargo install sqlx-cli
ln -s .env.example .env

准备新查询

在您编写一个新的查询后,您需要运行

cargo sqlx prepare --workspace

迁移

应使用以下命令添加新的迁移

cargo sqlx migrate add create_executions_table

这将创建一个新迁移文件在migrations/,您可以编辑。完成编辑后,您可以使用以下命令运行迁移:

cargo sqlx migrate run

依赖关系

~13-30MB
~490K SLoC