� ���gM)���ddlZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z m Z mZmZmZmZmZmZddlmZmZddlmZmZddlmZddlmZdd lmZdd l m!Z!dd l"m#Z#dd l$m%Z%m&Z&dd l'm(Z(m)Z)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/ej0ej1e&���ej2e3��Z4e4�5e%d��dede6fd�Z7d�Z8ifde9fd�Z:dS)�N)� BaseModel)�AsyncGenerator� Generator�Iterator)�Depends�FastAPI�File�Form� HTTPException�Request� UploadFile�status)�Response�StreamingResponse)�get_event_call�get_event_emitter)� Functions)�Models)�load_function_module_by_id)� get_tools)� has_access)�SRC_LOG_LEVELS�GLOBAL_LOG_LEVEL)�add_or_update_system_message�get_last_user_message�%prepend_to_first_user_message_content�"openai_chat_chunk_message_template�'openai_chat_completion_message_template)�!apply_model_params_to_body_openai�!apply_model_system_prompt_to_body)�stream�level�MAIN�request�pipe_idc�>�||jjjvr(t|��\}}}||jjj|<n|jjj|}t |d��r:t |d��r*t j|��}|jdi|r|ni��|_|S)N�valves�Valves�) �app�state� FUNCTIONSr�hasattrr�get_function_valves_by_idr(r')r$r%�function_module�_r's �d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/open_webui/functions.py�get_function_module_by_idr27s����g�k�'�1�1�1� :�7� C� C����A�/>�� ��#�G�,�,�!�+�+�5�g�>�����)�)�V�g�o�x�.P�.P�V��4�W�=�=��!7��!7�!U�!U�V�;S�6�6�QS�!U�!U��� ��c ��K�tjdd���}g}|D�]�}t||j��}t |d���r&g} t |j��rItj|j��r|����d{V��}n|���}n|j}n3#t$r&}t� |��g}Yd}~nd}~wwxYwt� d|j�d|����|D]a}|j�d|d��}|d } t |d ��r |j �| ��} d |ji} |�|| d |jd | d ����b��Od di} t� d|j�d|j�d|j �d���|�|j|j d |jd | d ������|S)N�pipeT)� active_only�pipeszget_function_models: function 'z' is a manifold of �.�id�name�type�model�openai)r9r:�object�created�owned_byr5z' is a single pipe { 'id': z , 'name': z })r�get_functions_by_typer2r9r-�callabler7�asyncio�iscoroutinefunction� Exception�log� exception�debugr:r;�append� created_at) r$r7� pipe_modelsr5r/� sub_pipes�e�p� sub_pipe_id� sub_pipe_name� pipe_flags r1�get_function_modelsrREsm���� � +�F�� E� E� E�E��K��;�;��3�G�T�W�E�E�� �?�G� ,� ,�7 ��I� ��O�1�2�2�6��2�?�3H�I�I�<�*9�*?�*?�*A�*A�$A�$A�$A�$A�$A�$A� � �$3�$9�$9�$;�$;� � � /� 5�I���� � � �� � �a� � � �� � � � � � ����� ���� �I�I�Y�$�'�Y�Y�i�Y�Y� � � �� � ��!%��4�4�1�T�7�4�4� � !�&� � ��?�F�3�3�M�'6�';�$L�]�$L�$L�M�#�T�Y�/� ��"�"�)� -�")�#'�?�$,� )� �� � � � � �( ��(�I� �I�I�x�$�'�x�x�W[�W^�x�x�jn�js�x�x�x� � � � � � ��'� �I�%�#�� (�%� �� � � � � �s� A$B.�. C�8C�C�modelsc ���������K�d��dttztzdtfd�}dtfd��dtdtfd��d!�fd� }��d ��}t j|��}��d i�����d g��}��d g��} | �g} d} d} d} d} �ret�fd �dD����rt���} t���} ��dd��} ��dd��} | | ��dd����dd����dd��| | ||j |j |j |jd��|d� }t|| |i|�|��d d���d|d����|d<|rL|jr |j�d <|j����t'�����t)���|�������}t+||��}|j�||�||�����dd��r"�����fd�}t/|��d���S ������d{V��}nG#t0$r:}t2�d|����dd t|��iicYd}~Sd}~wwxYwt7|t.��st7|t��r|St7|t8��r|���S||���d{V��}t;�d |��S)"Nc��ZK�tj|��r|di|���d{V��S|di|��S)Nr))�inspectrD)r5�paramss r1� execute_pipez7generate_function_chat_completion.<locals>.execute_pipe�sO���� � &�t� ,� ,� "��������'�'�'�'�'�'� '��4�>�>�&�>�>� !r3�res�returnc��&K�t|t��r|St|t��r(d�t t|����St|t ��r%d�d�|2���d{V����SdS)N�c��<K�g|3d{V��}t|����6S�N)�str)�.0r!s r1� <listcomp>zRgenerate_function_chat_completion.<locals>.get_message_content.<locals>.<listcomp>�s4����@�@�@�@�@�@�@�@�&�C��K�K�@�@�@�@s�)� isinstancer_r�join�mapr)rYs r1�get_message_contentz>generate_function_chat_completion.<locals>.get_message_content�s����� �c�3� � � ��J� �c�9� %� %� *��7�7�3�s�C�=�=�)�)� )� �c�>� *� *� B��7�7�@�@�C�@�@�@�@�@�@�@�@�@�A�A� A� B� Br3� form_datac��t|t��r|���}d|��}t|t��rdt j|����} |�d��}n#t$rYnwxYw|�d��r|�d�St|d|��}dt j|���d�S)N�data: zutf-8zdata:� r<) rbr�model_dump_json�dict�json�dumps�decoderE� startswithr)rf�lines r1� process_linez7generate_function_chat_completion.<locals>.process_line�s��� �d�I� &� &� #��'�'�)�)�D�"�D�?�?�D� �d�D� !� !� /�.�D�J�t�,�,�.�.�D� ��;�;�w�'�'�D�D��� � � � �D� ���� �?�?�7� #� #� 3��=�=�=� �5�i��6H�$�O�O�D�2�D�J�t�,�,�2�2�2� 2s�A2�2 A?�>A?c�P�|d}d|vr|�dd��\}}|S)Nr<r8�)�split)rfr%r0s r1� get_pipe_idz6generate_function_chat_completion.<locals>.get_pipe_id�s1���G�$�� �'�>�>� ���s�A�.�.�J�G�Q��r3c�����|�i}� |��}tj|j���d|i�fd�|���D��z}d|vr�t |d��r�t j||j��} |jdi|��|dd<nN#t$rA}t� |��|���|dd<Yd}~nd}~wwxYw|S)N�bodyc�.��i|]\}}|�jv�||��Sr))� parameters)r`�k�v�sigs �r1� <dictcomp>zRgenerate_function_chat_completion.<locals>.get_function_params.<locals>.<dictcomp>�s2���( �( �( ��Q��Q�#�.�5H�5H�A�q�5H�5H�5Hr3�__user__� UserValvesr'r)) rV� signaturer5�itemsr-r�!get_user_valves_by_id_and_user_idr9rrErFrG) r/rf�user� extra_paramsr%rW� user_valvesrMr|rus @�r1�get_function_paramsz>generate_function_chat_completion.<locals>.get_function_params�s5���� � ��L��+�i�(�(����� 4�5�5���)�$�( �( �( �( �)�/�/�1�1�( �( �( � �� �� � �G�O�\�$J�$J� �#�E�g�t�w�W�W�K� L�/I��/I�/X�/X�K�/X�/X��z�"�8�,�,��� L� L� L�� � �a� � � �/>�/I�/I�/K�/K��z�"�8�,�,�,�,�,�,����� L����� s�?B� C!� 7C�C!r<�metadata�files�tool_idsc3� �K�|]}|�vV�� dSr^r))r`rzr�s �r1� <genexpr>z4generate_function_chat_completion.<locals>.<genexpr>�s'�����N�N��q�H�}�N�N�N�N�N�Nr3)� session_id�chat_id� message_id�task� task_bodyr�r�r�)r9�emailr:�role) �__event_emitter__�__event_call__� __chat_id__�__session_id__�__message_id__�__task__� __task_body__� __files__r~� __metadata__� __request__�messages)� __model__� __messages__r�� __tools__r!Fc ���K� �� ����d{V��}t|t��r|j23d{V��}|WV�� 6dSt|t��rdt j|���d�WV�dSna#t $rT}t�d|����dt jddt|��ii���d�WV�Yd}~dSd}~wwxYwt|t��r1t�d|��}dt j|���d�WV�t|t��r|D]}� �|��WV��t|t��r|23d{V��}� �|��WV��6t|t��st|t��rIt�dd��}d|d d d <dt j|���d�WV�d WV�dSdS) Nrhri�Error: �error�detailr<r\�stop�choicesr� finish_reasonz data: [DONE])rbr� body_iteratorrkrlrmrErFr�r_rrrr) rY�datarM�messagerp�finish_messagerXrfrWr5rqs �����r1�stream_contentz9generate_function_chat_completion.<locals>.stream_content s������ �(�L��v�6�6�6�6�6�6�6�6���c�#4�5�5��&)�&7�#�#�#�#�#�#�#�d�"� � � � � �'8��F��c�4�(�(��8�4�:�c�?�?�8�8�8�8�8�8�8��F���� � � �� � �-�A�-�-�(�(�(�M�t�z�7�X�c�!�f�f�4E�*F�G�G�M�M�M�M�M�M�M����������� ���� �#�s�#�#� 9�<�Y�w�=O�QT�U�U��8�t�z�'�2�2�8�8�8�8�8�8�8��#�x�(�(� 8��8�8�D�&�,�y�$�7�7�7�7�7�7�7��#�~�.�.� 8�"%�8�8�8�8�8�8�8�$�&�,�y�$�7�7�7�7�7�7�7�#&��#�s�#�#� %�z�#�y�'A�'A� %�!C��g�&��"�"��AG��y�)�!�,�_�=�?�t�z�.�9�9�?�?�?�?�?�?�?�$�$�$�$�$�$�$�  %� %s.�.A6�A�A6�0A6�6 C�A C�C�E4ztext/event-stream)� media_typer�r�r�r^)r_rrrk�getr�get_model_by_id�pop�allrrr9r�r:r�r� base_model_idrW� model_dumprr r2r5rrErFr�rbrr)r$rfr�rSrer��model_id� model_infor�r�r�r�r�r�r�r%r/r�rYrMr�rXrur�rWr5rqs ` @@@@@@r1�!generate_function_chat_completionr��sh�����������"�"�"� B�s�Y���'G�B�C�B�B�B�B�3��3�3�3�3�$�t������� ������,�}�}�W�%�%�H��'��1�1�J��}�}�Z��,�,�H� �L�L��"� %� %�E��|�|�J��+�+�H��������N��H��M��8� �N�N�N�N�&M�N�N�N� N� N� 6� 1�(� ;� ;� �+�H�5�5�N��<�<���-�-�� � � �[�$�7�7� �/�(��|�|�I�t�4�4�"�,�,�|�T�:�:�"�,�,�|�T�:�:��&���'��Z��I��I�  � � !��!��L�$!*��� � �� ����I�g�$6��=�=�%�j�1��  � � � !� !�L����Y� � #� :�!+�!9�I�g� ��"�-�-�/�/��5�f�i�H�H� �5�f�i��SW�X�X� ��k�)�$�$�G�/���A�A�O� � �D� � ��)�T�<� P� P�F��}�}�X�u�%�%�7T�$ %�$ %�$ %�$ %�$ %�$ %�$ %�$ %�$ %�L!���!1�!1�>Q�R�R�R�R� 1�$� �T�6�2�2�2�2�2�2�2�2�C�C��� 1� 1� 1� �I�I�m��m�m� $� $� $��h��A���/�0� 0� 0� 0� 0� 0� 0����� 1���� �c�,� -� -� ��C��1F�1F� ��J� �c�9� %� %� $��>�>�#�#� #�+�+�C�0�0�0�0�0�0�0�0��6�y��7I�7�S�S�Ss�J� K�$/K�K�K);�logging�sysrVrlrC�pydanticr�typingrrr�fastapirrr r r r r r�starlette.responsesrr�open_webui.socket.mainrr�open_webui.models.functionsr�open_webui.models.modelsr�open_webui.utils.pluginr�open_webui.utils.toolsr�open_webui.utils.access_controlr�open_webui.envrr�open_webui.utils.miscrrrrr�open_webui.utils.payloadrr � basicConfig�stdout� getLogger�__name__rF�setLevelr_r2rRrkr�r)r3r1�<module>r�s������� � � � ����� � � � �����������6�6�6�6�6�6�6�6�6�6� � � � � � � � � � � � � � � � � � � � �<�;�;�;�;�;�;�;��������� 2�1�1�1�1�1�+�+�+�+�+�+�>�>�>�>�>�>�,�,�,�,�,�,�6�6�6�6�6�6�;�;�;�;�;�;�;�;����������������������� ���3�:�-=�>�>�>�>��g���!�!��� � �^�F� #�$�$�$� �w� �� � � � �A�A�A�J.0�yT�yT�&*�yT�yT�yT�yT�yT�yTr3
Memory