# Prompt Registration Guide
Source: https://docs.genguardx.ai/register-and-refine/examples/intent-classification-pipeline-registration/prompt/
Markdown: https://docs.genguardx.ai/register-and-refine/examples/intent-classification-pipeline-registration/prompt/index.md
Description: Register an intent classification prompt in GGX by defining prompt metadata, template variables, structured instructions, examples, and test cases.
This guide covers how to register prompts on the GGX, using an **Intent Classification Prompt** as a working example.

If you are new to Prompts, then this doc might help you understanding what they are and how do they work -> [Prompts](../../../inventory-management/prompts/)

---

## Registration Steps

### Step 1. Navigate to Prompt Registry

Go to **GenAI Studio → Prompt Registry** and click the **Create** button.

### Step 2. Fill in Basic Information

**Example for Intent Classification:**

![alt text](prompt-description.png)

**Basic Information** fields help organize and identify your prompt:

- **Description:** Clear explanation of what the prompt does and its purpose
- **Group:** Category for organizing similar prompts (e.g., "Existing Customer Credit Card Related Prompts")
- **Permissible Purpose:** Approved use cases and business scenarios for this prompt
- **Task Type:** Classification of the prompt's function (e.g., "Classification" for intent detection)
- **Prompt Type:** Format of the prompt (e.g., "System Instruction" for system-level prompts)
- **Prompt Elements:** Optional tags or metadata for additional categorization

### Step 3. Configure Prompt Template

![alt text](prompt-template.png)

**Alias:** `customer_intent_classification_prompt`

- A Python variable name to reference this prompt in pipelines

#### Example Prompt Template

The **Prompt Template** is where you write the actual instructions for the LLM:

- Use `{}` placeholders for dynamic variables (e.g., `{customer_utterance}`)
- Write clear, structured instructions for the model to follow
- Include examples to guide the model's behavior
- Define expected output format (e.g., JSON schema)

**Example Prompt Template for Intent Classification:**

````markdown
# PERSONA & TONE

You are a trusted, efficient, and security-conscious digital assistant,
specialized in handling banking-related queries for existing customers
of BankX.

Maintain a tone that is:

- Professional: Clear, formal, and polite
- Concise: Direct answers without filler
- Data-driven: Never guess; respond only based on verified data
- English only

# GOAL

Accurately predict customer intent from a predefined list of possible intents.

# TASK INSTRUCTIONS:

### Step 1: Review Intent Definitions

Thoroughly understand the predefined list of intents.

### Step 2: Pre-Defined List of Intents

#### ACTIVATE CARD

- Definition: Request to activate a newly issued card
- Examples:
  • "How do I activate my new debit card?"
  • "Activate my credit card now."

#### BLOCK CARD

- Definition: Request to block lost, stolen, or compromised card
- Examples:
  • "Block my credit card immediately."
  • "I lost my debit card, can you block it?"

#### CARD DETAILS

- Definition: Inquiry about card information
- Examples:
  • "How many cards do I have?"
  • "What is the name on my card?"

#### CHECK CARD ANNUAL FEE

- Definition: Inquiry about annual fees
- Examples:
  • "What's the annual fee for my credit card?"
  • "How much is my card's yearly charge?"

#### CHECK CURRENT BALANCE ON CARD

- Definition: Inquiry about available balance
- Examples:
  • "What's my credit card balance?"
  • "How much money is on my debit card?"

### Step 3: Disambiguate and Summarize Customer Utterance

- Overlook grammatical/spelling errors
- Ignore PII (name, age, gender, personal data)
- Focus on main intention in long sentences

### Step 4: Mapping Query to Intent

- Map to most suitable intent from predefined list
- Ensure only one intent is chosen
- Recheck classification is in predefined list

### Step 5: Schema Compliance

OUTPUT FORMAT:

```json
{{"classified_intent": "str"}}
```

# EXAMPLE SCENARIOS:

Example 1:
Input: "I need to activate my new credit card."

    REASONING STEPS:
    - Review intent definitions
    - Understand all available intents
    - No disambiguation needed (clear query)
    - Maps to "ACTIVATE CARD" intent
    - Output in JSON format

    Output:

```json
    {{"classified_intent": "ACTIVATE CARD"}}
```

# Customer Query

Query: {customer_utterance}
````

#### Define Arguments

Arguments are inputs that get passed into the prompt template.

Click **+ Add Argument** to add:

| Alias          | Type   | Is Optional | Default Value |
| -------------- | ------ | ----------- | ------------- |
| `user_message` | String | ☐ No        | -             |

**Note:** Use `{customer_utterance}` in the template and map it from `user_message` in Prompt Creation Logic.

### Step 4. Write Prompt Creation Logic

**Prompt Creation Logic** allows you to programmatically process arguments before they're inserted into the template. This is useful for:

- Formatting complex data structures
- Generating dynamic content (like the intent list)
- Applying conditional logic based on inputs
- Validating or transforming user inputs

**Example - Formatting Intent Definitions:**

![alt text](prompt-creation.png)

```python
intent_definitions = [
    {
        "Intent": "ACTIVATE CARD",
        "Definition": "Request to activate a newly issued card",
        "Examples": [
            "How do I activate my new debit card?",
            "Activate my credit card now.",
        ],
    },
    {
        "Intent": "BLOCK CARD",
        "Definition": "Request to block a lost, stolen, or compromised card",
        "Examples": [
            "Block my credit card immediately.",
            "I lost my debit card, can you block it?",
        ],
    },
    {
        "Intent": "CARD DETAILS",
        "Definition": "Inquiry about card information",
        "Examples": [
            "How many cards do I have?",
            "What is the name on my card?",
        ],
    },
    {
        "Intent": "CHECK CARD ANNUAL FEE",
        "Definition": "Inquiry about annual fees",
        "Examples": [
            "What's the annual fee for my credit card?",
            "How much is my card's yearly charge?",
        ],
    },
    {
        "Intent": "CHECK CURRENT BALANCE ON CARD",
        "Definition": "Inquiry about available balance",
        "Examples": [
            "What's my credit card balance?",
            "How much money is on my debit card?",
        ],
    },
]

def get_intent_info(data_list):
    """Format intent definitions into readable text"""
    formatted_list = []
    intent_number = 1

    for item in data_list:
        formatted_list.append(f"#### {intent_number}. {item['Intent'].upper()}")
        formatted_list.append(f"- Definition: {item['Definition']}")
        formatted_list.append(f"- Examples:")
        for example in item["Examples"]:
            formatted_list.append(f"  • {example}")
        formatted_list.append("")  # Empty line between intents
        intent_number += 1

    return "\n".join(formatted_list)

# Fill in the prompt template
return prompt.format(
    customer_utterance=user_message,
    list_of_intents=get_intent_info(intent_definitions)
)
```

**What This Does:**

1. Defines 5 card-related intent definitions with examples
2. Formats them into a structured, numbered list
3. Fills in `{customer_utterance}` and `{list_of_intents}` placeholders

### Step 5. Save the Prompt

Click **Create** to register the prompt.

The prompt is now:

- Available in the Prompt Registry
- Usable in pipelines and other objects

### Analyze and Improve the Prompt using GGX Capability

After saving the prompt, you can test and refine it directly within **GenAI Studio**:

- **🔍 Analyze Prompt:**  
  Click the **Analyze Prompt** button to evaluate how your prompt behaves with different inputs.  
  This helps you confirm that argument mappings, placeholders, and output formats are working correctly.

- **✨ Improve with AI:**  
  Use the **Improve with AI** button to automatically optimize your prompt.  
  This provides AI-generated suggestions to enhance clarity, tone, and structure — helping improve prompt performance and consistency.

---

## Using Prompts in Pipelines

Once registered, prompts can be used in downstream applications:

```python
# Reference the prompt in pipeline code
intent_result = customer_intent_classification_prompt(
    user_message=user_input
)

# Access the classified intent
classified_intent = intent_result["classified_intent"]

# Use in downstream logic
if classified_intent == "ACTIVATE CARD":
    # Handle card activation
    pass
elif classified_intent == "BLOCK CARD":
    # Handle card blocking
    pass
```

---

## Next Steps

After registering your prompt:

1. **Register a model** - If you haven't already, register the LLM to use with this prompt
2. **Build a pipeline** - Combine your prompt with a model and other resources to create a use-case specific pipeline. 

---

## Related Documentation

- [Model Registration Guide](../../model/) - Register LLM models to use with prompts

---