2个版本
0.1.0 | 2023年5月5日 |
---|
#2261 in 解析器实现
64 每月下载量
55KB
154 行
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数据流。
运行测试
要从存储库的根目录运行测试套件,请运行以下命令
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许可证。