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 异步
每月13,597次 下载
在 2 个crate中使用 (通过 deno)
120KB
2.5K SLoC
runtimed
RuntimeD 是基于 Jupyter 内核构建的 REPL 守护进程。它专门用于将交互式计算原语暴露给托管或本地的大型语言模型。
与 runtimed
交互的主要 CLI 是 runt
。
目标
runt
的目标是提供简单、易于使用且强大的交互式计算访问权限。我们希望使新一代构建者能够
- 创建新的笔记本应用程序
- 创建新的 REPL 类型
- 允许大型语言模型对代码和数据进行推理
有三个主要接口
runt
- 用于管理运行时的 CLIruntimed
- 用于处理交互式计算运行时的守护进程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 跟踪运行时的执行情况,以便于回忆和与交互式应用程序(如笔记本和终端)一起工作。我们跟踪 Execution
和 Runtime
(正在运行的内核)之间的关联。我们还跟踪特定笔记本应用程序与 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