aidial-sdk 0.42.0.dev1__tar.gz → 0.43.0.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/PKG-INFO +1 -1
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/application.py +20 -1
- aidial_sdk-0.43.0.dev1/aidial_sdk/telemetry/_context.py +13 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/logging.py +4 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/pyproject.toml +1 -1
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/LICENSE +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/README.md +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_errors.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_pydantic/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_pydantic/_compat.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_pydantic/_model_config.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/_cache.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/_types.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/base.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/choice.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/choice_base.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/chunks.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/enums.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/form.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/function_call.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/function_tool_call.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/request.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/response.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/stage.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/_headers.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/configuration.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/from_request_mixin.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/rate.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/tokenize.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/truncate_prompt.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/base.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/request.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/response.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/exceptions.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/header_propagator.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/py.typed +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/pydantic/v2.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/pydantic_v1/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/telemetry/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/telemetry/init.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/telemetry/types.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/__init__.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_attachment.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_cancel_scope.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_content_stream.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_disconnect_middleware.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_indexed_list.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_json_log_formatter.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_logging.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_reflection.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/env.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/errors.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/json.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/log_config.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/merge_chunks.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/pydantic.py +0 -0
- {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/streaming.py +0 -0
|
@@ -2,10 +2,12 @@ import logging
|
|
|
2
2
|
import re
|
|
3
3
|
import warnings
|
|
4
4
|
from collections.abc import Callable, Coroutine, Iterator
|
|
5
|
+
from contextlib import AbstractContextManager, nullcontext
|
|
5
6
|
from typing import Any, Literal, TypeVar
|
|
6
7
|
|
|
7
8
|
from fastapi import FastAPI, HTTPException, Request
|
|
8
9
|
from fastapi.responses import JSONResponse, Response, StreamingResponse
|
|
10
|
+
from starlette.types import Receive, Scope, Send
|
|
9
11
|
|
|
10
12
|
from aidial_sdk._errors import (
|
|
11
13
|
dial_exception_handler,
|
|
@@ -37,7 +39,11 @@ from aidial_sdk.utils._disconnect_middleware import DisconnectMiddleware
|
|
|
37
39
|
from aidial_sdk.utils._reflection import get_method_implementation
|
|
38
40
|
from aidial_sdk.utils.env import env_float, env_var_list
|
|
39
41
|
from aidial_sdk.utils.log_config import configure_sdk_logger
|
|
40
|
-
from aidial_sdk.utils.logging import
|
|
42
|
+
from aidial_sdk.utils.logging import (
|
|
43
|
+
log_debug,
|
|
44
|
+
reset_log_context,
|
|
45
|
+
set_log_deployment,
|
|
46
|
+
)
|
|
41
47
|
from aidial_sdk.utils.pydantic import model_validate_extra_fields
|
|
42
48
|
from aidial_sdk.utils.streaming import (
|
|
43
49
|
add_heartbeat,
|
|
@@ -77,6 +83,7 @@ class DIALApp(FastAPI):
|
|
|
77
83
|
_allow_extra_request_fields: bool
|
|
78
84
|
_dial_url: str | None
|
|
79
85
|
_v1_handlers: dict[str, dict[str, Handler]]
|
|
86
|
+
_reset_otel_context: Callable[[], AbstractContextManager[None]]
|
|
80
87
|
|
|
81
88
|
def __init__(
|
|
82
89
|
self,
|
|
@@ -103,6 +110,7 @@ class DIALApp(FastAPI):
|
|
|
103
110
|
self._allow_extra_request_fields = allow_extra_request_fields
|
|
104
111
|
self._dial_url = dial_url
|
|
105
112
|
self._v1_handlers = {}
|
|
113
|
+
self._reset_otel_context = nullcontext
|
|
106
114
|
|
|
107
115
|
self.configure_telemetry(telemetry_config)
|
|
108
116
|
|
|
@@ -142,6 +150,7 @@ class DIALApp(FastAPI):
|
|
|
142
150
|
return
|
|
143
151
|
|
|
144
152
|
try:
|
|
153
|
+
from aidial_sdk.telemetry._context import reset_otel_context
|
|
145
154
|
from aidial_sdk.telemetry.init import init_telemetry
|
|
146
155
|
|
|
147
156
|
init_telemetry(app=self, config=config)
|
|
@@ -151,6 +160,16 @@ class DIALApp(FastAPI):
|
|
|
151
160
|
"Install the package with the extras: aidial-sdk[telemetry]"
|
|
152
161
|
)
|
|
153
162
|
|
|
163
|
+
self._reset_otel_context = reset_otel_context
|
|
164
|
+
|
|
165
|
+
async def __call__(
|
|
166
|
+
self, scope: Scope, receive: Receive, send: Send
|
|
167
|
+
) -> None:
|
|
168
|
+
# Workaround for the bug in asyncio: https://github.com/python/cpython/pull/141158
|
|
169
|
+
reset_log_context()
|
|
170
|
+
with self._reset_otel_context():
|
|
171
|
+
await super().__call__(scope, receive, send)
|
|
172
|
+
|
|
154
173
|
def add_embeddings(
|
|
155
174
|
self, deployment_name: str, impl: Embeddings
|
|
156
175
|
) -> "DIALApp":
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import contextlib
|
|
2
|
+
from collections.abc import Iterator
|
|
3
|
+
|
|
4
|
+
from opentelemetry.context import Context, attach, detach
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@contextlib.contextmanager
|
|
8
|
+
def reset_otel_context() -> Iterator[None]:
|
|
9
|
+
token = attach(Context())
|
|
10
|
+
try:
|
|
11
|
+
yield
|
|
12
|
+
finally:
|
|
13
|
+
detach(token)
|
|
@@ -12,6 +12,10 @@ def set_log_deployment(new_deployment_id: str):
|
|
|
12
12
|
deployment_id.set(new_deployment_id)
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
def reset_log_context() -> None:
|
|
16
|
+
deployment_id.set(None)
|
|
17
|
+
|
|
18
|
+
|
|
15
19
|
def log_info(message: str, *args, **kwargs):
|
|
16
20
|
logger.info(f"[{deployment_id.get()}] {message}", *args, **kwargs)
|
|
17
21
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aidial-sdk"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.43.0.dev1"
|
|
4
4
|
description = "Framework to create applications and model adapters for AI DIAL"
|
|
5
5
|
authors = [{ name = "EPAM RAIL", email = "SpecialEPM-DIALDevTeam@epam.com" }]
|
|
6
6
|
license = "Apache-2.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/function_call.py
RENAMED
|
File without changes
|
{aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/function_tool_call.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/from_request_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_disconnect_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|