o hg @s2ddlZddlmZmZmZmZmZddlmZddl m Z ddl m Z ddl mZddlmZmZddlmZeeZeZed ed d d Zed edddZed ed ee fdedefddZededededededdefddZdS)N) APIRouterDepends HTTPExceptionRequestResponse)StreamingResponse)verify_app_secretALLOWED_MODELS) ChatRequest)process_non_streaming_responseprocess_streaming_response) setup_loggerz/v1/chat/completionsz/api/v1/chat/completionscstddddddS)N*z POST, OPTIONSzContent-Type, Authorization)zAccess-Control-Allow-OriginzAccess-Control-Allow-MethodszAccess-Control-Allow-Headers) status_codeheaders)rrr/app/api/routes.pychat_completions_optionssrz /v1/modelsz/api/v1/modelscs dtdS)Nlist)objectdatar rrrr list_modelss rrequest app_secretc stdtd|td|td|j|jddtDvr>tdd|jd d d d tDd |jrNtdtt|ddStdt |IdHS)NzEntering chat_completions routezReceived request: z App secret: z,Received chat completion request for model: cSsg|]}|dqS)idr.0modelrrr )sz$chat_completions..izModel z% is not allowed. Allowed models are: z, css|]}|dVqdS)rNrrrrr ,sz#chat_completions..)rdetailzStreaming responseztext/event-stream) media_typezNon-streaming response) loggerinforr rjoinstreamrr r )rrrrrchat_completionss    r(/z/healthzz/readyz/alivez/statusz/healthcCsttddiddS)Nstatusokzapplication/json)contentr#)rjsondumps)rrrr health_check7sr/) r-fastapirrrrrfastapi.responsesrZapi.authrZ api.configr Z api.modelsr Z api.utilsr r api.loggerr__name__r$routeroptionsrgetrpoststrr(router/rrrrs>