Skip to main content
Glama
ai_agent.cpython-311.pyc25.9 kB
� Fm�h_V���ddlZddlZddlZddlmZmZmZddlZddlZddl Z ddl Z dZ n#e $rdZ dZ YnwxYwddl mZddlmZddlmZeje��ZGd�d ��Zd �Zed kr e��dSdS) �N)�Dict�Any�OptionalTF)�AIPortfolioDoctor)�AIStrategySommelier)�AIChatAssistantc �8�eZdZdZd&dedefd�Zdedeeefd eeeffd �Zd'd ed ed efd �Z d(deded eeeffd�Z d)dededed eeeffd�Z deeefd e fd�Z ded eeeffd�Zdeeefdedeeefd efd�Zdededeeefd efd�Zdededeeefd efd�Zdededeeefd efd�Zdededeeefd efd�Zdeeefd eeeffd �Zd!ed eeeffd"�Zd*ded$efd%�ZdS)+� DeFiAIAgentz@AI Agent that can interact with DeFi MCP Server using Comput3 AI�http://localhost:5000N�mcp_server_url�api_keyc���||_||_tj��|_|jr&|jj�d|ji��tjdd��|_ tjdd��|_ tjdd��|_ tjdd��|_ tjd d��|_ t|j ��|_t!|j ��|_t%|j ��|_d |_d |_d |_t.�d |����t.�d|j ����dS)Nz X-API-Key�OPENAI_API_KEY� c3_api_key�OPENAI_API_URLzhttps://api.comput3.ai/v1�SMALL_OPENAI_MODELz llama3:70b�MEDIUM_OPENAI_MODEL�LARGE_OPENAI_MODEL�333333�?g�������?g�������?z+DeFi AI Agent initialized with MCP server: zUsing Comput3 AI endpoint: )r r �requests�Session�session�headers�update�os�getenv�openai_api_key�openai_api_url� small_model� medium_model� large_modelr�portfolio_doctorr�strategy_sommelierr�chat_assistant�risk_tolerance�max_position_size� target_apy�logger�info)�selfr r s �"/home/runner/workspace/ai_agent.py�__init__zDeFiAIAgent.__init__sK��,����� ��'�)�)�� � �<� E� �L� � '� '��d�l�(C� D� D� D�!�i�(8�,�G�G��� �i�(8�:U�V�V����9�%9�<�H�H����I�&;�\�J�J����9�%9�<�H�H���!2�$�2E� F� F���"5�d�6I�"J�"J���-�d�.A�B�B���"���!$������� � �R�.�R�R�S�S�S�� � �G�$�2E�G�G�H�H�H�H�H��method�params�returnc�Z�d||tjdd��d�} |j�|j�d�|���}|���|���S#t$r8}t� d|����dt|��icYd }~Sd }~wwxYw) z)Make a JSON-RPC request to the MCP serverz2.0�i')�jsonrpcr.r/�idz/mcp)�jsonzMCP request failed: �errorN) �random�randintr�postr �raise_for_statusr5� Exceptionr(r6�str)r*r.r/�payload�response�es r+�make_mcp_requestzDeFiAIAgent.make_mcp_request6s�������.��E�*�*�  � �� %��|�(�(�D�,?�)E�)E�)E�G�(�T�T�H� � %� %� '� '� '��=�=�?�?� "��� %� %� %� �L�L�3��3�3� 4� 4� 4��S��V�V�$� $� $� $� $� $� $����� %���s�A A(�( B*�2-B%�B*�%B*�prompt�modelc���|s|j}d|j��dd�}|ddd�d|d�gdd d �} tj|j�d �||d � ��}|���|���}|dddd���S#t$r9}t� d|����dt|����cYd}~Sd}~wwxYw)z.Ask Comput3 AI for intelligent decision-makingzBearer zapplication/json)� Authorizationz Content-Type�systemz�You are a DeFi expert AI assistant specializing in portfolio optimization, yield farming, and risk management. Provide concise, actionable advice based on market data and DeFi best practices.)�role�content�useri�gffffff�?)rB�messages� max_tokens� temperaturez/chat/completions�)rr5�timeout�choicesr�messagerGzAI request failed: zAI analysis unavailable: N) r rrr9rr:r5�stripr;r(r6r<)r*rArBrr=r>�datar?s r+�ask_aizDeFiAIAgent.ask_aiGsL��� &��%�E�=�t�':�<�<�.� � �� �%� a��� #�%��� ��� � ��  8��}��&�9�9�9���� ���H� � %� %� '� '� '��=�=�?�?�D�� �?�1�%�i�0��;�A�A�C�C� C��� 8� 8� 8� �L�L�2�q�2�2� 3� 3� 3�7�s�1�v�v�7�7� 7� 7� 7� 7� 7� 7����� 8���s�A3B� C�%.C�C�C�ethereum�wallet_address� blockchainc��t�d|����|�d||d���}d|vr.t�d|d����d|dd�S|�di��}|�d ||d���}d|vr*|�di���d g��ng}|�d d ��t |�d g����t |��|�|��|�|��gd�}d|dd�d|d�d|d�d|d�d|ddd�dd�|�d g��D���d� }|j� ||��} | |d<|� |||��|d <d!|d"�S)#z:Analyze portfolio and make AI-powered investment decisionsz Analyzing portfolio for wallet: zdefi.portfolio)rTrUr6zFailed to get portfolio: F��successr6�resultzdefi.positions� positions�total_value_usdr�tokens)� total_value� token_count�position_count�diversification_score�yield_potential�recommendationsz> Analyze this DeFi portfolio: - Total Value: $r]�,.2fz - Tokens: r^� - Active Positions: r_�" - Diversification Score: r`z - Average APY: ra� average_apy�.1%z Portfolio tokens: c�r�g|]4}|�dd��d|�dd��d�d�z��5S)�symbol�Unknownz (� percentager�.1f�%))�get��.0�tokens r+� <listcomp>z1DeFiAIAgent.analyze_portfolio.<locals>.<listcomp>�s\��O�O�O�in�E�I�I�h� �:�:�=d�%�)�)�L�Z[�B\�B\�=d�=d�=d�=d�d�O�O�Or-a  Provide 3 specific recommendations for optimization focusing on: 1. Risk management 2. Yield optimization 3. Diversification improvements Consider current DeFi market conditions and return brief, actionable advice. � ai_insightsrbT)rX�analysis) r(r)r@r6rn�len�_calculate_diversification�_analyze_yield_opportunitiesr"�analyze_portfolio_health�_generate_recommendations) r*rTrU�portfolio_response� portfolio�positions_responserZrt� ai_promptrss r+�analyze_portfoliozDeFiAIAgent.analyze_portfolioqs���� � �G�~�G�G�H�H�H�"�2�2�3C�,�$�F �F � � �� �(� (� (� �L�L�R�5G��5P�R�R� S� S� S�$�/A�'�/J�K�K� K�&�*�*�8�R�8�8� �"�2�2�3C�,�$�F �F � � �� RZ�]o�Qo�Qo�&�*�*�8�R�8�8�<�<�[�"�M�M�M�uw� �%�=�=�):�A�>�>��y�}�}�X�r�:�:�;�;�!�)�n�n�%)�%D�%D�Y�%O�%O�#�@�@��K�K�!�  � �� �!�-�0� � � ��M�*� � �&�&6�7�  � � #+�+B�"C�  � � !�!2�3�M�B�  � � �O�O�r{�r�r�AI�KM�sN�sN�O�O�O� � � � �$�+�D�D�Y�PX�Y�Y� �"-����'+�&D�&D�Y�PY�[c�&d�&d��"�#� �X�6�6�6r-� ai_optimized�strategyc �(�t�d|�d|����|�||��}|ds|S|d}g}|dkr|j�|||��}nb|dkr|�|||��}nD|dkr|�|||��}n&|dkr|�|||��}nd d |��d �S|D]�} |�|��} |� || d | vd ���tj d���H#t$rR} t� d|�d| ����|� |d t| ��id d ���Yd} ~ ��d} ~ wwxYwd||||�|��d�S)z#Execute an AI-powered DeFi strategyz Executing z strategy for wallet: rXrtr�conservative_yield�aggressive_farming�balanced_portfolioFzUnknown strategy: rWr6)�actionrYrX�zFailed to execute action �: NT)rXr�rt�executed_actions�summary)r(r)r~r#�get_strategy_actions�_conservative_yield_strategy�_aggressive_farming_strategy�_balanced_portfolio_strategy�_execute_action�append�time�sleepr;r6r<�_generate_execution_summary) r*rTr�rU�analysis_resultrtr��actionsr�rYr?s r+�execute_strategyzDeFiAIAgent.execute_strategy�s=��� � �Q��Q�Q��Q�Q�R�R�R��0�0���L�L���y�)� #�"� "�"�:�.���� �~� %� %��-�B�B�>�S]�_g�h�h�G�G� �-� -� -��7�7�� �T\�]�]�G�G� �-� -� -��7�7�� �T\�]�]�G�G� �-� -� -��7�7�� �T\�]�]�G�G�$�/N�H�/N�/N�O�O� O�� � �F� ��-�-�f�5�5�� �'�'�$�$�&�f�4�)�)����� �1� � � � ��� � � �� � �F��F�F�1�F�F�G�G�G� �'�'�$�&��A���/�$�)�)������������� ����� � � 0��7�7�8H�I�I�  � � s�AD� E6�$AE1�1E6r{c���|�dg��}|sdSt|��}td�|D��dgz��}td|dz ��d|dz z z}t |d ��S) z/Calculate portfolio diversification score (0-1)r\gc�T�g|]%}t|�dd������&S)rkr)�floatrnros r+rrz:DeFiAIAgent._calculate_diversification.<locals>.<listcomp>�s.��T�T�T�E�e�E�I�I�l�A�$>�$>�?�?�T�T�Tr-rg�?� r2�dr�)rnru�max�min�round)r*r{r\r^�max_allocation�diversifications r+rvz&DeFiAIAgent._calculate_diversification�s������x��,�,��� ��3��&�k�k� ��T�T�V�T�T�T�XY�WZ�Z�[�[���c�;��#3�4�4��N�S�<P�8P�Q���_�a�(�(�(r-rZc��d}d}|D]F}|�d��dvr-|dz }t|�dd����}||z }�G|dkr||z nd}|t|d��t|d��|dkrdn |d krd nd d �S) z*Analyze current yield-generating positionsr� position_type)�lending�farmingr2�apyr�g{�G�z�?�Highg{�G�z�?�Medium�Low)�active_positionsrf�total_estimated_yield� yield_rating)rnr�r�)r*rZ� total_yieldr��positionr�� avg_yields r+rwz(DeFiAIAgent._analyze_yield_opportunities�s���� ���!� #� #�H��|�|�O�,�,�0F�F�F� �A�%� ��H�L�L���2�2�3�3���s�"� ��6F��6J�6J�K�"2�2�2�PQ� �!1� ��A�.�.�%*�;��%:�%:�&/�$�&6�&6�F�F� �TX�HX�HX�H�H�^c�  � � r-rtc ��g}|ddkr#|�dddd|d��d���|dd |jkr4|�d d d d |dd d�d|jd�d�d���|�dg��}|D]v}t|�dd����}||jdzkrC|�dd d|�dd���d�d|d�d|jdzd�d�d����w|S)z"Generate AI-driven recommendationsr`rr��highz8Increase portfolio diversification by adding more tokenszCurrent diversification score: )�type�priorityr��reasonrarf�yield_optimization�mediumz-Consider lending assets to earn higher yieldszCurrent average APY (rgz) is below target (�)r\rkrr��risk_managementzConsider reducing ri�unknownz position sizezPosition size (rlz %) exceeds recommended maximum (rm)r�r'rnr�r&)r*r{rZrtrbr\rqrks r+ryz%DeFiAIAgent._generate_recommendationss����� �+� ,�s� 2� 2� � "� "�)�"�T�_�H�E\�<]�_�_� $�$� � � � �%� &�}� 5��� G� G� � "� "�,�$�I�L�(�;L�2M�m�2\�L�L�L�uy�vE�L�L�L�L� $�$� � � ����x��,�,��� � �E��u�y�y��q�9�9�:�:�J��D�2�S�8�8�8��&�&�-� (�a�5�9�9�X�y�3Q�3Q�a�a�a�C� �C�C�C�`d�`v�wz�`z�C�C�C�C� (�(������r-c ��d|dd�d|d�d|ddd �d |dd �d � }|�||j��}g} d dl}|�d||j��}|r�t j|�����} | dd�D]�} | �d��dkrJ|� dd||dddd�| �dd��| �dd��d����e| �d��dkrJ|� dd||ddd d!d"�| �dd��| �dd��d�����nK#t$r>} t� d#| ����|� |||��}Yd} ~ nd} ~ wwxYw|s|� |||��}|S)$z9Generate AI-optimized actions based on portfolio analysisz� Based on this DeFi portfolio analysis, suggest 2-3 specific actions: Portfolio Summary: - Total Value: $r]rcrer`z - Current Average APY: rarfrgrdr�ad Available actions: 1. LEND - Lend tokens to protocols like Aave or Compound 2. SWAP - Swap tokens for better diversification 3. FARM - Add liquidity to yield farming pools 4. WITHDRAW - Remove from underperforming positions Respond with a JSON array of actions, each with: - "action_type": "lend"|"swap"|"farm"|"withdraw" - "reasoning": "why this action" - "priority": "high"|"medium"|"low" - "risk_level": "low"|"medium"|"high" Focus on optimizing yield while managing risk. Consider current market conditions. rNz\[.*\]�� action_type�lend� defi.lend�aave�*0xA0b86a33E6411D426C3d77A6CF0C0DFEcb7fD9A9�100�rTrU�protocolrq�amount� reasoning�r�r�)r�r.r/� ai_reasoningr��swap� defi.swap�*0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2�0.1�uniswap�rTrU�token_in� token_out� amount_inr�z&Could not parse AI strategy response: )rRr!�re�search�DOTALLr5�loads�grouprnr�r;r(�warningr�) r*rTrUrtr}� ai_responser�r�� json_match� ai_actions� ai_actionr?s r+�_ai_optimized_strategyz"DeFiAIAgent._ai_optimized_strategy+s�� �"�-�0�  � � � #+�+B�"C�  � � !)�):� ;�M� J�  � � �&�&7�8�9K�L� � � � �0�k�k�)�T�-=�>�>� ���) ^� �I�I�I����9�k�2�9�E�E�J�� �!�Z� �(8�(8�(:�(:�;�;� �!+�B�Q�B����I� �}�}�]�3�3�v�=�=����$*�&1�2@�.8�,2�)U�*/� '�'�-6�M�M�+�r�,J�,J�(1� � �j�(�(K�(K� (� (� � � � �#���}�5�5��?�?����$*�&1�2@�.8�,X�-Y�-2�,5� '�'�-6�M�M�+�r�,J�,J�(1� � �j�(�(K�(K� (� (� � � ����� ^� ^� ^� �N�N�G�A�G�G� H� H� H��7�7�� �T\�]�]�G�G�G�G�G�G����� ^���� � ^��7�7�� �T\�]�]�G��s�DE0�0 F8�:4F3�3F8c �l�g}|dddkr|�dd||dddd �d ���|S) z0Generate actions for conservative yield strategyrar�r�r�r�r�r�r�r��r�r.r/�r��r*rTrUrtr�s r+r�z(DeFiAIAgent._conservative_yield_strategyzsf���� �%� &�'9� :�Q� >� >� �N�N��%�&4�",� &�I�#� �� � � � � ��r-c �N�g}|�dd||ddddddd �d ���|S) z0Generate actions for aggressive farming strategy�farmz defi.farmr�z USDC-ETH-0.3%r�r��50z0.02)rTrUr��pool_id�token_a�token_b�amount_a�amount_br�r�r�s r+r�z(DeFiAIAgent._aggressive_farming_strategy�sX���� ����!�"0�(�%�*�G�G� �"� � �  �  � � � ��r-c �b�g}|ddkr |�dd||ddddd �d ���|S) z0Generate actions for balanced portfolio strategyr`g�?r�r�r�r�r�r�r�r�r�r�s r+r�z(DeFiAIAgent._balanced_portfolio_strategy�sc���� �+� ,�s� 2� 2� �N�N��%�&4�",� L�!M�!&� )� �� � � � � ��r-r�c��|�d��}|�di��}|sddiS|�||��S)z$Execute a single DeFi action via MCPr.r/r6zNo method specified in action)rnr@)r*r�r.r/s r+r�zDeFiAIAgent._execute_action�sP�����H�%�%�����H�b�)�)��� >��<�=� =��$�$�V�V�4�4�4r-r�c ���td�|D����}t|��|z }t|��|||r#t|t|��z dzd��ndd�S)z$Generate summary of executed actionsc3�*K�|]}|d� dV��dS)rXr2N�)rpr�s r+� <genexpr>z:DeFiAIAgent._generate_execution_summary.<locals>.<genexpr>�s,����O�O�v�V�I�=N�O��O�O�O�O�O�Or-r�r2r)� total_actions� successful�failed� success_rate)�sumrur�)r*r�r�r�s r+r�z'DeFiAIAgent._generate_execution_summary�s����O�O�)9�O�O�O�O�O� ��%�&�&��3��!�!1�2�2�$��Rb�i�E�*�s�3C�/D�/D�"D�s�"J�A�N�N�N�hi�  � � r-�,�check_intervalc��t�d|����t�d|�d��� t�d��|�|��}|dr�|dd}|r]t�d t|���d ���|D].}t�d |d �d |d�����/nLt�d��n1t�d|�dd������t�d|�d���t j|��nn#t$rt�d��YdSt$r;}t�d|����t jd��Yd}~nd}~wwxYw���)z*Run continuous monitoring and optimizationz%Starting monitoring loop for wallet: zCheck interval: z secondsTzRunning portfolio analysis...rXrtrbzFound z recommendationsz- r�r�r�zNo recommendations at this timezAnalysis failed: r6z Unknown errorz Sleeping for z seconds...zMonitoring loop stopped by userzError in monitoring loop: �<N) r(r)r~rur6rnr�r��KeyboardInterruptr;)r*rTr�rtrb�recr?s r+�run_monitoring_loopzDeFiAIAgent.run_monitoring_loop�s���� � �L�N�L�L�M�M�M�� � �?�~�?�?�?�@�@�@� � �� � �;�<�<�<��1�1�.�A�A���I�&� _�&.�z�&:�;L�&M�O�&�G�� � �$S�S��-A�-A�$S�$S�$S�T�T�T�#2�M�M�C�"�K�K�(K�S��[�(K�(K�C��M�(K�(K�L�L�L�L�M�� � �$E�F�F�F�F��L�L�!]�X�\�\�'�?�5[�5[�!]�!]�^�^�^�� � �G�N�G�G�G�H�H�H�� �>�*�*�*�*��$� � � �� � �=�>�>�>����� � � �� � �=�!�=�=�>�>�>�� �2������������� ����/ s�D"E!�!$G � G �1G�G )r N)N)rS)rrS)r�)�__name__� __module__� __qualname__�__doc__r<r,rrr@rRr~r�r�rv�listrwryr�r�r�r�r�r��intr�r�r-r+r r s\������J�J�I�I�s�I�s�I�I�I�I�8%�s�%�D��c��N�%�t�C�QT�H�~�%�%�%�%�"(8�(8�S�(8��(8��(8�(8�(8�(8�T<7�<7��<7��<7�VZ�[^�`c�[c�Vd�<7�<7�<7�<7�|3 �3 �s�3 �c�3 �`c�3 �uy�z}�@C�{C�vD�3 �3 �3 �3 �j )�D��c��N� )�u� )� )� )� )� �d� �t�C��H�~� � � � �("�4��S��>�"�d�"�^b�cf�hk�ck�^l�"�qu�"�"�"�"�HM�S�M�c�M�UY�Z]�_b�Zb�Uc�M�hl�M�M�M�M�^�3��C��[_�`c�eh�`h�[i��nr�����(�3��C��[_�`c�eh�`h�[i��nr�����,�3��C��[_�`c�eh�`h�[i��nr�����*5�d�3��8�n�5��c�3�h��5�5�5�5�  �D�  �T�#�s�(�^�  �  �  �  ���#��s������r-r c ��td��td��tdd���}d}td��|�|��}|dr�|d }td |d d ����td |d����td|dd����td|ddd����|drxtd��t|dd��D]R\}}t|�d|d����d|d����td|d�����Std��|�|d��}|dr:|d }td!|d"�d#���td$|d%�d&���td'��d(S))z,Demo function to show the AI agent in actionu🤖 ONEDeFi AI Agent Demoz2==================================================r � demo_key_123)r r �*0x742d35Cc6641C88c4f95bbCdB96a2b0f0f3f6b7fu 📊 Analyzing Portfolio...rXrtzPortfolio Value: $r]rczDiversification Score: r`zActive Positions: rar�z Average APY: rfrgrbu 💡 AI Recommendations:r2z. [r�z] r�z Reason: r�u. 🚀 Executing Conservative Yield Strategy...r�r�z Executed r�z actionszSuccess rate: r��%u ✅ Demo completed!N)�printr r~� enumerate�upperr�)�agent� demo_walletr�rt�ir��strategy_resultr�s r+�mainr �s!�� � &�'�'�'� �(�O�O�O� �.�� � � �E� ?�K� � )�*�*�*��-�-�k�:�:�O��y�!� 5�"�:�.�� �A�8�M�#:�A�A�A�B�B�B� �K��1H�(I�K�K�L�L�L� �T�8�,=�#>�?Q�#R�T�T�U�U�U� �N�h�'8�9�-�H�N�N�N�O�O�O� �%� &� 5� �.� /� /� /�#�H�->�$?��C�C� 5� 5���3���I�I�s�:��4�4�6�6�I�I�#�h�-�I�I�J�J�J��3�C��M�3�3�4�4�4�4� � ;�<�<�<��,�,�[�:N�O�O�O��y�!�;�!�)�,�� �<�'�/�2�<�<�<�=�=�=� �9�w�~�6�9�9�9�:�:�:� � !�"�"�"�"�"r-�__main__)r5r�logging�typingrrrr�r7r�openai�OPENAI_AVAILABLE� ImportError�ai_portfolio_doctorr�ai_strategy_sommelierr�ai_chat_assistantr� getLoggerr�r(r r r�r-r+�<module>rsI�� � � � ���������&�&�&�&�&�&�&�&�&�&� � � � � � � � � � � � ���M�M�M����������� �F�F�F�����2�1�1�1�1�1�5�5�5�5�5�5�-�-�-�-�-�-� �� �8� $� $��V�V�V�V�V�V�V�V�p&#�&#�&#�P �z����D�F�F�F�F�F��s �+� 7�7

Latest Blog Posts

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/JMadhan1/OneDefi-MCP'

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