o
    ưi
                     @   s|   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 deZG d	d
 d
eZdS )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                   @   s   e Zd ZdS )HerokuErrorN)__name__
__module____qualname__ r   r   ^/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/heroku/chat/transformation.pyr      s    r   c                       s  e Zd Zedee deded dee	e	ee f fddZ
e	ddee deded dee fd	dZ
	ddee dededeee ee	e	ee f f f fd
dZ
dee dee deee ee f fddZddee dee dedededee defddZ  ZS )HerokuChatConfigmessagesmodelis_asyncTreturnc                 C      d S Nr   selfr   r   r   r   r   r   _transform_messages   s   z$HerokuChatConfig._transform_messagesFc                 C   r   r   r   r   r   r   r   r      s   c                    s0   t |}|rt j||ddS t j||d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   	__class__r   r   r   #   s   api_baseapi_keyc                 C   s$   |pt d}|pt d}||fS )NZHEROKU_API_BASEZHEROKU_API_KEY)osgetenv)r   r    r!   r   r   r   $_get_openai_compatible_provider_info4   s   z5HerokuChatConfig._get_openai_compatible_provider_infoNoptional_paramslitellm_paramsstreamc                 C   s4   |  ||\}}|std|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'   _r   r   r   get_complete_url:   s   

z!HerokuChatConfig.get_complete_url)Fr   )r   r   r   r	   r   r   strr   r   r   r   boolr   r   r   r$   dictr*   __classcell__r   r   r   r   r      sD    	.<r   )__doc__r"   typingr   r   r   r   r   r   r   r	   Z8litellm.litellm_core_utils.prompt_templates.common_utilsr
   Zlitellm.types.llms.openair   Z+litellm.llms.openai.chat.gpt_transformationr   	Exceptionr   r   r   r   r   r   <module>   s    (