
    "<ix                        d dl mZ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mZmZmZ 	 d dlmZmZ d dlmZmZmZmZmZ d d	lmZ n# e$ rZ ed
          edZ[ww xY wd dlm Z  d dl!m"Z"  G d de"          Z#dS )    )IteratorSequence)get_args)ClientSessionServerSession)LifespanContextTRequestContext)CreateMessageRequestParams)CreateMessageResultModelPreferencesSamplingMessageTextContent)	NOT_GIVENOpenAI)ChatCompletion#ChatCompletionAssistantMessageParamChatCompletionMessageParam ChatCompletionSystemMessageParamChatCompletionUserMessageParam)	ChatModelzvThe `openai` package is not installed. Please install `fastmcp[openai]` or add `openai` to your dependencies manually.N)override)BaseLLMSamplingHandlerc            
       Z   e Zd Zddededz  fdZedee         de	de
eef         e
eef         z  defd	            Zed
eez  ee         z  dz  dee         fd            Zededz  dee         dee         fd            Zededefd            Zd
eez  ee         z  dz  defdZdS )OpenAISamplingHandlerNdefault_modelclientc                 >    |pt                      | _        || _        d S N)r   r   r   )selfr   r   s      /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fastmcp/experimental/sampling/handlers/openai.py__init__zOpenAISamplingHandler.__init__#   s     $0(5    messagesparamscontextreturnc                 (  K   |                      |j        |          }|                     |j                  }| j        j        j                            |||j        pt          |j
        |j        pt                    }|                     |          S )N)system_promptr#   )modelr#   temperature
max_tokensstop)_convert_to_openai_messagessystemPrompt_select_model_from_preferencesmodelPreferencesr   chatcompletionscreater*   r   	maxTokensstopSequences)_chat_completion_to_create_message_result)r   r#   r$   r%   openai_messagesr)   responses          r    __call__zOpenAISamplingHandler.__call__'   s       ,,$1! -   	  >>v?VWW;#/66$*7i'%2 7 
 
 ==hGGGr"   model_preferencesc              #     K   | d S t          | t                    r| t          t                    v r| V  t          | t                    r| E d {V  t          | t
                    r| j        x}sd S |D ]}|j        x}s|V  d S d S r   )
isinstancestrr   r   listr   hintsname)r:   r?   hintr@   s       r    _iter_models_from_preferencesz3OpenAISamplingHandler._iter_models_from_preferencesB   s       $F'-- 	$2CxH
 H
 3
 3
 $###'.. 	)((((((((')9:: 	.44E    $	) 



	 	 r"   r(   c                    g }| r$|                     t          d|                      t          |t                    r$|                     t	          d|                     t          |t
                    r|D ]}t          |t                    r%|                     t	          d|                     <t          |j        t                    st          d          |j	        dk    r/|                     t	          d|j        j
                             |                     t          d|j        j
                             |S )Nsystem)rolecontentuserzOnly text content is supported	assistant)appendr   r<   r=   r   r>   rF   r   
ValueErrorrE   textr   )r(   r#   r7   messages       r    r-   z1OpenAISamplingHandler._convert_to_openai_messages[   s    =? 	""0!)     h$$ 	"".$     h%% 	#  gs++ #**6!'$+     !'/;?? G$%EFFF<6))#**6!'$+O$8      $**;!,$+O$8      r"   chat_completionc                     t          | j                  dk    rt          d          | j        d         }|j        j        x}r&t          t          d|          d| j                  S t          d          )Nr   zNo response for completionrK   )typerK   rH   )rF   rE   r)   z&No content in response from completion)lenchoicesrJ   rL   rF   r   r   r)   )rM   first_choicerF   s      r    r6   z?OpenAISamplingHandler._chat_completion_to_create_message_result   s     &''1,,9:::&.q1"*227 	&#g>>> %+    ABBBr"   c                 x    |                      |          D ]}|t          t                    v r|}|c S | j        S r   )rB   r   r   r   )r   r:   model_optionchosen_models       r    r/   z4OpenAISamplingHandler._select_model_from_preferences   sV     !>>?PQQ 	$ 	$Lx	2222*6#### 3 !!r"   r   )__name__
__module____qualname__r   r   r!   r   r>   r   SamplingParamsr	   r   r   r   r   r9   staticmethodr   r=   r   rB   r   r   r-   r   r6   r/    r"   r    r   r   "   s       6 6i 6$ 6 6 6 6 H'H H  /? ?@
(88
9:	H 
H H H XH4 +c1DI=D	#   \0 2Tz2-5o-F2	(	)2 2 2 \2h C'C	C C C \C""!1C!7$s)!Cd!J"	" " " " " "r"   r   )$collections.abcr   r   typingr   mcpr   r   mcp.shared.contextr   r	   	mcp.typesr
   rY   r   r   r   r   openair   r   openai.types.chatr   r   r   r   r   openai.types.shared.chat_modelr   ImportErroretyping_extensionsr   +fastmcp.experimental.sampling.handlers.baser   r   r[   r"   r    <module>rh      s   . . . . . . . .       , , , , , , , , ? ? ? ? ? ? ? ? B B B B B B           ((((((((              9888888   
+ 	A 
 ' & & & & & N N N N N NH" H" H" H" H"2 H" H" H" H" H"s   A A%A  A%