aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py')
-rw-r--r--.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py170
1 files changed, 170 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py b/.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py
new file mode 100644
index 00000000..a2d04b18
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/litellm/llms/custom_llm.py
@@ -0,0 +1,170 @@
+# What is this?
+## Handler file for a Custom Chat LLM
+
+"""
+- completion
+- acompletion
+- streaming
+- async_streaming
+"""
+
+from typing import Any, AsyncIterator, Callable, Iterator, Optional, Union
+
+import httpx
+
+from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler, HTTPHandler
+from litellm.types.utils import GenericStreamingChunk
+from litellm.utils import ImageResponse, ModelResponse
+
+from .base import BaseLLM
+
+
+class CustomLLMError(Exception): # use this for all your exceptions
+ def __init__(
+ self,
+ status_code,
+ message,
+ ):
+ self.status_code = status_code
+ self.message = message
+ super().__init__(
+ self.message
+ ) # Call the base class constructor with the parameters it needs
+
+
+class CustomLLM(BaseLLM):
+ def __init__(self) -> None:
+ super().__init__()
+
+ def completion(
+ self,
+ model: str,
+ messages: list,
+ api_base: str,
+ custom_prompt_dict: dict,
+ model_response: ModelResponse,
+ print_verbose: Callable,
+ encoding,
+ api_key,
+ logging_obj,
+ optional_params: dict,
+ acompletion=None,
+ litellm_params=None,
+ logger_fn=None,
+ headers={},
+ timeout: Optional[Union[float, httpx.Timeout]] = None,
+ client: Optional[HTTPHandler] = None,
+ ) -> ModelResponse:
+ raise CustomLLMError(status_code=500, message="Not implemented yet!")
+
+ def streaming(
+ self,
+ model: str,
+ messages: list,
+ api_base: str,
+ custom_prompt_dict: dict,
+ model_response: ModelResponse,
+ print_verbose: Callable,
+ encoding,
+ api_key,
+ logging_obj,
+ optional_params: dict,
+ acompletion=None,
+ litellm_params=None,
+ logger_fn=None,
+ headers={},
+ timeout: Optional[Union[float, httpx.Timeout]] = None,
+ client: Optional[HTTPHandler] = None,
+ ) -> Iterator[GenericStreamingChunk]:
+ raise CustomLLMError(status_code=500, message="Not implemented yet!")
+
+ async def acompletion(
+ self,
+ model: str,
+ messages: list,
+ api_base: str,
+ custom_prompt_dict: dict,
+ model_response: ModelResponse,
+ print_verbose: Callable,
+ encoding,
+ api_key,
+ logging_obj,
+ optional_params: dict,
+ acompletion=None,
+ litellm_params=None,
+ logger_fn=None,
+ headers={},
+ timeout: Optional[Union[float, httpx.Timeout]] = None,
+ client: Optional[AsyncHTTPHandler] = None,
+ ) -> ModelResponse:
+ raise CustomLLMError(status_code=500, message="Not implemented yet!")
+
+ async def astreaming(
+ self,
+ model: str,
+ messages: list,
+ api_base: str,
+ custom_prompt_dict: dict,
+ model_response: ModelResponse,
+ print_verbose: Callable,
+ encoding,
+ api_key,
+ logging_obj,
+ optional_params: dict,
+ acompletion=None,
+ litellm_params=None,
+ logger_fn=None,
+ headers={},
+ timeout: Optional[Union[float, httpx.Timeout]] = None,
+ client: Optional[AsyncHTTPHandler] = None,
+ ) -> AsyncIterator[GenericStreamingChunk]:
+ raise CustomLLMError(status_code=500, message="Not implemented yet!")
+
+ def image_generation(
+ self,
+ model: str,
+ prompt: str,
+ api_key: Optional[str],
+ api_base: Optional[str],
+ model_response: ImageResponse,
+ optional_params: dict,
+ logging_obj: Any,
+ timeout: Optional[Union[float, httpx.Timeout]] = None,
+ client: Optional[HTTPHandler] = None,
+ ) -> ImageResponse:
+ raise CustomLLMError(status_code=500, message="Not implemented yet!")
+
+ async def aimage_generation(
+ self,
+ model: str,
+ prompt: str,
+ model_response: ImageResponse,
+ api_key: Optional[
+ str
+ ], # dynamically set api_key - https://docs.litellm.ai/docs/set_keys#api_key
+ api_base: Optional[
+ str
+ ], # dynamically set api_base - https://docs.litellm.ai/docs/set_keys#api_base
+ optional_params: dict,
+ logging_obj: Any,
+ timeout: Optional[Union[float, httpx.Timeout]] = None,
+ client: Optional[AsyncHTTPHandler] = None,
+ ) -> ImageResponse:
+ raise CustomLLMError(status_code=500, message="Not implemented yet!")
+
+
+def custom_chat_llm_router(
+ async_fn: bool, stream: Optional[bool], custom_llm: CustomLLM
+):
+ """
+ Routes call to CustomLLM completion/acompletion/streaming/astreaming functions, based on call type
+
+ Validates if response is in expected format
+ """
+ if async_fn:
+ if stream:
+ return custom_llm.astreaming
+ return custom_llm.acompletion
+ if stream:
+ return custom_llm.streaming
+ return custom_llm.completion