@synsci/cli-darwin-x64 1.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/skills/accelerate/SKILL.md +332 -0
- package/bin/skills/accelerate/references/custom-plugins.md +453 -0
- package/bin/skills/accelerate/references/megatron-integration.md +489 -0
- package/bin/skills/accelerate/references/performance.md +525 -0
- package/bin/skills/audiocraft/SKILL.md +564 -0
- package/bin/skills/audiocraft/references/advanced-usage.md +666 -0
- package/bin/skills/audiocraft/references/troubleshooting.md +504 -0
- package/bin/skills/autogpt/SKILL.md +403 -0
- package/bin/skills/autogpt/references/advanced-usage.md +535 -0
- package/bin/skills/autogpt/references/troubleshooting.md +420 -0
- package/bin/skills/awq/SKILL.md +310 -0
- package/bin/skills/awq/references/advanced-usage.md +324 -0
- package/bin/skills/awq/references/troubleshooting.md +344 -0
- package/bin/skills/axolotl/SKILL.md +158 -0
- package/bin/skills/axolotl/references/api.md +5548 -0
- package/bin/skills/axolotl/references/dataset-formats.md +1029 -0
- package/bin/skills/axolotl/references/index.md +15 -0
- package/bin/skills/axolotl/references/other.md +3563 -0
- package/bin/skills/bigcode-evaluation-harness/SKILL.md +405 -0
- package/bin/skills/bigcode-evaluation-harness/references/benchmarks.md +393 -0
- package/bin/skills/bigcode-evaluation-harness/references/custom-tasks.md +424 -0
- package/bin/skills/bigcode-evaluation-harness/references/issues.md +394 -0
- package/bin/skills/bitsandbytes/SKILL.md +411 -0
- package/bin/skills/bitsandbytes/references/memory-optimization.md +521 -0
- package/bin/skills/bitsandbytes/references/qlora-training.md +521 -0
- package/bin/skills/bitsandbytes/references/quantization-formats.md +447 -0
- package/bin/skills/blip-2/SKILL.md +564 -0
- package/bin/skills/blip-2/references/advanced-usage.md +680 -0
- package/bin/skills/blip-2/references/troubleshooting.md +526 -0
- package/bin/skills/chroma/SKILL.md +406 -0
- package/bin/skills/chroma/references/integration.md +38 -0
- package/bin/skills/clip/SKILL.md +253 -0
- package/bin/skills/clip/references/applications.md +207 -0
- package/bin/skills/constitutional-ai/SKILL.md +290 -0
- package/bin/skills/crewai/SKILL.md +498 -0
- package/bin/skills/crewai/references/flows.md +438 -0
- package/bin/skills/crewai/references/tools.md +429 -0
- package/bin/skills/crewai/references/troubleshooting.md +480 -0
- package/bin/skills/deepspeed/SKILL.md +141 -0
- package/bin/skills/deepspeed/references/08.md +17 -0
- package/bin/skills/deepspeed/references/09.md +173 -0
- package/bin/skills/deepspeed/references/2020.md +378 -0
- package/bin/skills/deepspeed/references/2023.md +279 -0
- package/bin/skills/deepspeed/references/assets.md +179 -0
- package/bin/skills/deepspeed/references/index.md +35 -0
- package/bin/skills/deepspeed/references/mii.md +118 -0
- package/bin/skills/deepspeed/references/other.md +1191 -0
- package/bin/skills/deepspeed/references/tutorials.md +6554 -0
- package/bin/skills/dspy/SKILL.md +590 -0
- package/bin/skills/dspy/references/examples.md +663 -0
- package/bin/skills/dspy/references/modules.md +475 -0
- package/bin/skills/dspy/references/optimizers.md +566 -0
- package/bin/skills/faiss/SKILL.md +221 -0
- package/bin/skills/faiss/references/index_types.md +280 -0
- package/bin/skills/flash-attention/SKILL.md +367 -0
- package/bin/skills/flash-attention/references/benchmarks.md +215 -0
- package/bin/skills/flash-attention/references/transformers-integration.md +293 -0
- package/bin/skills/gguf/SKILL.md +427 -0
- package/bin/skills/gguf/references/advanced-usage.md +504 -0
- package/bin/skills/gguf/references/troubleshooting.md +442 -0
- package/bin/skills/gptq/SKILL.md +450 -0
- package/bin/skills/gptq/references/calibration.md +337 -0
- package/bin/skills/gptq/references/integration.md +129 -0
- package/bin/skills/gptq/references/troubleshooting.md +95 -0
- package/bin/skills/grpo-rl-training/README.md +97 -0
- package/bin/skills/grpo-rl-training/SKILL.md +572 -0
- package/bin/skills/grpo-rl-training/examples/reward_functions_library.py +393 -0
- package/bin/skills/grpo-rl-training/templates/basic_grpo_training.py +228 -0
- package/bin/skills/guidance/SKILL.md +572 -0
- package/bin/skills/guidance/references/backends.md +554 -0
- package/bin/skills/guidance/references/constraints.md +674 -0
- package/bin/skills/guidance/references/examples.md +767 -0
- package/bin/skills/hqq/SKILL.md +445 -0
- package/bin/skills/hqq/references/advanced-usage.md +528 -0
- package/bin/skills/hqq/references/troubleshooting.md +503 -0
- package/bin/skills/hugging-face-cli/SKILL.md +191 -0
- package/bin/skills/hugging-face-cli/references/commands.md +954 -0
- package/bin/skills/hugging-face-cli/references/examples.md +374 -0
- package/bin/skills/hugging-face-datasets/SKILL.md +547 -0
- package/bin/skills/hugging-face-datasets/examples/diverse_training_examples.json +239 -0
- package/bin/skills/hugging-face-datasets/examples/system_prompt_template.txt +196 -0
- package/bin/skills/hugging-face-datasets/examples/training_examples.json +176 -0
- package/bin/skills/hugging-face-datasets/scripts/dataset_manager.py +522 -0
- package/bin/skills/hugging-face-datasets/scripts/sql_manager.py +844 -0
- package/bin/skills/hugging-face-datasets/templates/chat.json +55 -0
- package/bin/skills/hugging-face-datasets/templates/classification.json +62 -0
- package/bin/skills/hugging-face-datasets/templates/completion.json +51 -0
- package/bin/skills/hugging-face-datasets/templates/custom.json +75 -0
- package/bin/skills/hugging-face-datasets/templates/qa.json +54 -0
- package/bin/skills/hugging-face-datasets/templates/tabular.json +81 -0
- package/bin/skills/hugging-face-evaluation/SKILL.md +656 -0
- package/bin/skills/hugging-face-evaluation/examples/USAGE_EXAMPLES.md +382 -0
- package/bin/skills/hugging-face-evaluation/examples/artificial_analysis_to_hub.py +141 -0
- package/bin/skills/hugging-face-evaluation/examples/example_readme_tables.md +135 -0
- package/bin/skills/hugging-face-evaluation/examples/metric_mapping.json +50 -0
- package/bin/skills/hugging-face-evaluation/requirements.txt +20 -0
- package/bin/skills/hugging-face-evaluation/scripts/evaluation_manager.py +1374 -0
- package/bin/skills/hugging-face-evaluation/scripts/inspect_eval_uv.py +104 -0
- package/bin/skills/hugging-face-evaluation/scripts/inspect_vllm_uv.py +317 -0
- package/bin/skills/hugging-face-evaluation/scripts/lighteval_vllm_uv.py +303 -0
- package/bin/skills/hugging-face-evaluation/scripts/run_eval_job.py +98 -0
- package/bin/skills/hugging-face-evaluation/scripts/run_vllm_eval_job.py +331 -0
- package/bin/skills/hugging-face-evaluation/scripts/test_extraction.py +206 -0
- package/bin/skills/hugging-face-jobs/SKILL.md +1041 -0
- package/bin/skills/hugging-face-jobs/index.html +216 -0
- package/bin/skills/hugging-face-jobs/references/hardware_guide.md +336 -0
- package/bin/skills/hugging-face-jobs/references/hub_saving.md +352 -0
- package/bin/skills/hugging-face-jobs/references/token_usage.md +546 -0
- package/bin/skills/hugging-face-jobs/references/troubleshooting.md +475 -0
- package/bin/skills/hugging-face-jobs/scripts/cot-self-instruct.py +718 -0
- package/bin/skills/hugging-face-jobs/scripts/finepdfs-stats.py +546 -0
- package/bin/skills/hugging-face-jobs/scripts/generate-responses.py +587 -0
- package/bin/skills/hugging-face-model-trainer/SKILL.md +711 -0
- package/bin/skills/hugging-face-model-trainer/references/gguf_conversion.md +296 -0
- package/bin/skills/hugging-face-model-trainer/references/hardware_guide.md +283 -0
- package/bin/skills/hugging-face-model-trainer/references/hub_saving.md +364 -0
- package/bin/skills/hugging-face-model-trainer/references/reliability_principles.md +371 -0
- package/bin/skills/hugging-face-model-trainer/references/trackio_guide.md +189 -0
- package/bin/skills/hugging-face-model-trainer/references/training_methods.md +150 -0
- package/bin/skills/hugging-face-model-trainer/references/training_patterns.md +203 -0
- package/bin/skills/hugging-face-model-trainer/references/troubleshooting.md +282 -0
- package/bin/skills/hugging-face-model-trainer/scripts/convert_to_gguf.py +424 -0
- package/bin/skills/hugging-face-model-trainer/scripts/dataset_inspector.py +417 -0
- package/bin/skills/hugging-face-model-trainer/scripts/estimate_cost.py +150 -0
- package/bin/skills/hugging-face-model-trainer/scripts/train_dpo_example.py +106 -0
- package/bin/skills/hugging-face-model-trainer/scripts/train_grpo_example.py +89 -0
- package/bin/skills/hugging-face-model-trainer/scripts/train_sft_example.py +122 -0
- package/bin/skills/hugging-face-paper-publisher/SKILL.md +627 -0
- package/bin/skills/hugging-face-paper-publisher/examples/example_usage.md +327 -0
- package/bin/skills/hugging-face-paper-publisher/references/quick_reference.md +216 -0
- package/bin/skills/hugging-face-paper-publisher/scripts/paper_manager.py +508 -0
- package/bin/skills/hugging-face-paper-publisher/templates/arxiv.md +299 -0
- package/bin/skills/hugging-face-paper-publisher/templates/ml-report.md +358 -0
- package/bin/skills/hugging-face-paper-publisher/templates/modern.md +319 -0
- package/bin/skills/hugging-face-paper-publisher/templates/standard.md +201 -0
- package/bin/skills/hugging-face-tool-builder/SKILL.md +115 -0
- package/bin/skills/hugging-face-tool-builder/references/baseline_hf_api.py +57 -0
- package/bin/skills/hugging-face-tool-builder/references/baseline_hf_api.sh +40 -0
- package/bin/skills/hugging-face-tool-builder/references/baseline_hf_api.tsx +57 -0
- package/bin/skills/hugging-face-tool-builder/references/find_models_by_paper.sh +230 -0
- package/bin/skills/hugging-face-tool-builder/references/hf_enrich_models.sh +96 -0
- package/bin/skills/hugging-face-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
- package/bin/skills/hugging-face-tool-builder/references/hf_model_papers_auth.sh +171 -0
- package/bin/skills/hugging-face-trackio/SKILL.md +65 -0
- package/bin/skills/hugging-face-trackio/references/logging_metrics.md +206 -0
- package/bin/skills/hugging-face-trackio/references/retrieving_metrics.md +223 -0
- package/bin/skills/huggingface-tokenizers/SKILL.md +516 -0
- package/bin/skills/huggingface-tokenizers/references/algorithms.md +653 -0
- package/bin/skills/huggingface-tokenizers/references/integration.md +637 -0
- package/bin/skills/huggingface-tokenizers/references/pipeline.md +723 -0
- package/bin/skills/huggingface-tokenizers/references/training.md +565 -0
- package/bin/skills/instructor/SKILL.md +740 -0
- package/bin/skills/instructor/references/examples.md +107 -0
- package/bin/skills/instructor/references/providers.md +70 -0
- package/bin/skills/instructor/references/validation.md +606 -0
- package/bin/skills/knowledge-distillation/SKILL.md +458 -0
- package/bin/skills/knowledge-distillation/references/minillm.md +334 -0
- package/bin/skills/lambda-labs/SKILL.md +545 -0
- package/bin/skills/lambda-labs/references/advanced-usage.md +611 -0
- package/bin/skills/lambda-labs/references/troubleshooting.md +530 -0
- package/bin/skills/langchain/SKILL.md +480 -0
- package/bin/skills/langchain/references/agents.md +499 -0
- package/bin/skills/langchain/references/integration.md +562 -0
- package/bin/skills/langchain/references/rag.md +600 -0
- package/bin/skills/langsmith/SKILL.md +422 -0
- package/bin/skills/langsmith/references/advanced-usage.md +548 -0
- package/bin/skills/langsmith/references/troubleshooting.md +537 -0
- package/bin/skills/litgpt/SKILL.md +469 -0
- package/bin/skills/litgpt/references/custom-models.md +568 -0
- package/bin/skills/litgpt/references/distributed-training.md +451 -0
- package/bin/skills/litgpt/references/supported-models.md +336 -0
- package/bin/skills/litgpt/references/training-recipes.md +619 -0
- package/bin/skills/llama-cpp/SKILL.md +258 -0
- package/bin/skills/llama-cpp/references/optimization.md +89 -0
- package/bin/skills/llama-cpp/references/quantization.md +213 -0
- package/bin/skills/llama-cpp/references/server.md +125 -0
- package/bin/skills/llama-factory/SKILL.md +80 -0
- package/bin/skills/llama-factory/references/_images.md +23 -0
- package/bin/skills/llama-factory/references/advanced.md +1055 -0
- package/bin/skills/llama-factory/references/getting_started.md +349 -0
- package/bin/skills/llama-factory/references/index.md +19 -0
- package/bin/skills/llama-factory/references/other.md +31 -0
- package/bin/skills/llamaguard/SKILL.md +337 -0
- package/bin/skills/llamaindex/SKILL.md +569 -0
- package/bin/skills/llamaindex/references/agents.md +83 -0
- package/bin/skills/llamaindex/references/data_connectors.md +108 -0
- package/bin/skills/llamaindex/references/query_engines.md +406 -0
- package/bin/skills/llava/SKILL.md +304 -0
- package/bin/skills/llava/references/training.md +197 -0
- package/bin/skills/lm-evaluation-harness/SKILL.md +490 -0
- package/bin/skills/lm-evaluation-harness/references/api-evaluation.md +490 -0
- package/bin/skills/lm-evaluation-harness/references/benchmark-guide.md +488 -0
- package/bin/skills/lm-evaluation-harness/references/custom-tasks.md +602 -0
- package/bin/skills/lm-evaluation-harness/references/distributed-eval.md +519 -0
- package/bin/skills/long-context/SKILL.md +536 -0
- package/bin/skills/long-context/references/extension_methods.md +468 -0
- package/bin/skills/long-context/references/fine_tuning.md +611 -0
- package/bin/skills/long-context/references/rope.md +402 -0
- package/bin/skills/mamba/SKILL.md +260 -0
- package/bin/skills/mamba/references/architecture-details.md +206 -0
- package/bin/skills/mamba/references/benchmarks.md +255 -0
- package/bin/skills/mamba/references/training-guide.md +388 -0
- package/bin/skills/megatron-core/SKILL.md +366 -0
- package/bin/skills/megatron-core/references/benchmarks.md +249 -0
- package/bin/skills/megatron-core/references/parallelism-guide.md +404 -0
- package/bin/skills/megatron-core/references/production-examples.md +473 -0
- package/bin/skills/megatron-core/references/training-recipes.md +547 -0
- package/bin/skills/miles/SKILL.md +315 -0
- package/bin/skills/miles/references/api-reference.md +141 -0
- package/bin/skills/miles/references/troubleshooting.md +352 -0
- package/bin/skills/mlflow/SKILL.md +704 -0
- package/bin/skills/mlflow/references/deployment.md +744 -0
- package/bin/skills/mlflow/references/model-registry.md +770 -0
- package/bin/skills/mlflow/references/tracking.md +680 -0
- package/bin/skills/modal/SKILL.md +341 -0
- package/bin/skills/modal/references/advanced-usage.md +503 -0
- package/bin/skills/modal/references/troubleshooting.md +494 -0
- package/bin/skills/model-merging/SKILL.md +539 -0
- package/bin/skills/model-merging/references/evaluation.md +462 -0
- package/bin/skills/model-merging/references/examples.md +428 -0
- package/bin/skills/model-merging/references/methods.md +352 -0
- package/bin/skills/model-pruning/SKILL.md +495 -0
- package/bin/skills/model-pruning/references/wanda.md +347 -0
- package/bin/skills/moe-training/SKILL.md +526 -0
- package/bin/skills/moe-training/references/architectures.md +432 -0
- package/bin/skills/moe-training/references/inference.md +348 -0
- package/bin/skills/moe-training/references/training.md +425 -0
- package/bin/skills/nanogpt/SKILL.md +290 -0
- package/bin/skills/nanogpt/references/architecture.md +382 -0
- package/bin/skills/nanogpt/references/data.md +476 -0
- package/bin/skills/nanogpt/references/training.md +564 -0
- package/bin/skills/nemo-curator/SKILL.md +383 -0
- package/bin/skills/nemo-curator/references/deduplication.md +87 -0
- package/bin/skills/nemo-curator/references/filtering.md +102 -0
- package/bin/skills/nemo-evaluator/SKILL.md +494 -0
- package/bin/skills/nemo-evaluator/references/adapter-system.md +340 -0
- package/bin/skills/nemo-evaluator/references/configuration.md +447 -0
- package/bin/skills/nemo-evaluator/references/custom-benchmarks.md +315 -0
- package/bin/skills/nemo-evaluator/references/execution-backends.md +361 -0
- package/bin/skills/nemo-guardrails/SKILL.md +297 -0
- package/bin/skills/nnsight/SKILL.md +436 -0
- package/bin/skills/nnsight/references/README.md +78 -0
- package/bin/skills/nnsight/references/api.md +344 -0
- package/bin/skills/nnsight/references/tutorials.md +300 -0
- package/bin/skills/openrlhf/SKILL.md +249 -0
- package/bin/skills/openrlhf/references/algorithm-comparison.md +404 -0
- package/bin/skills/openrlhf/references/custom-rewards.md +530 -0
- package/bin/skills/openrlhf/references/hybrid-engine.md +287 -0
- package/bin/skills/openrlhf/references/multi-node-training.md +454 -0
- package/bin/skills/outlines/SKILL.md +652 -0
- package/bin/skills/outlines/references/backends.md +615 -0
- package/bin/skills/outlines/references/examples.md +773 -0
- package/bin/skills/outlines/references/json_generation.md +652 -0
- package/bin/skills/peft/SKILL.md +431 -0
- package/bin/skills/peft/references/advanced-usage.md +514 -0
- package/bin/skills/peft/references/troubleshooting.md +480 -0
- package/bin/skills/phoenix/SKILL.md +475 -0
- package/bin/skills/phoenix/references/advanced-usage.md +619 -0
- package/bin/skills/phoenix/references/troubleshooting.md +538 -0
- package/bin/skills/pinecone/SKILL.md +358 -0
- package/bin/skills/pinecone/references/deployment.md +181 -0
- package/bin/skills/pytorch-fsdp/SKILL.md +126 -0
- package/bin/skills/pytorch-fsdp/references/index.md +7 -0
- package/bin/skills/pytorch-fsdp/references/other.md +4249 -0
- package/bin/skills/pytorch-lightning/SKILL.md +346 -0
- package/bin/skills/pytorch-lightning/references/callbacks.md +436 -0
- package/bin/skills/pytorch-lightning/references/distributed.md +490 -0
- package/bin/skills/pytorch-lightning/references/hyperparameter-tuning.md +556 -0
- package/bin/skills/pyvene/SKILL.md +473 -0
- package/bin/skills/pyvene/references/README.md +73 -0
- package/bin/skills/pyvene/references/api.md +383 -0
- package/bin/skills/pyvene/references/tutorials.md +376 -0
- package/bin/skills/qdrant/SKILL.md +493 -0
- package/bin/skills/qdrant/references/advanced-usage.md +648 -0
- package/bin/skills/qdrant/references/troubleshooting.md +631 -0
- package/bin/skills/ray-data/SKILL.md +326 -0
- package/bin/skills/ray-data/references/integration.md +82 -0
- package/bin/skills/ray-data/references/transformations.md +83 -0
- package/bin/skills/ray-train/SKILL.md +406 -0
- package/bin/skills/ray-train/references/multi-node.md +628 -0
- package/bin/skills/rwkv/SKILL.md +260 -0
- package/bin/skills/rwkv/references/architecture-details.md +344 -0
- package/bin/skills/rwkv/references/rwkv7.md +386 -0
- package/bin/skills/rwkv/references/state-management.md +369 -0
- package/bin/skills/saelens/SKILL.md +386 -0
- package/bin/skills/saelens/references/README.md +70 -0
- package/bin/skills/saelens/references/api.md +333 -0
- package/bin/skills/saelens/references/tutorials.md +318 -0
- package/bin/skills/segment-anything/SKILL.md +500 -0
- package/bin/skills/segment-anything/references/advanced-usage.md +589 -0
- package/bin/skills/segment-anything/references/troubleshooting.md +484 -0
- package/bin/skills/sentence-transformers/SKILL.md +255 -0
- package/bin/skills/sentence-transformers/references/models.md +123 -0
- package/bin/skills/sentencepiece/SKILL.md +235 -0
- package/bin/skills/sentencepiece/references/algorithms.md +200 -0
- package/bin/skills/sentencepiece/references/training.md +304 -0
- package/bin/skills/sglang/SKILL.md +442 -0
- package/bin/skills/sglang/references/deployment.md +490 -0
- package/bin/skills/sglang/references/radix-attention.md +413 -0
- package/bin/skills/sglang/references/structured-generation.md +541 -0
- package/bin/skills/simpo/SKILL.md +219 -0
- package/bin/skills/simpo/references/datasets.md +478 -0
- package/bin/skills/simpo/references/hyperparameters.md +452 -0
- package/bin/skills/simpo/references/loss-functions.md +350 -0
- package/bin/skills/skypilot/SKILL.md +509 -0
- package/bin/skills/skypilot/references/advanced-usage.md +491 -0
- package/bin/skills/skypilot/references/troubleshooting.md +570 -0
- package/bin/skills/slime/SKILL.md +464 -0
- package/bin/skills/slime/references/api-reference.md +392 -0
- package/bin/skills/slime/references/troubleshooting.md +386 -0
- package/bin/skills/speculative-decoding/SKILL.md +467 -0
- package/bin/skills/speculative-decoding/references/lookahead.md +309 -0
- package/bin/skills/speculative-decoding/references/medusa.md +350 -0
- package/bin/skills/stable-diffusion/SKILL.md +519 -0
- package/bin/skills/stable-diffusion/references/advanced-usage.md +716 -0
- package/bin/skills/stable-diffusion/references/troubleshooting.md +555 -0
- package/bin/skills/tensorboard/SKILL.md +629 -0
- package/bin/skills/tensorboard/references/integrations.md +638 -0
- package/bin/skills/tensorboard/references/profiling.md +545 -0
- package/bin/skills/tensorboard/references/visualization.md +620 -0
- package/bin/skills/tensorrt-llm/SKILL.md +187 -0
- package/bin/skills/tensorrt-llm/references/multi-gpu.md +298 -0
- package/bin/skills/tensorrt-llm/references/optimization.md +242 -0
- package/bin/skills/tensorrt-llm/references/serving.md +470 -0
- package/bin/skills/tinker/SKILL.md +362 -0
- package/bin/skills/tinker/references/api-reference.md +168 -0
- package/bin/skills/tinker/references/getting-started.md +157 -0
- package/bin/skills/tinker/references/loss-functions.md +163 -0
- package/bin/skills/tinker/references/models-and-lora.md +139 -0
- package/bin/skills/tinker/references/recipes.md +280 -0
- package/bin/skills/tinker/references/reinforcement-learning.md +212 -0
- package/bin/skills/tinker/references/rendering.md +243 -0
- package/bin/skills/tinker/references/supervised-learning.md +232 -0
- package/bin/skills/tinker-training-cost/SKILL.md +187 -0
- package/bin/skills/tinker-training-cost/scripts/calculate_cost.py +123 -0
- package/bin/skills/torchforge/SKILL.md +433 -0
- package/bin/skills/torchforge/references/api-reference.md +327 -0
- package/bin/skills/torchforge/references/troubleshooting.md +409 -0
- package/bin/skills/torchtitan/SKILL.md +358 -0
- package/bin/skills/torchtitan/references/checkpoint.md +181 -0
- package/bin/skills/torchtitan/references/custom-models.md +258 -0
- package/bin/skills/torchtitan/references/float8.md +133 -0
- package/bin/skills/torchtitan/references/fsdp.md +126 -0
- package/bin/skills/transformer-lens/SKILL.md +346 -0
- package/bin/skills/transformer-lens/references/README.md +54 -0
- package/bin/skills/transformer-lens/references/api.md +362 -0
- package/bin/skills/transformer-lens/references/tutorials.md +339 -0
- package/bin/skills/trl-fine-tuning/SKILL.md +455 -0
- package/bin/skills/trl-fine-tuning/references/dpo-variants.md +227 -0
- package/bin/skills/trl-fine-tuning/references/online-rl.md +82 -0
- package/bin/skills/trl-fine-tuning/references/reward-modeling.md +122 -0
- package/bin/skills/trl-fine-tuning/references/sft-training.md +168 -0
- package/bin/skills/unsloth/SKILL.md +80 -0
- package/bin/skills/unsloth/references/index.md +7 -0
- package/bin/skills/unsloth/references/llms-full.md +16799 -0
- package/bin/skills/unsloth/references/llms-txt.md +12044 -0
- package/bin/skills/unsloth/references/llms.md +82 -0
- package/bin/skills/verl/SKILL.md +391 -0
- package/bin/skills/verl/references/api-reference.md +301 -0
- package/bin/skills/verl/references/troubleshooting.md +391 -0
- package/bin/skills/vllm/SKILL.md +364 -0
- package/bin/skills/vllm/references/optimization.md +226 -0
- package/bin/skills/vllm/references/quantization.md +284 -0
- package/bin/skills/vllm/references/server-deployment.md +255 -0
- package/bin/skills/vllm/references/troubleshooting.md +447 -0
- package/bin/skills/weights-and-biases/SKILL.md +590 -0
- package/bin/skills/weights-and-biases/references/artifacts.md +584 -0
- package/bin/skills/weights-and-biases/references/integrations.md +700 -0
- package/bin/skills/weights-and-biases/references/sweeps.md +847 -0
- package/bin/skills/whisper/SKILL.md +317 -0
- package/bin/skills/whisper/references/languages.md +189 -0
- package/bin/synsc +0 -0
- package/package.json +10 -0
|
@@ -0,0 +1,674 @@
|
|
|
1
|
+
# Comprehensive Constraint Patterns
|
|
2
|
+
|
|
3
|
+
Guide to regex constraints, grammar-based generation, and token healing in Guidance.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
- Regex Constraints
|
|
7
|
+
- Grammar-Based Generation
|
|
8
|
+
- Token Healing
|
|
9
|
+
- Selection Constraints
|
|
10
|
+
- Complex Patterns
|
|
11
|
+
- Performance Optimization
|
|
12
|
+
|
|
13
|
+
## Regex Constraints
|
|
14
|
+
|
|
15
|
+
### Basic Patterns
|
|
16
|
+
|
|
17
|
+
#### Numeric Constraints
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from guidance import models, gen
|
|
21
|
+
|
|
22
|
+
lm = models.Anthropic("claude-sonnet-4-5-20250929")
|
|
23
|
+
|
|
24
|
+
# Integer (positive)
|
|
25
|
+
lm += "Age: " + gen("age", regex=r"[0-9]+")
|
|
26
|
+
|
|
27
|
+
# Integer (with negatives)
|
|
28
|
+
lm += "Temperature: " + gen("temp", regex=r"-?[0-9]+")
|
|
29
|
+
|
|
30
|
+
# Float (positive)
|
|
31
|
+
lm += "Price: $" + gen("price", regex=r"[0-9]+\.[0-9]{2}")
|
|
32
|
+
|
|
33
|
+
# Float (with negatives and optional decimals)
|
|
34
|
+
lm += "Value: " + gen("value", regex=r"-?[0-9]+(\.[0-9]+)?")
|
|
35
|
+
|
|
36
|
+
# Percentage (0-100)
|
|
37
|
+
lm += "Progress: " + gen("progress", regex=r"(100|[0-9]{1,2})")
|
|
38
|
+
|
|
39
|
+
# Range (1-5 stars)
|
|
40
|
+
lm += "Rating: " + gen("rating", regex=r"[1-5]") + " stars"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Text Constraints
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
# Alphabetic only
|
|
47
|
+
lm += "Name: " + gen("name", regex=r"[A-Za-z]+")
|
|
48
|
+
|
|
49
|
+
# Alphabetic with spaces
|
|
50
|
+
lm += "Full Name: " + gen("full_name", regex=r"[A-Za-z ]+")
|
|
51
|
+
|
|
52
|
+
# Alphanumeric
|
|
53
|
+
lm += "Username: " + gen("username", regex=r"[A-Za-z0-9_]+")
|
|
54
|
+
|
|
55
|
+
# Capitalized words
|
|
56
|
+
lm += "Title: " + gen("title", regex=r"[A-Z][a-z]+( [A-Z][a-z]+)*")
|
|
57
|
+
|
|
58
|
+
# Lowercase only
|
|
59
|
+
lm += "Code: " + gen("code", regex=r"[a-z0-9-]+")
|
|
60
|
+
|
|
61
|
+
# Specific length
|
|
62
|
+
lm += "ID: " + gen("id", regex=r"[A-Z]{3}-[0-9]{6}") # e.g., "ABC-123456"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### Date and Time Constraints
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
# Date (YYYY-MM-DD)
|
|
69
|
+
lm += "Date: " + gen("date", regex=r"\d{4}-\d{2}-\d{2}")
|
|
70
|
+
|
|
71
|
+
# Date (MM/DD/YYYY)
|
|
72
|
+
lm += "Date: " + gen("date_us", regex=r"\d{2}/\d{2}/\d{4}")
|
|
73
|
+
|
|
74
|
+
# Time (HH:MM)
|
|
75
|
+
lm += "Time: " + gen("time", regex=r"\d{2}:\d{2}")
|
|
76
|
+
|
|
77
|
+
# Time (HH:MM:SS)
|
|
78
|
+
lm += "Time: " + gen("time_full", regex=r"\d{2}:\d{2}:\d{2}")
|
|
79
|
+
|
|
80
|
+
# ISO 8601 datetime
|
|
81
|
+
lm += "Timestamp: " + gen(
|
|
82
|
+
"timestamp",
|
|
83
|
+
regex=r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z"
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
# Year (YYYY)
|
|
87
|
+
lm += "Year: " + gen("year", regex=r"(19|20)\d{2}")
|
|
88
|
+
|
|
89
|
+
# Month name
|
|
90
|
+
lm += "Month: " + gen(
|
|
91
|
+
"month",
|
|
92
|
+
regex=r"(January|February|March|April|May|June|July|August|September|October|November|December)"
|
|
93
|
+
)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### Contact Information
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
# Email
|
|
100
|
+
lm += "Email: " + gen(
|
|
101
|
+
"email",
|
|
102
|
+
regex=r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# Phone (US format)
|
|
106
|
+
lm += "Phone: " + gen("phone", regex=r"\d{3}-\d{3}-\d{4}")
|
|
107
|
+
|
|
108
|
+
# Phone (international format)
|
|
109
|
+
lm += "Phone: " + gen("phone_intl", regex=r"\+[0-9]{1,3}-[0-9]{1,14}")
|
|
110
|
+
|
|
111
|
+
# ZIP code (US)
|
|
112
|
+
lm += "ZIP: " + gen("zip", regex=r"\d{5}(-\d{4})?")
|
|
113
|
+
|
|
114
|
+
# Postal code (Canada)
|
|
115
|
+
lm += "Postal: " + gen("postal", regex=r"[A-Z]\d[A-Z] \d[A-Z]\d")
|
|
116
|
+
|
|
117
|
+
# URL
|
|
118
|
+
lm += "URL: " + gen(
|
|
119
|
+
"url",
|
|
120
|
+
regex=r"https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[a-zA-Z0-9._~:/?#\[\]@!$&'()*+,;=-]*)?"
|
|
121
|
+
)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Advanced Patterns
|
|
125
|
+
|
|
126
|
+
#### JSON Field Constraints
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
from guidance import models, gen
|
|
130
|
+
|
|
131
|
+
lm = models.Anthropic("claude-sonnet-4-5-20250929")
|
|
132
|
+
|
|
133
|
+
# String field with quotes
|
|
134
|
+
lm += '"name": ' + gen("name", regex=r'"[A-Za-z ]+"')
|
|
135
|
+
|
|
136
|
+
# Numeric field (no quotes)
|
|
137
|
+
lm += '"age": ' + gen("age", regex=r"[0-9]+")
|
|
138
|
+
|
|
139
|
+
# Boolean field
|
|
140
|
+
lm += '"active": ' + gen("active", regex=r"(true|false)")
|
|
141
|
+
|
|
142
|
+
# Null field
|
|
143
|
+
lm += '"optional": ' + gen("optional", regex=r"(null|[0-9]+)")
|
|
144
|
+
|
|
145
|
+
# Array of strings
|
|
146
|
+
lm += '"tags": [' + gen(
|
|
147
|
+
"tags",
|
|
148
|
+
regex=r'"[a-z]+"(, "[a-z]+")*'
|
|
149
|
+
) + ']'
|
|
150
|
+
|
|
151
|
+
# Complete JSON object
|
|
152
|
+
lm += """{
|
|
153
|
+
"name": """ + gen("name", regex=r'"[A-Za-z ]+"') + """,
|
|
154
|
+
"age": """ + gen("age", regex=r"[0-9]+") + """,
|
|
155
|
+
"email": """ + gen(
|
|
156
|
+
"email",
|
|
157
|
+
regex=r'"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"'
|
|
158
|
+
) + """
|
|
159
|
+
}"""
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Code Patterns
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
# Python variable name
|
|
166
|
+
lm += "Variable: " + gen("var", regex=r"[a-z_][a-z0-9_]*")
|
|
167
|
+
|
|
168
|
+
# Python function name
|
|
169
|
+
lm += "Function: " + gen("func", regex=r"[a-z_][a-z0-9_]*")
|
|
170
|
+
|
|
171
|
+
# Hex color code
|
|
172
|
+
lm += "Color: #" + gen("color", regex=r"[0-9A-Fa-f]{6}")
|
|
173
|
+
|
|
174
|
+
# UUID
|
|
175
|
+
lm += "UUID: " + gen(
|
|
176
|
+
"uuid",
|
|
177
|
+
regex=r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# Git commit hash (short)
|
|
181
|
+
lm += "Commit: " + gen("commit", regex=r"[0-9a-f]{7}")
|
|
182
|
+
|
|
183
|
+
# Semantic version
|
|
184
|
+
lm += "Version: " + gen("version", regex=r"[0-9]+\.[0-9]+\.[0-9]+")
|
|
185
|
+
|
|
186
|
+
# IP address (IPv4)
|
|
187
|
+
lm += "IP: " + gen(
|
|
188
|
+
"ip",
|
|
189
|
+
regex=r"((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
|
|
190
|
+
)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
#### Domain-Specific Patterns
|
|
194
|
+
|
|
195
|
+
```python
|
|
196
|
+
# Credit card number
|
|
197
|
+
lm += "Card: " + gen("card", regex=r"\d{4}-\d{4}-\d{4}-\d{4}")
|
|
198
|
+
|
|
199
|
+
# Social Security Number (US)
|
|
200
|
+
lm += "SSN: " + gen("ssn", regex=r"\d{3}-\d{2}-\d{4}")
|
|
201
|
+
|
|
202
|
+
# ISBN-13
|
|
203
|
+
lm += "ISBN: " + gen("isbn", regex=r"978-\d{1,5}-\d{1,7}-\d{1,7}-\d")
|
|
204
|
+
|
|
205
|
+
# License plate (US)
|
|
206
|
+
lm += "Plate: " + gen("plate", regex=r"[A-Z]{3}-\d{4}")
|
|
207
|
+
|
|
208
|
+
# Currency amount
|
|
209
|
+
lm += "Amount: $" + gen("amount", regex=r"[0-9]{1,3}(,[0-9]{3})*\.[0-9]{2}")
|
|
210
|
+
|
|
211
|
+
# Percentage with decimal
|
|
212
|
+
lm += "Rate: " + gen("rate", regex=r"[0-9]+\.[0-9]{1,2}%")
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Grammar-Based Generation
|
|
216
|
+
|
|
217
|
+
### JSON Grammar
|
|
218
|
+
|
|
219
|
+
```python
|
|
220
|
+
from guidance import models, gen, guidance
|
|
221
|
+
|
|
222
|
+
@guidance
|
|
223
|
+
def json_object(lm):
|
|
224
|
+
"""Generate valid JSON object."""
|
|
225
|
+
lm += "{\n"
|
|
226
|
+
|
|
227
|
+
# Name field (required)
|
|
228
|
+
lm += ' "name": ' + gen("name", regex=r'"[A-Za-z ]+"') + ",\n"
|
|
229
|
+
|
|
230
|
+
# Age field (required)
|
|
231
|
+
lm += ' "age": ' + gen("age", regex=r"[0-9]+") + ",\n"
|
|
232
|
+
|
|
233
|
+
# Email field (required)
|
|
234
|
+
lm += ' "email": ' + gen(
|
|
235
|
+
"email",
|
|
236
|
+
regex=r'"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"'
|
|
237
|
+
) + ",\n"
|
|
238
|
+
|
|
239
|
+
# Active field (required, boolean)
|
|
240
|
+
lm += ' "active": ' + gen("active", regex=r"(true|false)") + "\n"
|
|
241
|
+
|
|
242
|
+
lm += "}"
|
|
243
|
+
return lm
|
|
244
|
+
|
|
245
|
+
lm = models.Anthropic("claude-sonnet-4-5-20250929")
|
|
246
|
+
lm = json_object(lm)
|
|
247
|
+
print(lm) # Valid JSON guaranteed
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Nested JSON Grammar
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
@guidance
|
|
254
|
+
def nested_json(lm):
|
|
255
|
+
"""Generate nested JSON structure."""
|
|
256
|
+
lm += "{\n"
|
|
257
|
+
|
|
258
|
+
# User object
|
|
259
|
+
lm += ' "user": {\n'
|
|
260
|
+
lm += ' "name": ' + gen("name", regex=r'"[A-Za-z ]+"') + ",\n"
|
|
261
|
+
lm += ' "age": ' + gen("age", regex=r"[0-9]+") + "\n"
|
|
262
|
+
lm += " },\n"
|
|
263
|
+
|
|
264
|
+
# Address object
|
|
265
|
+
lm += ' "address": {\n'
|
|
266
|
+
lm += ' "street": ' + gen("street", regex=r'"[A-Za-z0-9 ]+"') + ",\n"
|
|
267
|
+
lm += ' "city": ' + gen("city", regex=r'"[A-Za-z ]+"') + ",\n"
|
|
268
|
+
lm += ' "zip": ' + gen("zip", regex=r'"\d{5}"') + "\n"
|
|
269
|
+
lm += " }\n"
|
|
270
|
+
|
|
271
|
+
lm += "}"
|
|
272
|
+
return lm
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Array Grammar
|
|
276
|
+
|
|
277
|
+
```python
|
|
278
|
+
@guidance
|
|
279
|
+
def json_array(lm, count=3):
|
|
280
|
+
"""Generate JSON array with fixed count."""
|
|
281
|
+
lm += "[\n"
|
|
282
|
+
|
|
283
|
+
for i in range(count):
|
|
284
|
+
lm += " {\n"
|
|
285
|
+
lm += ' "id": ' + gen(f"id_{i}", regex=r"[0-9]+") + ",\n"
|
|
286
|
+
lm += ' "name": ' + gen(f"name_{i}", regex=r'"[A-Za-z ]+"') + "\n"
|
|
287
|
+
lm += " }"
|
|
288
|
+
if i < count - 1:
|
|
289
|
+
lm += ","
|
|
290
|
+
lm += "\n"
|
|
291
|
+
|
|
292
|
+
lm += "]"
|
|
293
|
+
return lm
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### XML Grammar
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
@guidance
|
|
300
|
+
def xml_document(lm):
|
|
301
|
+
"""Generate valid XML document."""
|
|
302
|
+
lm += '<?xml version="1.0"?>\n'
|
|
303
|
+
lm += "<person>\n"
|
|
304
|
+
|
|
305
|
+
# Name element
|
|
306
|
+
lm += " <name>" + gen("name", regex=r"[A-Za-z ]+") + "</name>\n"
|
|
307
|
+
|
|
308
|
+
# Age element
|
|
309
|
+
lm += " <age>" + gen("age", regex=r"[0-9]+") + "</age>\n"
|
|
310
|
+
|
|
311
|
+
# Email element
|
|
312
|
+
lm += " <email>" + gen(
|
|
313
|
+
"email",
|
|
314
|
+
regex=r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
|
|
315
|
+
) + "</email>\n"
|
|
316
|
+
|
|
317
|
+
lm += "</person>"
|
|
318
|
+
return lm
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### CSV Grammar
|
|
322
|
+
|
|
323
|
+
```python
|
|
324
|
+
@guidance
|
|
325
|
+
def csv_row(lm):
|
|
326
|
+
"""Generate CSV row."""
|
|
327
|
+
lm += gen("name", regex=r"[A-Za-z ]+") + ","
|
|
328
|
+
lm += gen("age", regex=r"[0-9]+") + ","
|
|
329
|
+
lm += gen("email", regex=r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
|
|
330
|
+
return lm
|
|
331
|
+
|
|
332
|
+
@guidance
|
|
333
|
+
def csv_document(lm, rows=5):
|
|
334
|
+
"""Generate complete CSV."""
|
|
335
|
+
# Header
|
|
336
|
+
lm += "Name,Age,Email\n"
|
|
337
|
+
|
|
338
|
+
# Rows
|
|
339
|
+
for i in range(rows):
|
|
340
|
+
lm = csv_row(lm)
|
|
341
|
+
if i < rows - 1:
|
|
342
|
+
lm += "\n"
|
|
343
|
+
|
|
344
|
+
return lm
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
## Token Healing
|
|
348
|
+
|
|
349
|
+
### How Token Healing Works
|
|
350
|
+
|
|
351
|
+
**Problem:** Tokenization creates unnatural boundaries.
|
|
352
|
+
|
|
353
|
+
```python
|
|
354
|
+
# Example without token healing
|
|
355
|
+
prompt = "The capital of France is "
|
|
356
|
+
# Tokenization: ["The", " capital", " of", " France", " is", " "]
|
|
357
|
+
# Model sees last token: " "
|
|
358
|
+
# First generated token might include leading space: " Paris"
|
|
359
|
+
# Result: "The capital of France is Paris" (double space)
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Solution:** Guidance backs up and regenerates the last token.
|
|
363
|
+
|
|
364
|
+
```python
|
|
365
|
+
from guidance import models, gen
|
|
366
|
+
|
|
367
|
+
lm = models.Anthropic("claude-sonnet-4-5-20250929")
|
|
368
|
+
|
|
369
|
+
# Token healing enabled by default
|
|
370
|
+
lm += "The capital of France is " + gen("capital", max_tokens=5)
|
|
371
|
+
|
|
372
|
+
# Process:
|
|
373
|
+
# 1. Back up to token before " is "
|
|
374
|
+
# 2. Regenerate " is" + "capital" together
|
|
375
|
+
# 3. Result: "The capital of France is Paris" (correct)
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### Token Healing Examples
|
|
379
|
+
|
|
380
|
+
#### Natural Continuations
|
|
381
|
+
|
|
382
|
+
```python
|
|
383
|
+
# Before token healing
|
|
384
|
+
lm += "The function name is get" + gen("rest")
|
|
385
|
+
# Might generate: "The function name is get User" (space before User)
|
|
386
|
+
|
|
387
|
+
# With token healing
|
|
388
|
+
lm += "The function name is get" + gen("rest")
|
|
389
|
+
# Generates: "The function name is getUser" (correct camelCase)
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
#### Code Generation
|
|
393
|
+
|
|
394
|
+
```python
|
|
395
|
+
# Function name completion
|
|
396
|
+
lm += "def calculate_" + gen("rest", stop="(")
|
|
397
|
+
# Token healing ensures smooth connection: "calculate_total"
|
|
398
|
+
|
|
399
|
+
# Variable name completion
|
|
400
|
+
lm += "my_" + gen("var_name", regex=r"[a-z_]+")
|
|
401
|
+
# Token healing ensures: "my_variable_name" (not "my_ variable_name")
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
#### Domain-Specific Terms
|
|
405
|
+
|
|
406
|
+
```python
|
|
407
|
+
# Medical terms
|
|
408
|
+
lm += "The patient has hyper" + gen("condition")
|
|
409
|
+
# Token healing helps: "hypertension" (not "hyper tension")
|
|
410
|
+
|
|
411
|
+
# Technical terms
|
|
412
|
+
lm += "Using micro" + gen("tech")
|
|
413
|
+
# Token healing helps: "microservices" (not "micro services")
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Disabling Token Healing
|
|
417
|
+
|
|
418
|
+
```python
|
|
419
|
+
# Disable token healing if needed (rare)
|
|
420
|
+
lm += gen("text", token_healing=False)
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## Selection Constraints
|
|
424
|
+
|
|
425
|
+
### Basic Selection
|
|
426
|
+
|
|
427
|
+
```python
|
|
428
|
+
from guidance import models, select
|
|
429
|
+
|
|
430
|
+
lm = models.Anthropic("claude-sonnet-4-5-20250929")
|
|
431
|
+
|
|
432
|
+
# Simple selection
|
|
433
|
+
lm += "Status: " + select(["active", "inactive", "pending"], name="status")
|
|
434
|
+
|
|
435
|
+
# Boolean selection
|
|
436
|
+
lm += "Approved: " + select(["Yes", "No"], name="approved")
|
|
437
|
+
|
|
438
|
+
# Multiple choice
|
|
439
|
+
lm += "Answer: " + select(
|
|
440
|
+
["A) Paris", "B) London", "C) Berlin", "D) Madrid"],
|
|
441
|
+
name="answer"
|
|
442
|
+
)
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Conditional Selection
|
|
446
|
+
|
|
447
|
+
```python
|
|
448
|
+
from guidance import models, select, gen, guidance
|
|
449
|
+
|
|
450
|
+
@guidance
|
|
451
|
+
def conditional_fields(lm):
|
|
452
|
+
"""Generate fields conditionally based on type."""
|
|
453
|
+
lm += "Type: " + select(["person", "company"], name="type")
|
|
454
|
+
|
|
455
|
+
if lm["type"] == "person":
|
|
456
|
+
lm += "\nName: " + gen("name", regex=r"[A-Za-z ]+")
|
|
457
|
+
lm += "\nAge: " + gen("age", regex=r"[0-9]+")
|
|
458
|
+
else:
|
|
459
|
+
lm += "\nCompany Name: " + gen("company", regex=r"[A-Za-z ]+")
|
|
460
|
+
lm += "\nEmployees: " + gen("employees", regex=r"[0-9]+")
|
|
461
|
+
|
|
462
|
+
return lm
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Repeated Selection
|
|
466
|
+
|
|
467
|
+
```python
|
|
468
|
+
@guidance
|
|
469
|
+
def multiple_selections(lm):
|
|
470
|
+
"""Select multiple items."""
|
|
471
|
+
lm += "Select 3 colors:\n"
|
|
472
|
+
|
|
473
|
+
colors = ["red", "blue", "green", "yellow", "purple"]
|
|
474
|
+
|
|
475
|
+
for i in range(3):
|
|
476
|
+
lm += f"{i+1}. " + select(colors, name=f"color_{i}") + "\n"
|
|
477
|
+
|
|
478
|
+
return lm
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
## Complex Patterns
|
|
482
|
+
|
|
483
|
+
### Pattern 1: Structured Forms
|
|
484
|
+
|
|
485
|
+
```python
|
|
486
|
+
@guidance
|
|
487
|
+
def user_form(lm):
|
|
488
|
+
"""Generate structured user form."""
|
|
489
|
+
lm += "=== User Registration ===\n\n"
|
|
490
|
+
|
|
491
|
+
# Name (alphabetic only)
|
|
492
|
+
lm += "Full Name: " + gen("name", regex=r"[A-Za-z ]+", stop="\n") + "\n"
|
|
493
|
+
|
|
494
|
+
# Age (numeric)
|
|
495
|
+
lm += "Age: " + gen("age", regex=r"[0-9]+", max_tokens=3) + "\n"
|
|
496
|
+
|
|
497
|
+
# Email (validated format)
|
|
498
|
+
lm += "Email: " + gen(
|
|
499
|
+
"email",
|
|
500
|
+
regex=r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}",
|
|
501
|
+
stop="\n"
|
|
502
|
+
) + "\n"
|
|
503
|
+
|
|
504
|
+
# Phone (US format)
|
|
505
|
+
lm += "Phone: " + gen("phone", regex=r"\d{3}-\d{3}-\d{4}") + "\n"
|
|
506
|
+
|
|
507
|
+
# Account type (selection)
|
|
508
|
+
lm += "Account Type: " + select(
|
|
509
|
+
["Standard", "Premium", "Enterprise"],
|
|
510
|
+
name="account_type"
|
|
511
|
+
) + "\n"
|
|
512
|
+
|
|
513
|
+
# Active status (boolean)
|
|
514
|
+
lm += "Active: " + select(["Yes", "No"], name="active") + "\n"
|
|
515
|
+
|
|
516
|
+
return lm
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### Pattern 2: Multi-Entity Extraction
|
|
520
|
+
|
|
521
|
+
```python
|
|
522
|
+
@guidance
|
|
523
|
+
def extract_entities(lm, text):
|
|
524
|
+
"""Extract multiple entities with constraints."""
|
|
525
|
+
lm += f"Text: {text}\n\n"
|
|
526
|
+
|
|
527
|
+
# Person name (alphabetic)
|
|
528
|
+
lm += "Person: " + gen("person", regex=r"[A-Za-z ]+", stop="\n") + "\n"
|
|
529
|
+
|
|
530
|
+
# Organization (alphanumeric with spaces)
|
|
531
|
+
lm += "Organization: " + gen(
|
|
532
|
+
"organization",
|
|
533
|
+
regex=r"[A-Za-z0-9 ]+",
|
|
534
|
+
stop="\n"
|
|
535
|
+
) + "\n"
|
|
536
|
+
|
|
537
|
+
# Date (YYYY-MM-DD format)
|
|
538
|
+
lm += "Date: " + gen("date", regex=r"\d{4}-\d{2}-\d{2}") + "\n"
|
|
539
|
+
|
|
540
|
+
# Location (alphabetic with spaces)
|
|
541
|
+
lm += "Location: " + gen("location", regex=r"[A-Za-z ]+", stop="\n") + "\n"
|
|
542
|
+
|
|
543
|
+
# Amount (currency)
|
|
544
|
+
lm += "Amount: $" + gen("amount", regex=r"[0-9,]+\.[0-9]{2}") + "\n"
|
|
545
|
+
|
|
546
|
+
return lm
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Pattern 3: Code Generation
|
|
550
|
+
|
|
551
|
+
```python
|
|
552
|
+
@guidance
|
|
553
|
+
def generate_python_function(lm):
|
|
554
|
+
"""Generate Python function with constraints."""
|
|
555
|
+
# Function name (valid Python identifier)
|
|
556
|
+
lm += "def " + gen("func_name", regex=r"[a-z_][a-z0-9_]*") + "("
|
|
557
|
+
|
|
558
|
+
# Parameter name
|
|
559
|
+
lm += gen("param", regex=r"[a-z_][a-z0-9_]*") + "):\n"
|
|
560
|
+
|
|
561
|
+
# Docstring
|
|
562
|
+
lm += ' """' + gen("docstring", stop='"""', max_tokens=50) + '"""\n'
|
|
563
|
+
|
|
564
|
+
# Function body (constrained to valid Python)
|
|
565
|
+
lm += " return " + gen("return_value", stop="\n") + "\n"
|
|
566
|
+
|
|
567
|
+
return lm
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
### Pattern 4: Hierarchical Data
|
|
571
|
+
|
|
572
|
+
```python
|
|
573
|
+
@guidance
|
|
574
|
+
def org_chart(lm):
|
|
575
|
+
"""Generate organizational chart."""
|
|
576
|
+
lm += "Company: " + gen("company", regex=r"[A-Za-z ]+") + "\n\n"
|
|
577
|
+
|
|
578
|
+
# CEO
|
|
579
|
+
lm += "CEO: " + gen("ceo", regex=r"[A-Za-z ]+") + "\n"
|
|
580
|
+
|
|
581
|
+
# Departments
|
|
582
|
+
for dept in ["Engineering", "Sales", "Marketing"]:
|
|
583
|
+
lm += f"\n{dept} Department:\n"
|
|
584
|
+
lm += " Head: " + gen(f"{dept.lower()}_head", regex=r"[A-Za-z ]+") + "\n"
|
|
585
|
+
lm += " Size: " + gen(f"{dept.lower()}_size", regex=r"[0-9]+") + " employees\n"
|
|
586
|
+
|
|
587
|
+
return lm
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
## Performance Optimization
|
|
591
|
+
|
|
592
|
+
### Best Practices
|
|
593
|
+
|
|
594
|
+
#### 1. Use Specific Patterns
|
|
595
|
+
|
|
596
|
+
```python
|
|
597
|
+
# ✅ Good: Specific pattern
|
|
598
|
+
lm += gen("age", regex=r"[0-9]{1,3}") # Fast
|
|
599
|
+
|
|
600
|
+
# ❌ Bad: Overly broad pattern
|
|
601
|
+
lm += gen("age", regex=r"[0-9]+") # Slower
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
#### 2. Limit Max Tokens
|
|
605
|
+
|
|
606
|
+
```python
|
|
607
|
+
# ✅ Good: Reasonable limit
|
|
608
|
+
lm += gen("name", max_tokens=30)
|
|
609
|
+
|
|
610
|
+
# ❌ Bad: No limit
|
|
611
|
+
lm += gen("name") # May generate forever
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
#### 3. Use stop Sequences
|
|
615
|
+
|
|
616
|
+
```python
|
|
617
|
+
# ✅ Good: Stop at newline
|
|
618
|
+
lm += gen("line", stop="\n")
|
|
619
|
+
|
|
620
|
+
# ❌ Bad: Rely on max_tokens
|
|
621
|
+
lm += gen("line", max_tokens=100)
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
#### 4. Cache Compiled Grammars
|
|
625
|
+
|
|
626
|
+
```python
|
|
627
|
+
# Grammars are cached automatically after first use
|
|
628
|
+
# No manual caching needed
|
|
629
|
+
@guidance
|
|
630
|
+
def reusable_pattern(lm):
|
|
631
|
+
"""This grammar is compiled once and cached."""
|
|
632
|
+
lm += gen("email", regex=r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
|
|
633
|
+
return lm
|
|
634
|
+
|
|
635
|
+
# First call: compiles grammar
|
|
636
|
+
lm = reusable_pattern(lm)
|
|
637
|
+
|
|
638
|
+
# Subsequent calls: uses cached grammar (fast)
|
|
639
|
+
lm = reusable_pattern(lm)
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
#### 5. Avoid Overlapping Constraints
|
|
643
|
+
|
|
644
|
+
```python
|
|
645
|
+
# ✅ Good: Clear constraints
|
|
646
|
+
lm += gen("age", regex=r"[0-9]+", max_tokens=3)
|
|
647
|
+
|
|
648
|
+
# ❌ Bad: Conflicting constraints
|
|
649
|
+
lm += gen("age", regex=r"[0-9]{2}", max_tokens=10) # max_tokens unnecessary
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
### Performance Benchmarks
|
|
653
|
+
|
|
654
|
+
**Regex vs Free Generation:**
|
|
655
|
+
- Simple regex (digits): ~1.2x slower than free gen
|
|
656
|
+
- Complex regex (email): ~1.5x slower than free gen
|
|
657
|
+
- Grammar-based: ~2x slower than free gen
|
|
658
|
+
|
|
659
|
+
**But:**
|
|
660
|
+
- 100% valid outputs (vs ~70% with free gen + validation)
|
|
661
|
+
- No retry loops needed
|
|
662
|
+
- Overall faster end-to-end for structured outputs
|
|
663
|
+
|
|
664
|
+
**Optimization Tips:**
|
|
665
|
+
- Use regex for critical fields only
|
|
666
|
+
- Use `select()` for small fixed sets (fastest)
|
|
667
|
+
- Use `stop` sequences when possible (faster than max_tokens)
|
|
668
|
+
- Cache compiled grammars by reusing functions
|
|
669
|
+
|
|
670
|
+
## Resources
|
|
671
|
+
|
|
672
|
+
- **Token Healing Paper**: https://arxiv.org/abs/2306.17648
|
|
673
|
+
- **Guidance Docs**: https://guidance.readthedocs.io
|
|
674
|
+
- **GitHub**: https://github.com/guidance-ai/guidance
|