Ë
    uPêjS%  ã                   óÞ   — 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 d dlmZmZmZ d dl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mZmZm Z  erd dl!m"Z#  G d„ de«      Z$y)é    )ÚTYPE_CHECKINGÚAnyÚFinal)ÚAuthenticationError)Úprocess_response_headers)Ú_safe_convert_created_field)ÚOpenAIError)ÚOpenAIResponsesAPIConfig)Úparse_sse_json_chunkÚrecord_output_item_chunkÚrecord_output_text_chunk)ÚResponsesAPIResponseÚResponsesAPIStreamEvents)ÚGenericLiteLLMParams)ÚLlmProvidersé   )ÚAuthenticator)ÚCHATGPT_API_BASEÚGetAccessTokenErrorÚensure_chatgpt_session_idÚget_chatgpt_default_headersÚ get_chatgpt_default_instructions)ÚLoggingc                   óR  ‡ — e Zd Zdˆ fd„Zedefd„«       Zdedede	dz  defd„Z
ded	ed
ede	dedefˆ fd„Zdededdfˆ fd„Zdededefd„Zdedeedz  edz  f   fd„Zdeeef   deeef   dedz  fd„Zdeeef   dedz  fd„Zdededdfd„Zdedz  dedefd„Zdefd„Zˆ xZS )ÚChatGPTResponsesAPIConfigÚreturnNc                 ó@   •— t         ‰| �  «        t        «       | _        y ©N)ÚsuperÚ__init__r   Úauthenticator)ÚselfÚ	__class__s    €úr/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/chatgpt/responses/transformation.pyr    z"ChatGPTResponsesAPIConfig.__init__$   s   ø€ Ü‰ÑÔÜ*›_ˆÕó    c                 ó"   — t         j                  S r   )r   ÚCHATGPT©r"   s    r$   Úcustom_llm_providerz-ChatGPTResponsesAPIConfig.custom_llm_provider(   s   € ä×#Ñ#Ð#r%   ÚheadersÚmodelÚlitellm_paramsc                 óø   — 	 | j                   j                  «       }| j                   j                  «       }t        |«      }t        |||«      }i |¥|¥S # t        $ r}t        |dt	        |«      ¬«      ‚d }~ww xY w)NÚchatgpt)r+   Úllm_providerÚmessage)r!   Úget_access_tokenr   r   ÚstrÚget_account_idr   r   )	r"   r*   r+   r,   Úaccess_tokenÚeÚ
account_idÚ
session_idÚdefault_headerss	            r$   Úvalidate_environmentz.ChatGPTResponsesAPIConfig.validate_environment,   s†   € ð	Ø"&×"4Ñ"4×"EÑ"EÓ"GˆLð !×.Ñ.×=Ñ=Ó?ˆ
Ü5°nÓEˆ
Ü!<¸\È:ÐWaÓ!bˆØ-�/Ð- WÐ-Ð-øô #ò 	Ü%ØØ&Ü˜A›ôð ûð	ús   ‚A Á	A9ÁA4Á4A9ÚinputÚ$response_api_optional_request_paramsc                 óv  •— t         ‰| �  |||||«      }t        «       }|j                  d«      }|r||vr|› d|› �|d<   n||d<   d|d<   d|d<   t	        |j                  d«      xs g «      }	d|	vr|	j                  d«       |	|d<   h d	£}
|j                  «       D ��ci c]  \  }}||
v sŒ||“Œ c}}S c c}}w )
NÚinstructionsz

