Team Ai
Apppublic

Yash030/claude-code-proxy

sourceHugging Faceupdated 5mo agoView on Hugging Face
2likes
model_router.cpython-314.pyc92 linesDownload Raw Back to __pycache__
1+
2Kj�>��8�Rt^RIHt^RIHt^RIHt^RIHt^RI	H3t4^RIHt^RI
Ht^RIHt^R	IHt^R5IHt^RIHtHt.ROt]!RRR
7!RR44t]!RRR
7!RR44t]!RRR
7!RR44t!RR4tR#)z-Model routing for Claude-compatible requests.)�annotations)�	dataclass)�logger)�SUPPORTED_PROVIDER_IDS)�Settings)�find_best_model_for_task)�SessionTracker)�TaskDetector)�GlobalRateLimiter)�decode_gateway_model_id)�MessagesRequest�TokenCountRequestT)�frozen�slotsc�J�]tRt^t$R]R&R]R&R]R&R]R&R]R&RtR	#)6�
ResolvedModel�str�original_model�provider_id�provider_model�provider_model_ref�bool�thinking_enabled�N��__name__�7__module__�__qualname__�__firstlineno__�__annotations__�__static_attributes__r��;C:\Users\yashw\.claude\claude-code-free\api\model_router.pyrrs �����������r!rc�,�]tRt^(t$R]R&R]R&RtR#)�RoutedMessagesRequestr�requestr�resolvedrNrrr!r"r$r$(s��
���r!r$c�,�]tRt^.t$R]R&R]R&RtR#)�RoutedTokenCountRequestr
r%rr&rNrrr!r"r(r(.s��
���r!r(c��]tRt^4tRtRRltRRltRRltRR	ltR8Rlt	RR
lt9RRltRRltRRlt
RRltRtR#)�ModelRouterzGResolve incoming Claude model names to configured provider/model pairs.c��V^8�dQhRR/#)��settingsrr)�formats"r"�__annotate__�ModelRouter.__annotate__7s��"�"��"r!c	��WnR#�N��	_settings)�selfr-s&&r"�__init__�ModelRouter.__init__7s��!�r!c� �V^8�dQhRRRR/#)r,�10model_namer�returnrr)r.s"r"r/r0:s��F�F�3�F�4�Fr!c
�F�VP4pVR8H;'gVR8H#)zAReturn whether the model name refers to the virtual 'auto' model.�autozanthropic/auto)�lower)r5r9�11name_lowers&& r"�_is_auto�ModelRouter._is_auto:s)���%�%�'�12��V�#�E�E�z�5E�'E�Er!c� �V^8�dQhRRRR/#)r,�raw_refrr:�13str | Noner)r.s"r"r/r0?s��)�)��)�14�)r!c
���T;'gRP4pV'gR#VPR4wr4pV'dV\9dV'dVRV2#RV2#)zBNormalize auto candidate refs to ``provider/model`` when possible.�N�/znvidia_nim/)�strip�	partitionr)r5rB�	candidater�	separator�	remainders&&    r"�_normalize_candidate_ref�$ModelRouter._normalize_candidate_ref?s^���]�]��)�)�+�	���,5�,?�,?��,D�)��	���(>�>�9�!�]�!�I�;�/�/��Y�K�(�(r!c� �V^8�dQhRRRR/#)r,�claude_model_namerr:rr)r.s"r"r/r0Ls��N15�N16��N17��N18r!c		��VPV4'EdtVPP;'gRP4pV'd�VP	R4Uu.uF*q3P4'gKVP4NK,	upF�pRV9dK\19P!V4p\20P!V4pVPPV4'gK[VPPV4p\VVVVVR7u#	VPPp\21P!V4p\22P!V4pVPPV4p\VVVVVR7#VPV4wp	p23pV	ePV24eLVeTMVPPV254p\P!RVV	V26V4\VV	V27VVR7#VPPV4pVPPV4p\28P!V4p\29P!V4pWa8wd\P!RW4\VVVVVR7#uupi)rE�,rF�rrrrrz:MODEL DIRECT: '{}' -> provider='{}' model='{}' thinking={}zMODEL MAPPING: '{}' -> '{}')r?r4�auto_model_orderrG�splitr�parse_provider_type�parse_model_name�provider_is_configured�resolve_thinkingr�model�_direct_provider_modelr�debug�
resolve_model)r5rO�	order_csv�c�candrrrr�direct_provider_id�direct_provider_model�force_thinking_enableds&&          r"�resolve�ModelRouter.resolveLs[���=�=�*�+�+����8�8�>�>�B�E�E�G�I��09����0D�R�0D�1���	�Y�Q�W�W�Y�0D�R�D��$�� �"*�">�">�t�"D�K�%-�%>�%>�t�%D�N��~�~�<�<�[�I�I�+/�>�>�+J�+J�K\�+]�(�,�+<�(3�+9�/3�-=� ��S� "&���!5�!5��"�6�6�7I�J�K�%�6�6�7I�J�N�#�~�~�>�>�?P�Q�� �0�'�-�#5�!1��
�
�'�'�(9�:�		30��!�"��)�.C�.O�*�5�'��^�^�4�4�5J�K�
�31
�L�L�L�!�"�%� �
�!�0�.�4�#4�!1��
�"�^�^�9�9�:K�L���>�>�:�:�;L�M���2�2�3E�F��!�2�2�3E�F���.��L�L�-�/@�
��,�#�)�1�-�32�	33��}Ss�"J�>Jc� �V^8�dQhRRRR/#)r,rOrr:zlist[ResolvedModel]r)r.s"r"r/r0�s��p�p�C�p�<O�pr!c	
��aaa	a34aa�SPS4'gSPS4.#.o35.o	\4o\P!4oRV	VV36VV3RllpSP37P;'gRP4pV'dWVPR4Uu.uF*qDP4'gKVP4NK,	upFpV!VR4K	V!SP38PR4SP39P;'gRP4pV'dXVPR4Uu.uF*qDP4'gKVP4NK,	upFpV!VR4K	M\FpV!VR4K	V!SP40PR	4V!SP41PR424V!SP43PR4RV3R
llpS44PVR7S45S	,p\ P"!RS\%V4RP'RV444V#uupiuupi)a�Resolve a model name to a prioritized list of candidates.46 47Used by the 'auto' routing logic to implement provider-side failover.48Considers session load for fair resource sharing across multiple clients.49 50Priority order:511. AUTO_MODEL_ORDER (if configured)522. MODEL (primary)533. NVIDIA NIM fallback models (if configured, or DEFAULT_NIM_AUTO_MODELS)544. MODEL_OPUS, MODEL_SONNET, MODEL_HAIKU55c�$�V^8�dQhRRRRRR/#)r,�refrC�sourcerr:�Noner)r.s"r"r/�4ModelRouter.resolve_candidates.<locals>.__annotate__�s!��2	�2	�z�2	�3�2	�4�2	r!c	��<�SPT;'gR4pVeVS
9dR#\P!V4p\P!V4pSPPV4'd�S
P
V4\SVVVSPPS4R7p\P!V4pVP4pVR8XdRpVPV4pV'g	V'g:V'dRMRp	\P!RVVV	V4S56PV4R#\P!RVV4SPV4R#\P!R	VV4R#)57rENrR�zenF�BLOCKED�	UNHEALTHYz3Routing: candidate '{}' (from {}) is {} (health={})z'Routing: added candidate '{}' (from {})z3Routing: candidate '{}' (from {}) is NOT CONFIGURED)rLrrUrVr4rW�addrrXr58�get_scoped_instance�59is_blocked�60is_healthyrr[�append)rhri�normalized_refrrr&�limiterrrrs�reason�blocked_candidatesrO�healthy_candidates�seenr5s&&        �����r"�
add_candidate�5ModelRouter.resolve_candidates.<locals>.add_candidate�sK���!�:�:�3�9�9�"�E�N��%��4�)?��"�6�6�~�F�K�%�6�6�~�F�N��~�~�4�4�[�A�A�����(�(�#4� +�#1�'5�%)�^�^�%D�%D�EV�%W���,�?�?��L��$�/�/�1�61��%�'�!&�J�%�/�/��?�62��Z�*4�Y�+�F��L�L�M�&���"��'�-�-�h�7��L�L�A�&���63'�-�-�h�7����I�"��r!rErQ�AUTO_MODEL_PRIORITY�MODEL�NVIDIA_NIM_FALLBACK_MODELS�DEFAULT_NIM_AUTO_MODELS�64MODEL_OPUS�MODEL_SONNET�MODEL_HAIKUc� �V^8�dQhRRRR/#)r,r^rr:�tupler)r.s"r"r/rk�s��	$�	$��	$�5�	$r!c�<�VPR8Xd^M^pSPPVP^4pW3#)rm)r�_provider_active�get)r^�is_zen�active�session_trackers&  �r"�provider_priority�9ModelRouter.resolve_candidates.<locals>.provider_priority�s:����-�-�5�0�Q�a�F�$�5�5�9�9�!�-�-��K�F��#�#r!)�keyz+Routing: resolved '{}' to {} candidates: {}z, c3�8"�TFqPx�K	R#5ir2)r)�.0r^s& r"�	<genexpr>�1ModelRouter.resolve_candidates.<locals>.<genexpr>65s���C�N�q�*�*�N�s�)r?rc�setr�get_instancer4rSrGrTrY�nvidia_nim_fallback_modelsr��66model_opus�model_sonnet�model_haiku�sortr�info�len�join)
r5rOr{r]r^r_�nim_csvr��all_candidatesrxryrzr�s
ff       @@@@r"�resolve_candidates�ModelRouter.resolve_candidates�s�����}�}�.�/�/��L�L�!2�3�4�4�24��24�����(�5�5�7��2	�2	�j�^�^�4�4�:�:��A�A�C�	��,5�O�O�C�,@�N�,@�q�G�G�I������,@�N���d�$9�:�O�	�d�n�n�*�*�G�4��>�>�<�<�B�B��I�I�K���,3�M�M�#�,>�L�,>�q�'�'�)������,>�L���d�$@�A�M�0���d�$=�>�0�	�d�n�n�/�/��>��d�n�n�1�1�>�B��d�n�n�0�0�-�@�	$�	$�	���$5��6�+�.@�@�����9������I�I�C�N�C�C�		67����KO��Ms�)I!�I!�I&�.I&c� �V^8�dQhRRRR/#)r,r9rr:z*tuple[str | None, str | None, bool | None]r)r.s"r"r/r0s��1�1��1�	3�1r!c	��\V4pVe;VP\9dR#VPVPVP3#VPR4wr4pV'gR#V\9dR#V'gR#W5R3#)NrF)NNN)rrrrrbrH)r5r9�decodedrrJrs&&    r"rZ�"ModelRouter._direct_provider_models���*�*�5�����"�"�*@�@�'�'��#�#��&�&��.�.��
�2<�1E�1E�c�1J�.����#�#��4�4�#�#��#�#��D�0�0r!c� �V^8�dQhRRRR/#)r,r%rr:r$r)r.s"r"r/r0$s ��H�H�&�H�	�Hr!c
��VPVP4pVPRR7pVPVn\	W2R7#)z*Return an internal routed request context.T)�deep�r%r&)rcrY�68model_copyrr$�r5r%r&�routeds&&  r"�resolve_messages_request�$ModelRouter.resolve_messages_request$sA���<�<��
�
�.���#�#��#�.���.�.���$�V�G�Gr!c� �V^8�dQhRRRR/#)r,r%r
r:r(r)r.s"r"r/r0-s ��J�J�(�J�	 �Jr!c
��VPVP4pVPRVP/RR7p\	W2R7#)z/Return an internal token-count request context.rYT)�updater�r�)rcrYr�rr(r�s&&  r"�resolve_token_count_request�'ModelRouter.resolve_token_count_request-sH���<�<��
�
�.���#�#��X�4�4�5�D�$�69��'�v�I�Ir!c�$�V^8�dQhRRRRRR/#)r,rOr�messages�listr:rr)r.s"r"r/r07s(��>�>��>��>�70�	>r!c
��VPV4'gVPV4#\4pVPV4p\P71!RVPVP4VPV4pV'gVPV4#VPR8g7VP'gDVP'g2VP'g \P!R4V^,#\4pVP'dVPR4VP'dVPR4VP'dVPR4V'dxVUu.uFqwPNK	pp\!Wh4p	V	'dKVFDp72V73PV	P"8XgK \P74!RV	P"V4V75u#	V^,#uupi)z�Resolve model with task-based capability matching.76 77For 'auto' model, detects task requirements and routes to best-capable model.78z>Task-aware routing: detected requirements={} confidence={:.2f}gffffff�?z>Task-aware routing: low confidence, using load-based selection�coding�	reasoning�visionz3Task-aware routing: selected {} for capabilities={})r?rcr	�detect_requirementsrr��required_capabilities�79confidencer��requires_vision�requires_coding�requires_reasoningr[r�rprr�	model_ref)r5rOr��detector�requirements�80candidates�
required_capsr^�81model_refs�bestr_s&&&        r"�resolve_with_task_awareness�'ModelRouter.resolve_with_task_awareness7s����}�}�.�/�/��<�<� 1�2�2� �>���3�3�H�=�����L��.�.��#�#�	82��,�,�->�?�83���<�<� 1�2�2��"�"�S�(��,�,�,� �0�0�0� �3�3�3��L�L�Y�Z��a�=� ���
��'�'�'����h�'��*�*�*����k�*��'�'�'����h�'��8B�C�84�1�.�.�85�J�C�+�M�F�D��&�D��.�.�$�.�.�@����Q� �N�N�)��86 $��'��!�}���Ds�?G;c� �V^8�dQhRRRR/#)r,r�r�r:rr)r.s"r"r/r0ws��8�8��8�#�8r!c
�Z�\4pVPV4pVPV4#)z2Get a hint about what kind of model would be best.)r	r��get_priority_hint)r5r�r�r�s&&  r"�get_routing_hint�ModelRouter.get_routing_hintws*���>���3�3�H�=���)�)�,�7�7r!r3N)rrrr�__doc__r6r?rLrcr�rZr�r�r�r�r rr!r"r*r*4sD��Q�"�F�87)�N88�`p�d1�,H�J�>�@8�8r!r*N)z.nvidia_nim/qwen/qwen3-coder-480b-a35b-instructznvidia_nim/z-ai/glm4.7z$nvidia_nim/stepfun-ai/step-3.5-flashz7nvidia_nim/mistralai/mistral-large-3-675b-instruct-2512z3nvidia_nim/abacusai/dracarys-llama-3.1-70b-instructz*nvidia_nim/bytedance/seed-oss-36b-instructz%nvidia_nim/mistralai/mistral-nemotron)r��89__future__r�dataclassesr�logurur�config.provider_idsr�config.settingsr�core.model_capabilitiesr�core.session_trackerr�core.task_detectorr	�providers.rate_limitr90�gateway_model_idsr�models.anthropicrr
r�rr$r(r*rr!r"�<module>r�s���3�"�!��6�$�<�/�+�2�6�@����$�d�#���$���$�d�#���$��91�$�d�#���$��92G8�G8r!