
    Zǻi,
                        d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d	dZ eee         Z	 	 d
	 	 	 	 	 	 	 ddZy)    )annotationsN)UnionOptional)TypeAdapter)MessageHistory)
LLMMessagec                0    | D ]  }|d   dk(  s|d   c S  y)zFExtracts the system instruction from a list of LLMMessage, if present.rolesystemcontentN )messagesmessages     V/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/neo4j_graphrag/llm/utils.py system_instruction_from_messagesr      s-     &6?h&9%%&     c                   |r3t        |t              r|j                  }nt        j	                  |      }ng }|Ct        |      t        j                  dt               n|j                  dt        d|             t        | t              r|j                  t        d|              |S t        | t              r|j                  |        |S |j                  | j                         |S )zRConverts legacy prompt and message history inputs to a unified list of LLMMessage.z`system_instruction provided but ignored as the message history already contains a system messager   r   )r
   r   user)
isinstancer   r   llm_messages_adaptervalidate_pythonr   warningswarnUserWarninginsertr   strappendlistextend)promptmessage_historysystem_instructionr   s       r   legacy_inputs_to_messagesr#   $   s     o~6&//H+;;OLH%+H5AMMr
 OO!. &#
?@&$OOFOO$Or   )r   list[LLMMessage]returnz
str | None)NN)r    z,Union[str, list[LLMMessage], MessageHistory]r!   z1Optional[Union[list[LLMMessage], MessageHistory]]r"   zOptional[str]r%   r$   )
__future__r   r   typingr   r   pydanticr   neo4j_graphrag.message_historyr   neo4j_graphrag.typesr   r   r   r   r#   r   r   r   <module>r+      sc    #  "   9 + #4
#34 
 JN(,$8$F$ &$ 	$r   