Skip to main content
Glama

MCP Agent Platform

brain_agent.cpython-312.pyc13.5 kB
� ʛ�g�:��z�dZddlZddlZddlmZmZddlZddlmZddl m Z m Z m Z ddl mZmZdaGd�de�Zy) u 大脑控制中心智能体 �N)�Dict�Any)� BaseAgent)� TextMessage� ImageMessage� AudioMessage)�OLLAMA_BASE_URL� MODEL_CONFIGc�t��eZdZdededef�fd� Zdeeeffd�Zdeeeffd�Z deeeffd�Z d �Z �xZ S) � BrainAgent�agent_id�host�portc���t�|�|d||�|atjt ��|_t|_|jdd|_ g|_ |jdjdd�|_ |jjd�|jjd |jdd���|jjd |jdd�d |j���|jjd |jd d���|jd|j �|jd|j"�|jd |j$�y)N�brain)r�text�model�image� multimodalFu大脑智能体初始化完成u文本模型: u图像模型: u, 多模态支持: u音频模型: �audio)�super�__init__�brain_instance�ollama�Clientr � ollama_clientr � model_config� default_model�context�get�multimodal_support�logger�info�register_handler�_handle_text_message�_handle_image_message�_handle_audio_message)�selfr rr� __class__s ��-D:\AIProject\mcpTest\src\brain\brain_agent.pyrzBrainAgent.__init__s[��� ����7�D�$�7���#�]�]��@���)���!�.�.�v�6�w�?����� �#'�"3�"3�G�"<�"@�"@��u�"U��� � � ���9�;� � � ���>�$�*;�*;�F�*C�G�*L�)M�N�O� � � ���>�$�*;�*;�G�*D�W�*M�)N�Na�bf�by�by�az�{�|� � � ���>�$�*;�*;�G�*D�W�*M�)N�O�P� ���f�d�&?�&?�@� ���g�t�'A�'A�B� ���g�t�'A�'A�B��messagec��`K� |djdd�}|d}|jjd|d�� d}t|�D]g} |jdd}|jdd }t j |jjf||jd �|���d {���}nd d} |jjd| d��t|jd| ��} |jjd| ���|jd| j!���d {���ddlm} ddd| id�} | | ��d {���y 7��#t$r2} ||d z k(r�t jd ��d {���7Yd } ~ ��Ed } ~ wwxYw7�c7�G#t$rS} |jj'd| ���ddlm} ddddt)| ���id�}| |��d {���7Yd } ~ y d } ~ wwxYw#t$r(} |jj'd| ���Yd } ~ y d } ~ wwxYw�w)u处理文本消息�contentr�� sender_id�user��roler.�r�params�r�messagesN�r,� assistant�mouth�r0� receiver_idru 发送回复到嘴巴智能体: r��broadcast_message�chatr��typer0r.zError generating response: �systemu生成回复时出错: zError processing text message: )r r�append�ranger�asyncio� to_threadrr?� Exception�sleeprr r"r#� send_message�to_dict�src.web.serverr>�error�str)r(r,rr0� max_retries�attempt� text_model� text_params�response�e� reply_text� reply_messager>� web_reply� error_messages r*r%zBrainAgent._handle_text_message(sR����C E��9�%�)�)�&�"�5�D�� �,�I� �L�L� � ��D� A� B�8 7�� �$�[�1�/�G�/�%)�%6�%6�v�%>�w�%G� �&*�&7�&7��&?��&I� �)0�):�):� �.�.�3�3�*�",�%)�\�\�*�*� *�$�� �/�$&�i�0��;� �� � �#�#�[�Z�$P�Q�!,�"�m�m� '�#�!� � � � � � �#C�J�<�!P�Q��'�'���1F�1F�1H�I�I�I�=�"�!(�� � �� �(� �2�2�2�E$��%�/�"�k�A�o�5�!�%�m�m�A�.�.�.��/�� J��3��� 7�� � �!�!�$?��s�"C�D�<�"�!)��"9�#�a�&�� B� �!� �(� �6�6�6�� 7��� E� �K�K� � � ?��s�C� D� D�� E�s��H.�8G:�F�AE�,E�-E�1BF�3F�4F�F�F�H.�E� F�"!F�F�F� F�F�F�F� G7�$AG2�'G*�(G2�-G:�1H.�2G7�7G:�: H+�H&�!H.�&H+�+H.c��K� |djdd�}|d}|djdd�}|s|jjd�y|jjd|�d ��|r|jjd |���|jrx |j d d }|j d d }|d|gdd�}|r|j |�tj|jjfi|���d{���}|d} nd} g} |jddD]6} | jd�dvr| j| �t| �dk\s�6n|jjdd|rd|znd�d| ��d�� |j d d }|j d d }|rd|�d�nd } | r d!| �d"| �d#�}n d!| �d"| �d$�}||dd%�}|r|j |�tj|jjfi|���d{���}|d}|jjd&|d��t!|j"d'|�(�}|j%d'|j'���d{���d)d*lm}d+d,d-|id.�}||��d{���y7���#t$r+} |jjd| ���d} Yd} ~ ���d} ~ wwxYw7��7�_7�C#t$r(} |jjd/| ���Yd} ~ yd} ~ wwxYw#t$r(} |jjd0| ���Yd} ~ yd} ~ wwxYw�w)1u处理图像消息r.� image_datar/r0� person_nameNu收到空图像数据� 收到来自u的图像数据,准备分析u图像中识别到的人物: rrr5u�请简洁地分析图像中人物的表情和动作。只需描述你看到的表情(如微笑、严肃、惊讶等)和动作(如挥手、站立、坐着等),不要添加其他解释。F)r�prompt�images�streamrRu多模态图像分析失败: u无法识别表情和动作。uH我看到了一个图像,但我无法识别人物的表情和动作。i����r3)r1r9� rBu[视觉信息] 图像中u的u人物表情和动作: r2u 名字是u的人u对方u/你是一个友好的AI助手小美。你看到u!,他/她的表情和动作是: u�。请根据这些信息和最近的对话历史,生成一句非常简短自然的回应。回应必须简洁,不超过15个字,除非用户明确要求详细内容。u\。请生成一句非常简短自然的问候语。问候必须简洁,不超过15个字。)rr\r^r9r:r;rr=r?rrr@u生成图像回复失败: u处理图像消息时出错: )r r"�warningr#r!r�updaterErFr�generaterGrLrrC�lenrr rIrJrKr>)r(r,rYr0rZ� image_model� image_params�generate_paramsrR�analysisrS�recent_context�item� person_info�greeting_prompt�greeting_response� greeting_textrUr>rVs r*r&z BrainAgent._handle_image_messageos ����{ C� ��+�/�/� �b�A�J�� �,�I�!�)�,�0�0���E�K��� � �#�#�$;�<�� �K�K� � �|�I�;�6T�U� V��� � � � �#@�� �!N�O��&�&�@�"&�"3�"3�G�"<�W�"E�K�#'�#4�#4�W�#=�h�#G�L� "-�#h�#-�,�"'� '�O�$�'�.�.�|�<�&-�%6�%6��*�*�3�3�&�)�&� �H� (� �3�H� f�� �N�� � �S�T�*� ���8�8�F�#�'<�<�"�)�)�$�/��~�&�"�,��  � �L�L� � � �5�{�u�{�7J�`b�5c�cz�|D�{E�F�!� � 9 D�"�/�/��8��A� �#�0�0��9�(�C� �BM� �+��f�=�RZ� �"�(W�Xc�Wd�eF�GO�FP�P}�'~�O�)X�Xc�Wd�eF�GO�FP�Pl�'m�O�)�-�#�#�� �#�*�*�<�8�+2�*;�*;��&�&�/�/�+�%�+�%�!� !2�*� =� �� � �#�#�[�]�$S�T�!,�"�m�m� '�&�!� � �'�'���1F�1F�1H�I�I�I�=�"�!(�� � �� �(� �2�2�2�e �� !�@��K�K�%�%�(E�a�S�&I�J�?�H��@��b%�� J��3��� D�� � �!�!�$>�q�c�"B�C�C�� D��� C� �K�K� � � =�a�S�A� B� B�� C�s��M�A L�M�A L�A,J� J� J�A L�.L� B K�K�A"K�8K�9K�K�K�M�J� K�( K�L�K�L�K�K�K� L �%L�L�M�L � L� M�L<�7M�<M�Mc���K� |djdd�}|d}|s|jjd�y|jjd|�d|���|jj d d |��d �� d }t |�D]g} |jd d}|jd d}tj|jjf||jd�|���d{���}ndd} |jj d| d ��t|jd| ��} |jjd| ���|j!d| j#���d{���ddlm} ddd| id�} | | ��d{���y7��#t$r2} ||dz k(r�tjd��d{���7Yd} ~ ��Ed} ~ wwxYw7�c7�G#t$rS} |jj)d| ���ddlm} ddddt+| ���id�}| |��d{���7Yd} ~ yd} ~ wwxYw#t$r(} |jj)d | ���Yd} ~ yd} ~ wwxYw�w)!u处理音频消息r.rr/r0u收到空音频文本Nr[u的音频文本: r1u[语音输入] r2r4rrr5r6r8r_r,r9r:r;u&发送音频回复到嘴巴智能体: rr=r?rr@u生成音频回复失败: rBu生成音频回复时出错: u处理音频消息时出错: )r r"r`r#rrCrDrrErFrr?rGrHrr rIrJrKr>rLrM)r(r,� audio_textr0rNrO� audio_model� audio_paramsrRrSrTrUr>rVrWs r*r'z BrainAgent._handle_audio_message�s�����H C� ��+�/�/���;�J�� �,�I��� � �#�#�$;�<�� �K�K� � �|�I�;�6G� �|�T� U� �L�L� � ��o�j�\�<Z� [� \�7 7�� �$�[�1�0�G�0�&*�&7�&7��&@��&I� �'+�'8�'8��'A�(�'K� �)0�):�):� �.�.�3�3�*�"-�%)�\�\�*�+� *�$�� �0�$&�i�0��;� �� � �#�#�[�Z�$P�Q�!,�"�m�m� '�#�!� � � � � � �#I�*��!V�W��'�'���1F�1F�1H�I�I�I�=�"�!(�� � �� �(� �2�2�2�C$��%�0�"�k�A�o�5�!�%�m�m�B�/�/�/��0��J��3��� 7�� � �!�!�$>�q�c�"B�C�<�"�!)��"?��A��x� H� �!� �(� �6�6�6�� 7��� C� �K�K� � � =�a�S�A� B� B�� C�s��I0�7H<�I0�AH<�?G�AF�.F�/F�3BG�5G�6G�G�G�I0�F� G�$!G�G�G� G�G�G�G� H9�&AH4�)H,�*H4�/H<�3I0�4H9�9H<�< I-�I(�#I0�(I-�-I0c��K� |jdi�jdd�}|jjd|���d|��}|S#t$r(}|jj d|���Yd}~yd}~wwxYw�w) u!处理文本消息并返回回复r.rr/u收到文本消息: u#你好,我收到了你的消息: u处理文本消息时出错: Nu$抱歉,我无法处理你的消息)r r"r#rGrL)r(r,rrRrSs r*�process_text_messagezBrainAgent.process_text_message:s����� :��;�;�y�"�-�1�1�&�"�=�D� �K�K� � �3�D�6�:� ;�=�T�F�C�H��O��� :� �K�K� � � =�a�S�A� B�9�� :�s/�A?�AA � A?� A<�A7�2A?�7A<�<A?) �__name__� __module__� __qualname__rM�intrrrr%r&r'rs� __classcell__)r)s@r*r r sq���C��C�C�C�s�C�0EE�$�s�C�x�.�EE�N}C�4��S��>�}C�~JC�4��S��>�JC�X :r+r )�__doc__rE�logging�typingrrr�src.agents.base_agentr�src.utils.mcp_protocolrrr�configr r rr �r+r*�<module>r�s7������ �+�J�J�0���x:��x:r+

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rolenet/McpAgentRobot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server