Each `generator` that you define in your BAML project will tell `baml-cli generate` to generate code for a specific target language. You can define multiple `generator` clauses in your BAML project, and `baml-cli generate` will generate code for each of them. If you created your project using `baml-cli init` , then one has already been generated for you! ```baml Python generator target { output_type "python/pydantic" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // What interface you prefer to use for the generated code (sync/async) // Both are generated regardless of the choice, just modifies what is exported // at the top level default_client_mode "sync" // Version of runtime to generate code for (should match installed baml-py version) version "0.76.2" } ``` ```baml Python (Pydantic 1.x) generator target { // Generate code will be compatible with Pydantic 1.x output_type "python/pydantic/v1" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // What interface you prefer to use for the generated code (sync/async) // Both are generated regardless of the choice, just modifies what is exported // at the top level default_client_mode "sync" // Version of runtime to generate code for (should match installed baml-py version) version "0.76.2" // Optional: run formatters or other tools after generating the client code on_generate "black . && isort ." } ``` ```baml TypeScript generator target { output_type "typescript" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // What interface you prefer to use for the generated code (sync/async) // Both are generated regardless of the choice, just modifies what is exported // at the top level default_client_mode "async" // Version of runtime to generate code for (should match the package @boundaryml/baml version) version "0.76.2" // The format of the generated module. // "esm" - Use ES modules // "cjs" - Use CommonJS modules (default) module_format "cjs" } ``` ```baml React/Next.js generator target { output_type "typescript/react" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // What interface you prefer to use for the generated code (sync/async) // Both are generated regardless of the choice, just modifies what is exported // at the top level default_client_mode "async" // Version of runtime to generate code for (should match the package @boundaryml/baml version) version "0.76.2" // The format of the generated module. // "esm" - Use ES modules // "cjs" - Use CommonJS modules (default) module_format "cjs" // Optional: run formatters or other tools after generating the client code on_generate "prettier . --write" } ``` ```baml Ruby (beta) generator target { output_type "ruby/sorbet" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // Version of runtime to generate code for (should match installed `baml` package version) version "0.76.2" } ``` ```baml Go generator target { output_type "go" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // Version of runtime to generate code for (should match installed github.com/boundaryml/baml version) version "0.205.0" // Go module name for the generated client client_package_name "example.com/myproject" // Commands to run after code generation (mandatory for proper code formatting) on_generate "gofmt -w . && goimports -w . && go mod tidy" } ``` ```baml OpenAPI generator target { output_type "rest/openapi" // Where the generated code will be saved (relative to baml_src/) output_dir "../" // Version of runtime to generate code for (should match installed `baml` package version) version "0.76.2" // 'baml-cli generate' will run this after generating openapi.yaml, to generate your OpenAPI client // This command will be run from within $output_dir on_generate "npx @openapitools/openapi-generator-cli generate -i openapi.yaml -g OPENAPI_CLIENT_TYPE -o ." } ```