FÚstoreTÚstreamÚincludezreasoning.encrypted_content>   r:   r+   r>   Útoolsr?   r@   Ú	reasoningÚ
truncationÚtool_choicer=   Úprevious_response_id)r   Útransform_responses_api_requestr   ÚgetÚlistÚappendÚitems)r"   r+   r:   r;   r,   r*   ÚrequestÚbase_instructionsÚexisting_instructionsr@   Úallowed_keysÚkÚvr#   s                €r$   rF   z9ChatGPTResponsesAPIConfig.transform_responses_api_request@   sé   ø€ ô ™Ñ@ØØØ0ØØó
ˆô $DÓ#EÐØ'.§{¡{°>Ó'BÐÙ Ø Ð(=Ñ=Ø->Ð,?¸tÐDYÐCZÐ*[�˜Ò'à&7ˆG�NÑ#Ø ˆ�ÑØ ˆ�ÑÜ˜gŸk™k¨)Ó4Ò:¸Ó;ˆØ(°Ñ7Ø�N‰NÐ8Ô9Ø$ˆ�	Ñò
ˆð ")§¡£×F™˜˜A°A¸Ò4E��1‘ÓFÐFùÓFs   ÂB5Â,B5Úraw_responseÚlogging_objÚLiteLLMLoggingObjc                 óN  •— |j                   xs d}| j                  ||¬«      st        ‰| �  |||¬«      S |j	                  |j                   di i¬«       | j                  |¬«      \  }}|€%t        |xs |j                   |j                  ¬«      ‚| j                  ||¬«       |S )	NÚ )rQ   Ú	body_text)r+   rQ   rR   Úcomplete_input_dict)Úoriginal_responseÚadditional_args)rV   )r0   Ústatus_code)Úcompleted_responserQ   )	ÚtextÚ_should_parse_as_sser   Útransform_response_api_responseÚ	post_callÚ$_extract_completed_response_from_sser	   rZ   Ú_attach_response_headers)r"   r+   rQ   rR   rV   r[   Úerror_messager#   s          €r$   r^   z9ChatGPTResponsesAPIConfig.transform_response_api_responsem   sÑ   ø€ ð (×,Ñ,Ò2°ˆ	Ø×(Ñ(°lÈiÐ(ÔXÜ‘7Ñ:ØØ)Ø'ð ;ó ð ð 	×ÑØ*×/Ñ/Ø2°BÐ7ð 	ô 	
ð
 -1×,UÑ,UÐ`iÐ,UÓ,jÑ)Ð˜MØÐ%ÜØ%Ò:¨×):Ñ):Ø(×4Ñ4ôð ð
 	×%Ñ%Ð9KÐZfÐ%ÔgØ!Ð!r%   rV   c                 óú   — |j                   xs i j                  dd«      }d|j                  «       v ry|j                  «       }t	        |j                  d«      xs |j                  d«      xs
 d|v xs d|v «      S )	Nzcontent-typerU   ztext/event-streamTzevent:zdata:z
event:z
data:)r*   rG   ÚlowerÚlstripÚboolÚ
startswith)r"   rQ   rV   Úcontent_typeÚtrimmed_bodys        r$   r]   z.ChatGPTResponsesAPIConfig._should_parse_as_sseŠ   s‹   € Ø+×3Ñ3Ò9°r×>Ñ>¸~ÈrÓRˆØ ,×"4Ñ"4Ó"6Ñ6ØØ'×.Ñ.Ó0ˆÜØ×#Ñ# HÓ-ò &Ø×&Ñ& wÓ/ò&à˜YÐ&ò&ð ˜IÐ%ó	
ð 	
r%   c                 óú  — d }d }i }i }|j                  «       D ]Ý  }t        |«      }|€Œ|j                  d«      }|t        j                  k(  rt        ||¬«       ŒC|t        j                  k(  rt        |||¬«       Œe|t        j                  k(  r-i |¥}	|	j                  |«       | j                  ||	¬«      } ||fS |t        j                  t        j                  fv sŒÈ| j                  |«      }
|
€ŒÜ|
}Œß ||fS )NÚtype)Úparsed_chunkÚoutput_items)rl   rm   Útext_only_items)rl   Ústreamed_output_items)Ú
splitlinesr   rG   r   ÚOUTPUT_ITEM_DONEr   ÚOUTPUT_TEXT_DONEr   ÚRESPONSE_COMPLETEDÚupdateÚ$_build_completed_response_from_chunkÚRESPONSE_FAILEDÚERRORÚ_extract_error_message)r"   rV   r[   rb   ro   Útext_only_output_itemsÚchunkrl   Ú
event_typeÚmerged_itemsÚextracted_errors              r$   r`   z>ChatGPTResponsesAPIConfig._extract_completed_response_from_sse–   sC  € Ø!ÐØˆØ8:ÐØ9;ÐØ×)Ñ)Ó+ò (	4ˆEÜ/°Ó6ˆLØÐ#Øà%×)Ñ)¨&Ó1ˆJØÔ5×FÑFÒFÜ(Ø!-Ø!6õð àÔ5×FÑFÒFÜ(Ø!-Ø!6Ø$:õð
 àÔ5×HÑHÒHð
 1KÐ3IÐ0J�Ø×#Ñ#Ð$9Ô:Ø%)×%NÑ%NØ!-Ø*6ð &Oó &Ð"ð ð " =Ð0Ð0ð Ü(×8Ñ8Ü(×.Ñ.ðò ð #'×"=Ñ"=¸lÓ"K�Ø"Ñ.Ø$3‘MðQ(	4ðT " =Ð0Ð0r%   rl   ro   c                 óv  — |j                  d«      }t        |t        «      sy t        |«      }|j                  d«      s1|r/t        |j	                  «       «      D ��cg c]  \  }}|‘Œ	 c}}|d<   d|v rt        |d   «      |d<   	 t        di |¤ŽS c c}}w # t        $ r t        j                  di |¤ŽcY S w xY w)NÚresponseÚoutputÚ
created_at© )	rG   Ú
isinstanceÚdictÚsortedrJ   r   r   Ú	ExceptionÚmodel_construct)r"   rl   ro   Úresponse_payloadÚ_Úitems         r$   ru   z>ChatGPTResponsesAPIConfig._build_completed_response_from_chunkÇ   sÌ   € ð (×+Ñ+¨JÓ7ÐÜÐ*¬DÔ1ØÜÐ 0Ó1ÐØ×#Ñ# HÔ-Ñ2GÜ>DÐEZ×E`ÑE`ÓEbÓ>c×)d±7°1°dª$Ó)dÐ˜XÑ&ØÐ+Ñ+Ü-HÐIYÐZfÑIgÓ-hÐ˜\Ñ*ð	LÜ'Ñ;Ð*:Ñ;Ð;ùó	 *eøô
 ò 	LÜ'×7Ñ7ÑKÐ:JÑKÒKð	Lús   ÁBÂ
