Llama.Grammar
1.0.4
See the version list below for details.
dotnet add package Llama.Grammar --version 1.0.4
NuGet\Install-Package Llama.Grammar -Version 1.0.4
<PackageReference Include="Llama.Grammar" Version="1.0.4" />
<PackageVersion Include="Llama.Grammar" Version="1.0.4" />
<PackageReference Include="Llama.Grammar" />
paket add Llama.Grammar --version 1.0.4
#r "nuget: Llama.Grammar, 1.0.4"
#:package Llama.Grammar@1.0.4
#addin nuget:?package=Llama.Grammar&version=1.0.4
#tool nuget:?package=Llama.Grammar&version=1.0.4
Llama.Grammar
Llama.Grammar is a C# class library that allows you to define JSON Schemas, C# objects dynamically and convert them to GBNF (Grammar-Based Next-Token Format) grammars. It is useful for working with structured outputs in AI models like LLaMA, Mistral, or GPT when paired with inference runtimes that support GBNF grammars.
Features
- 🧱 Fluent builder API for creating JSON Schema objects in C#
- 🧠 Converts JSON Schema to GBNF using Adrien Brault’s original grammar logic
- ✅ Supports complex schema features like:
- Nested objects
- Arrays and array constraints
- Enums and constants
- Required fields
- Pattern matching
- Nullable types
Installation
Add the library to your project:
dotnet add package Llama.Grammar
Usage
using Llama.Grammar;
var schemaBuilder = new SchemaBuilder()
.Type("object")
.Properties(p => p
.Add("name", s => s.Type("string"))
.Add("age", s => s.Type("integer"))
.Add("nicknames", s => s.Type("array")
.MinItems(1)
.MaxItems(3)
.Items(i => i.Type("string"))))
.Required("name", "age");
string json = schemaBuilder.ToJson();
IGbnfGrammar grammar = new GbnfGrammar();
var gbnf = grammar.ConvertJsonSchemaToGbnf(json);
Console.WriteLine(gbnf);
Based on
This project is based on the excellent work by Adrien Brault, porting and wrapping his TypeScript logic for use in .NET.
License
MIT License. See LICENSE for details.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.