def experimental_function(feature_name: str) -> Callable[[F], F]:
    """Decorator to mark a function as experimental.

    The message displayed will be {feature_name} is experimental and may change with future versions.

    Args:
        feature_name (str): The name of the experimental feature.

    Returns:
        The decorated function.
    """

    def decorator(func: Callable):

        @functools.wraps(func)
        def wrapper(*args: Any, **kwargs: Any):
            warnings.warn(ExperimentalWarning(feature_name))
            return func(*args, **kwargs)

        return cast(F, wrapper)

    return decorator
Decorator to mark a function as experimental.

    The message displayed will be {feature_name} is experimental and may change with future versions.

    Args:
        feature_name (str): The name of the experimental feature.

    Returns:
        The decorated function.
    
llmfoundry/utils/warnings.py