AxGen Structured Generation For C++
Use when writing C++ code with axllm for AxGen programs, forward calls, indexed multi-sampling, result pickers, streaming, tools, assertions, traces, usage, and output parsing.
Install
Install only this skill for C++:
npx skills add https://ax-llm.github.io/ax/cpp/ --skill 'ax-cpp-gen'Published skill file: ax-cpp-gen/SKILL.md.
Source
- Source: packages/cpp/skills/ax-cpp-gen/SKILL.md
- Version:
24.0.17
Skill Instructions
This skill helps an agent write C++ code with the generated Ax package axllm. Use the generated package API, examples, and manifests; do not import TypeScript-only APIs unless you are editing the TypeScript package.
When To Use
- Build a structured generation program from a signature.
- Attach typed tools or MCP-derived tools to a generation call.
- Generate multiple validated structured samples and select a winner with a native callback.
- Use package examples for no-key scripted clients and provider-api calls.
Package Facts
- Language: C++.
- Package:
axllm. - Package API docs:
API.mdandaxir-api.json. - Capability manifest:
axir-capabilities.json. - Runnable examples:
examples/. - Real network support: yes.
- Scripted no-key transport support: yes.
- Runtime profiles:
javascript-quickjs,python-pyodide.
Core Pattern
auto program = axllm::ax("question:string -> answer:string");
auto out = program.forward(llm, { {"question", "What is Ax?"} });Provider Forward Options
AxGen merges constructor and per-call forward options before invoking the provider. Provider-facing keys such as promptCacheKey, sessionId, and contextCache therefore reach the chat request without being copied into program inputs. Per-call values override constructor defaults.
structuredOutputMode / structured_output_mode accepts auto, native, function, or json_object. Auto follows the selected profile/model ordering, with the provider-neutral singleton string/code JSON-object optimization. Explicit modes must be advertised and fail before transport otherwise. JSON-object mode retains exact-shape prompting, strict parsing, and one bounded correction retry without a synthetic __axOutput tool.
Multi-Sampling
- Set
sampleCount/sample_countto request N provider candidates. Core parses and validates every candidate, preserving each provider result index. - Without a result picker, AxGen returns candidate 0. A result picker receives all
{ index, sample }structured candidates and returns the winning list index; Core rejects an index outside0..N-1. - Native callback surface:
set_sample_count/set_result_picker. - OpenAI-compatible Chat and Gemini map multi-sampling to
nandcandidateCount. Anthropic rejectsn > 1explicitly.
Relevant API Surface
- AxGen:
axllm::ax,axllm::AxGen - Tools:
axllm::Tool,axllm::Tool - MCP:
axllm::AxMCPClient,axllm::AxMCPStreamableHTTPTransport,axllm::AxMCPStdioTransport
Guardrails
- Start from package examples for exact native syntax before inventing a new call shape.
- Use
provider-apiexamples only when the user explicitly has provider credentials available. - Use
no-keyexamples for deterministic local checks and provider request mapping. - Treat AxIR as the source of generated package truth: if package docs disagree with source code, update the compiler and regenerate packages.
- Do not copy repo-maintainer skills from
tools/*/skills/into user packages.