
    D_i                        S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	J
r
  SSKJr  SSKJr  SSKJrJrJrJr   " S	 S
\\5      r " S S\5      r " S S\5      r " S S\SS9r " S S\5      r " S S\5      rg)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                  h    \ rS rSrSr\S	S j5       r\S
S j5       r\SS j5       r	\SS j5       r
Srg)PromptValue   zBase abstract class for inputs to any language model.

`PromptValues` can be converted to both LLM (pure text-generation) inputs and
chat model inputs.
c                    g)z,Return `True` as this class is serializable.T clss    V/home/james-whalen/.local/lib/python3.13/site-packages/langchain_core/prompt_values.pyis_lc_serializablePromptValue.is_lc_serializable   s         c                
    / SQ$ )z]Get the namespace of the LangChain object.

Returns:
    `["langchain", "schema", "prompt"]`
)	langchainschemapromptr   r   s    r   get_lc_namespacePromptValue.get_lc_namespace$   s
     10r   c                    g)zReturn prompt value as string.Nr   selfs    r   	to_stringPromptValue.to_string-       r   c                    g)$Return prompt as a list of messages.Nr   r!   s    r   to_messagesPromptValue.to_messages1   r%   r   r   N)returnboolr*   z	list[str]r*   strr*   zlist[BaseMessage])__name__
__module____qualname____firstlineno____doc__classmethodr   r   r   r#   r(   __static_attributes__r   r   r   r   r      sW       1 1 - - 3 3r   r   c                  \    \ rS rSr% SrS\S'    S rS\S'   \SS j5       rSS jr	SS	 jr
S
rg)StringPromptValue6   zString prompt value.r.   textzLiteral['StringPromptValue']typec                
    / SQ$ )z\Get the namespace of the LangChain object.

Returns:
    `["langchain", "prompts", "base"]`
)r   promptsbaser   r   s    r   r   "StringPromptValue.get_lc_namespace=   
     0/r   c                    U R                   $ zReturn prompt as string.)r:   r!   s    r   r#   StringPromptValue.to_stringF   s    yyr   c                *    [        U R                  S9/$ )zReturn prompt as messages.content)r   r:   r!   s    r   r(   StringPromptValue.to_messagesJ   s    TYY/00r   r   Nr,   r-   r/   )r0   r1   r2   r3   r4   __annotations__r;   r5   r   r#   r(   r6   r   r   r   r8   r8   6   s4    
I)<D
&<0 01r   r8   c                  N    \ rS rSr% SrS\S'    S
S jrSS jr\SS j5       r	Sr
g	)ChatPromptValueO   zJChat prompt value.

A type of a prompt value that is built from messages.
zSequence[BaseMessage]messagesc                ,    [        U R                  5      $ rB   )r   rL   r!   s    r   r#   ChatPromptValue.to_stringX   s     //r   c                ,    [        U R                  5      $ )r'   )listrL   r!   s    r   r(   ChatPromptValue.to_messages\   s    DMM""r   c                
    / SQ$ )z\Get the namespace of the LangChain object.

Returns:
    `["langchain", "prompts", "chat"]`
)r   r=   chatr   r   s    r   r    ChatPromptValue.get_lc_namespace`   r@   r   r   Nr-   r/   r,   )r0   r1   r2   r3   r4   rH   r#   r(   r5   r   r6   r   r   r   rJ   rJ   O   s0    
 $#0# 0 0r   rJ   c                  0    \ rS rSr% SrS\S'    S\S'   Srg)	ImageURLj   ao  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.   urlr   N)r0   r1   r2   r3   r4   rH   r6   r   r   r   rV   rV   j   s      +* 
H8r   rV   F)totalc                  H    \ rS rSr% SrS\S'    S rS\S'   SS jrSS jrS	r	g
)ImagePromptValue   zImage prompt value.rV   	image_urlzLiteral['ImagePromptValue']r;   c                :    U R                   R                  SS5      $ )z$Return prompt (image URL) as string.rY    )r^   getr!   s    r   r#   ImagePromptValue.to_string   s    ~~!!%,,r   c                @    [        [        SU R                  5      /S9/$ )z&Return prompt (image URL) as messages.dictrE   )r   r   r^   r!   s    r   r(   ImagePromptValue.to_messages   s    d64>>&B%CDEEr   r   Nr-   r/   )
r0   r1   r2   r3   r4   rH   r;   r#   r(   r6   r   r   r   r\   r\      s$    (:D
%:-Fr   r\   c                  4    \ rS rSr% SrS\S'    S rS\S'   Srg)	ChatPromptValueConcrete   ziChat prompt value which explicitly lists out the message types it accepts.

For use in external schemas.
zSequence[AnyMessage]rL   z"Literal['ChatPromptValueConcrete']r;   r   N)r0   r1   r2   r3   r4   rH   r;   r6   r   r   r   rg   rg      s    
 #"/HD
,Hr   rg   N)r4   
__future__r   abcr   r   collections.abcr   typingr   r   typing_extensionsr	    langchain_core.load.serializabler
   langchain_core.messagesr   r   r   r   r   r8   rJ   rV   r\   rg   r   r   r   <module>rp      sx    # # $   ' 9 3, 3<1 120k 069y 98F{ F 	Io 	Ir   