Skip to content

irthomasthomas/classifai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Classifai

Classifai is a powerful and user-friendly command-line tool for AI-powered classification tasks. It leverages the capabilities of large language models to provide accurate and efficient classification of various types of content.

Features

  • Easy-to-use command-line interface
  • Supports multiple classification categories
  • Utilizes advanced language models for high accuracy
  • Customizable prompts and examples
  • Supports both OpenAI and OpenRouter models

Installation

pip install pipx
pipx install classifai

Usage Examples

  1. Multiple classification with Examples:

    classifai  'news.ycombinator.com' 'facebook.com' 'ai.meta.com' \
    --classes 'signal' 'noise' 'neutral' \
    --examples "github.com:signal" "arxiv.org:signal" "instagram.com:noise" \
    "pintrest.com:noise" "anthropic.ai:signal" "twitter.com:noise" \
    --model openrouter/openai/gpt-4-0314
    
    [
       {
          "content": "news.ycombinator.com",
          "classification": "signal",
          "score": 1.0
       },
       {
          "content": "facebook.com",
          "classification": "noise",
          "score": 1.0
       },
       {
          "content": "ai.meta.com",
          "classification": "signal",
          "score": 1.0
       }
    ]
  2. Terminal commands classification:

    'df -h' 'chown -R user:user /' -c 'safe' 'danger' 'neutral' -e "ls:safe" "rm:danger" "echo:neutral" --m gpt-4o-mini
    
    [
       {
          "content": "df -h",
          "classification": "safe",
          "score": 1.0
       },
       {
          "content": "chown -R user:user /",
          "classification": "danger",
          "score": 1.0
       }
    ]
  3. Classify a tweet

    classifai $tweet --classes 'AI' 'ASI' 'AGI' -m gpt-4o-mini
    [
       {
          "content": "Superintelligence is within reach.\n\nBuilding safe superintelligence (SSI) is the most important technical problem of our\u200b\u200b time.\n\nWe've started the world\u2019s first straight-shot SSI lab, with one goal and one product: a safe superintelligence.",
          "classification": "ASI",
          "score": 1.0
       }
    ]
    classifai $tweet --classes 'PROGRAMING' 'MACHINE-LEARNING' -m gpt-4o-mini
    [
    {
       "content": "Superintelligence is within reach.\n\nBuilding safe superintelligence (SSI) is the most important technical problem of our\u200b\u200b time.\n\nWe've started the world\u2019s first straight-shot SSI lab, with one goal and one product: a safe superintelligence.",
       "classification": "MACHINE-LEARNING",
       "score": 0.833334466588825
    }
    ]

Advanced scripts

Acting on the classification

class-tweet() {
    local tweet="$1"
    local threshold=0.6
    local class="MACHINE-LEARNING"

    result=$(classifai "$tweet" -c 'PROGRAMMING' 'MACHINE-LEARNING' \
    -m openrouter/openai/gpt-4o-mini \
    | jq -r '.[0] | select(.classification == "'"$class"'" and .score > '"$threshold"') | .classification')

    if [ -n "$result" ]; then
        echo "Tweet classified as $class with high confidence. Executing demo..."
        echo "Demo: This is a highly relevant tweet about $class"
    else
        echo "Tweet does not meet classification criteria."
    fi
}

Classifai now supports reading from stdin and writing to stdout, making it easier to use in pipelines and shell scripts.

You can pipe content into classifai:

echo "This is a test sentence" | classifai -c 'positive' 'negative' 'neutral'

Or use heredoc for multiple lines:

cat <<EOF | classifai -c 'tech' 'sports' 'politics' -f simple
AI makes rapid progress
Football season starts soon
New tax policy announced
EOF

By default, classifai outputs JSON, which can be easily parsed by other tools:

echo "OpenAI releases GPT-4" | classifai -c 'tech' 'business' | jq '.[0].class'

For simpler output that's easier to use in shell scripts, use the -f simple option:

echo "Breaking news: earthquake hits city" | classifai -c 'world' 'local' 'sports' -f simple | cut -f2

This will output only the classified class, making it easy to use in conditionals:

if [[  == "world" ]]; then
    echo "This is world news"
fi

These enhancements make classifai more versatile and easier to integrate into complex data processing pipelines and shell scripts.

About

a simple universal classifier using llm logprobs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages