a
    dg=                     @   s   d dl Z d dlmZmZmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ G d	d
 d
eeZdS )    N)AnyCallableListcast)BaseMessageHumanMessageSystemMessage)BaseChatPromptTemplate)BaseTool)VectorStoreRetriever)	BaseModel)
get_promptc                   @   s   e Zd ZU dZeed< eed< ee ed< eege	f ed< dZ
e	ed< ee edd	d
Zeee dddZdeedddZdS )AutoGPTPromptzPrompt for AutoGPT.ai_nameai_roletoolstoken_counterid  send_token_limit)goalsreturnc                 C   sb   d}d| j  d| j d| d}t|D ] \}}||d  d| d7 }q(|dt| j 7 }|S )	NzYour decisions must always be made independently without seeking user assistance.
Play to your strengths as an LLM and pursue simple strategies with no legal complications.
If you have completed all your tasks, make sure to use the "finish" command.zYou are z, 
z


GOALS:

   z. 

)r   r   	enumerater   r   )selfr   Zprompt_startZfull_promptiZgoal r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_experimental/autonomous_agents/autogpt/prompt.pyconstruct_full_prompt/   s    
z#AutoGPTPrompt.construct_full_prompt)kwargsr   c                    s|  t  |d d}t dtd d} tt|j tt|j }|d }|d }|t|dd  }dd	 |D }t	 fd
d	|D }	||	 dkr|d d }t	 fdd	|D }	qd| d}
t |
d}| tt|j7 }g }|dd  d d d D ]>} |j}||  j
d kr8 qN|g| }||7 }qt|d d}|||g}||7 }|| |S )Nr   )contentzThe current time and date is z%cmemorymessagesic                 S   s   g | ]
}|j qS r   )Zpage_content).0dr   r   r   
<listcomp>M       z1AutoGPTPrompt.format_messages.<locals>.<listcomp>c                    s   g | ]}  |qS r   r   r#   docr   r   r   r%   O   r&   i	  c                    s   g | ]}  |qS r   r'   r(   r*   r   r   r%   T   r&   z1This reminds you of these events from your past:
r   i  Z
user_input)r   r   timestrftimer   r   strr    Zinvokesumr   r   append)r   r   Zbase_promptZtime_promptZused_tokensr!   Zprevious_messagesZrelevant_docsZrelevant_memoryZrelevant_memory_tokensZcontent_formatZmemory_messageZhistorical_messagesmessageZmessage_tokensZinput_messager"   r   r*   r   format_messagesB   sN    




zAutoGPTPrompt.format_messagesF)htmlr   c                 C   s   t d S )N)NotImplementedError)r   r3   r   r   r   pretty_repri   s    zAutoGPTPrompt.pretty_reprN)F)__name__
__module____qualname____doc__r.   __annotations__r   r
   r   intr   r   r   r   r2   boolr5   r   r   r   r   r   &   s   
'r   )r,   typingr   r   r   r   Zlangchain_core.messagesr   r   r   Zlangchain_core.prompts.chatr	   Zlangchain_core.toolsr
   Zlangchain_core.vectorstoresr   Zpydanticr   ZAlangchain_experimental.autonomous_agents.autogpt.prompt_generatorr   r   r   r   r   r   <module>   s   