
    j
                         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__     /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/llms/heroku/chat/transformation.pyr   r      s    r   r   c                   B    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_info4   s5    ;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:   sQ    ??'R!  B  C  C  !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"!Xc] !U]^aUb !glmuvymz  }E  FI  }J  nJ  hK !	# 	# 	WZ 	mq 	  DH 	  RZ  [_  R` 	  lo 	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	) 	0 0r   