a
    dg                     @  s   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dl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mZ d dlmZ d dlm Z  G dd dZ!dS )    )annotations)ListOptional)LLMChain)ChatMessageHistory)BaseChatMessageHistoryDocument)HumanInputRun)BaseChatModel)	AIMessageHumanMessageSystemMessage)BaseTool)VectorStoreRetriever)ValidationError)AutoGPTOutputParserBaseAutoGPTOutputParser)AutoGPTPrompt)FINISH_NAMEc                   @  s`   e Zd ZdZdddddddd	d
ddZeddddddddd	d d	ddZdddddZdS )AutoGPTz#Agent for interacting with AutoGPT.Nstrr   r   r   zList[BaseTool]zOptional[HumanInputRun]z Optional[BaseChatMessageHistory])ai_namememorychainoutput_parsertoolsfeedback_toolchat_history_memoryc                 C  s:   || _ || _d| _|| _|| _|| _|| _|p2t | _d S )Nr   )	r   r   Znext_action_countr   r   r   r   r   r   )selfr   r   r   r   r   r   r    r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_experimental/autonomous_agents/autogpt/agent.py__init__   s    
zAutoGPT.__init__Fr
   boolz!Optional[BaseAutoGPTOutputParser])	r   ai_roler   r   llmhuman_in_the_loopr   r   returnc	              	   C  sN   t |||g d|jd}	|r"t nd }
t||	d}| ||||pBt ||
|dS )N)r   messagesgoals
user_input)r   r#   r   Zinput_variablesZtoken_counter)r$   prompt)r   r   )r   Zget_num_tokensr	   r   r   )clsr   r#   r   r   r$   r%   r   r   r*   Zhuman_feedback_toolr   r   r   r    from_llm_and_tools2   s$    zAutoGPT.from_llm_and_toolsz	List[str])r(   r&   c              
   C  s  d}d}|d7 }| j j|| jj| j|d}t| | jt|d | jt|d | j	
|}dd | jD }|jtkr|jd S |j|v rB||j }z||j}W n ty }	 z"d	t|	 d
|j }W Y d }	~	nPd }	~	0  ty, }	 z.dt|	 dt|	j d
|j }W Y d }	~	n
d }	~	0 0 d|j d| }
n*|jdkr^d|j d}
nd|j d}
d| d|
 d}| jd ur| jd }|dv rtd dS |d| 7 }| jt|dg | jt|
d qd S )NzRDetermine which next command to use, and respond using the format specified above:r      )r(   r'   r   r)   )contentc                 S  s   i | ]}|j |qS r   )name).0tr   r   r    
<dictcomp>k       zAutoGPT.run.<locals>.<dictcomp>responsezValidation Error in args: z, args: zError: z, zCommand z returned: ERRORz. zUnknown command 'zl'. Please refer to the 'COMMANDS' list for available commands and only respond in the specified JSON format.zAssistant Reply: z
 
Result:  zInput: >   stopqZEXITING
)Zpage_content)r   runr   r'   r   printZadd_messager   r   r   parser   r/   r   argsr   r   	Exceptiontype__name__r   Zadd_documentsr   r   )r   r(   r)   Z
loop_countZassistant_replyactionr   ZtoolZobservationeresultZmemory_to_addZfeedbackr   r   r    r:   Q   sT    


 
zAutoGPT.run)NN)FNN)r@   
__module____qualname____doc__r!   classmethodr,   r:   r   r   r   r    r      s   	     "r   N)"
__future__r   typingr   r   Zlangchain.chains.llmr   Zlangchain.memoryr   Zlangchain.schemar   r   Z$langchain_community.tools.human.toolr	   Zlangchain_core.language_modelsr
   Zlangchain_core.messagesr   r   r   Zlangchain_core.toolsr   Zlangchain_core.vectorstoresr   Zpydanticr   Z>langchain_experimental.autonomous_agents.autogpt.output_parserr   r   Z7langchain_experimental.autonomous_agents.autogpt.promptr   ZAlangchain_experimental.autonomous_agents.autogpt.prompt_generatorr   r   r   r   r   r    <module>   s   