
    f3fi                        d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZmZmZ  G d	 d
ee      Z G d de      Z G d de      Z G d ded      Z G d de      Z G d de      Zy)z**Prompt values** for language model prompts.

Prompt values are used to represent different pieces of prompts.
They can be used to represent text, images, or chat message pieces.
    )annotations)ABCabstractmethod)Sequence)Literalcast)	TypedDict)Serializable)
AnyMessageBaseMessageHumanMessageget_buffer_stringc                  X    e Zd ZdZedd       Zedd       Zed	d       Zed
d       Z	y)PromptValuezBase abstract class for inputs to any language model.

    `PromptValues` can be converted to both LLM (pure text-generation) inputs and
    chat model inputs.
    c                     y)z,Return `True` as this class is serializable.T clss    Z/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_core/prompt_values.pyis_lc_serializablezPromptValue.is_lc_serializable   s         c                
    g dS )zuGet the namespace of the LangChain object.

        Returns:
            `["langchain", "schema", "prompt"]`
        )	langchainschemapromptr   r   s    r   get_lc_namespacezPromptValue.get_lc_namespace$   s
     10r   c                     y)zReturn prompt value as string.Nr   selfs    r   	to_stringzPromptValue.to_string-       r   c                     y)$Return prompt as a list of messages.Nr   r   s    r   to_messageszPromptValue.to_messages1   r!   r   N)returnboolr%   z	list[str]r%   strr%   zlist[BaseMessage])
__name__
__module____qualname____doc__classmethodr   r   r   r    r$   r   r   r   r   r      sW       1 1 - - 3 3r   r   c                  N    e Zd ZU dZded<   	 d Zded<   ed
d       ZddZddZ	y	)StringPromptValuezString prompt value.r)   textzLiteral['StringPromptValue']typec                
    g dS )ztGet the namespace of the LangChain object.

        Returns:
            `["langchain", "prompts", "base"]`
        )r   promptsbaser   r   s    r   r   z"StringPromptValue.get_lc_namespace=   
     0/r   c                    | j                   S zReturn prompt as string.)r2   r   s    r   r    zStringPromptValue.to_stringF   s    yyr   c                0    t        | j                        gS )zReturn prompt as messages.content)r   r2   r   s    r   r$   zStringPromptValue.to_messagesJ   s    TYY/00r   Nr'   r(   r*   )
r+   r,   r-   r.   __annotations__r3   r/   r   r    r$   r   r   r   r1   r1   6   s4    
I)<D
&<0 01r   r1   c                  @    e Zd ZU dZded<   	 ddZd	dZed
d       Zy)ChatPromptValuezRChat prompt value.

    A type of a prompt value that is built from messages.
    zSequence[BaseMessage]messagesc                ,    t        | j                        S r9   )r   r@   r   s    r   r    zChatPromptValue.to_stringX   s     //r   c                ,    t        | j                        S )r#   )listr@   r   s    r   r$   zChatPromptValue.to_messages\   s    DMM""r   c                
    g dS )ztGet the namespace of the LangChain object.

        Returns:
            `["langchain", "prompts", "chat"]`
        )r   r5   chatr   r   s    r   r   z ChatPromptValue.get_lc_namespace`   r7   r   Nr(   r*   r'   )	r+   r,   r-   r.   r=   r    r$   r/   r   r   r   r   r?   r?   O   s0    
 $#0# 0 0r   r?   c                  (    e Zd ZU dZded<   	 ded<   y)ImageURLa  Image URL for multimodal model inputs (OpenAI format).

    Represents the inner `image_url` object in OpenAI's Chat Completion API format. This
    is used by `ImagePromptTemplate` and `ChatPromptTemplate`.

    See Also:
        `ImageContentBlock`: LangChain's provider-agnostic image format used in message
        content blocks. Use `ImageContentBlock` when working with the standardized
        message format across different providers.

    Note:
        The `detail` field values are not validated locally. Invalid values
        will be rejected by the downstream API, allowing new valid values to
        be used without requiring a LangChain update.
    zLiteral['auto', 'low', 'high']detailr)   urlN)r+   r,   r-   r.   r=   r   r   r   rG   rG   j   s      +* 
H8r   rG   F)totalc                  <    e Zd ZU dZded<   	 d Zded<   d	dZd
dZy)ImagePromptValuezImage prompt value.rG   	image_urlzLiteral['ImagePromptValue']r3   c                :    | j                   j                  dd      S )z$Return prompt (image URL) as string.rI    )rM   getr   s    r   r    zImagePromptValue.to_string   s    ~~!!%,,r   c                F    t        t        d| j                        g      gS )z&Return prompt (image URL) as messages.dictr;   )r   r   rM   r   s    r   r$   zImagePromptValue.to_messages   s    d64>>&B%CDEEr   Nr(   r*   )r+   r,   r-   r.   r=   r3   r    r$   r   r   r   rL   rL      s$    (:D
%:-Fr   rL   c                  ,    e Zd ZU dZded<   	 d Zded<   y)ChatPromptValueConcretezqChat prompt value which explicitly lists out the message types it accepts.

    For use in external schemas.
    zSequence[AnyMessage]r@   z"Literal['ChatPromptValueConcrete']r3   N)r+   r,   r-   r.   r=   r3   r   r   r   rT   rT      s    
 #"/HD
,Hr   rT   N)r.   
__future__r   abcr   r   collections.abcr   typingr   r   typing_extensionsr	    langchain_core.load.serializabler
   langchain_core.messagesr   r   r   r   r   r1   r?   rG   rL   rT   r   r   r   <module>r\      sx    # # $   ' 9 3, 3<1 120k 069y 98F{ F 	Io 	Ir   