B ÂB8Â7B8c                 óè   — |j                  d«      xs$ |j                  d«      xs i j                  d«      }|€y t        |t        «      r|j                  d«      xs t        |«      S t        |«      S )NÚerrorr   r0   )rG   rƒ   r„   r2   )r"   rl   Ú	error_objs      r$   rx   z0ChatGPTResponsesAPIConfig._extract_error_message×   si   € Ø'×+Ñ+¨GÓ4Òi¸×9IÑ9IÈ*Ó9UÒ9[ÐY[×8`Ñ8`ÐahÓ8iˆ	ØÐØÜ�i¤Ô&Ø—=‘= Ó+Ò=¬s°9«~Ð=Ü�9‹~Ðr%   r[   c                 ó²   — t        |j                  «      }t        |«      }t        |d«      st	        |di «       ||j
                  d<   ||j
                  d<   y )NÚ_hidden_paramsÚadditional_headersr*   )r„   r*   r   ÚhasattrÚsetattrr�   )r"   r[   rQ   Úraw_headersÚprocessed_headerss        r$   ra   z2ChatGPTResponsesAPIConfig._attach_response_headersß   s\   € ô
 " ,×"6Ñ"6Ó7ˆÜ#;¸KÓ#HÐÜÐ)Ð+;Ô<ÜÐ&Ð(8¸"Ô=ØBSÐ×)Ñ)Ð*>Ñ?Ø7BÐ×)Ñ)¨)Ò4r%   Úapi_basec                 óz   — |xs" | j                   j                  «       xs t        }|j                  d«      }|› d�S )Nú/z
/responses)r!   Úget_api_baser   Úrstrip)r"   r•   r,   s      r$   Úget_complete_urlz*ChatGPTResponsesAPIConfig.get_complete_urlë   s>   € ð
 ÒT˜t×1Ñ1×>Ñ>Ó@ÒTÔDTˆØ—?‘? 3Ó'ˆØ�˜:Ð&Ð&r%   c                  ó   — y)z;ChatGPT does not support native WebSocket for Responses APIFr‚   r(   s    r$   Úsupports_native_websocketz3ChatGPTResponsesAPIConfig.supports_native_websocketô   s   € àr%   )r   N)Ú__name__Ú
__module__Ú__qualname__r    Úpropertyr   r)   r„   r2   r   r9   r   rF   r^   rf   r]   Útupler   r`   Úintru   rx   ra   rš   rœ   Ú__classcell__)r#   s   @r$   r   r   #   s¬  ø„ õ-ð ð$ \ò $ó ð$ð.àð.ð ð.ð -¨tÑ3ð	.ð
 
ó.ð(+Gàð+Gð ð+Gð /3ð	+Gð
 -ð+Gð ð+Gð 
õ+GðZ"àð"ð ð"ð )õ	"ð:

°ð 

Àð 

Èó 

ð/1¸cð /1ÀeÐL`ÐcgÑLgÐilÐosÑisÐLsÑFtó /1ðbLØ   c ™NðLØCGÈÈTÈ	Á?ðLà	 Ñ	$óLð °4¸¸S¸±>ð ÀcÈDÁjó ð
Cà0ð
Cð ð
Cð 
ó	
Cð'à˜‘*ð'ð ð'ð 
ó	'ð¨4÷ r%   r   N)%Útypingr   r   r   Úlitellm.exceptionsr   Ú'litellm.litellm_core_utils.core_helpersr   ÚFlitellm.litellm_core_utils.llm_response_utils.convert_dict_to_responser   Ú litellm.llms.openai.common_utilsr	   Ú,litellm.llms.openai.responses.transformationr
   Ú%litellm.responses.sse_output_recoveryr   r   r   Úlitellm.types.llms.openair   r   Úlitellm.types.routerr   Úlitellm.types.utilsr   r!   r   Úcommon_utilsr   r   r   r   r   Ú*litellm.litellm_core_utils.litellm_loggingr   rS   r   r‚   r%   r$   ú<module>r°      sY   ðß ,Ñ ,å 2Ý Lõõ 9Ý Q÷ñ ÷
õ 6Ý ,å )÷õ ñ ÝWôSÐ 8õ Sr%   