2个版本

0.1.0 2023年5月5日

#2261 in 解析器实现

Download history 7/week @ 2024-03-14 8/week @ 2024-03-21 41/week @ 2024-03-28 30/week @ 2024-04-04 9/week @ 2024-04-11 3/week @ 2024-04-18 4/week @ 2024-05-02 15/week @ 2024-05-09 25/week @ 2024-05-16 12/week @ 2024-05-23 12/week @ 2024-05-30 23/week @ 2024-06-06 18/week @ 2024-06-13 17/week @ 2024-06-20 4/week @ 2024-06-27

64 每月下载量

MIT 许可证

55KB
154

Genau

jawohl

jawohl 是一个Rust库,帮助您处理由大型语言模型(LLM)产生的JSON。 jawohl 可以通过自动添加缺失的关闭字符(引号、花括号和括号)来完成部分JSON字符串。这在您处理来自LLM的流式JSON字符串并希望在推理过程完成之前显示信息时特别有用。

功能

  • 自动完成不完整的JSON字符串
  • 处理嵌套对象和数组
  • 处理字符串中的转义字符
  • 对格式错误的JSON输入返回错误
  • 即将推出 为JavaScript和Python发布包装器

安装

将以下行添加到您的Cargo.toml文件中的[dependencies]部分

jawohl = "0.1.0"

使用方法

以下是一个基本示例,展示了如何使用JSON Completer库

use jawohl::complete_json;

fn main() {
    let input = r#"{"key": "value", "arr": [1, 2, {"nested_key": "nested_value""#;

    assert!(complete_json(input), Ok(r#"{"key": "value", "arr": [1, 2, {"nested_key": "nested_value"}]}"#));
}

有关更多示例和高级使用方法,请参阅示例目录。特别是,OpenAI Streaming Parse 示例展示了如何使用jawohl从OpenAI的API(使用64bit的async-openai库)解析JSON数据流。

asciicast

运行测试

要从存储库的根目录运行测试套件,请运行以下命令

cargo test

这将执行一系列测试,包括嵌套对象和数组、转义引号和格式错误的JSON字符串等不同场景。

贡献

我们欢迎贡献!如果您想贡献,请按照以下步骤操作

  • 在GitHub上派生存储库
  • 为您的功能或错误修复创建一个新的分支
  • 提交您的更改并将分支推送到您的派生
  • 向主存储库创建拉取请求

请确保您的代码遵循Rust的最佳实践,并为任何新的功能或错误修复包含测试。

动机

jawohl受到了untruncate-json 库的启发。我们希望创建一个更简单的untruncate-json版本,专门用于LLM生成的JSON。与untruncate-json会修复所有部分JSON字符串不同,jawohl将修复最常见的案例。jawohl旨在在Web浏览器、终端或其他UI中显示LLM生成的部分JSON字符串时有用,您希望显示正在生成的JSON,而无需等待推理过程完成,并且并不那么重要您必须能够解析每个令牌的JSON,而只是其中一些。此外,我们还希望用Rust编写它,以便可以在Python和JavaScript等语言中使用。

许可证

本项目采用MIT许可证。

无运行时依赖