[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DFDRWFG29P8GTP2774HPQR":3,"skill-same:01M6DFDRWFG29P8GTP2774HPQR":112},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":68,"commitSha":69,"skillDirectory":70,"forksCount":71,"repositoryHtmlUrl":72,"repositoryHomepageUrl":6,"ownerHtmlUrl":73,"ownerBlogUrl":6,"ownerDescription":74,"updatedAt":75,"install":76,"resources":89},"01M6DFDRWFG29P8GTP2774HPQR","guidance",null,"Control LLM output with regex and grammars, guarantee valid JSON\u002FXML\u002Fcode generation, enforce structured formats, and build multi-step workflows with Guidance - Microsoft Research's constrained generation framework","zapabob\u002FSkills","zapabob","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130830376?v=4","01M6DBMYZAGRTFQDSQYW3W764P","峯岸 亮","01M6DBMZ3GKDSJ01NZ9XTZD7JD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F4b\u002F4b4b976a070b1462bab0844eac131501a7be8cf42c3279eb6a9b3eae8618951c\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[5,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"grammar","structured output","regex","control","generation","enforce","build","enforcement","prompt","macos","Transformers","Code Generation","framework","code","windows","workflows","research","valid","linux","2026-11-10 10:12:30",false,"---\r\nname: guidance\r\ndescription: Control LLM output with regex and grammars, guarantee valid JSON\u002FXML\u002Fcode generation, enforce structured formats, and build multi-step workflows with Guidance - Microsoft Research's constrained generation framework\r\nversion: 1.0.0\r\nauthor: Orchestra Research\r\nlicense: MIT\r\ndependencies: [guidance, transformers]\r\nplatforms: [linux, macos, windows]\r\nmetadata:\r\n  hermes:\r\n    tags: [Prompt Engineering, Guidance, Constrained Generation, Structured Output, JSON Validation, Grammar, Microsoft Research, Format Enforcement, Multi-Step Workflows]\r\n\r\n---\r\n\r\n# Guidance: Constrained LLM Generation\r\n\r\n## When to Use This Skill\r\n\r\nUse Guidance when you need to:\r\n- **Control LLM output syntax** with regex or grammars\r\n- **Guarantee valid JSON\u002FXML\u002Fcode** generation\r\n- **Reduce latency** vs traditional prompting approaches\r\n- **Enforce structured formats** (dates, emails, IDs, etc.)\r\n- **Build multi-step workflows** with Pythonic control flow\r\n- **Prevent invalid outputs** through grammatical constraints\r\n\r\n**GitHub Stars**: 18,000+ | **From**: Microsoft Research\r\n\r\n## Installation\r\n\r\n```bash\r\n# Base installation\r\npip install guidance\r\n\r\n# With specific backends\r\npip install guidance[transformers]  # Hugging Face models\r\npip install guidance[llama_cpp]     # llama.cpp models\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Example: Structured Generation\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\n# Load model (supports OpenAI, Transformers, llama.cpp)\r\nlm = models.OpenAI(\"gpt-4\")\r\n\r\n# Generate with constraints\r\nresult = lm + \"The capital of France is \" + gen(\"capital\", max_tokens=5)\r\n\r\nprint(result[\"capital\"])  # \"Paris\"\r\n```\r\n\r\n### With Anthropic Claude\r\n\r\n```python\r\nfrom guidance import models, gen, system, user, assistant\r\n\r\n# Configure Claude\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Use context managers for chat format\r\nwith system():\r\n    lm += \"You are a helpful assistant.\"\r\n\r\nwith user():\r\n    lm += \"What is the capital of France?\"\r\n\r\nwith assistant():\r\n    lm += gen(max_tokens=20)\r\n```\r\n\r\n## Core Concepts\r\n\r\n### 1. Context Managers\r\n\r\nGuidance uses Pythonic context managers for chat-style interactions.\r\n\r\n```python\r\nfrom guidance import system, user, assistant, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# System message\r\nwith system():\r\n    lm += \"You are a JSON generation expert.\"\r\n\r\n# User message\r\nwith user():\r\n    lm += \"Generate a person object with name and age.\"\r\n\r\n# Assistant response\r\nwith assistant():\r\n    lm += gen(\"response\", max_tokens=100)\r\n\r\nprint(lm[\"response\"])\r\n```\r\n\r\n**Benefits:**\r\n- Natural chat flow\r\n- Clear role separation\r\n- Easy to read and maintain\r\n\r\n### 2. Constrained Generation\r\n\r\nGuidance ensures outputs match specified patterns using regex or grammars.\r\n\r\n#### Regex Constraints\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Constrain to valid email format\r\nlm += \"Email: \" + gen(\"email\", regex=r\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\")\r\n\r\n# Constrain to date format (YYYY-MM-DD)\r\nlm += \"Date: \" + gen(\"date\", regex=r\"\\d{4}-\\d{2}-\\d{2}\")\r\n\r\n# Constrain to phone number\r\nlm += \"Phone: \" + gen(\"phone\", regex=r\"\\d{3}-\\d{3}-\\d{4}\")\r\n\r\nprint(lm[\"email\"])  # Guaranteed valid email\r\nprint(lm[\"date\"])   # Guaranteed YYYY-MM-DD format\r\n```\r\n\r\n**How it works:**\r\n- Regex converted to grammar at token level\r\n- Invalid tokens filtered during generation\r\n- Model can only produce matching outputs\r\n\r\n#### Selection Constraints\r\n\r\n```python\r\nfrom guidance import models, gen, select\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Constrain to specific choices\r\nlm += \"Sentiment: \" + select([\"positive\", \"negative\", \"neutral\"], name=\"sentiment\")\r\n\r\n# Multiple-choice selection\r\nlm += \"Best answer: \" + select(\r\n    [\"A) Paris\", \"B) London\", \"C) Berlin\", \"D) Madrid\"],\r\n    name=\"answer\"\r\n)\r\n\r\nprint(lm[\"sentiment\"])  # One of: positive, negative, neutral\r\nprint(lm[\"answer\"])     # One of: A, B, C, or D\r\n```\r\n\r\n### 3. Token Healing\r\n\r\nGuidance automatically \"heals\" token boundaries between prompt and generation.\r\n\r\n**Problem:** Tokenization creates unnatural boundaries.\r\n\r\n```python\r\n# Without token healing\r\nprompt = \"The capital of France is \"\r\n# Last token: \" is \"\r\n# First generated token might be \" Par\" (with leading space)\r\n# Result: \"The capital of France is  Paris\" (double space!)\r\n```\r\n\r\n**Solution:** Guidance backs up one token and regenerates.\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Token healing enabled by default\r\nlm += \"The capital of France is \" + gen(\"capital\", max_tokens=5)\r\n# Result: \"The capital of France is Paris\" (correct spacing)\r\n```\r\n\r\n**Benefits:**\r\n- Natural text boundaries\r\n- No awkward spacing issues\r\n- Better model performance (sees natural token sequences)\r\n\r\n### 4. Grammar-Based Generation\r\n\r\nDefine complex structures using context-free grammars.\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# JSON grammar (simplified)\r\njson_grammar = \"\"\"\r\n{\r\n    \"name\": \u003Cgen name regex=\"[A-Za-z ]+\" max_tokens=20>,\r\n    \"age\": \u003Cgen age regex=\"[0-9]+\" max_tokens=3>,\r\n    \"email\": \u003Cgen email regex=\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}\" max_tokens=50>\r\n}\r\n\"\"\"\r\n\r\n# Generate valid JSON\r\nlm += gen(\"person\", grammar=json_grammar)\r\n\r\nprint(lm[\"person\"])  # Guaranteed valid JSON structure\r\n```\r\n\r\n**Use cases:**\r\n- Complex structured outputs\r\n- Nested data structures\r\n- Programming language syntax\r\n- Domain-specific languages\r\n\r\n### 5. Guidance Functions\r\n\r\nCreate reusable generation patterns with the `@guidance` decorator.\r\n\r\n```python\r\nfrom guidance import guidance, gen, models\r\n\r\n@guidance\r\ndef generate_person(lm):\r\n    \"\"\"Generate a person with name and age.\"\"\"\r\n    lm += \"Name: \" + gen(\"name\", max_tokens=20, stop=\"\\n\")\r\n    lm += \"\\nAge: \" + gen(\"age\", regex=r\"[0-9]+\", max_tokens=3)\r\n    return lm\r\n\r\n# Use the function\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = generate_person(lm)\r\n\r\nprint(lm[\"name\"])\r\nprint(lm[\"age\"])\r\n```\r\n\r\n**Stateful Functions:**\r\n\r\n```python\r\n@guidance(stateless=False)\r\ndef react_agent(lm, question, tools, max_rounds=5):\r\n    \"\"\"ReAct agent with tool use.\"\"\"\r\n    lm += f\"Question: {question}\\n\\n\"\r\n\r\n    for i in range(max_rounds):\r\n        # Thought\r\n        lm += f\"Thought {i+1}: \" + gen(\"thought\", stop=\"\\n\")\r\n\r\n        # Action\r\n        lm += \"\\nAction: \" + select(list(tools.keys()), name=\"action\")\r\n\r\n        # Execute tool\r\n        tool_result = tools[lm[\"action\"]]()\r\n        lm += f\"\\nObservation: {tool_result}\\n\\n\"\r\n\r\n        # Check if done\r\n        lm += \"Done? \" + select([\"Yes\", \"No\"], name=\"done\")\r\n        if lm[\"done\"] == \"Yes\":\r\n            break\r\n\r\n    # Final answer\r\n    lm += \"\\nFinal Answer: \" + gen(\"answer\", max_tokens=100)\r\n    return lm\r\n```\r\n\r\n## Backend Configuration\r\n\r\n### Anthropic Claude\r\n\r\n```python\r\nfrom guidance import models\r\n\r\nlm = models.Anthropic(\r\n    model=\"claude-sonnet-4-5-20250929\",\r\n    api_key=\"your-api-key\"  # Or set ANTHROPIC_API_KEY env var\r\n)\r\n```\r\n\r\n### OpenAI\r\n\r\n```python\r\nlm = models.OpenAI(\r\n    model=\"gpt-4o-mini\",\r\n    api_key=\"your-api-key\"  # Or set OPENAI_API_KEY env var\r\n)\r\n```\r\n\r\n### Local Models (Transformers)\r\n\r\n```python\r\nfrom guidance.models import Transformers\r\n\r\nlm = Transformers(\r\n    \"microsoft\u002FPhi-4-mini-instruct\",\r\n    device=\"cuda\"  # Or \"cpu\"\r\n)\r\n```\r\n\r\n### Local Models (llama.cpp)\r\n\r\n```python\r\nfrom guidance.models import LlamaCpp\r\n\r\nlm = LlamaCpp(\r\n    model_path=\"\u002Fpath\u002Fto\u002Fmodel.gguf\",\r\n    n_ctx=4096,\r\n    n_gpu_layers=35\r\n)\r\n```\r\n\r\n## Common Patterns\r\n\r\n### Pattern 1: JSON Generation\r\n\r\n```python\r\nfrom guidance import models, gen, system, user, assistant\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\nwith system():\r\n    lm += \"You generate valid JSON.\"\r\n\r\nwith user():\r\n    lm += \"Generate a user profile with name, age, and email.\"\r\n\r\nwith assistant():\r\n    lm += \"\"\"{\r\n    \"name\": \"\"\" + gen(\"name\", regex=r'\"[A-Za-z ]+\"', max_tokens=30) + \"\"\",\r\n    \"age\": \"\"\" + gen(\"age\", regex=r\"[0-9]+\", max_tokens=3) + \"\"\",\r\n    \"email\": \"\"\" + gen(\"email\", regex=r'\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\"', max_tokens=50) + \"\"\"\r\n}\"\"\"\r\n\r\nprint(lm)  # Valid JSON guaranteed\r\n```\r\n\r\n### Pattern 2: Classification\r\n\r\n```python\r\nfrom guidance import models, gen, select\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\ntext = \"This product is amazing! I love it.\"\r\n\r\nlm += f\"Text: {text}\\n\"\r\nlm += \"Sentiment: \" + select([\"positive\", \"negative\", \"neutral\"], name=\"sentiment\")\r\nlm += \"\\nConfidence: \" + gen(\"confidence\", regex=r\"[0-9]+\", max_tokens=3) + \"%\"\r\n\r\nprint(f\"Sentiment: {lm['sentiment']}\")\r\nprint(f\"Confidence: {lm['confidence']}%\")\r\n```\r\n\r\n### Pattern 3: Multi-Step Reasoning\r\n\r\n```python\r\nfrom guidance import models, gen, guidance\r\n\r\n@guidance\r\ndef chain_of_thought(lm, question):\r\n    \"\"\"Generate answer with step-by-step reasoning.\"\"\"\r\n    lm += f\"Question: {question}\\n\\n\"\r\n\r\n    # Generate multiple reasoning steps\r\n    for i in range(3):\r\n        lm += f\"Step {i+1}: \" + gen(f\"step_{i+1}\", stop=\"\\n\", max_tokens=100) + \"\\n\"\r\n\r\n    # Final answer\r\n    lm += \"\\nTherefore, the answer is: \" + gen(\"answer\", max_tokens=50)\r\n\r\n    return lm\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = chain_of_thought(lm, \"What is 15% of 200?\")\r\n\r\nprint(lm[\"answer\"])\r\n```\r\n\r\n### Pattern 4: ReAct Agent\r\n\r\n```python\r\nfrom guidance import models, gen, select, guidance\r\n\r\n@guidance(stateless=False)\r\ndef react_agent(lm, question):\r\n    \"\"\"ReAct agent with tool use.\"\"\"\r\n    tools = {\r\n        \"calculator\": lambda expr: eval(expr),\r\n        \"search\": lambda query: f\"Search results for: {query}\",\r\n    }\r\n\r\n    lm += f\"Question: {question}\\n\\n\"\r\n\r\n    for round in range(5):\r\n        # Thought\r\n        lm += f\"Thought: \" + gen(\"thought\", stop=\"\\n\") + \"\\n\"\r\n\r\n        # Action selection\r\n        lm += \"Action: \" + select([\"calculator\", \"search\", \"answer\"], name=\"action\")\r\n\r\n        if lm[\"action\"] == \"answer\":\r\n            lm += \"\\nFinal Answer: \" + gen(\"answer\", max_tokens=100)\r\n            break\r\n\r\n        # Action input\r\n        lm += \"\\nAction Input: \" + gen(\"action_input\", stop=\"\\n\") + \"\\n\"\r\n\r\n        # Execute tool\r\n        if lm[\"action\"] in tools:\r\n            result = tools[lm[\"action\"]](lm[\"action_input\"])\r\n            lm += f\"Observation: {result}\\n\\n\"\r\n\r\n    return lm\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = react_agent(lm, \"What is 25 * 4 + 10?\")\r\nprint(lm[\"answer\"])\r\n```\r\n\r\n### Pattern 5: Data Extraction\r\n\r\n```python\r\nfrom guidance import models, gen, guidance\r\n\r\n@guidance\r\ndef extract_entities(lm, text):\r\n    \"\"\"Extract structured entities from text.\"\"\"\r\n    lm += f\"Text: {text}\\n\\n\"\r\n\r\n    # Extract person\r\n    lm += \"Person: \" + gen(\"person\", stop=\"\\n\", max_tokens=30) + \"\\n\"\r\n\r\n    # Extract organization\r\n    lm += \"Organization: \" + gen(\"organization\", stop=\"\\n\", max_tokens=30) + \"\\n\"\r\n\r\n    # Extract date\r\n    lm += \"Date: \" + gen(\"date\", regex=r\"\\d{4}-\\d{2}-\\d{2}\", max_tokens=10) + \"\\n\"\r\n\r\n    # Extract location\r\n    lm += \"Location: \" + gen(\"location\", stop=\"\\n\", max_tokens=30) + \"\\n\"\r\n\r\n    return lm\r\n\r\ntext = \"Tim Cook announced at Apple Park on 2024-09-15 in Cupertino.\"\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = extract_entities(lm, text)\r\n\r\nprint(f\"Person: {lm['person']}\")\r\nprint(f\"Organization: {lm['organization']}\")\r\nprint(f\"Date: {lm['date']}\")\r\nprint(f\"Location: {lm['location']}\")\r\n```\r\n\r\n## Best Practices\r\n\r\n### 1. Use Regex for Format Validation\r\n\r\n```python\r\n# ✅ Good: Regex ensures valid format\r\nlm += \"Email: \" + gen(\"email\", regex=r\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\")\r\n\r\n# ❌ Bad: Free generation may produce invalid emails\r\nlm += \"Email: \" + gen(\"email\", max_tokens=50)\r\n```\r\n\r\n### 2. Use select() for Fixed Categories\r\n\r\n```python\r\n# ✅ Good: Guaranteed valid category\r\nlm += \"Status: \" + select([\"pending\", \"approved\", \"rejected\"], name=\"status\")\r\n\r\n# ❌ Bad: May generate typos or invalid values\r\nlm += \"Status: \" + gen(\"status\", max_tokens=20)\r\n```\r\n\r\n### 3. Leverage Token Healing\r\n\r\n```python\r\n# Token healing is enabled by default\r\n# No special action needed - just concatenate naturally\r\nlm += \"The capital is \" + gen(\"capital\")  # Automatic healing\r\n```\r\n\r\n### 4. Use stop Sequences\r\n\r\n```python\r\n# ✅ Good: Stop at newline for single-line outputs\r\nlm += \"Name: \" + gen(\"name\", stop=\"\\n\")\r\n\r\n# ❌ Bad: May generate multiple lines\r\nlm += \"Name: \" + gen(\"name\", max_tokens=50)\r\n```\r\n\r\n### 5. Create Reusable Functions\r\n\r\n```python\r\n# ✅ Good: Reusable pattern\r\n@guidance\r\ndef generate_person(lm):\r\n    lm += \"Name: \" + gen(\"name\", stop=\"\\n\")\r\n    lm += \"\\nAge: \" + gen(\"age\", regex=r\"[0-9]+\")\r\n    return lm\r\n\r\n# Use multiple times\r\nlm = generate_person(lm)\r\nlm += \"\\n\\n\"\r\nlm = generate_person(lm)\r\n```\r\n\r\n### 6. Balance Constraints\r\n\r\n```python\r\n# ✅ Good: Reasonable constraints\r\nlm += gen(\"name\", regex=r\"[A-Za-z ]+\", max_tokens=30)\r\n\r\n# ❌ Too strict: May fail or be very slow\r\nlm += gen(\"name\", regex=r\"^(John|Jane)$\", max_tokens=10)\r\n```\r\n\r\n## Comparison to Alternatives\r\n\r\n| Feature | Guidance | Instructor | Outlines | LMQL |\r\n|---------|----------|------------|----------|------|\r\n| Regex Constraints | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |\r\n| Grammar Support | ✅ CFG | ❌ No | ✅ CFG | ✅ CFG |\r\n| Pydantic Validation | ❌ No | ✅ Yes | ✅ Yes | ❌ No |\r\n| Token Healing | ✅ Yes | ❌ No | ✅ Yes | ❌ No |\r\n| Local Models | ✅ Yes | ⚠️ Limited | ✅ Yes | ✅ Yes |\r\n| API Models | ✅ Yes | ✅ Yes | ⚠️ Limited | ✅ Yes |\r\n| Pythonic Syntax | ✅ Yes | ✅ Yes | ✅ Yes | ❌ SQL-like |\r\n| Learning Curve | Low | Low | Medium | High |\r\n\r\n**When to choose Guidance:**\r\n- Need regex\u002Fgrammar constraints\r\n- Want token healing\r\n- Building complex workflows with control flow\r\n- Using local models (Transformers, llama.cpp)\r\n- Prefer Pythonic syntax\r\n\r\n**When to choose alternatives:**\r\n- Instructor: Need Pydantic validation with automatic retrying\r\n- Outlines: Need JSON schema validation\r\n- LMQL: Prefer declarative query syntax\r\n\r\n## Performance Characteristics\r\n\r\n**Latency Reduction:**\r\n- 30-50% faster than traditional prompting for constrained outputs\r\n- Token healing reduces unnecessary regeneration\r\n- Grammar constraints prevent invalid token generation\r\n\r\n**Memory Usage:**\r\n- Minimal overhead vs unconstrained generation\r\n- Grammar compilation cached after first use\r\n- Efficient token filtering at inference time\r\n\r\n**Token Efficiency:**\r\n- Prevents wasted tokens on invalid outputs\r\n- No need for retry loops\r\n- Direct path to valid outputs\r\n\r\n## Resources\r\n\r\n- **Documentation**: https:\u002F\u002Fguidance.readthedocs.io\r\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fguidance-ai\u002Fguidance (18k+ stars)\r\n- **Notebooks**: https:\u002F\u002Fgithub.com\u002Fguidance-ai\u002Fguidance\u002Ftree\u002Fmain\u002Fnotebooks\r\n- **Discord**: Community support available\r\n\r\n## See Also\r\n\r\n- `references\u002Fconstraints.md` - Comprehensive regex and grammar patterns\r\n- `references\u002Fbackends.md` - Backend-specific configuration\r\n- `references\u002Fexamples.md` - Production-ready examples\r\n","# Guidance: Constrained LLM Generation\r\n\r\n## When to Use This Skill\r\n\r\nUse Guidance when you need to:\r\n- **Control LLM output syntax** with regex or grammars\r\n- **Guarantee valid JSON\u002FXML\u002Fcode** generation\r\n- **Reduce latency** vs traditional prompting approaches\r\n- **Enforce structured formats** (dates, emails, IDs, etc.)\r\n- **Build multi-step workflows** with Pythonic control flow\r\n- **Prevent invalid outputs** through grammatical constraints\r\n\r\n**GitHub Stars**: 18,000+ | **From**: Microsoft Research\r\n\r\n## Installation\r\n\r\n```bash\r\n# Base installation\r\npip install guidance\r\n\r\n# With specific backends\r\npip install guidance[transformers]  # Hugging Face models\r\npip install guidance[llama_cpp]     # llama.cpp models\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Example: Structured Generation\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\n# Load model (supports OpenAI, Transformers, llama.cpp)\r\nlm = models.OpenAI(\"gpt-4\")\r\n\r\n# Generate with constraints\r\nresult = lm + \"The capital of France is \" + gen(\"capital\", max_tokens=5)\r\n\r\nprint(result[\"capital\"])  # \"Paris\"\r\n```\r\n\r\n### With Anthropic Claude\r\n\r\n```python\r\nfrom guidance import models, gen, system, user, assistant\r\n\r\n# Configure Claude\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Use context managers for chat format\r\nwith system():\r\n    lm += \"You are a helpful assistant.\"\r\n\r\nwith user():\r\n    lm += \"What is the capital of France?\"\r\n\r\nwith assistant():\r\n    lm += gen(max_tokens=20)\r\n```\r\n\r\n## Core Concepts\r\n\r\n### 1. Context Managers\r\n\r\nGuidance uses Pythonic context managers for chat-style interactions.\r\n\r\n```python\r\nfrom guidance import system, user, assistant, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# System message\r\nwith system():\r\n    lm += \"You are a JSON generation expert.\"\r\n\r\n# User message\r\nwith user():\r\n    lm += \"Generate a person object with name and age.\"\r\n\r\n# Assistant response\r\nwith assistant():\r\n    lm += gen(\"response\", max_tokens=100)\r\n\r\nprint(lm[\"response\"])\r\n```\r\n\r\n**Benefits:**\r\n- Natural chat flow\r\n- Clear role separation\r\n- Easy to read and maintain\r\n\r\n### 2. Constrained Generation\r\n\r\nGuidance ensures outputs match specified patterns using regex or grammars.\r\n\r\n#### Regex Constraints\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Constrain to valid email format\r\nlm += \"Email: \" + gen(\"email\", regex=r\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\")\r\n\r\n# Constrain to date format (YYYY-MM-DD)\r\nlm += \"Date: \" + gen(\"date\", regex=r\"\\d{4}-\\d{2}-\\d{2}\")\r\n\r\n# Constrain to phone number\r\nlm += \"Phone: \" + gen(\"phone\", regex=r\"\\d{3}-\\d{3}-\\d{4}\")\r\n\r\nprint(lm[\"email\"])  # Guaranteed valid email\r\nprint(lm[\"date\"])   # Guaranteed YYYY-MM-DD format\r\n```\r\n\r\n**How it works:**\r\n- Regex converted to grammar at token level\r\n- Invalid tokens filtered during generation\r\n- Model can only produce matching outputs\r\n\r\n#### Selection Constraints\r\n\r\n```python\r\nfrom guidance import models, gen, select\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Constrain to specific choices\r\nlm += \"Sentiment: \" + select([\"positive\", \"negative\", \"neutral\"], name=\"sentiment\")\r\n\r\n# Multiple-choice selection\r\nlm += \"Best answer: \" + select(\r\n    [\"A) Paris\", \"B) London\", \"C) Berlin\", \"D) Madrid\"],\r\n    name=\"answer\"\r\n)\r\n\r\nprint(lm[\"sentiment\"])  # One of: positive, negative, neutral\r\nprint(lm[\"answer\"])     # One of: A, B, C, or D\r\n```\r\n\r\n### 3. Token Healing\r\n\r\nGuidance automatically \"heals\" token boundaries between prompt and generation.\r\n\r\n**Problem:** Tokenization creates unnatural boundaries.\r\n\r\n```python\r\n# Without token healing\r\nprompt = \"The capital of France is \"\r\n# Last token: \" is \"\r\n# First generated token might be \" Par\" (with leading space)\r\n# Result: \"The capital of France is  Paris\" (double space!)\r\n```\r\n\r\n**Solution:** Guidance backs up one token and regenerates.\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# Token healing enabled by default\r\nlm += \"The capital of France is \" + gen(\"capital\", max_tokens=5)\r\n# Result: \"The capital of France is Paris\" (correct spacing)\r\n```\r\n\r\n**Benefits:**\r\n- Natural text boundaries\r\n- No awkward spacing issues\r\n- Better model performance (sees natural token sequences)\r\n\r\n### 4. Grammar-Based Generation\r\n\r\nDefine complex structures using context-free grammars.\r\n\r\n```python\r\nfrom guidance import models, gen\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\n# JSON grammar (simplified)\r\njson_grammar = \"\"\"\r\n{\r\n    \"name\": \u003Cgen name regex=\"[A-Za-z ]+\" max_tokens=20>,\r\n    \"age\": \u003Cgen age regex=\"[0-9]+\" max_tokens=3>,\r\n    \"email\": \u003Cgen email regex=\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}\" max_tokens=50>\r\n}\r\n\"\"\"\r\n\r\n# Generate valid JSON\r\nlm += gen(\"person\", grammar=json_grammar)\r\n\r\nprint(lm[\"person\"])  # Guaranteed valid JSON structure\r\n```\r\n\r\n**Use cases:**\r\n- Complex structured outputs\r\n- Nested data structures\r\n- Programming language syntax\r\n- Domain-specific languages\r\n\r\n### 5. Guidance Functions\r\n\r\nCreate reusable generation patterns with the `@guidance` decorator.\r\n\r\n```python\r\nfrom guidance import guidance, gen, models\r\n\r\n@guidance\r\ndef generate_person(lm):\r\n    \"\"\"Generate a person with name and age.\"\"\"\r\n    lm += \"Name: \" + gen(\"name\", max_tokens=20, stop=\"\\n\")\r\n    lm += \"\\nAge: \" + gen(\"age\", regex=r\"[0-9]+\", max_tokens=3)\r\n    return lm\r\n\r\n# Use the function\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = generate_person(lm)\r\n\r\nprint(lm[\"name\"])\r\nprint(lm[\"age\"])\r\n```\r\n\r\n**Stateful Functions:**\r\n\r\n```python\r\n@guidance(stateless=False)\r\ndef react_agent(lm, question, tools, max_rounds=5):\r\n    \"\"\"ReAct agent with tool use.\"\"\"\r\n    lm += f\"Question: {question}\\n\\n\"\r\n\r\n    for i in range(max_rounds):\r\n        # Thought\r\n        lm += f\"Thought {i+1}: \" + gen(\"thought\", stop=\"\\n\")\r\n\r\n        # Action\r\n        lm += \"\\nAction: \" + select(list(tools.keys()), name=\"action\")\r\n\r\n        # Execute tool\r\n        tool_result = tools[lm[\"action\"]]()\r\n        lm += f\"\\nObservation: {tool_result}\\n\\n\"\r\n\r\n        # Check if done\r\n        lm += \"Done? \" + select([\"Yes\", \"No\"], name=\"done\")\r\n        if lm[\"done\"] == \"Yes\":\r\n            break\r\n\r\n    # Final answer\r\n    lm += \"\\nFinal Answer: \" + gen(\"answer\", max_tokens=100)\r\n    return lm\r\n```\r\n\r\n## Backend Configuration\r\n\r\n### Anthropic Claude\r\n\r\n```python\r\nfrom guidance import models\r\n\r\nlm = models.Anthropic(\r\n    model=\"claude-sonnet-4-5-20250929\",\r\n    api_key=\"your-api-key\"  # Or set ANTHROPIC_API_KEY env var\r\n)\r\n```\r\n\r\n### OpenAI\r\n\r\n```python\r\nlm = models.OpenAI(\r\n    model=\"gpt-4o-mini\",\r\n    api_key=\"your-api-key\"  # Or set OPENAI_API_KEY env var\r\n)\r\n```\r\n\r\n### Local Models (Transformers)\r\n\r\n```python\r\nfrom guidance.models import Transformers\r\n\r\nlm = Transformers(\r\n    \"microsoft\u002FPhi-4-mini-instruct\",\r\n    device=\"cuda\"  # Or \"cpu\"\r\n)\r\n```\r\n\r\n### Local Models (llama.cpp)\r\n\r\n```python\r\nfrom guidance.models import LlamaCpp\r\n\r\nlm = LlamaCpp(\r\n    model_path=\"\u002Fpath\u002Fto\u002Fmodel.gguf\",\r\n    n_ctx=4096,\r\n    n_gpu_layers=35\r\n)\r\n```\r\n\r\n## Common Patterns\r\n\r\n### Pattern 1: JSON Generation\r\n\r\n```python\r\nfrom guidance import models, gen, system, user, assistant\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\nwith system():\r\n    lm += \"You generate valid JSON.\"\r\n\r\nwith user():\r\n    lm += \"Generate a user profile with name, age, and email.\"\r\n\r\nwith assistant():\r\n    lm += \"\"\"{\r\n    \"name\": \"\"\" + gen(\"name\", regex=r'\"[A-Za-z ]+\"', max_tokens=30) + \"\"\",\r\n    \"age\": \"\"\" + gen(\"age\", regex=r\"[0-9]+\", max_tokens=3) + \"\"\",\r\n    \"email\": \"\"\" + gen(\"email\", regex=r'\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\"', max_tokens=50) + \"\"\"\r\n}\"\"\"\r\n\r\nprint(lm)  # Valid JSON guaranteed\r\n```\r\n\r\n### Pattern 2: Classification\r\n\r\n```python\r\nfrom guidance import models, gen, select\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\n\r\ntext = \"This product is amazing! I love it.\"\r\n\r\nlm += f\"Text: {text}\\n\"\r\nlm += \"Sentiment: \" + select([\"positive\", \"negative\", \"neutral\"], name=\"sentiment\")\r\nlm += \"\\nConfidence: \" + gen(\"confidence\", regex=r\"[0-9]+\", max_tokens=3) + \"%\"\r\n\r\nprint(f\"Sentiment: {lm['sentiment']}\")\r\nprint(f\"Confidence: {lm['confidence']}%\")\r\n```\r\n\r\n### Pattern 3: Multi-Step Reasoning\r\n\r\n```python\r\nfrom guidance import models, gen, guidance\r\n\r\n@guidance\r\ndef chain_of_thought(lm, question):\r\n    \"\"\"Generate answer with step-by-step reasoning.\"\"\"\r\n    lm += f\"Question: {question}\\n\\n\"\r\n\r\n    # Generate multiple reasoning steps\r\n    for i in range(3):\r\n        lm += f\"Step {i+1}: \" + gen(f\"step_{i+1}\", stop=\"\\n\", max_tokens=100) + \"\\n\"\r\n\r\n    # Final answer\r\n    lm += \"\\nTherefore, the answer is: \" + gen(\"answer\", max_tokens=50)\r\n\r\n    return lm\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = chain_of_thought(lm, \"What is 15% of 200?\")\r\n\r\nprint(lm[\"answer\"])\r\n```\r\n\r\n### Pattern 4: ReAct Agent\r\n\r\n```python\r\nfrom guidance import models, gen, select, guidance\r\n\r\n@guidance(stateless=False)\r\ndef react_agent(lm, question):\r\n    \"\"\"ReAct agent with tool use.\"\"\"\r\n    tools = {\r\n        \"calculator\": lambda expr: eval(expr),\r\n        \"search\": lambda query: f\"Search results for: {query}\",\r\n    }\r\n\r\n    lm += f\"Question: {question}\\n\\n\"\r\n\r\n    for round in range(5):\r\n        # Thought\r\n        lm += f\"Thought: \" + gen(\"thought\", stop=\"\\n\") + \"\\n\"\r\n\r\n        # Action selection\r\n        lm += \"Action: \" + select([\"calculator\", \"search\", \"answer\"], name=\"action\")\r\n\r\n        if lm[\"action\"] == \"answer\":\r\n            lm += \"\\nFinal Answer: \" + gen(\"answer\", max_tokens=100)\r\n            break\r\n\r\n        # Action input\r\n        lm += \"\\nAction Input: \" + gen(\"action_input\", stop=\"\\n\") + \"\\n\"\r\n\r\n        # Execute tool\r\n        if lm[\"action\"] in tools:\r\n            result = tools[lm[\"action\"]](lm[\"action_input\"])\r\n            lm += f\"Observation: {result}\\n\\n\"\r\n\r\n    return lm\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = react_agent(lm, \"What is 25 * 4 + 10?\")\r\nprint(lm[\"answer\"])\r\n```\r\n\r\n### Pattern 5: Data Extraction\r\n\r\n```python\r\nfrom guidance import models, gen, guidance\r\n\r\n@guidance\r\ndef extract_entities(lm, text):\r\n    \"\"\"Extract structured entities from text.\"\"\"\r\n    lm += f\"Text: {text}\\n\\n\"\r\n\r\n    # Extract person\r\n    lm += \"Person: \" + gen(\"person\", stop=\"\\n\", max_tokens=30) + \"\\n\"\r\n\r\n    # Extract organization\r\n    lm += \"Organization: \" + gen(\"organization\", stop=\"\\n\", max_tokens=30) + \"\\n\"\r\n\r\n    # Extract date\r\n    lm += \"Date: \" + gen(\"date\", regex=r\"\\d{4}-\\d{2}-\\d{2}\", max_tokens=10) + \"\\n\"\r\n\r\n    # Extract location\r\n    lm += \"Location: \" + gen(\"location\", stop=\"\\n\", max_tokens=30) + \"\\n\"\r\n\r\n    return lm\r\n\r\ntext = \"Tim Cook announced at Apple Park on 2024-09-15 in Cupertino.\"\r\n\r\nlm = models.Anthropic(\"claude-sonnet-4-5-20250929\")\r\nlm = extract_entities(lm, text)\r\n\r\nprint(f\"Person: {lm['person']}\")\r\nprint(f\"Organization: {lm['organization']}\")\r\nprint(f\"Date: {lm['date']}\")\r\nprint(f\"Location: {lm['location']}\")\r\n```\r\n\r\n## Best Practices\r\n\r\n### 1. Use Regex for Format Validation\r\n\r\n```python\r\n# ✅ Good: Regex ensures valid format\r\nlm += \"Email: \" + gen(\"email\", regex=r\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\")\r\n\r\n# ❌ Bad: Free generation may produce invalid emails\r\nlm += \"Email: \" + gen(\"email\", max_tokens=50)\r\n```\r\n\r\n### 2. Use select() for Fixed Categories\r\n\r\n```python\r\n# ✅ Good: Guaranteed valid category\r\nlm += \"Status: \" + select([\"pending\", \"approved\", \"rejected\"], name=\"status\")\r\n\r\n# ❌ Bad: May generate typos or invalid values\r\nlm += \"Status: \" + gen(\"status\", max_tokens=20)\r\n```\r\n\r\n### 3. Leverage Token Healing\r\n\r\n```python\r\n# Token healing is enabled by default\r\n# No special action needed - just concatenate naturally\r\nlm += \"The capital is \" + gen(\"capital\")  # Automatic healing\r\n```\r\n\r\n### 4. Use stop Sequences\r\n\r\n```python\r\n# ✅ Good: Stop at newline for single-line outputs\r\nlm += \"Name: \" + gen(\"name\", stop=\"\\n\")\r\n\r\n# ❌ Bad: May generate multiple lines\r\nlm += \"Name: \" + gen(\"name\", max_tokens=50)\r\n```\r\n\r\n### 5. Create Reusable Functions\r\n\r\n```python\r\n# ✅ Good: Reusable pattern\r\n@guidance\r\ndef generate_person(lm):\r\n    lm += \"Name: \" + gen(\"name\", stop=\"\\n\")\r\n    lm += \"\\nAge: \" + gen(\"age\", regex=r\"[0-9]+\")\r\n    return lm\r\n\r\n# Use multiple times\r\nlm = generate_person(lm)\r\nlm += \"\\n\\n\"\r\nlm = generate_person(lm)\r\n```\r\n\r\n### 6. Balance Constraints\r\n\r\n```python\r\n# ✅ Good: Reasonable constraints\r\nlm += gen(\"name\", regex=r\"[A-Za-z ]+\", max_tokens=30)\r\n\r\n# ❌ Too strict: May fail or be very slow\r\nlm += gen(\"name\", regex=r\"^(John|Jane)$\", max_tokens=10)\r\n```\r\n\r\n## Comparison to Alternatives\r\n\r\n| Feature | Guidance | Instructor | Outlines | LMQL |\r\n|---------|----------|------------|----------|------|\r\n| Regex Constraints | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |\r\n| Grammar Support | ✅ CFG | ❌ No | ✅ CFG | ✅ CFG |\r\n| Pydantic Validation | ❌ No | ✅ Yes | ✅ Yes | ❌ No |\r\n| Token Healing | ✅ Yes | ❌ No | ✅ Yes | ❌ No |\r\n| Local Models | ✅ Yes | ⚠️ Limited | ✅ Yes | ✅ Yes |\r\n| API Models | ✅ Yes | ✅ Yes | ⚠️ Limited | ✅ Yes |\r\n| Pythonic Syntax | ✅ Yes | ✅ Yes | ✅ Yes | ❌ SQL-like |\r\n| Learning Curve | Low | Low | Medium | High |\r\n\r\n**When to choose Guidance:**\r\n- Need regex\u002Fgrammar constraints\r\n- Want token healing\r\n- Building complex workflows with control flow\r\n- Using local models (Transformers, llama.cpp)\r\n- Prefer Pythonic syntax\r\n\r\n**When to choose alternatives:**\r\n- Instructor: Need Pydantic validation with automatic retrying\r\n- Outlines: Need JSON schema validation\r\n- LMQL: Prefer declarative query syntax\r\n\r\n## Performance Characteristics\r\n\r\n**Latency Reduction:**\r\n- 30-50% faster than traditional prompting for constrained outputs\r\n- Token healing reduces unnecessary regeneration\r\n- Grammar constraints prevent invalid token generation\r\n\r\n**Memory Usage:**\r\n- Minimal overhead vs unconstrained generation\r\n- Grammar compilation cached after first use\r\n- Efficient token filtering at inference time\r\n\r\n**Token Efficiency:**\r\n- Prevents wasted tokens on invalid outputs\r\n- No need for retry loops\r\n- Direct path to valid outputs\r\n\r\n## Resources\r\n\r\n- **Documentation**: https:\u002F\u002Fguidance.readthedocs.io\r\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fguidance-ai\u002Fguidance (18k+ stars)\r\n- **Notebooks**: https:\u002F\u002Fgithub.com\u002Fguidance-ai\u002Fguidance\u002Ftree\u002Fmain\u002Fnotebooks\r\n- **Discord**: Community support available\r\n\r\n## See Also\r\n\r\n- `references\u002Fconstraints.md` - Comprehensive regex and grammar patterns\r\n- `references\u002Fbackends.md` - Backend-specific configuration\r\n- `references\u002Fexamples.md` - Production-ready examples\r\n",{"name":5,"author":51,"license":15,"version":52,"metadata":53,"platforms":65,"description":7,"dependencies":66},"Orchestra Research","1.0.0",{"hermes":54},{"tags":55},[56,57,58,59,60,61,62,63,64],"Prompt Engineering","Guidance","Constrained Generation","Structured Output","JSON Validation","Grammar","Microsoft Research","Format Enforcement","Multi-Step Workflows",[45,36,41],[5,67],"transformers","main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002F4b\u002F4b4b976a070b1462bab0844eac131501a7be8cf42c3279eb6a9b3eae8618951c",0,"https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills","https:\u002F\u002Fgithub.com\u002Fzapabob","The Open University of JAPAN　2019-now\r\n\r\nTokyo University of Science　2007-2010","2026-10-26 16:29:01",{"source":8,"skillName":5,"commands":77,"prompt":87,"zipAvailable":88},[78,81,84],{"tool":79,"command":80},"npx","npx skills add zapabob\u002FSkills --skill guidance",{"tool":82,"command":83},"bunx","bunx skills add zapabob\u002FSkills --skill guidance",{"tool":85,"command":86},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill guidance","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F4b\u002F4b4b976a070b1462bab0844eac131501a7be8cf42c3279eb6a9b3eae8618951c\u002FSKILL.md",true,[90,96,100,104,108],{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"steps\u002Fstep-01-gather-context.md","REFERENCE","参考文档",6481,"https:\u002F\u002Fgithub.com\u002Fdanielmtt9\u002Fbloomcornerkiddies\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fbmad-code-review\u002Fsteps\u002Fstep-01-gather-context.md",{"path":97,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":98,"sourceHtmlUrl":99},"steps\u002Fstep-02-review.md",2142,"https:\u002F\u002Fgithub.com\u002Fdanielmtt9\u002Fbloomcornerkiddies\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fbmad-code-review\u002Fsteps\u002Fstep-02-review.md",{"path":101,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":102,"sourceHtmlUrl":103},"steps\u002Fstep-03-triage.md",2692,"https:\u002F\u002Fgithub.com\u002Fdanielmtt9\u002Fbloomcornerkiddies\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fbmad-code-review\u002Fsteps\u002Fstep-03-triage.md",{"path":105,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":106,"sourceHtmlUrl":107},"steps\u002Fstep-04-present.md",6366,"https:\u002F\u002Fgithub.com\u002Fdanielmtt9\u002Fbloomcornerkiddies\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fbmad-code-review\u002Fsteps\u002Fstep-04-present.md",{"path":109,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":110,"sourceHtmlUrl":111},"workflow.md",2087,"https:\u002F\u002Fgithub.com\u002Fdanielmtt9\u002Fbloomcornerkiddies\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fbmad-code-review\u002Fworkflow.md",[113,144,178,204,231,248],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":128,"publishedAt":46},"01M6GJTE1GESGGF9K028Y7753E","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fxurl\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[119,122,123],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[115,129,36,130,131,45,41,132,133,134,135,136,137,138,139,140,68,141,142,143],"openclaw","cli","github","official","search","https","social-media","api","Media","hermes","hermes agent","twitter","social","via","post",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":161,"publishedAt":46},"01M6GJT8S1PXQ8WPXT1HSNBWH2","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwriting-plans\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[150,153,156,157,158],{"categoryNo":151,"categoryName":152,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":154,"categoryName":155,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},{"categoryNo":159,"categoryName":160,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000036","内容创作者",[162,163,164,165,36,166,45,167,41,168,169,170,40,171,172,173,174,175,176,177],"writing","writing plans","plans","design","review","workflow","documentation","tasks","development","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":187,"publishedAt":46},"01M6GJST0H5X7WHBJ3BZK0DVKH","whisper","OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwhisper\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[184],{"categoryNo":185,"categoryName":186,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[180,36,45,188,189,190,37,191,192,193,194,195,196,197,198,199,200,201,202,203],"openai","speech","multimodal","ASR","Audio","text","model","speech recognition","use","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":213,"publishedAt":46},"01M6GJSMRQ8EETZTYMG72P70EA","weights-and-biases","W&B: log ML experiments, sweeps, model registry, dashboards.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fweights-and-biases\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[210],{"categoryNo":211,"categoryName":212,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",[214,36,215,216,41,217,218,219,220,221,222,194,223,224,225,226,227,228,229,230],"weights and biases","tensorflow","experiments","pytorch","visualization","registry","real-time","tuning","dashboards","experiment","log","time","Experiment Tracking","Model Registry","Hyperparameter Tuning","WandB","Real-Time Visualization",{"skillNo":232,"name":233,"nameZh":6,"description":234,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":235,"categories":236,"keywords":238,"publishedAt":46},"01M6GJS19KDPRY112JTR326S06","watchers","Poll RSS, JSON APIs, and GitHub with watermark dedup.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[237],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[233,36,239,131,45,240,241,242,243,244,245,138,139,246,247],"terminal","automation","http","monitoring","cron","json","rss","devops","with",{"skillNo":249,"name":250,"nameZh":6,"description":251,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":252,"categories":253,"keywords":256,"publishedAt":46},"01M6GJRHJD2A6Q830SWF9W48BC","serving-llms-vllm","vLLM: high-throughput LLM serving, OpenAI API, quantization.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fvllm\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[254,255],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},[257,258,259,45,43,188,260,261,262,37,263,136,264,265,266,267,268,269,270,271],"llms","vLLM","serving llms vllm","openai api","tensor","Inference Serving","Production","llm serving","High Throughput","PagedAttention","Continuous Batching","Quantization","Tensor Parallelism","high-throughput","throughput"]