§
    4ùžjŠ	  ã                  óŒ   — d dl mZ d dlZd dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZmZ  ej        d¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAny)ÚAiModelSpecÚAiProviderTypeÚ
AiResponseÚAiTextRequestÚAiVisionRequestzdscons.ai.adapter.lmstudioc                  ó2   — e Zd ZdZ	 	 	 ddd„Zdd„Zdd„ZdS )ÚLmStudioAdapterz6Offline On-Premise Adapter for Local LM Studio server.úhttp://127.0.0.1:1234/v1ú	lm-studioç      4@Úbase_urlÚstrÚapi_keyÚtimeout_secondsÚfloatÚreturnÚNonec                óV   — |                      d¦  «        | _        || _        || _        d S )Nú/)ÚrstripÚ	_base_urlÚ_api_keyÚ_timeout)Úselfr   r   r   s       úJC:\Projects\DSCons\app\core\ai\infrastructure\adapters\lmstudio_adapter.pyÚ__init__zLmStudioAdapter.__init__   s)   € ð "Ÿš¨Ñ-Ô-ˆŒØˆŒØ'ˆŒˆˆó    Úrequestr   Úspecr   r   c              ƒ  ó^  K  — t          j        ¦   «         }g }|j        r|                     d|j        dœ¦  «         |j        r|                     |j        ¦  «         n$|j        r|                     d|j        dœ¦  «         |j        ||j        |j	        p|j
        dœ}t          j        | j        ¬¦  «        4 ƒd{V —†}|                     | j        › d�|dd	| j        › �i¬
¦  «        ƒ d{V —†}|                     ¦   «          |                     ¦   «         }ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |d         d         }	|	                     di ¦  «                             d¦  «        pd}
t          j        ¦   «         |z
  dz  }t)          |
|j        t,          j        |¬¦  «        S )z-Executes text generation via Local LM Studio.Úsystem)ÚroleÚcontentÚuser)ÚmodelÚmessagesÚtemperatureÚ
max_tokens)ÚtimeoutNz/chat/completionsÚAuthorizationzBearer )ÚjsonÚheadersÚchoicesr   Úmessager%   Ú g     @�@)r%   Ú
model_usedÚprovider_usedÚ
latency_ms)ÚtimeÚperf_counterÚsystem_promptÚappendr(   ÚextendÚpromptÚprovider_model_idr)   r*   Úmax_output_tokensÚhttpxÚAsyncClientr   Úpostr   r   Úraise_for_statusr-   Úgetr   Úcanonical_idr   ÚLMSTUDIO)r   r    r!   Út0r(   ÚpayloadÚclientÚresÚdataÚchoicer%   Úlatencys               r   Úgenerate_textzLmStudioAdapter.generate_text!   sp  è è € õ ÔÑ Ô ˆØ)+ˆàÔ ð 	RØ�OŠO X¸'Ô:OÐPÐPÑQÔQÐQàÔð 	IØ�OŠO˜GÔ,Ñ-Ô-Ð-Ð-ØŒ^ð 	IØ�OŠO V¸¼ÐGÐGÑHÔHÐHð Ô+Ø Ø"Ô.Ø!Ô,ÐF°Ô0Fð	
ð 
ˆõ Ô$¨T¬]Ð;Ñ;Ô;ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸vØŸšØ”>Ð4Ð4Ð4ØØ(Ð*C°D´MÐ*CÐ*CÐDð $ñ ô ð ð ð ð ð ð ˆCð
 × Ò Ñ"Ô"Ð"Ø—8’8‘:”:ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �i” Ô#ˆØ—*’*˜Y¨Ñ+Ô+×/Ò/°	Ñ:Ô:Ð@¸bˆåÔ$Ñ&Ô&¨Ñ+¨vÑ5ˆÝØØÔ(Ý(Ô1Øð	
ñ 
ô 
ð 	
s   Â?AD*Ä*
D4Ä7D4r	   c              ƒ  ó$   K  — t          d¦  «        ‚)zKLM Studio currently does not support heavy vision models locally in DSCons.zDLocal LM Studio does not support vision OCR in DSCons configuration.)ÚNotImplementedError)r   r    r!   s      r   Úanalyze_visionzLmStudioAdapter.analyze_visionK   s   è è € õ "Ð"hÑiÔiÐir   N)r   r   r   )r   r   r   r   r   r   r   r   )r    r   r!   r   r   r   )r    r	   r!   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rK   rN   © r   r   r   r      sm   € € € € € Ø@Ð@ð 3Ø"Ø!%ð	(ð (ð (ð (ð (ð(
ð (
ð (
ð (
ðTjð jð jð jð jð jr   r   )Ú
__future__r   Úloggingr5   Útypingr   r=   Úapp.core.ai.domain.modelsr   r   r   r   r	   Ú	getLoggerÚloggerr   rS   r   r   ú<module>rZ      sÛ   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	Ð7Ñ	8Ô	8€ð;jð ;jð ;jð ;jð ;jñ ;jô ;jð ;jð ;jð ;jr   