aidial_adapter_openai/databricks.py (24 lines of code) (raw):

from typing import Any, cast from openai import AsyncStream from openai.types.chat.chat_completion import ChatCompletion from openai.types.chat.chat_completion_chunk import ChatCompletionChunk from aidial_adapter_openai.utils.auth import OpenAICreds from aidial_adapter_openai.utils.parsers import ( OpenAIParams, chat_completions_parser, ) from aidial_adapter_openai.utils.reflection import call_with_extra_body from aidial_adapter_openai.utils.streaming import chunk_to_dict, map_stream async def chat_completion( data: Any, upstream_endpoint: str, creds: OpenAICreds ): client = chat_completions_parser.parse(upstream_endpoint).get_client( cast(OpenAIParams, creds) ) response: AsyncStream[ChatCompletionChunk] | ChatCompletion = ( await call_with_extra_body(client.chat.completions.create, data) ) if isinstance(response, AsyncStream): return map_stream(chunk_to_dict, response) else: return response