o
    پi                     @   s   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	m
Z
 ee
 fdede	fddZeee
 fdede	fd	d
Zeee
 fdedede	fddZdS )    )singledispatch)SequenceGeneratorAdapterVisionSequenceGeneratorAdapter)OpenAITransformersVision)Samplermultinomial	regex_strsamplerc                 C   &   ddl m} ||| jd}t| ||S )a  Generate structured text in the language of a regular expression.

    Parameters
    ----------
    model:
        An instance of `Transformer` that represents a model from the
        `transformers` library.
    regex_str:
        The regular expression that the output must follow.
    sampler:
        The sampling algorithm to use to generate token ids from the logits
        distribution.

    Returns
    -------
    A `SequenceGeneratorAdapter` instance that generates text constrained by the
    regular expression.

    r   RegexLogitsProcessor	tokenizer)outlines.processorsr   r   r   modelr	   r
   r   logits_processor r   K/home/ubuntu/.local/lib/python3.10/site-packages/outlines/generate/regex.pyregex   s   r   c                 C   r   )Nr   r   r   )r   r   r   r   r   r   r   r   regex_vision&   s   r   r   c                 C   s   t d)NzdCannot use regex-structured generation with an OpenAI modeldue to the limitations of the OpenAI API.)NotImplementedError)r   r	   r
   r   r   r   regex_openai2   s   r   N)	functoolsr   outlines.generate.apir   r   outlines.modelsr   r   outlines.samplersr   r   strr   registerr   r   r   r   r   r   <module>   s,    