
    il
                         d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ  G d de      Z G d	 d
e      Zy)zY
Heroku Chat Completions API

this is OpenAI compatible - no translation needed / occurs
    N)OptionalListTupleUnion	CoroutineAnyLiteraloverload)3handle_messages_with_content_list_to_str_conversion)AllMessageValues)OpenAIGPTConfigc                       e Zd Zy)HerokuErrorN)__name__
__module____qualname__     x/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/heroku/chat/transformation.pyr   r      s    r   r   c                   D    e Zd Zedee   deded   dee	e	ee   f   fd       Z
e	 ddee   deded   dee   fd       Z
	 ddee   dededeee   ee	e	ee   f   f   f fd	Z
d
ee   dee   deee   ee   f   fdZ	 dd
ee   dee   dedededee   defdZ xZS )HerokuChatConfigmessagesmodelis_asyncTreturnc                      y Nr   selfr   r   r   s       r   _transform_messagesz$HerokuChatConfig._transform_messages   s     	r   Fc                      y r   r   r   s       r   r    z$HerokuChatConfig._transform_messages   s     	r   c                 f    t        |      }|rt        | 	  ||d      S t        | 	  ||d      S )z
        Heroku does not support content in list format.
        See: https://devcenter.heroku.com/articles/heroku-inference-api-v1-chat-completions#content-object
        T)r   r   r   F)r   superr    )r   r   r   r   	__class__s       r   r    z$HerokuChatConfig._transform_messages%   sQ     GxP7.! /   7.! /  r   api_baseapi_keyc                 n    |xs t        j                  d      }|xs t        j                  d      }||fS )NHEROKU_API_BASEHEROKU_API_KEY)osgetenv)r   r%   r&   s      r   $_get_openai_compatible_provider_infoz5HerokuChatConfig._get_openai_compatible_provider_info6   s7     ;ryy):;8RYY'78  r   optional_paramslitellm_paramsstreamc                 v    | j                  ||      \  }}|st        d      |j                  d      s| d}|S )NzaNo api base was set. Please provide an api_base, or set the HEROKU_API_BASE environment variable.z/v1/chat/completions)r,   r   endswith)r   r%   r&   r   r-   r.   r/   _s           r   get_complete_urlz!HerokuChatConfig.get_complete_url>   sP     ??'R!s    !78"#78Hr   )Fr   )r   r   r   r
   r   r   strr	   r   r   r    boolr   r   r   r,   dictr3   __classcell__)r$   s   @r   r   r      s   -.7:FMdm	3T"233	4 
 
 $)	'(  %.	
 
	  NS-.7:FJ	t$%yc4@P;Q1Q'RR	S"! !08!	x}hsm+	,! "&3- # 	
    
r   r   )__doc__r*   typingr   r   r   r   r   r   r	   r
   8litellm.litellm_core_utils.prompt_templates.common_utilsr   litellm.types.llms.openair   +litellm.llms.openai.chat.gpt_transformationr   	Exceptionr   r   r   r   r   <module>r>      s=   
 
 R R R 7 G	) 	< <r   