Categorizing news headlines is a common task in content management and recommendation systems. This example demonstrates how to use ControlFlow to quickly build a headline classifier that categorizes news into predefined categories, showcasing the framework’s ability to handle classification tasks with minimal code.

Code

The following code creates a function that classifies a given news headline into one of five predefined categories. It uses ControlFlow’s task running feature and leverages the power of language models to perform the classification.

import controlflow as cf

classifier = cf.Agent(model="openai/gpt-4o-mini")

def classify_news(headline: str) -> str:
    return cf.run(
        "Classify the news headline into the most appropriate category",
        agents=[classifier],
        result_type=["Politics", "Technology", "Sports", "Entertainment", "Science"],
        context={"headline": headline},
    )

Now we can use this function to classify news headlines:

Key concepts

This implementation showcases several important ControlFlow features that enable quick development of classification tools:

  1. Agents: We create an agent with a specific LLM model (GPT-4o mini) to perform the headline classification.

    classifier = cf.Agent(model="openai/gpt-4o-mini")
    
  2. Result types: We use a list of strings as the result_type to constrain the output to one of the predefined categories. This ensures that the classification result is always one of the specified options.

    result_type=["Politics", "Technology", "Sports", "Entertainment", "Science"]
    
  3. Context passing: The context parameter is used to pass the input headline to the task.

    context={"headline": headline}
    

By leveraging these ControlFlow features, we can create a powerful headline classifier with just a few lines of code. This example demonstrates how ControlFlow simplifies the process of building and deploying classification tools, making it easier for developers to incorporate advanced language processing capabilities into their applications.

The use of predefined categories in the result_type is particularly noteworthy, as it allows us to constrain the model’s output to a specific set of options. This is useful in many real-world scenarios where we need to map inputs to a fixed set of categories.