dereklck's picture
Update README.md
528891d verified
|
raw
history blame
8.99 kB
metadata
base_model: unsloth/Llama-3.2-1B-Instruct-bnb-4bit
tags:
  - text-generation-inference
  - transformers
  - unsloth
  - llama
  - gguf
  - ollama
license: apache-2.0
language:
  - en

kubectl Operator Model

This Llama-based model was fine-tuned to generate kubectl commands based on user descriptions. It was trained efficiently using Unsloth and Hugging Face's TRL library.


Model Details

Purpose

The model assists users by:

  • Generating accurate kubectl commands based on natural language descriptions.
  • Providing brief explanations about Kubernetes for general queries.
  • Requesting additional information if the instruction is incomplete or ambiguous.

Intended Users

  • Kubernetes administrators
  • DevOps engineers
  • Developers working with Kubernetes clusters

Training Process

  • Base Model: Unsloth's Llama-3.2-1B-Instruct-bnb-4bit
  • Fine-tuning: Leveraged the Unsloth framework and Hugging Face's TRL library for efficient training.
  • Training Data: Customized dataset focused on Kubernetes operations and kubectl command usage, containing approximately 200 entries.

Features

  • Command Generation: Translates user instructions into executable kubectl commands.
  • Clarification Requests: Politely asks for more details when the instruction is incomplete.
  • Knowledge Base: Provides concise explanations for general Kubernetes concepts.

Usage

Prompt Template

The model uses the following prompt template to generate responses:

You are an AI assistant that helps users with Kubernetes commands and questions.

**Your Behavior Guidelines:**

1. **For clear and complete instructions:**
   - **Provide only** the exact `kubectl` command needed to fulfill the user's request.
   - Do not include extra explanations, placeholders, or context.
   - **Enclose the command within a code block** with `bash` syntax highlighting.

2. **For incomplete or ambiguous instructions:**
   - **Politely ask** the user for the specific missing information.
   - Do **not** provide any commands or placeholders in your response.
   - Respond in plain text, clearly stating what information is needed.

3. **For general Kubernetes questions:**
   - Provide a **concise and accurate explanation**.
   - Do **not** include any commands unless specifically requested.
   - Ensure that the explanation fully addresses the user's question.

**Important Rules:**

- Do **not** generate commands with placeholders like `<pod_name>` or `<resource_name>`.
- Always ensure that commands provided are **valid and executable** as-is.
- If unsure or the instruction is unclear, **ask for clarification** without including any commands.
- Do **not** output any additional text beyond what's necessary.

**Formatting:**

- **Commands**: Use code blocks with `bash` syntax:
  ```bash
  kubectl <command>
  • Clarifications and Explanations: Respond in plain text, politely and clearly.

Instruction:

{instruction}

Response:

{response}


### Parameters

- **Temperature:** `0.3` (controls randomness; lower values make outputs more deterministic)
- **Stop Token:** `</s>` (indicates the end of the assistant's response)

---

### Examples

#### Example 1: Generating a Command

**Instruction:**

Create a namespace called 'development'.


**Response:**

```bash
kubectl create namespace development

Example 2: Handling Ambiguity

Instruction:

Show me logs.

Response:

Which pod's logs would you like to retrieve?

Example 3: Providing Explanations

Instruction:

What is a Deployment in Kubernetes?

Response:

A Deployment provides declarative updates for Pods and ReplicaSets, allowing you to manage your applications by defining the desired state and letting Kubernetes handle the rest.

Deployment with Ollama

Prerequisites

  • Install Ollama on your system.
  • Ensure you have the GGUF model file (e.g., kubectl_operator.Q8_0.gguf).

Steps

  1. Create the Modelfile

    Save the following content as a file named Modelfile:

    FROM kubectl_operator.Q8_0.gguf
    
    SYSTEM "You are an AI assistant that helps users with Kubernetes commands and questions.
    
    **Your Behavior Guidelines:**
    
    1. **For clear and complete instructions:**
       - **Provide only** the exact `kubectl` command needed to fulfill the user's request.
       - Do not include extra explanations, placeholders, or context.
       - **Enclose the command within a code block** with `bash` syntax highlighting.
    
    2. **For incomplete or ambiguous instructions:**
       - **Politely ask** the user for the specific missing information.
       - Do **not** provide any commands or placeholders in your response.
       - Respond in plain text, clearly stating what information is needed.
    
    3. **For general Kubernetes questions:**
       - Provide a **concise and accurate explanation**.
       - Do **not** include any commands unless specifically requested.
       - Ensure that the explanation fully addresses the user's question.
    
    **Important Rules:**
    
    - Do **not** generate commands with placeholders like `<pod_name>` or `<resource_name>`.
    - Always ensure that commands provided are **valid and executable** as-is.
    - If unsure or the instruction is unclear, **ask for clarification** without including any commands.
    - Do **not** output any additional text beyond what's necessary.
    
    **Formatting:**
    
    - **Commands**: Use code blocks with `bash` syntax:
      ```bash
      kubectl <command>
    
    • Clarifications and Explanations: Respond in plain text, politely and clearly."

    PARAMETER --temperature 0.3 PARAMETER --stop "\n"

    TEMPLATE """ You are an AI assistant that helps users with Kubernetes commands and questions.

    Your Behavior Guidelines:

    1. For clear and complete instructions:

      • Provide only the exact kubectl command needed to fulfill the user's request.
      • Do not include extra explanations, placeholders, or context.
      • Enclose the command within a code block with bash syntax highlighting.
    2. For incomplete or ambiguous instructions:

      • Politely ask the user for the specific missing information.
      • Do not provide any commands or placeholders in your response.
      • Respond in plain text, clearly stating what information is needed.
    3. For general Kubernetes questions:

      • Provide a concise and accurate explanation.
      • Do not include any commands unless specifically requested.
      • Ensure that the explanation fully addresses the user's question.

    Important Rules:

    • Do not generate commands with placeholders like <pod_name> or <resource_name>.
    • Always ensure that commands provided are valid and executable as-is.
    • If unsure or the instruction is unclear, ask for clarification without including any commands.
    • Do not output any additional text beyond what's necessary.

    Formatting:

    • Commands: Use code blocks with bash syntax:

      kubectl <command>
      
    • Clarifications and Explanations: Respond in plain text, politely and clearly.


    Instruction:

    {{ .Prompt }}

    Response:

    """

    
    
  2. Create the Model with Ollama

    Open your terminal and run the following command to create the model:

    ollama create kubectl_operator -f Modelfile
    

    This command tells Ollama to create a new model named kubectl_operator using the configuration specified in Modelfile.

  3. Run the Model

    Start interacting with your model:

    ollama run kubectl_operator
    

    This will initiate the model and prompt you for input based on the template provided.


Limitations and Considerations

  • Accuracy: The model may occasionally produce incorrect or suboptimal commands. Always review the output before execution.
  • Hallucinations: In rare cases, the model might generate irrelevant or incorrect information. If the response seems off-topic, consider rephrasing your instruction.
  • Security: Be cautious when executing generated commands, especially in production environments.

Feedback and Contributions

We welcome any comments or participation to improve the model and dataset. If you encounter issues or have suggestions for improvement:

  • GitHub: Unsloth Repository
  • Contact: Reach out to the developer, dereklck, for further assistance.