
    Fd                        d dl mZ d dlZd dlmZ d dlmZ erd dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d d	lmZmZ d d
lmZ d dlmZ 	 dddZdS )    )annotationsN)TYPE_CHECKING)get_openai_command_specs)Agent)Config)
ApiManager)ChatSequenceMessage)count_message_tokenscreate_chat_completion)CURRENT_CONTEXT_FILE_NAME)loggerconfigr   agentr   system_promptstrtriggering_prompttoken_limitintmodel
str | Nonec                	   || j         }t          j        d|            |dz
  }g }t          j        |t          d|          t          ddt          j        d                     g          }t          |j	                  dz
  }	t          |          }
|j
        }t          d|          }|t          |g|          z  }|d	z  }|d	z  }t          t          |j	                            |j                                      D ]<}d
 |D             }t          ||          }||z   |k    r n |j        |
g|R   ||z  }=t          |j	                  dk    r`|j	                            t          |          |j                  \  }}t          |g|          }|                    |
|           ||d	z
  z  }t%                      }|                                dk    r|                                |                                z
  }|dk     rd}d|d|dk    rdn|dk     rdn	|dk     rdndz   }t          j        |           |                    d|           |t          |d         g|          z  }|                    |           t          | j                  }t1          | j                  D ]\  }}|                                s|                    |j        j        |                                          }|r|dk    rUt          t          d|          g|          }||z   |k    r3t          j        d|            t          j        d||z
               n|                    d|           ||z
  }t          j        d|            t          j        d|            t          j        d|            t          j        d           |D ]b}|j        dk    r|j        |k    rt          j        |j                                          d|j                    t          j        d           ct          j        d           |j!        "                    |j#        |j$        |j%        |                                tL                     tO          ||j        tQ          |          |          }|j	                            |           |j	                            d |j        d!           |S )"aG  
    Interact with the OpenAI API, sending the prompt, user input,
        message history, and permanent memory.

    Args:
        config (Config): The config to use.
        agent (Agent): The agent to use.
        system_prompt (str): The prompt explaining the rules to the AI.
        triggering_prompt (str): The input from the user.
        token_limit (int): The maximum number of tokens allowed in the API call.
        model (str, optional): The model to use. If None, the config.fast_llm_model will be used. Defaults to None.

    Returns:
    str: The AI's response.
    NzToken limit: i  systemzThe current time and date is z%c   useri  c                    g | ]}||S N ).0msgs     DC:\Users\Administrator\Downloads\Auto-GPT-master\autogpt\llm\chat.py
<listcomp>z chat_with_ai.<locals>.<listcomp>g   s    CCC33?3???    r   )current_message_chainr   g        zYour remaining API budget is $z.3fz BUDGET EXCEEDED! SHUT DOWN!

g{Gzt?z5 Budget very nearly exceeded! Shut down gracefully!

g{Gz?z% Budget nearly exceeded. Finish up.

z

 z$Plugin response too long, skipping: zPlugins remaining at stop: zSend Token Count: zTokens remaining for response: z/------------ CONTEXT SENT TO AI ---------------z: z+----------- END OF CONTEXT ----------------)promptr   	functions
max_tokens	assistantai_response))fast_llm_modelr   debugr	   	for_modelr
   timestrftimelenhistorytoken_lengthr   reversedlist	per_cycler   inserttrim_messagesr   get_total_budgetget_total_costaddappendplugins	enumeratecan_handle_on_planningon_planning	ai_configprompt_generatorrawrolecontent
capitalizelog_cycle_handler	log_cycleai_name
created_atcycle_countr   r   r   )r   r   r   r   r   r   send_token_limitrelevant_memorymessage_sequencenext_message_to_add_indexinsertion_indexcurrent_tokens_useduser_input_msgcyclemessages_to_addtokens_to_addnew_summary_messagetrimmed_messagesapi_managerremaining_budgetbudget_messageplugin_countipluginplugin_responsetokens_remainingmessageassistant_replys                               r!   chat_with_airb      s   . }% L...///"T) O#-Hm,,HSdmD>Q>QSSTT	

 
 !$EM 2 2Q 6*++O*7 V%677N/0@%HHH33 $u}66u|DDEEFF 	- 	-CC%CCC,_eDD.1AAAE 	 B/BBBB}, 5=A050K0K"&'7"8"8 1L 1
 1
-- -.A-BEJJ1DEEE}s22 ,,K##%%++&7799K<V<V<X<XXa P:JPPP1$$ /.  %'' KJ  $&& ;:
 	^$$$X~66635Eb5I4JERRR N+++v~&&Lv~.. 8 8	6,,.. 	 ,,O,.>.B.B.D.D
 
  	/R"7"7,X//0%
 
 .1AAALQQQRRRLI|a7GIIJJJEX7777"%88 L...///
L;&9;;<<<
LE3CEEFFF
LBCCC#  <8##=(H(H//11FFW_FFGGGR
L>???	%%!   -|*511#	  O 
M(((	Mk?#:MJJJr#   r   )r   r   r   r   r   r   r   r   r   r   r   r   )
__future__r   r/   typingr   autogpt.llm.providers.openair   autogpt.agent.agentr   autogpt.configr   autogpt.llm.api_managerr   autogpt.llm.baser	   r
   autogpt.llm.utilsr   r   autogpt.log_cycle.log_cycler   autogpt.logsr   rb   r   r#   r!   <module>rm      s   " " " " " "              A A A A A A *)))))) ! ! ! ! ! ! . . . . . . 2 2 2 2 2 2 2 2 J J J J J J J J A A A A A A       { { { { { { {r#   