Spaces:
Paused
Paused
| from fastapi import APIRouter, Depends, Request, Response | |
| from litellm.proxy._types import * | |
| from litellm.proxy.auth.user_api_key_auth import UserAPIKeyAuth, user_api_key_auth | |
| from litellm.proxy.common_request_processing import ProxyBaseLLMRequestProcessing | |
| router = APIRouter() | |
| async def responses_api( | |
| request: Request, | |
| fastapi_response: Response, | |
| user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), | |
| ): | |
| """ | |
| Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses | |
| ```bash | |
| curl -X POST http://localhost:4000/v1/responses \ | |
| -H "Content-Type: application/json" \ | |
| -H "Authorization: Bearer sk-1234" \ | |
| -d '{ | |
| "model": "gpt-4o", | |
| "input": "Tell me about AI" | |
| }' | |
| ``` | |
| """ | |
| from litellm.proxy.proxy_server import ( | |
| _read_request_body, | |
| general_settings, | |
| llm_router, | |
| proxy_config, | |
| proxy_logging_obj, | |
| select_data_generator, | |
| user_api_base, | |
| user_max_tokens, | |
| user_model, | |
| user_request_timeout, | |
| user_temperature, | |
| version, | |
| ) | |
| data = await _read_request_body(request=request) | |
| processor = ProxyBaseLLMRequestProcessing(data=data) | |
| try: | |
| return await processor.base_process_llm_request( | |
| request=request, | |
| fastapi_response=fastapi_response, | |
| user_api_key_dict=user_api_key_dict, | |
| route_type="aresponses", | |
| proxy_logging_obj=proxy_logging_obj, | |
| llm_router=llm_router, | |
| general_settings=general_settings, | |
| proxy_config=proxy_config, | |
| select_data_generator=select_data_generator, | |
| model=None, | |
| user_model=user_model, | |
| user_temperature=user_temperature, | |
| user_request_timeout=user_request_timeout, | |
| user_max_tokens=user_max_tokens, | |
| user_api_base=user_api_base, | |
| version=version, | |
| ) | |
| except Exception as e: | |
| raise await processor._handle_llm_api_exception( | |
| e=e, | |
| user_api_key_dict=user_api_key_dict, | |
| proxy_logging_obj=proxy_logging_obj, | |
| version=version, | |
| ) | |
| async def get_response( | |
| response_id: str, | |
| request: Request, | |
| fastapi_response: Response, | |
| user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), | |
| ): | |
| """ | |
| Get a response by ID. | |
| Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/get | |
| ```bash | |
| curl -X GET http://localhost:4000/v1/responses/resp_abc123 \ | |
| -H "Authorization: Bearer sk-1234" | |
| ``` | |
| """ | |
| from litellm.proxy.proxy_server import ( | |
| _read_request_body, | |
| general_settings, | |
| llm_router, | |
| proxy_config, | |
| proxy_logging_obj, | |
| select_data_generator, | |
| user_api_base, | |
| user_max_tokens, | |
| user_model, | |
| user_request_timeout, | |
| user_temperature, | |
| version, | |
| ) | |
| data = await _read_request_body(request=request) | |
| data["response_id"] = response_id | |
| processor = ProxyBaseLLMRequestProcessing(data=data) | |
| try: | |
| return await processor.base_process_llm_request( | |
| request=request, | |
| fastapi_response=fastapi_response, | |
| user_api_key_dict=user_api_key_dict, | |
| route_type="aget_responses", | |
| proxy_logging_obj=proxy_logging_obj, | |
| llm_router=llm_router, | |
| general_settings=general_settings, | |
| proxy_config=proxy_config, | |
| select_data_generator=select_data_generator, | |
| model=None, | |
| user_model=user_model, | |
| user_temperature=user_temperature, | |
| user_request_timeout=user_request_timeout, | |
| user_max_tokens=user_max_tokens, | |
| user_api_base=user_api_base, | |
| version=version, | |
| ) | |
| except Exception as e: | |
| raise await processor._handle_llm_api_exception( | |
| e=e, | |
| user_api_key_dict=user_api_key_dict, | |
| proxy_logging_obj=proxy_logging_obj, | |
| version=version, | |
| ) | |
| async def delete_response( | |
| response_id: str, | |
| request: Request, | |
| fastapi_response: Response, | |
| user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), | |
| ): | |
| """ | |
| Delete a response by ID. | |
| Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/delete | |
| ```bash | |
| curl -X DELETE http://localhost:4000/v1/responses/resp_abc123 \ | |
| -H "Authorization: Bearer sk-1234" | |
| ``` | |
| """ | |
| from litellm.proxy.proxy_server import ( | |
| _read_request_body, | |
| general_settings, | |
| llm_router, | |
| proxy_config, | |
| proxy_logging_obj, | |
| select_data_generator, | |
| user_api_base, | |
| user_max_tokens, | |
| user_model, | |
| user_request_timeout, | |
| user_temperature, | |
| version, | |
| ) | |
| data = await _read_request_body(request=request) | |
| data["response_id"] = response_id | |
| processor = ProxyBaseLLMRequestProcessing(data=data) | |
| try: | |
| return await processor.base_process_llm_request( | |
| request=request, | |
| fastapi_response=fastapi_response, | |
| user_api_key_dict=user_api_key_dict, | |
| route_type="adelete_responses", | |
| proxy_logging_obj=proxy_logging_obj, | |
| llm_router=llm_router, | |
| general_settings=general_settings, | |
| proxy_config=proxy_config, | |
| select_data_generator=select_data_generator, | |
| model=None, | |
| user_model=user_model, | |
| user_temperature=user_temperature, | |
| user_request_timeout=user_request_timeout, | |
| user_max_tokens=user_max_tokens, | |
| user_api_base=user_api_base, | |
| version=version, | |
| ) | |
| except Exception as e: | |
| raise await processor._handle_llm_api_exception( | |
| e=e, | |
| user_api_key_dict=user_api_key_dict, | |
| proxy_logging_obj=proxy_logging_obj, | |
| version=version, | |
| ) | |
| async def get_response_input_items( | |
| response_id: str, | |
| request: Request, | |
| fastapi_response: Response, | |
| user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), | |
| ): | |
| """ | |
| Get input items for a response. | |
| Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/input-items | |
| ```bash | |
| curl -X GET http://localhost:4000/v1/responses/resp_abc123/input_items \ | |
| -H "Authorization: Bearer sk-1234" | |
| ``` | |
| """ | |
| # TODO: Implement input items retrieval logic | |
| pass | |