mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-07-16 09:37:23 +00:00
cleanup gbnf grammars
This commit is contained in:
44
tooling/pipeline/includes/data_generation/json_grammars.h
Normal file
44
tooling/pipeline/includes/data_generation/json_grammars.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_JSON_GRAMMARS_H_
|
||||
#define BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_JSON_GRAMMARS_H_
|
||||
|
||||
/**
|
||||
* @file data_generation/json_grammars.h
|
||||
* @brief GBNF grammars constraining structured JSON output from
|
||||
* LlamaGenerator inference calls.
|
||||
*/
|
||||
|
||||
#include <string_view>
|
||||
|
||||
// GBNF grammar for structured user JSON output.
|
||||
inline constexpr std::string_view kUserJsonGrammar = R"json_user(
|
||||
root ::= thought-block "{" ws
|
||||
"\"username\"" ws ":" ws string ws "," ws
|
||||
"\"bio\"" ws ":" ws string ws "," ws
|
||||
"\"activity_weight\"" ws ":" ws number ws
|
||||
"}" ws
|
||||
thought-block ::= [^{]*
|
||||
ws ::= [ \t\n\r]*
|
||||
string ::= "\"" char+ "\""
|
||||
char ::= [^"\\\x7F\x00-\x1F] | [\\] escape
|
||||
escape ::= ["\\/bfnrt] | "u" hex hex hex hex
|
||||
hex ::= [0-9a-fA-F]
|
||||
number ::= "-"? ("0" | [1-9] [0-9]*) ("." [0-9]+)?
|
||||
)json_user";
|
||||
|
||||
// GBNF grammar for structured brewery JSON output.
|
||||
inline constexpr std::string_view kBreweryJsonGrammar = R"json_brewery(
|
||||
root ::= thought-block "{" ws
|
||||
"\"name_en\"" ws ":" ws string ws "," ws
|
||||
"\"description_en\"" ws ":" ws string ws "," ws
|
||||
"\"name_local\"" ws ":" ws string ws "," ws
|
||||
"\"description_local\"" ws ":" ws string ws
|
||||
"}" ws
|
||||
thought-block ::= [^{]*
|
||||
ws ::= [ \t\n\r]*
|
||||
string ::= "\"" char+ "\""
|
||||
char ::= [^"\\\x7F\x00-\x1F] | [\\] escape
|
||||
escape ::= ["\\/bfnrt] | "u" hex hex hex hex
|
||||
hex ::= [0-9a-fA-F]
|
||||
)json_brewery";
|
||||
|
||||
#endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_JSON_GRAMMARS_H_
|
||||
@@ -110,15 +110,16 @@ void BiergartenPipelineOrchestrator::GenerateUsers(
|
||||
std::uniform_int_distribution<size_t> persona_dist(0, personas.size() - 1);
|
||||
|
||||
generated_users_.clear();
|
||||
std::unordered_set<std::string> used_email_local_parts;
|
||||
size_t skipped_count = 0;
|
||||
size_t export_failed_count = 0;
|
||||
|
||||
const auto generate_record =
|
||||
[this, &rng, &used_email_local_parts, &skipped_count](
|
||||
[this, &rng, &skipped_count](
|
||||
const EnrichedCity& city, const UserPersona& persona,
|
||||
const Name& sampled_name) -> std::optional<UserRecord> {
|
||||
try {
|
||||
std::unordered_set<std::string> used_email_local_parts;
|
||||
|
||||
const UserResult user =
|
||||
generator_->GenerateUser(city, persona, sampled_name);
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <string_view>
|
||||
#include <vector>
|
||||
|
||||
#include "data_generation/json_grammars.h"
|
||||
#include "data_generation/llama_generator.h"
|
||||
#include "data_generation/llama_generator_helpers.h"
|
||||
|
||||
@@ -32,19 +33,6 @@ static std::string FormatLocalLanguageCodes(
|
||||
return formatted;
|
||||
}
|
||||
|
||||
// GBNF grammar for structured brewery JSON output.
|
||||
// @TODO move to a separate gbnf file if it grows in complexity or is shared
|
||||
// across modules.
|
||||
static constexpr std::string_view kBreweryJsonGrammar = R"json_brewery(
|
||||
root ::= thought-block "{" ws "\"name_en\"" ws ":" ws string ws "," ws "\"description_en\"" ws ":" ws string ws "," ws "\"name_local\"" ws ":" ws string ws "," ws "\"description_local\"" ws ":" ws string ws "}" ws
|
||||
thought-block ::= [^{]*
|
||||
ws ::= [ \t\n\r]*
|
||||
string ::= "\"" char+ "\""
|
||||
char ::= [^"\\\x7F\x00-\x1F] | [\\] escape
|
||||
escape ::= ["\\/bfnrt] | "u" hex hex hex hex
|
||||
hex ::= [0-9a-fA-F]
|
||||
)json_brewery";
|
||||
|
||||
static constexpr int kBreweryInitialMaxTokens = 2800;
|
||||
|
||||
BreweryResult LlamaGenerator::GenerateBrewery(
|
||||
|
||||
@@ -10,21 +10,10 @@
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include "data_generation/json_grammars.h"
|
||||
#include "data_generation/llama_generator.h"
|
||||
#include "data_generation/llama_generator_helpers.h"
|
||||
|
||||
// GBNF grammar for structured user JSON output.
|
||||
static constexpr std::string_view kUserJsonGrammar = R"json_user(
|
||||
root ::= thought-block "{" ws "\"username\"" ws ":" ws string ws "," ws "\"bio\"" ws ":" ws string ws "," ws "\"activity_weight\"" ws ":" ws number ws "}" ws
|
||||
thought-block ::= [^{]*
|
||||
ws ::= [ \t\n\r]*
|
||||
string ::= "\"" char+ "\""
|
||||
char ::= [^"\\\x7F\x00-\x1F] | [\\] escape
|
||||
escape ::= ["\\/bfnrt] | "u" hex hex hex hex
|
||||
hex ::= [0-9a-fA-F]
|
||||
number ::= "-"? ("0" | [1-9] [0-9]*) ("." [0-9]+)?
|
||||
)json_user";
|
||||
|
||||
static constexpr int kUserInitialMaxTokens = 1200;
|
||||
|
||||
UserResult LlamaGenerator::GenerateUser(const EnrichedCity& city,
|
||||
|
||||
Reference in New Issue
Block a user