
    @'h                         d Z ddlmZmZmZ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 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 ddlmZ ddlmZ dZ  G d de      Z!y)z
OpenAI Agent.

Simple wrapper around AgentRunner + OpenAIAgentWorker.

For the legacy implementation see:
```python
from llama_index.agent.legacy.openai.base import OpenAIAgent
```
    )AnyDictListCallableOptionalType)OpenAIAgentWorker)AgentRunner)CallbackManager)ChatMessage)LLM)ChatMemoryBuffer)
BaseMemory)ObjectRetriever)Settings)BaseTool)OpenAI)OpenAIToolCall   c                    X    e Zd ZdZdeddddfdee   dededee	   d	e
d
ededee   deee      deeegef      ddf fdZedddddededddddfdeee      deee      dee   deee	      dee   dee   d	e
d
ededee   dee   deee	      deeegef      dedd fd       Z xZS )OpenAIAgentz
    OpenAI agent.

    Subclasses AgentRunner with a OpenAIAgentWorker.

    For the legacy implementation see:
    ```python
    from llama_index.agent.legacy.openai.base import OpenAIAgent
    ```

    FautoNtoolsllmmemoryprefix_messagesverbosemax_function_callsdefault_tool_choicecallback_managertool_retrievertool_call_parserreturnc           
          |xs |j                   }t        j                  ||	||||||
      }t        |   |||||       y)zInit params.)r   r!   r   r   r   r    r   r"   )r   r   r    r   N)r    r	   
from_toolssuper__init__)selfr   r   r   r   r   r   r   r    r!   r"   step_engine	__class__s               d/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/llama_index/agent/openai/base.pyr'   zOpenAIAgent.__init__2   sa     ,Cs/C/C'22)1-+-	
 	- 3 	 	
    chat_history
memory_clssystem_promptkwargsc                    |xs g }|xs g }|xs t         j                  }t        |t              st	        d      |
|
|_        |xs |j                  ||      }|j                  j                  st	        d|j                   d      ||t	        d      t        |d      g}|xs g } | ||||||||
|	|
      S )	z
        Create an OpenAIAgent from a list of tools.

        Similar to `from_defaults` in other classes, this method will
        infer defaults for a variety of parameters, including the LLM,
        if they are not specified.

        zllm must be a OpenAI instance)r   zModel name z( does not support function calling API. z5Cannot specify both system_prompt and prefix_messagessystem)contentrole)
r   r!   r   r   r   r   r   r    r   r"   )r   r   
isinstancer   
ValueErrorr    from_defaultsmetadatais_function_calling_modelmodelr   )clsr   r!   r   r-   r   r.   r   r   r   r    r/   r   r"   r0   s                  r+   r%   zOpenAIAgent.from_toolsS   s    4 #)r!X\\#v&<=='#3C J:33Lc3J||55cii[(PQ  $* K   +=xPQO)/R)+1- 3-
 	
r,   )__name__
__module____qualname____doc__DEFAULT_MAX_FUNCTION_CALLSr   r   r   r   r   boolintstrr   r   r   r   r   r   r'   classmethodr   r   r   r   r%   __classcell__)r*   s   @r+   r   r   %   s   
$ "<#)6:>BGK
H~
 
 	

 k*
 
  
 !
 #?3
 !!:;
 #8^,<d,B#CD
 

B  +/>B!48'+'7"<#)6:'+7;GK>
X'>
 !!:;>
 c]	>

 tK01>
 $>
 $>
 >
  >
 !>
 #?3>
  }>
 "${"34>
 #8^,<d,B#CD>
 >
  
!>
 >
r,   r   N)"r?   typingr   r   r   r   r   r   llama_index.agent.openai.stepr	   "llama_index.core.agent.runner.baser
   llama_index.core.callbacksr    llama_index.core.base.llms.typesr   llama_index.core.llms.llmr   *llama_index.core.memory.chat_memory_bufferr   llama_index.core.memory.typesr   llama_index.core.objects.baser   llama_index.core.settingsr   llama_index.core.toolsr   llama_index.llms.openair   llama_index.llms.openai.utilsr   r@   r    r,   r+   <module>rT      sN   	  < : 6 8 ) G 4 9 . + * 8 m
+ m
r,   