+
    zjY                    x  a  0 t $ R t^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht  ! R R]4      t ! R R	]4      t]! ]4      P!                  4       P"                  P"                  P"                  R
,          t]R,          tRRRRRR/tR]R&   ]RR R ll4       t]R R l4       t]R R l4       t]R R l4       tR# )u7   Anthropic SDK client factory ve sistem prompt yükleme.)annotations)	lru_cache)Path)AsyncAnthropic)get_settingsc                      ] tR t^tRtRtR# )LLMClientErroru8   LLM tarafında recoverable hatalar için base exception. N__name__
__module____qualname____firstlineno____doc____static_attributes__r	       Y/Users/zincirx/Documents/projelerim/patentyazar/backend-python/app/services/llm/client.pyr   r      s    Br   r   c                      ] tR t^tRtRtR# )LLMNotConfiguredErroru&   ANTHROPIC_API_KEY yoksa fırlatılır.r	   Nr
   r	   r   r   r   r      s    0r   r   promptsturkpatent.mdTREPzepo.mdUSzuspto.mdzdict[str, str]_PROMPT_FILESc                    V ^8  d   QhRRRR/# )   jurisdictionstrreturnr	   )formats   "r   __annotate__r!   "   s     , ,S ,C ,r   c                    \         P                  V R4      p\        V,          pVP                  4       '       g   \	        RV 24      hVP                  RR7      # )u4  Hedef patent ofisinin drafting sistem prompt'unu okur.

jurisdiction: TR | EP | US. Bilinmeyen değer TR'ye düşer.

Dönen metin prompt caching için stable bir prefix olmalı — değişirse
cache invalidate olur (bkz. CLAUDE.md "LLM cost discipline"). lru_cache
sayesinde dosya yalnızca bir kez okunur.
r   u   Sistem prompt bulunamadı: utf-8encoding)r   get_PROMPTS_DIRexistsr   	read_text)r   filenamepaths   &  r   load_system_promptr,   !   sO       ?H("D;;==:4&ABB>>7>++r   c                    V ^8  d   QhRRRR/# )r   taskr   r   r	   )r    s   "r   r!   r!   3   s     , ,3 ,3 ,r   c                    \         V  R2,          pVP                  4       '       g   \        RV 24      hVP                  RR7      # )u?  Göreve özel (kırpılmış) sistem prompt'unu okur.

Tam kural kitabı (`turkpatent.md` ~10 KB) her görev için gerekli değil ve
ucuz modellerde zararlı: Haiku 4.5'in minimum cache eşiği 4096 token
olduğu için kitap eşiğin sınırında kalıyor ve `cache_control` sessizce
hiçbir şey yapmayabiliyor — yani her çağrıda tam ücret ödenip hiç cache
okunmuyor. Göreve özel prompt hem küçük hem de yeterli.

Ofis farkı özet görevinde yalnızca ÇIKTI DİLİDİR (kelime limiti ve
biçim kuralları TR/EP/US'te aynı), o yüzden tek dosya kullanılır.
z.mdu   Görev prompt'u bulunamadı: r#   r$   )r'   r(   r   r)   )r.   r+   s   & r   load_task_promptr0   2   sC     TF#,&D;;==<TFCDD>>7>++r   c                   V ^8  d   QhRR/# )r   r   r   r	   )r    s   "r   r!   r!   F   s     $ $s $r   c                     \        R4      # )ur   TürkPatent sistem prompt'unu okur (geriye uyum için).

Yeni kod `load_system_prompt(jurisdiction)` kullanmalı.
r   )r,   r	   r   r   load_turkpatent_system_promptr3   E   s     d##r   c                   V ^8  d   QhRR/# )r   r   r   r	   )r    s   "r   r!   r!   O   s     > >n >r   c                 |    \        4       p V P                  '       g   \        R4      h\        V P                  R7      # )zBGlobal AsyncAnthropic client. API key yoksa LLMNotConfiguredError.uK   ANTHROPIC_API_KEY tanımlı değil. backend-python/.env dosyasına ekleyin.)api_key)r   anthropic_api_keyr   r   )settingss    r   get_anthropic_clientr9   N   s:     ~H%%%#Y
 	
 ("<"<==r   N)r   )__conditional_annotations__r   
__future__r   	functoolsr   pathlibr   	anthropicr   
app.configr   	Exceptionr   r   __file__resolveparentr'   _PROMPT_PATHr   __annotations__r,   r0   r3   r9   )r:   s   @r   <module>rF      s    = "   $ #CY C1N 1 H~%%'..55<<yHo-
 	/(*!~  , ,  , ,$ $ $ > >r   