From aa59f2cdb8aa85695abf6498fe8d007a0ec516f6 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 7 Nov 2024 15:45:46 +0100 Subject: [PATCH 01/42] update fern --- langfuse/api/README.md | 44 +- langfuse/api/__init__.py | 42 +- langfuse/api/client.py | 47 +- langfuse/api/reference.md | 541 ++++++++++++++++++ langfuse/api/resources/__init__.py | 46 +- langfuse/api/resources/comments/__init__.py | 5 + langfuse/api/resources/comments/client.py | 534 +++++++++++++++++ .../api/resources/comments/types/__init__.py | 7 + .../comments/types/create_comment_request.py | 69 +++ .../comments/types/create_comment_response.py | 45 ++ .../types/get_comments_response.py} | 27 +- langfuse/api/resources/commons/__init__.py | 12 +- .../api/resources/commons/types/__init__.py | 4 + .../api/resources/commons/types/base_score.py | 34 +- .../api/resources/commons/types/comment.py | 54 ++ .../commons/types/comment_object_type.py | 29 + langfuse/api/resources/commons/types/model.py | 2 +- langfuse/api/resources/commons/types/score.py | 102 +++- langfuse/api/resources/media/__init__.py | 15 + langfuse/api/resources/media/client.py | 509 ++++++++++++++++ .../api/resources/media/types/__init__.py | 13 + .../media/types/get_media_response.py | 72 +++ .../types/get_media_upload_url_request.py | 74 +++ .../types/get_media_upload_url_response.py | 54 ++ .../resources/media/types/patch_media_body.py | 59 ++ langfuse/api/resources/score/__init__.py | 28 +- langfuse/api/resources/score/client.py | 240 ++++++-- .../api/resources/score/types/__init__.py | 26 +- .../score/types/get_scores_response.py | 45 ++ .../score/types/get_scores_response_data.py | 191 +++++++ .../types/get_scores_response_data_boolean.py | 46 ++ .../get_scores_response_data_categorical.py | 46 ++ .../types/get_scores_response_data_numeric.py | 46 ++ .../types/get_scores_response_trace_data.py | 52 ++ langfuse/api/tests/utils/test_http_client.py | 5 +- .../api/tests/utils/test_query_encoding.py | 3 +- 36 files changed, 3028 insertions(+), 140 deletions(-) create mode 100644 langfuse/api/resources/comments/__init__.py create mode 100644 langfuse/api/resources/comments/client.py create mode 100644 langfuse/api/resources/comments/types/__init__.py create mode 100644 langfuse/api/resources/comments/types/create_comment_request.py create mode 100644 langfuse/api/resources/comments/types/create_comment_response.py rename langfuse/api/resources/{score/types/scores.py => comments/types/get_comments_response.py} (50%) create mode 100644 langfuse/api/resources/commons/types/comment.py create mode 100644 langfuse/api/resources/commons/types/comment_object_type.py create mode 100644 langfuse/api/resources/media/__init__.py create mode 100644 langfuse/api/resources/media/client.py create mode 100644 langfuse/api/resources/media/types/__init__.py create mode 100644 langfuse/api/resources/media/types/get_media_response.py create mode 100644 langfuse/api/resources/media/types/get_media_upload_url_request.py create mode 100644 langfuse/api/resources/media/types/get_media_upload_url_response.py create mode 100644 langfuse/api/resources/media/types/patch_media_body.py create mode 100644 langfuse/api/resources/score/types/get_scores_response.py create mode 100644 langfuse/api/resources/score/types/get_scores_response_data.py create mode 100644 langfuse/api/resources/score/types/get_scores_response_data_boolean.py create mode 100644 langfuse/api/resources/score/types/get_scores_response_data_categorical.py create mode 100644 langfuse/api/resources/score/types/get_scores_response_data_numeric.py create mode 100644 langfuse/api/resources/score/types/get_scores_response_trace_data.py diff --git a/langfuse/api/README.md b/langfuse/api/README.md index 5a483dc3e..4087db553 100644 --- a/langfuse/api/README.md +++ b/langfuse/api/README.md @@ -16,7 +16,7 @@ pip install finto Instantiate and use the client with the following: ```python -from finto import CreateDatasetItemRequest, DatasetStatus +from finto import CreateCommentRequest from finto.client import FernLangfuse client = FernLangfuse( @@ -27,16 +27,13 @@ client = FernLangfuse( password="YOUR_PASSWORD", base_url="https://yourhost.com/path/to/api", ) -client.dataset_items.create( - request=CreateDatasetItemRequest( - dataset_name="string", - input={"key": "value"}, - expected_output={"key": "value"}, - metadata={"key": "value"}, - source_trace_id="string", - source_observation_id="string", - id="string", - status=DatasetStatus.ACTIVE, +client.comments.create( + request=CreateCommentRequest( + project_id="string", + object_type="string", + object_id="string", + content="string", + author_user_id="string", ), ) ``` @@ -48,7 +45,7 @@ The SDK also exports an `async` client so that you can make non-blocking calls t ```python import asyncio -from finto import CreateDatasetItemRequest, DatasetStatus +from finto import CreateCommentRequest from finto.client import AsyncFernLangfuse client = AsyncFernLangfuse( @@ -62,16 +59,13 @@ client = AsyncFernLangfuse( async def main() -> None: - await client.dataset_items.create( - request=CreateDatasetItemRequest( - dataset_name="string", - input={"key": "value"}, - expected_output={"key": "value"}, - metadata={"key": "value"}, - source_trace_id="string", - source_observation_id="string", - id="string", - status=DatasetStatus.ACTIVE, + await client.comments.create( + request=CreateCommentRequest( + project_id="string", + object_type="string", + object_id="string", + content="string", + author_user_id="string", ), ) @@ -88,7 +82,7 @@ will be thrown. from .api_error import ApiError try: - client.dataset_items.create(...) + client.comments.create(...) except ApiError as e: print(e.status_code) print(e.body) @@ -111,7 +105,7 @@ A request is deemed retriable when any of the following HTTP status codes is ret Use the `max_retries` request option to configure this behavior. ```python -client.dataset_items.create(...,{ +client.comments.create(...,{ max_retries=1 }) ``` @@ -128,7 +122,7 @@ client = FernLangfuse(..., { timeout=20.0 }, ) # Override timeout for a specific method -client.dataset_items.create(...,{ +client.comments.create(...,{ timeout_in_seconds=1 }) ``` diff --git a/langfuse/api/__init__.py b/langfuse/api/__init__.py index 0530b2c76..89d3df091 100644 --- a/langfuse/api/__init__.py +++ b/langfuse/api/__init__.py @@ -9,8 +9,12 @@ CategoricalScore, ChatMessage, ChatPrompt, + Comment, + CommentObjectType, ConfigCategory, CreateChatPromptRequest, + CreateCommentRequest, + CreateCommentResponse, CreateDatasetItemRequest, CreateDatasetRequest, CreateDatasetRunItemRequest, @@ -39,6 +43,19 @@ DatasetRunWithItems, DatasetStatus, Error, + GetCommentsResponse, + GetMediaResponse, + GetMediaUploadUrlRequest, + GetMediaUploadUrlResponse, + GetScoresResponse, + GetScoresResponseData, + GetScoresResponseDataBoolean, + GetScoresResponseDataCategorical, + GetScoresResponseDataNumeric, + GetScoresResponseData_Boolean, + GetScoresResponseData_Categorical, + GetScoresResponseData_Numeric, + GetScoresResponseTraceData, HealthResponse, IngestionError, IngestionEvent, @@ -75,6 +92,7 @@ PaginatedDatasets, PaginatedModels, PaginatedSessions, + PatchMediaBody, Project, Projects, Prompt, @@ -92,7 +110,6 @@ Score_Boolean, Score_Categorical, Score_Numeric, - Scores, SdkLogBody, SdkLogEvent, ServiceUnavailableError, @@ -115,12 +132,14 @@ UpdateSpanEvent, Usage, UsageByModel, + comments, commons, dataset_items, dataset_run_items, datasets, health, ingestion, + media, metrics, models, observations, @@ -142,8 +161,12 @@ "CategoricalScore", "ChatMessage", "ChatPrompt", + "Comment", + "CommentObjectType", "ConfigCategory", "CreateChatPromptRequest", + "CreateCommentRequest", + "CreateCommentResponse", "CreateDatasetItemRequest", "CreateDatasetRequest", "CreateDatasetRunItemRequest", @@ -172,6 +195,19 @@ "DatasetRunWithItems", "DatasetStatus", "Error", + "GetCommentsResponse", + "GetMediaResponse", + "GetMediaUploadUrlRequest", + "GetMediaUploadUrlResponse", + "GetScoresResponse", + "GetScoresResponseData", + "GetScoresResponseDataBoolean", + "GetScoresResponseDataCategorical", + "GetScoresResponseDataNumeric", + "GetScoresResponseData_Boolean", + "GetScoresResponseData_Categorical", + "GetScoresResponseData_Numeric", + "GetScoresResponseTraceData", "HealthResponse", "IngestionError", "IngestionEvent", @@ -208,6 +244,7 @@ "PaginatedDatasets", "PaginatedModels", "PaginatedSessions", + "PatchMediaBody", "Project", "Projects", "Prompt", @@ -225,7 +262,6 @@ "Score_Boolean", "Score_Categorical", "Score_Numeric", - "Scores", "SdkLogBody", "SdkLogEvent", "ServiceUnavailableError", @@ -248,12 +284,14 @@ "UpdateSpanEvent", "Usage", "UsageByModel", + "comments", "commons", "dataset_items", "dataset_run_items", "datasets", "health", "ingestion", + "media", "metrics", "models", "observations", diff --git a/langfuse/api/client.py b/langfuse/api/client.py index 4df0f19e0..da24da20f 100644 --- a/langfuse/api/client.py +++ b/langfuse/api/client.py @@ -5,11 +5,16 @@ import httpx from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from .resources.comments.client import AsyncCommentsClient, CommentsClient from .resources.dataset_items.client import AsyncDatasetItemsClient, DatasetItemsClient -from .resources.dataset_run_items.client import AsyncDatasetRunItemsClient, DatasetRunItemsClient +from .resources.dataset_run_items.client import ( + AsyncDatasetRunItemsClient, + DatasetRunItemsClient, +) from .resources.datasets.client import AsyncDatasetsClient, DatasetsClient from .resources.health.client import AsyncHealthClient, HealthClient from .resources.ingestion.client import AsyncIngestionClient, IngestionClient +from .resources.media.client import AsyncMediaClient, MediaClient from .resources.metrics.client import AsyncMetricsClient, MetricsClient from .resources.models.client import AsyncModelsClient, ModelsClient from .resources.observations.client import AsyncObservationsClient, ObservationsClient @@ -69,9 +74,11 @@ def __init__( password: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None, timeout: typing.Optional[float] = None, follow_redirects: typing.Optional[bool] = True, - httpx_client: typing.Optional[httpx.Client] = None + httpx_client: typing.Optional[httpx.Client] = None, ): - _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None + _defaulted_timeout = ( + timeout if timeout is not None else 60 if httpx_client is None else None + ) self._client_wrapper = SyncClientWrapper( base_url=base_url, x_langfuse_sdk_name=x_langfuse_sdk_name, @@ -81,16 +88,22 @@ def __init__( password=password, httpx_client=httpx_client if httpx_client is not None - else httpx.Client(timeout=_defaulted_timeout, follow_redirects=follow_redirects) + else httpx.Client( + timeout=_defaulted_timeout, follow_redirects=follow_redirects + ) if follow_redirects is not None else httpx.Client(timeout=_defaulted_timeout), timeout=_defaulted_timeout, ) + self.comments = CommentsClient(client_wrapper=self._client_wrapper) self.dataset_items = DatasetItemsClient(client_wrapper=self._client_wrapper) - self.dataset_run_items = DatasetRunItemsClient(client_wrapper=self._client_wrapper) + self.dataset_run_items = DatasetRunItemsClient( + client_wrapper=self._client_wrapper + ) self.datasets = DatasetsClient(client_wrapper=self._client_wrapper) self.health = HealthClient(client_wrapper=self._client_wrapper) self.ingestion = IngestionClient(client_wrapper=self._client_wrapper) + self.media = MediaClient(client_wrapper=self._client_wrapper) self.metrics = MetricsClient(client_wrapper=self._client_wrapper) self.models = ModelsClient(client_wrapper=self._client_wrapper) self.observations = ObservationsClient(client_wrapper=self._client_wrapper) @@ -150,9 +163,11 @@ def __init__( password: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None, timeout: typing.Optional[float] = None, follow_redirects: typing.Optional[bool] = True, - httpx_client: typing.Optional[httpx.AsyncClient] = None + httpx_client: typing.Optional[httpx.AsyncClient] = None, ): - _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None + _defaulted_timeout = ( + timeout if timeout is not None else 60 if httpx_client is None else None + ) self._client_wrapper = AsyncClientWrapper( base_url=base_url, x_langfuse_sdk_name=x_langfuse_sdk_name, @@ -162,22 +177,32 @@ def __init__( password=password, httpx_client=httpx_client if httpx_client is not None - else httpx.AsyncClient(timeout=_defaulted_timeout, follow_redirects=follow_redirects) + else httpx.AsyncClient( + timeout=_defaulted_timeout, follow_redirects=follow_redirects + ) if follow_redirects is not None else httpx.AsyncClient(timeout=_defaulted_timeout), timeout=_defaulted_timeout, ) - self.dataset_items = AsyncDatasetItemsClient(client_wrapper=self._client_wrapper) - self.dataset_run_items = AsyncDatasetRunItemsClient(client_wrapper=self._client_wrapper) + self.comments = AsyncCommentsClient(client_wrapper=self._client_wrapper) + self.dataset_items = AsyncDatasetItemsClient( + client_wrapper=self._client_wrapper + ) + self.dataset_run_items = AsyncDatasetRunItemsClient( + client_wrapper=self._client_wrapper + ) self.datasets = AsyncDatasetsClient(client_wrapper=self._client_wrapper) self.health = AsyncHealthClient(client_wrapper=self._client_wrapper) self.ingestion = AsyncIngestionClient(client_wrapper=self._client_wrapper) + self.media = AsyncMediaClient(client_wrapper=self._client_wrapper) self.metrics = AsyncMetricsClient(client_wrapper=self._client_wrapper) self.models = AsyncModelsClient(client_wrapper=self._client_wrapper) self.observations = AsyncObservationsClient(client_wrapper=self._client_wrapper) self.projects = AsyncProjectsClient(client_wrapper=self._client_wrapper) self.prompts = AsyncPromptsClient(client_wrapper=self._client_wrapper) - self.score_configs = AsyncScoreConfigsClient(client_wrapper=self._client_wrapper) + self.score_configs = AsyncScoreConfigsClient( + client_wrapper=self._client_wrapper + ) self.score = AsyncScoreClient(client_wrapper=self._client_wrapper) self.sessions = AsyncSessionsClient(client_wrapper=self._client_wrapper) self.trace = AsyncTraceClient(client_wrapper=self._client_wrapper) diff --git a/langfuse/api/reference.md b/langfuse/api/reference.md index 05a51edf5..07103519d 100644 --- a/langfuse/api/reference.md +++ b/langfuse/api/reference.md @@ -1,4 +1,273 @@ # Reference +## Comments +
client.comments.create(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Create a comment. Comments may be attached to different object types (trace, observation, session, prompt). +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from finto import CreateCommentRequest +from finto.client import FernLangfuse + +client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", +) +client.comments.create( + request=CreateCommentRequest( + project_id="string", + object_type="string", + object_id="string", + content="string", + author_user_id="string", + ), +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `CreateCommentRequest` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.comments.get(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get all comments +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from finto.client import FernLangfuse + +client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", +) +client.comments.get( + page=1, + limit=1, + object_type="string", + object_id="string", + author_user_id="string", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**page:** `typing.Optional[int]` — Page number, starts at 1. + +
+
+ +
+
+ +**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit + +
+
+ +
+
+ +**object_type:** `typing.Optional[str]` — Filter comments by object type (trace, observation, session, prompt). + +
+
+ +
+
+ +**object_id:** `typing.Optional[str]` — Filter comments by object id. If objectType is not provided, an error will be thrown. + +
+
+ +
+
+ +**author_user_id:** `typing.Optional[str]` — Filter comments by author user id. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.comments.get_by_id(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get a comment by id +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from finto.client import FernLangfuse + +client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", +) +client.comments.get_by_id( + comment_id="string", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**comment_id:** `str` — The unique langfuse identifier of a comment + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ ## DatasetItems
client.dataset_items.create(...)
@@ -949,6 +1218,258 @@ client.ingestion.batch(
+ + +
+ +## Media +
client.media.get(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get a media record +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from finto.client import FernLangfuse + +client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", +) +client.media.get( + media_id="string", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**media_id:** `str` — The unique langfuse identifier of a media record + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.media.patch(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Patch a media record +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +import datetime + +from finto import PatchMediaBody +from finto.client import FernLangfuse + +client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", +) +client.media.patch( + media_id="string", + request=PatchMediaBody( + uploaded_at=datetime.datetime.fromisoformat( + "2024-01-15 09:30:00+00:00", + ), + upload_http_status=1, + upload_http_error="string", + ), +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**media_id:** `str` — The unique langfuse identifier of a media record + +
+
+ +
+
+ +**request:** `PatchMediaBody` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.media.get_upload_url(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get a presigned upload URL for a media record +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from finto import GetMediaUploadUrlRequest +from finto.client import FernLangfuse + +client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", +) +client.media.get_upload_url( + request=GetMediaUploadUrlRequest( + trace_id="string", + observation_id="string", + content_type="string", + content_length=1, + sha_256_hash="string", + field="string", + ), +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `GetMediaUploadUrlRequest` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
@@ -2419,7 +2940,9 @@ client.score.get( value=1.1, score_ids="string", config_id="string", + queue_id="string", data_type=ScoreDataType.NUMERIC, + trace_tags=["string"], ) ``` @@ -2524,6 +3047,14 @@ client.score.get(
+**queue_id:** `typing.Optional[str]` — Retrieve only scores with a specific annotation queueId. + +
+
+ +
+
+ **data_type:** `typing.Optional[ScoreDataType]` — Retrieve only scores with a specific dataType.
@@ -2532,6 +3063,16 @@ client.score.get(
+**trace_tags:** `typing.Optional[ + typing.Union[typing.Sequence[str], typing.Sequence[typing.Sequence[str]]] +]` — Only scores linked to traces that include all of these tags will be returned. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/langfuse/api/resources/__init__.py b/langfuse/api/resources/__init__.py index 330d54aaa..c75efc510 100644 --- a/langfuse/api/resources/__init__.py +++ b/langfuse/api/resources/__init__.py @@ -1,12 +1,14 @@ # This file was auto-generated by Fern from our API Definition. from . import ( + comments, commons, dataset_items, dataset_run_items, datasets, health, ingestion, + media, metrics, models, observations, @@ -18,11 +20,14 @@ trace, utils, ) +from .comments import CreateCommentRequest, CreateCommentResponse, GetCommentsResponse from .commons import ( AccessDeniedError, BaseScore, BooleanScore, CategoricalScore, + Comment, + CommentObjectType, ConfigCategory, CreateScoreValue, Dataset, @@ -101,6 +106,12 @@ UpdateSpanBody, UpdateSpanEvent, ) +from .media import ( + GetMediaResponse, + GetMediaUploadUrlRequest, + GetMediaUploadUrlResponse, + PatchMediaBody, +) from .metrics import DailyMetrics, DailyMetricsDetails, UsageByModel from .models import CreateModelRequest, PaginatedModels from .observations import Observations, ObservationsViews @@ -121,7 +132,19 @@ Prompt_Text, TextPrompt, ) -from .score import CreateScoreRequest, CreateScoreResponse, Scores +from .score import ( + CreateScoreRequest, + CreateScoreResponse, + GetScoresResponse, + GetScoresResponseData, + GetScoresResponseDataBoolean, + GetScoresResponseDataCategorical, + GetScoresResponseDataNumeric, + GetScoresResponseData_Boolean, + GetScoresResponseData_Categorical, + GetScoresResponseData_Numeric, + GetScoresResponseTraceData, +) from .score_configs import CreateScoreConfigRequest, ScoreConfigs from .sessions import PaginatedSessions from .trace import Sort, Traces @@ -135,8 +158,12 @@ "CategoricalScore", "ChatMessage", "ChatPrompt", + "Comment", + "CommentObjectType", "ConfigCategory", "CreateChatPromptRequest", + "CreateCommentRequest", + "CreateCommentResponse", "CreateDatasetItemRequest", "CreateDatasetRequest", "CreateDatasetRunItemRequest", @@ -165,6 +192,19 @@ "DatasetRunWithItems", "DatasetStatus", "Error", + "GetCommentsResponse", + "GetMediaResponse", + "GetMediaUploadUrlRequest", + "GetMediaUploadUrlResponse", + "GetScoresResponse", + "GetScoresResponseData", + "GetScoresResponseDataBoolean", + "GetScoresResponseDataCategorical", + "GetScoresResponseDataNumeric", + "GetScoresResponseData_Boolean", + "GetScoresResponseData_Categorical", + "GetScoresResponseData_Numeric", + "GetScoresResponseTraceData", "HealthResponse", "IngestionError", "IngestionEvent", @@ -201,6 +241,7 @@ "PaginatedDatasets", "PaginatedModels", "PaginatedSessions", + "PatchMediaBody", "Project", "Projects", "Prompt", @@ -218,7 +259,6 @@ "Score_Boolean", "Score_Categorical", "Score_Numeric", - "Scores", "SdkLogBody", "SdkLogEvent", "ServiceUnavailableError", @@ -241,12 +281,14 @@ "UpdateSpanEvent", "Usage", "UsageByModel", + "comments", "commons", "dataset_items", "dataset_run_items", "datasets", "health", "ingestion", + "media", "metrics", "models", "observations", diff --git a/langfuse/api/resources/comments/__init__.py b/langfuse/api/resources/comments/__init__.py new file mode 100644 index 000000000..e40c8546f --- /dev/null +++ b/langfuse/api/resources/comments/__init__.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .types import CreateCommentRequest, CreateCommentResponse, GetCommentsResponse + +__all__ = ["CreateCommentRequest", "CreateCommentResponse", "GetCommentsResponse"] diff --git a/langfuse/api/resources/comments/client.py b/langfuse/api/resources/comments/client.py new file mode 100644 index 000000000..5c17f1a7c --- /dev/null +++ b/langfuse/api/resources/comments/client.py @@ -0,0 +1,534 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.jsonable_encoder import jsonable_encoder +from ...core.pydantic_utilities import pydantic_v1 +from ...core.request_options import RequestOptions +from ..commons.errors.access_denied_error import AccessDeniedError +from ..commons.errors.error import Error +from ..commons.errors.method_not_allowed_error import MethodNotAllowedError +from ..commons.errors.not_found_error import NotFoundError +from ..commons.errors.unauthorized_error import UnauthorizedError +from ..commons.types.comment import Comment +from .types.create_comment_request import CreateCommentRequest +from .types.create_comment_response import CreateCommentResponse +from .types.get_comments_response import GetCommentsResponse + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class CommentsClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def create( + self, + *, + request: CreateCommentRequest, + request_options: typing.Optional[RequestOptions] = None, + ) -> CreateCommentResponse: + """ + Create a comment. Comments may be attached to different object types (trace, observation, session, prompt). + + Parameters + ---------- + request : CreateCommentRequest + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + CreateCommentResponse + + Examples + -------- + from finto import CreateCommentRequest + from finto.client import FernLangfuse + + client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + client.comments.create( + request=CreateCommentRequest( + project_id="string", + object_type="string", + object_id="string", + content="string", + author_user_id="string", + ), + ) + """ + _response = self._client_wrapper.httpx_client.request( + "api/public/comments", + method="POST", + json=request, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(CreateCommentResponse, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def get( + self, + *, + page: typing.Optional[int] = None, + limit: typing.Optional[int] = None, + object_type: typing.Optional[str] = None, + object_id: typing.Optional[str] = None, + author_user_id: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> GetCommentsResponse: + """ + Get all comments + + Parameters + ---------- + page : typing.Optional[int] + Page number, starts at 1. + + limit : typing.Optional[int] + Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit + + object_type : typing.Optional[str] + Filter comments by object type (trace, observation, session, prompt). + + object_id : typing.Optional[str] + Filter comments by object id. If objectType is not provided, an error will be thrown. + + author_user_id : typing.Optional[str] + Filter comments by author user id. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetCommentsResponse + + Examples + -------- + from finto.client import FernLangfuse + + client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + client.comments.get( + page=1, + limit=1, + object_type="string", + object_id="string", + author_user_id="string", + ) + """ + _response = self._client_wrapper.httpx_client.request( + "api/public/comments", + method="GET", + params={ + "page": page, + "limit": limit, + "objectType": object_type, + "objectId": object_id, + "authorUserId": author_user_id, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(GetCommentsResponse, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def get_by_id( + self, + comment_id: str, + *, + request_options: typing.Optional[RequestOptions] = None, + ) -> Comment: + """ + Get a comment by id + + Parameters + ---------- + comment_id : str + The unique langfuse identifier of a comment + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + Comment + + Examples + -------- + from finto.client import FernLangfuse + + client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + client.comments.get_by_id( + comment_id="string", + ) + """ + _response = self._client_wrapper.httpx_client.request( + f"api/public/comments/{jsonable_encoder(comment_id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(Comment, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + +class AsyncCommentsClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def create( + self, + *, + request: CreateCommentRequest, + request_options: typing.Optional[RequestOptions] = None, + ) -> CreateCommentResponse: + """ + Create a comment. Comments may be attached to different object types (trace, observation, session, prompt). + + Parameters + ---------- + request : CreateCommentRequest + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + CreateCommentResponse + + Examples + -------- + import asyncio + + from finto import CreateCommentRequest + from finto.client import AsyncFernLangfuse + + client = AsyncFernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.comments.create( + request=CreateCommentRequest( + project_id="string", + object_type="string", + object_id="string", + content="string", + author_user_id="string", + ), + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + "api/public/comments", + method="POST", + json=request, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(CreateCommentResponse, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def get( + self, + *, + page: typing.Optional[int] = None, + limit: typing.Optional[int] = None, + object_type: typing.Optional[str] = None, + object_id: typing.Optional[str] = None, + author_user_id: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> GetCommentsResponse: + """ + Get all comments + + Parameters + ---------- + page : typing.Optional[int] + Page number, starts at 1. + + limit : typing.Optional[int] + Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit + + object_type : typing.Optional[str] + Filter comments by object type (trace, observation, session, prompt). + + object_id : typing.Optional[str] + Filter comments by object id. If objectType is not provided, an error will be thrown. + + author_user_id : typing.Optional[str] + Filter comments by author user id. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetCommentsResponse + + Examples + -------- + import asyncio + + from finto.client import AsyncFernLangfuse + + client = AsyncFernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.comments.get( + page=1, + limit=1, + object_type="string", + object_id="string", + author_user_id="string", + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + "api/public/comments", + method="GET", + params={ + "page": page, + "limit": limit, + "objectType": object_type, + "objectId": object_id, + "authorUserId": author_user_id, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(GetCommentsResponse, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def get_by_id( + self, + comment_id: str, + *, + request_options: typing.Optional[RequestOptions] = None, + ) -> Comment: + """ + Get a comment by id + + Parameters + ---------- + comment_id : str + The unique langfuse identifier of a comment + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + Comment + + Examples + -------- + import asyncio + + from finto.client import AsyncFernLangfuse + + client = AsyncFernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.comments.get_by_id( + comment_id="string", + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + f"api/public/comments/{jsonable_encoder(comment_id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(Comment, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) diff --git a/langfuse/api/resources/comments/types/__init__.py b/langfuse/api/resources/comments/types/__init__.py new file mode 100644 index 000000000..13dc1d8d9 --- /dev/null +++ b/langfuse/api/resources/comments/types/__init__.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +from .create_comment_request import CreateCommentRequest +from .create_comment_response import CreateCommentResponse +from .get_comments_response import GetCommentsResponse + +__all__ = ["CreateCommentRequest", "CreateCommentResponse", "GetCommentsResponse"] diff --git a/langfuse/api/resources/comments/types/create_comment_request.py b/langfuse/api/resources/comments/types/create_comment_request.py new file mode 100644 index 000000000..98e25e2e1 --- /dev/null +++ b/langfuse/api/resources/comments/types/create_comment_request.py @@ -0,0 +1,69 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class CreateCommentRequest(pydantic_v1.BaseModel): + project_id: str = pydantic_v1.Field(alias="projectId") + """ + The id of the project to attach the comment to. + """ + + object_type: str = pydantic_v1.Field(alias="objectType") + """ + The type of the object to attach the comment to (trace, observation, session, prompt). + """ + + object_id: str = pydantic_v1.Field(alias="objectId") + """ + The id of the object to attach the comment to. If this does not reference a valid existing object, an error will be thrown. + """ + + content: str = pydantic_v1.Field() + """ + The content of the comment. May include markdown. Currently limited to 500 characters. + """ + + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + """ + The id of the user who created the comment. + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/comments/types/create_comment_response.py b/langfuse/api/resources/comments/types/create_comment_response.py new file mode 100644 index 000000000..d7708f798 --- /dev/null +++ b/langfuse/api/resources/comments/types/create_comment_response.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class CreateCommentResponse(pydantic_v1.BaseModel): + id: str = pydantic_v1.Field() + """ + The id of the created object in Langfuse + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/score/types/scores.py b/langfuse/api/resources/comments/types/get_comments_response.py similarity index 50% rename from langfuse/api/resources/score/types/scores.py rename to langfuse/api/resources/comments/types/get_comments_response.py index 998ae12e9..66a8b9527 100644 --- a/langfuse/api/resources/score/types/scores.py +++ b/langfuse/api/resources/comments/types/get_comments_response.py @@ -5,24 +5,37 @@ from ....core.datetime_utils import serialize_datetime from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 -from ...commons.types.score import Score +from ...commons.types.comment import Comment from ...utils.resources.pagination.types.meta_response import MetaResponse -class Scores(pydantic_v1.BaseModel): - data: typing.List[Score] +class GetCommentsResponse(pydantic_v1.BaseModel): + data: typing.List[Comment] meta: MetaResponse def json(self, **kwargs: typing.Any) -> str: - kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } return super().json(**kwargs_with_defaults) def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: - kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} - kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs} + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } return deep_union_pydantic_dicts( - super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none) + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), ) class Config: diff --git a/langfuse/api/resources/commons/__init__.py b/langfuse/api/resources/commons/__init__.py index d27b95745..e3e919f41 100644 --- a/langfuse/api/resources/commons/__init__.py +++ b/langfuse/api/resources/commons/__init__.py @@ -4,6 +4,8 @@ BaseScore, BooleanScore, CategoricalScore, + Comment, + CommentObjectType, ConfigCategory, CreateScoreValue, Dataset, @@ -33,13 +35,21 @@ TraceWithFullDetails, Usage, ) -from .errors import AccessDeniedError, Error, MethodNotAllowedError, NotFoundError, UnauthorizedError +from .errors import ( + AccessDeniedError, + Error, + MethodNotAllowedError, + NotFoundError, + UnauthorizedError, +) __all__ = [ "AccessDeniedError", "BaseScore", "BooleanScore", "CategoricalScore", + "Comment", + "CommentObjectType", "ConfigCategory", "CreateScoreValue", "Dataset", diff --git a/langfuse/api/resources/commons/types/__init__.py b/langfuse/api/resources/commons/types/__init__.py index b380e4863..fcec85214 100644 --- a/langfuse/api/resources/commons/types/__init__.py +++ b/langfuse/api/resources/commons/types/__init__.py @@ -3,6 +3,8 @@ from .base_score import BaseScore from .boolean_score import BooleanScore from .categorical_score import CategoricalScore +from .comment import Comment +from .comment_object_type import CommentObjectType from .config_category import ConfigCategory from .create_score_value import CreateScoreValue from .dataset import Dataset @@ -33,6 +35,8 @@ "BaseScore", "BooleanScore", "CategoricalScore", + "Comment", + "CommentObjectType", "ConfigCategory", "CreateScoreValue", "Dataset", diff --git a/langfuse/api/resources/commons/types/base_score.py b/langfuse/api/resources/commons/types/base_score.py index 0f2ce7018..71bed6ef4 100644 --- a/langfuse/api/resources/commons/types/base_score.py +++ b/langfuse/api/resources/commons/types/base_score.py @@ -13,27 +13,49 @@ class BaseScore(pydantic_v1.BaseModel): trace_id: str = pydantic_v1.Field(alias="traceId") name: str source: ScoreSource - observation_id: typing.Optional[str] = pydantic_v1.Field(alias="observationId", default=None) + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) timestamp: dt.datetime created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") - author_user_id: typing.Optional[str] = pydantic_v1.Field(alias="authorUserId", default=None) + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) comment: typing.Optional[str] = None config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) """ Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range """ + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + """ + Reference an annotation queue on a score. Populated if the score was initially created in an annotation queue. + """ + def json(self, **kwargs: typing.Any) -> str: - kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } return super().json(**kwargs_with_defaults) def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: - kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} - kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs} + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } return deep_union_pydantic_dicts( - super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none) + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), ) class Config: diff --git a/langfuse/api/resources/commons/types/comment.py b/langfuse/api/resources/commons/types/comment.py new file mode 100644 index 000000000..4d8b1916a --- /dev/null +++ b/langfuse/api/resources/commons/types/comment.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from .comment_object_type import CommentObjectType + + +class Comment(pydantic_v1.BaseModel): + id: str + project_id: str = pydantic_v1.Field(alias="projectId") + created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") + updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") + object_type: CommentObjectType = pydantic_v1.Field(alias="objectType") + object_id: str = pydantic_v1.Field(alias="objectId") + content: str + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/commons/types/comment_object_type.py b/langfuse/api/resources/commons/types/comment_object_type.py new file mode 100644 index 000000000..9c6c134c6 --- /dev/null +++ b/langfuse/api/resources/commons/types/comment_object_type.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class CommentObjectType(str, enum.Enum): + TRACE = "TRACE" + OBSERVATION = "OBSERVATION" + SESSION = "SESSION" + PROMPT = "PROMPT" + + def visit( + self, + trace: typing.Callable[[], T_Result], + observation: typing.Callable[[], T_Result], + session: typing.Callable[[], T_Result], + prompt: typing.Callable[[], T_Result], + ) -> T_Result: + if self is CommentObjectType.TRACE: + return trace() + if self is CommentObjectType.OBSERVATION: + return observation() + if self is CommentObjectType.SESSION: + return session() + if self is CommentObjectType.PROMPT: + return prompt() diff --git a/langfuse/api/resources/commons/types/model.py b/langfuse/api/resources/commons/types/model.py index 8e9449272..18b26c478 100644 --- a/langfuse/api/resources/commons/types/model.py +++ b/langfuse/api/resources/commons/types/model.py @@ -24,7 +24,7 @@ class Model(pydantic_v1.BaseModel): Regex pattern which matches this model definition to generation.model. Useful in case of fine-tuned models. If you want to exact match, use `(?i)^modelname$` """ - start_date: typing.Optional[dt.datetime] = pydantic_v1.Field( + start_date: typing.Optional[dt.date] = pydantic_v1.Field( alias="startDate", default=None ) """ diff --git a/langfuse/api/resources/commons/types/score.py b/langfuse/api/resources/commons/types/score.py index 946de3092..e39221084 100644 --- a/langfuse/api/resources/commons/types/score.py +++ b/langfuse/api/resources/commons/types/score.py @@ -16,25 +16,45 @@ class Score_Numeric(pydantic_v1.BaseModel): trace_id: str = pydantic_v1.Field(alias="traceId") name: str source: ScoreSource - observation_id: typing.Optional[str] = pydantic_v1.Field(alias="observationId", default=None) + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) timestamp: dt.datetime created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") - author_user_id: typing.Optional[str] = pydantic_v1.Field(alias="authorUserId", default=None) + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) comment: typing.Optional[str] = None config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) - data_type: typing.Literal["NUMERIC"] = pydantic_v1.Field(alias="dataType", default="NUMERIC") + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + data_type: typing.Literal["NUMERIC"] = pydantic_v1.Field( + alias="dataType", default="NUMERIC" + ) def json(self, **kwargs: typing.Any) -> str: - kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } return super().json(**kwargs_with_defaults) def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: - kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} - kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs} + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } return deep_union_pydantic_dicts( - super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none) + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), ) class Config: @@ -53,25 +73,45 @@ class Score_Categorical(pydantic_v1.BaseModel): trace_id: str = pydantic_v1.Field(alias="traceId") name: str source: ScoreSource - observation_id: typing.Optional[str] = pydantic_v1.Field(alias="observationId", default=None) + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) timestamp: dt.datetime created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") - author_user_id: typing.Optional[str] = pydantic_v1.Field(alias="authorUserId", default=None) + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) comment: typing.Optional[str] = None config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) - data_type: typing.Literal["CATEGORICAL"] = pydantic_v1.Field(alias="dataType", default="CATEGORICAL") + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + data_type: typing.Literal["CATEGORICAL"] = pydantic_v1.Field( + alias="dataType", default="CATEGORICAL" + ) def json(self, **kwargs: typing.Any) -> str: - kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } return super().json(**kwargs_with_defaults) def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: - kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} - kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs} + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } return deep_union_pydantic_dicts( - super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none) + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), ) class Config: @@ -90,25 +130,45 @@ class Score_Boolean(pydantic_v1.BaseModel): trace_id: str = pydantic_v1.Field(alias="traceId") name: str source: ScoreSource - observation_id: typing.Optional[str] = pydantic_v1.Field(alias="observationId", default=None) + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) timestamp: dt.datetime created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") - author_user_id: typing.Optional[str] = pydantic_v1.Field(alias="authorUserId", default=None) + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) comment: typing.Optional[str] = None config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) - data_type: typing.Literal["BOOLEAN"] = pydantic_v1.Field(alias="dataType", default="BOOLEAN") + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + data_type: typing.Literal["BOOLEAN"] = pydantic_v1.Field( + alias="dataType", default="BOOLEAN" + ) def json(self, **kwargs: typing.Any) -> str: - kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } return super().json(**kwargs_with_defaults) def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: - kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} - kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs} + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } return deep_union_pydantic_dicts( - super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none) + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), ) class Config: diff --git a/langfuse/api/resources/media/__init__.py b/langfuse/api/resources/media/__init__.py new file mode 100644 index 000000000..d66dfeb2c --- /dev/null +++ b/langfuse/api/resources/media/__init__.py @@ -0,0 +1,15 @@ +# This file was auto-generated by Fern from our API Definition. + +from .types import ( + GetMediaResponse, + GetMediaUploadUrlRequest, + GetMediaUploadUrlResponse, + PatchMediaBody, +) + +__all__ = [ + "GetMediaResponse", + "GetMediaUploadUrlRequest", + "GetMediaUploadUrlResponse", + "PatchMediaBody", +] diff --git a/langfuse/api/resources/media/client.py b/langfuse/api/resources/media/client.py new file mode 100644 index 000000000..8b7b9e93a --- /dev/null +++ b/langfuse/api/resources/media/client.py @@ -0,0 +1,509 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.jsonable_encoder import jsonable_encoder +from ...core.pydantic_utilities import pydantic_v1 +from ...core.request_options import RequestOptions +from ..commons.errors.access_denied_error import AccessDeniedError +from ..commons.errors.error import Error +from ..commons.errors.method_not_allowed_error import MethodNotAllowedError +from ..commons.errors.not_found_error import NotFoundError +from ..commons.errors.unauthorized_error import UnauthorizedError +from .types.get_media_response import GetMediaResponse +from .types.get_media_upload_url_request import GetMediaUploadUrlRequest +from .types.get_media_upload_url_response import GetMediaUploadUrlResponse +from .types.patch_media_body import PatchMediaBody + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class MediaClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def get( + self, media_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> GetMediaResponse: + """ + Get a media record + + Parameters + ---------- + media_id : str + The unique langfuse identifier of a media record + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetMediaResponse + + Examples + -------- + from finto.client import FernLangfuse + + client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + client.media.get( + media_id="string", + ) + """ + _response = self._client_wrapper.httpx_client.request( + f"api/public/media/{jsonable_encoder(media_id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(GetMediaResponse, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def patch( + self, + media_id: str, + *, + request: PatchMediaBody, + request_options: typing.Optional[RequestOptions] = None, + ) -> None: + """ + Patch a media record + + Parameters + ---------- + media_id : str + The unique langfuse identifier of a media record + + request : PatchMediaBody + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import datetime + + from finto import PatchMediaBody + from finto.client import FernLangfuse + + client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + client.media.patch( + media_id="string", + request=PatchMediaBody( + uploaded_at=datetime.datetime.fromisoformat( + "2024-01-15 09:30:00+00:00", + ), + upload_http_status=1, + upload_http_error="string", + ), + ) + """ + _response = self._client_wrapper.httpx_client.request( + f"api/public/media/{jsonable_encoder(media_id)}", + method="PATCH", + json=request, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def get_upload_url( + self, + *, + request: GetMediaUploadUrlRequest, + request_options: typing.Optional[RequestOptions] = None, + ) -> GetMediaUploadUrlResponse: + """ + Get a presigned upload URL for a media record + + Parameters + ---------- + request : GetMediaUploadUrlRequest + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetMediaUploadUrlResponse + + Examples + -------- + from finto import GetMediaUploadUrlRequest + from finto.client import FernLangfuse + + client = FernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + client.media.get_upload_url( + request=GetMediaUploadUrlRequest( + trace_id="string", + observation_id="string", + content_type="string", + content_length=1, + sha_256_hash="string", + field="string", + ), + ) + """ + _response = self._client_wrapper.httpx_client.request( + "api/public/media/upload-url", + method="POST", + json=request, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as( + GetMediaUploadUrlResponse, _response.json() + ) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + +class AsyncMediaClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def get( + self, media_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> GetMediaResponse: + """ + Get a media record + + Parameters + ---------- + media_id : str + The unique langfuse identifier of a media record + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetMediaResponse + + Examples + -------- + import asyncio + + from finto.client import AsyncFernLangfuse + + client = AsyncFernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.media.get( + media_id="string", + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + f"api/public/media/{jsonable_encoder(media_id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as(GetMediaResponse, _response.json()) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def patch( + self, + media_id: str, + *, + request: PatchMediaBody, + request_options: typing.Optional[RequestOptions] = None, + ) -> None: + """ + Patch a media record + + Parameters + ---------- + media_id : str + The unique langfuse identifier of a media record + + request : PatchMediaBody + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import asyncio + import datetime + + from finto import PatchMediaBody + from finto.client import AsyncFernLangfuse + + client = AsyncFernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.media.patch( + media_id="string", + request=PatchMediaBody( + uploaded_at=datetime.datetime.fromisoformat( + "2024-01-15 09:30:00+00:00", + ), + upload_http_status=1, + upload_http_error="string", + ), + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + f"api/public/media/{jsonable_encoder(media_id)}", + method="PATCH", + json=request, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def get_upload_url( + self, + *, + request: GetMediaUploadUrlRequest, + request_options: typing.Optional[RequestOptions] = None, + ) -> GetMediaUploadUrlResponse: + """ + Get a presigned upload URL for a media record + + Parameters + ---------- + request : GetMediaUploadUrlRequest + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetMediaUploadUrlResponse + + Examples + -------- + import asyncio + + from finto import GetMediaUploadUrlRequest + from finto.client import AsyncFernLangfuse + + client = AsyncFernLangfuse( + x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME", + x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION", + x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY", + username="YOUR_USERNAME", + password="YOUR_PASSWORD", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.media.get_upload_url( + request=GetMediaUploadUrlRequest( + trace_id="string", + observation_id="string", + content_type="string", + content_length=1, + sha_256_hash="string", + field="string", + ), + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + "api/public/media/upload-url", + method="POST", + json=request, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return pydantic_v1.parse_obj_as( + GetMediaUploadUrlResponse, _response.json() + ) # type: ignore + if _response.status_code == 400: + raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + if _response.status_code == 401: + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 403: + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 405: + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + if _response.status_code == 404: + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) diff --git a/langfuse/api/resources/media/types/__init__.py b/langfuse/api/resources/media/types/__init__.py new file mode 100644 index 000000000..1e1cba980 --- /dev/null +++ b/langfuse/api/resources/media/types/__init__.py @@ -0,0 +1,13 @@ +# This file was auto-generated by Fern from our API Definition. + +from .get_media_response import GetMediaResponse +from .get_media_upload_url_request import GetMediaUploadUrlRequest +from .get_media_upload_url_response import GetMediaUploadUrlResponse +from .patch_media_body import PatchMediaBody + +__all__ = [ + "GetMediaResponse", + "GetMediaUploadUrlRequest", + "GetMediaUploadUrlResponse", + "PatchMediaBody", +] diff --git a/langfuse/api/resources/media/types/get_media_response.py b/langfuse/api/resources/media/types/get_media_response.py new file mode 100644 index 000000000..fa5368872 --- /dev/null +++ b/langfuse/api/resources/media/types/get_media_response.py @@ -0,0 +1,72 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class GetMediaResponse(pydantic_v1.BaseModel): + media_id: str = pydantic_v1.Field(alias="mediaId") + """ + The unique langfuse identifier of a media record + """ + + content_type: str = pydantic_v1.Field(alias="contentType") + """ + The MIME type of the media record + """ + + content_length: int = pydantic_v1.Field(alias="contentLength") + """ + The size of the media record in bytes + """ + + uploaded_at: dt.datetime = pydantic_v1.Field(alias="uploadedAt") + """ + The date and time when the media record was uploaded + """ + + url: str = pydantic_v1.Field() + """ + The download URL of the media record + """ + + url_expiry: str = pydantic_v1.Field(alias="urlExpiry") + """ + The expiry date and time of the media record download URL + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/media/types/get_media_upload_url_request.py b/langfuse/api/resources/media/types/get_media_upload_url_request.py new file mode 100644 index 000000000..8415c0a2d --- /dev/null +++ b/langfuse/api/resources/media/types/get_media_upload_url_request.py @@ -0,0 +1,74 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class GetMediaUploadUrlRequest(pydantic_v1.BaseModel): + trace_id: str = pydantic_v1.Field(alias="traceId") + """ + The trace ID associated with the media record + """ + + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) + """ + The observation ID associated with the media record. If the media record is associated directly with a trace, this will be null. + """ + + content_type: str = pydantic_v1.Field(alias="contentType") + """ + The MIME type of the media record + """ + + content_length: int = pydantic_v1.Field(alias="contentLength") + """ + The size of the media record in bytes + """ + + sha_256_hash: str = pydantic_v1.Field(alias="sha256Hash") + """ + The SHA-256 hash of the media record + """ + + field: str = pydantic_v1.Field() + """ + The trace / observation field the media record is associated with. This can be one of `input`, `output`, `metadata` + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/media/types/get_media_upload_url_response.py b/langfuse/api/resources/media/types/get_media_upload_url_response.py new file mode 100644 index 000000000..fadc76c01 --- /dev/null +++ b/langfuse/api/resources/media/types/get_media_upload_url_response.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class GetMediaUploadUrlResponse(pydantic_v1.BaseModel): + upload_url: typing.Optional[str] = pydantic_v1.Field( + alias="uploadUrl", default=None + ) + """ + The presigned upload URL. If the asset is already uploaded, this will be null + """ + + media_id: str = pydantic_v1.Field(alias="mediaId") + """ + The unique langfuse identifier of a media record + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/media/types/patch_media_body.py b/langfuse/api/resources/media/types/patch_media_body.py new file mode 100644 index 000000000..8c8d6b336 --- /dev/null +++ b/langfuse/api/resources/media/types/patch_media_body.py @@ -0,0 +1,59 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class PatchMediaBody(pydantic_v1.BaseModel): + uploaded_at: dt.datetime = pydantic_v1.Field(alias="uploadedAt") + """ + The date and time when the media record was uploaded + """ + + upload_http_status: int = pydantic_v1.Field(alias="uploadHttpStatus") + """ + The HTTP status code of the upload + """ + + upload_http_error: typing.Optional[str] = pydantic_v1.Field( + alias="uploadHttpError", default=None + ) + """ + The HTTP error message of the upload + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/score/__init__.py b/langfuse/api/resources/score/__init__.py index 8a9975510..97fd51ffa 100644 --- a/langfuse/api/resources/score/__init__.py +++ b/langfuse/api/resources/score/__init__.py @@ -1,5 +1,29 @@ # This file was auto-generated by Fern from our API Definition. -from .types import CreateScoreRequest, CreateScoreResponse, Scores +from .types import ( + CreateScoreRequest, + CreateScoreResponse, + GetScoresResponse, + GetScoresResponseData, + GetScoresResponseDataBoolean, + GetScoresResponseDataCategorical, + GetScoresResponseDataNumeric, + GetScoresResponseData_Boolean, + GetScoresResponseData_Categorical, + GetScoresResponseData_Numeric, + GetScoresResponseTraceData, +) -__all__ = ["CreateScoreRequest", "CreateScoreResponse", "Scores"] +__all__ = [ + "CreateScoreRequest", + "CreateScoreResponse", + "GetScoresResponse", + "GetScoresResponseData", + "GetScoresResponseDataBoolean", + "GetScoresResponseDataCategorical", + "GetScoresResponseDataNumeric", + "GetScoresResponseData_Boolean", + "GetScoresResponseData_Categorical", + "GetScoresResponseData_Numeric", + "GetScoresResponseTraceData", +] diff --git a/langfuse/api/resources/score/client.py b/langfuse/api/resources/score/client.py index 29054bf0d..4408ae195 100644 --- a/langfuse/api/resources/score/client.py +++ b/langfuse/api/resources/score/client.py @@ -20,7 +20,7 @@ from ..commons.types.score_source import ScoreSource from .types.create_score_request import CreateScoreRequest from .types.create_score_response import CreateScoreResponse -from .types.scores import Scores +from .types.get_scores_response import GetScoresResponse # this is used as the default value for optional parameters OMIT = typing.cast(typing.Any, ...) @@ -31,7 +31,10 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper def create( - self, *, request: CreateScoreRequest, request_options: typing.Optional[RequestOptions] = None + self, + *, + request: CreateScoreRequest, + request_options: typing.Optional[RequestOptions] = None, ) -> CreateScoreResponse: """ Create a score @@ -69,7 +72,11 @@ def create( ) """ _response = self._client_wrapper.httpx_client.request( - "api/public/scores", method="POST", json=request, request_options=request_options, omit=OMIT + "api/public/scores", + method="POST", + json=request, + request_options=request_options, + omit=OMIT, ) try: if 200 <= _response.status_code < 300: @@ -77,13 +84,21 @@ def create( if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) @@ -103,9 +118,13 @@ def get( value: typing.Optional[float] = None, score_ids: typing.Optional[str] = None, config_id: typing.Optional[str] = None, + queue_id: typing.Optional[str] = None, data_type: typing.Optional[ScoreDataType] = None, + trace_tags: typing.Optional[ + typing.Union[typing.Sequence[str], typing.Sequence[typing.Sequence[str]]] + ] = None, request_options: typing.Optional[RequestOptions] = None, - ) -> Scores: + ) -> GetScoresResponse: """ Get a list of scores @@ -144,15 +163,21 @@ def get( config_id : typing.Optional[str] Retrieve only scores with a specific configId. + queue_id : typing.Optional[str] + Retrieve only scores with a specific annotation queueId. + data_type : typing.Optional[ScoreDataType] Retrieve only scores with a specific dataType. + trace_tags : typing.Optional[typing.Union[typing.Sequence[str], typing.Sequence[typing.Sequence[str]]]] + Only scores linked to traces that include all of these tags will be returned. + request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - Scores + GetScoresResponse Examples -------- @@ -185,7 +210,9 @@ def get( value=1.1, score_ids="string", config_id="string", + queue_id="string", data_type=ScoreDataType.NUMERIC, + trace_tags=["string"], ) """ _response = self._client_wrapper.httpx_client.request( @@ -196,36 +223,52 @@ def get( "limit": limit, "userId": user_id, "name": name, - "fromTimestamp": serialize_datetime(from_timestamp) if from_timestamp is not None else None, - "toTimestamp": serialize_datetime(to_timestamp) if to_timestamp is not None else None, + "fromTimestamp": serialize_datetime(from_timestamp) + if from_timestamp is not None + else None, + "toTimestamp": serialize_datetime(to_timestamp) + if to_timestamp is not None + else None, "source": source, "operator": operator, "value": value, "scoreIds": score_ids, "configId": config_id, + "queueId": queue_id, "dataType": data_type, + "traceTags": jsonable_encoder(trace_tags), }, request_options=request_options, ) try: if 200 <= _response.status_code < 300: - return pydantic_v1.parse_obj_as(Scores, _response.json()) # type: ignore + return pydantic_v1.parse_obj_as(GetScoresResponse, _response.json()) # type: ignore if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def get_by_id(self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Score: + def get_by_id( + self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> Score: """ Get a score @@ -258,7 +301,9 @@ def get_by_id(self, score_id: str, *, request_options: typing.Optional[RequestOp ) """ _response = self._client_wrapper.httpx_client.request( - f"api/public/scores/{jsonable_encoder(score_id)}", method="GET", request_options=request_options + f"api/public/scores/{jsonable_encoder(score_id)}", + method="GET", + request_options=request_options, ) try: if 200 <= _response.status_code < 300: @@ -266,19 +311,29 @@ def get_by_id(self, score_id: str, *, request_options: typing.Optional[RequestOp if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def delete(self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None: + def delete( + self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> None: """ Delete a score @@ -311,7 +366,9 @@ def delete(self, score_id: str, *, request_options: typing.Optional[RequestOptio ) """ _response = self._client_wrapper.httpx_client.request( - f"api/public/scores/{jsonable_encoder(score_id)}", method="DELETE", request_options=request_options + f"api/public/scores/{jsonable_encoder(score_id)}", + method="DELETE", + request_options=request_options, ) try: if 200 <= _response.status_code < 300: @@ -319,13 +376,21 @@ def delete(self, score_id: str, *, request_options: typing.Optional[RequestOptio if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) @@ -337,7 +402,10 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): self._client_wrapper = client_wrapper async def create( - self, *, request: CreateScoreRequest, request_options: typing.Optional[RequestOptions] = None + self, + *, + request: CreateScoreRequest, + request_options: typing.Optional[RequestOptions] = None, ) -> CreateScoreResponse: """ Create a score @@ -383,7 +451,11 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._client_wrapper.httpx_client.request( - "api/public/scores", method="POST", json=request, request_options=request_options, omit=OMIT + "api/public/scores", + method="POST", + json=request, + request_options=request_options, + omit=OMIT, ) try: if 200 <= _response.status_code < 300: @@ -391,13 +463,21 @@ async def main() -> None: if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) @@ -417,9 +497,13 @@ async def get( value: typing.Optional[float] = None, score_ids: typing.Optional[str] = None, config_id: typing.Optional[str] = None, + queue_id: typing.Optional[str] = None, data_type: typing.Optional[ScoreDataType] = None, + trace_tags: typing.Optional[ + typing.Union[typing.Sequence[str], typing.Sequence[typing.Sequence[str]]] + ] = None, request_options: typing.Optional[RequestOptions] = None, - ) -> Scores: + ) -> GetScoresResponse: """ Get a list of scores @@ -458,15 +542,21 @@ async def get( config_id : typing.Optional[str] Retrieve only scores with a specific configId. + queue_id : typing.Optional[str] + Retrieve only scores with a specific annotation queueId. + data_type : typing.Optional[ScoreDataType] Retrieve only scores with a specific dataType. + trace_tags : typing.Optional[typing.Union[typing.Sequence[str], typing.Sequence[typing.Sequence[str]]]] + Only scores linked to traces that include all of these tags will be returned. + request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - Scores + GetScoresResponse Examples -------- @@ -503,7 +593,9 @@ async def main() -> None: value=1.1, score_ids="string", config_id="string", + queue_id="string", data_type=ScoreDataType.NUMERIC, + trace_tags=["string"], ) @@ -517,36 +609,52 @@ async def main() -> None: "limit": limit, "userId": user_id, "name": name, - "fromTimestamp": serialize_datetime(from_timestamp) if from_timestamp is not None else None, - "toTimestamp": serialize_datetime(to_timestamp) if to_timestamp is not None else None, + "fromTimestamp": serialize_datetime(from_timestamp) + if from_timestamp is not None + else None, + "toTimestamp": serialize_datetime(to_timestamp) + if to_timestamp is not None + else None, "source": source, "operator": operator, "value": value, "scoreIds": score_ids, "configId": config_id, + "queueId": queue_id, "dataType": data_type, + "traceTags": jsonable_encoder(trace_tags), }, request_options=request_options, ) try: if 200 <= _response.status_code < 300: - return pydantic_v1.parse_obj_as(Scores, _response.json()) # type: ignore + return pydantic_v1.parse_obj_as(GetScoresResponse, _response.json()) # type: ignore if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - async def get_by_id(self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Score: + async def get_by_id( + self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> Score: """ Get a score @@ -587,7 +695,9 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._client_wrapper.httpx_client.request( - f"api/public/scores/{jsonable_encoder(score_id)}", method="GET", request_options=request_options + f"api/public/scores/{jsonable_encoder(score_id)}", + method="GET", + request_options=request_options, ) try: if 200 <= _response.status_code < 300: @@ -595,19 +705,29 @@ async def main() -> None: if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - async def delete(self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None: + async def delete( + self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> None: """ Delete a score @@ -648,7 +768,9 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._client_wrapper.httpx_client.request( - f"api/public/scores/{jsonable_encoder(score_id)}", method="DELETE", request_options=request_options + f"api/public/scores/{jsonable_encoder(score_id)}", + method="DELETE", + request_options=request_options, ) try: if 200 <= _response.status_code < 300: @@ -656,13 +778,21 @@ async def main() -> None: if _response.status_code == 400: raise Error(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore if _response.status_code == 401: - raise UnauthorizedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise UnauthorizedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 403: - raise AccessDeniedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise AccessDeniedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 405: - raise MethodNotAllowedError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise MethodNotAllowedError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore if _response.status_code == 404: - raise NotFoundError(pydantic_v1.parse_obj_as(typing.Any, _response.json())) # type: ignore + raise NotFoundError( + pydantic_v1.parse_obj_as(typing.Any, _response.json()) + ) # type: ignore _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) diff --git a/langfuse/api/resources/score/types/__init__.py b/langfuse/api/resources/score/types/__init__.py index 2917472ee..b627bad8f 100644 --- a/langfuse/api/resources/score/types/__init__.py +++ b/langfuse/api/resources/score/types/__init__.py @@ -2,6 +2,28 @@ from .create_score_request import CreateScoreRequest from .create_score_response import CreateScoreResponse -from .scores import Scores +from .get_scores_response import GetScoresResponse +from .get_scores_response_data import ( + GetScoresResponseData, + GetScoresResponseData_Boolean, + GetScoresResponseData_Categorical, + GetScoresResponseData_Numeric, +) +from .get_scores_response_data_boolean import GetScoresResponseDataBoolean +from .get_scores_response_data_categorical import GetScoresResponseDataCategorical +from .get_scores_response_data_numeric import GetScoresResponseDataNumeric +from .get_scores_response_trace_data import GetScoresResponseTraceData -__all__ = ["CreateScoreRequest", "CreateScoreResponse", "Scores"] +__all__ = [ + "CreateScoreRequest", + "CreateScoreResponse", + "GetScoresResponse", + "GetScoresResponseData", + "GetScoresResponseDataBoolean", + "GetScoresResponseDataCategorical", + "GetScoresResponseDataNumeric", + "GetScoresResponseData_Boolean", + "GetScoresResponseData_Categorical", + "GetScoresResponseData_Numeric", + "GetScoresResponseTraceData", +] diff --git a/langfuse/api/resources/score/types/get_scores_response.py b/langfuse/api/resources/score/types/get_scores_response.py new file mode 100644 index 000000000..777bb799b --- /dev/null +++ b/langfuse/api/resources/score/types/get_scores_response.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from ...utils.resources.pagination.types.meta_response import MetaResponse +from .get_scores_response_data import GetScoresResponseData + + +class GetScoresResponse(pydantic_v1.BaseModel): + data: typing.List[GetScoresResponseData] + meta: MetaResponse + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/score/types/get_scores_response_data.py b/langfuse/api/resources/score/types/get_scores_response_data.py new file mode 100644 index 000000000..e1b317975 --- /dev/null +++ b/langfuse/api/resources/score/types/get_scores_response_data.py @@ -0,0 +1,191 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from ...commons.types.score_source import ScoreSource +from .get_scores_response_trace_data import GetScoresResponseTraceData + + +class GetScoresResponseData_Numeric(pydantic_v1.BaseModel): + trace: GetScoresResponseTraceData + value: float + id: str + trace_id: str = pydantic_v1.Field(alias="traceId") + name: str + source: ScoreSource + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) + timestamp: dt.datetime + created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") + updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + comment: typing.Optional[str] = None + config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + data_type: typing.Literal["NUMERIC"] = pydantic_v1.Field( + alias="dataType", default="NUMERIC" + ) + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} + + +class GetScoresResponseData_Categorical(pydantic_v1.BaseModel): + trace: GetScoresResponseTraceData + value: typing.Optional[float] = None + string_value: str = pydantic_v1.Field(alias="stringValue") + id: str + trace_id: str = pydantic_v1.Field(alias="traceId") + name: str + source: ScoreSource + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) + timestamp: dt.datetime + created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") + updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + comment: typing.Optional[str] = None + config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + data_type: typing.Literal["CATEGORICAL"] = pydantic_v1.Field( + alias="dataType", default="CATEGORICAL" + ) + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} + + +class GetScoresResponseData_Boolean(pydantic_v1.BaseModel): + trace: GetScoresResponseTraceData + value: float + string_value: str = pydantic_v1.Field(alias="stringValue") + id: str + trace_id: str = pydantic_v1.Field(alias="traceId") + name: str + source: ScoreSource + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) + timestamp: dt.datetime + created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") + updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + comment: typing.Optional[str] = None + config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + data_type: typing.Literal["BOOLEAN"] = pydantic_v1.Field( + alias="dataType", default="BOOLEAN" + ) + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} + + +GetScoresResponseData = typing.Union[ + GetScoresResponseData_Numeric, + GetScoresResponseData_Categorical, + GetScoresResponseData_Boolean, +] diff --git a/langfuse/api/resources/score/types/get_scores_response_data_boolean.py b/langfuse/api/resources/score/types/get_scores_response_data_boolean.py new file mode 100644 index 000000000..4dbf85af2 --- /dev/null +++ b/langfuse/api/resources/score/types/get_scores_response_data_boolean.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from ...commons.types.boolean_score import BooleanScore +from .get_scores_response_trace_data import GetScoresResponseTraceData + + +class GetScoresResponseDataBoolean(BooleanScore): + trace: GetScoresResponseTraceData + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/score/types/get_scores_response_data_categorical.py b/langfuse/api/resources/score/types/get_scores_response_data_categorical.py new file mode 100644 index 000000000..3c619779f --- /dev/null +++ b/langfuse/api/resources/score/types/get_scores_response_data_categorical.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from ...commons.types.categorical_score import CategoricalScore +from .get_scores_response_trace_data import GetScoresResponseTraceData + + +class GetScoresResponseDataCategorical(CategoricalScore): + trace: GetScoresResponseTraceData + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/score/types/get_scores_response_data_numeric.py b/langfuse/api/resources/score/types/get_scores_response_data_numeric.py new file mode 100644 index 000000000..127d8f028 --- /dev/null +++ b/langfuse/api/resources/score/types/get_scores_response_data_numeric.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from ...commons.types.numeric_score import NumericScore +from .get_scores_response_trace_data import GetScoresResponseTraceData + + +class GetScoresResponseDataNumeric(NumericScore): + trace: GetScoresResponseTraceData + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/score/types/get_scores_response_trace_data.py b/langfuse/api/resources/score/types/get_scores_response_trace_data.py new file mode 100644 index 000000000..efbafadf4 --- /dev/null +++ b/langfuse/api/resources/score/types/get_scores_response_trace_data.py @@ -0,0 +1,52 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 + + +class GetScoresResponseTraceData(pydantic_v1.BaseModel): + user_id: typing.Optional[str] = pydantic_v1.Field(alias="userId", default=None) + """ + The user ID associated with the trace referenced by score + """ + + tags: typing.Optional[typing.List[str]] = pydantic_v1.Field(default=None) + """ + A list of tags associated with the trace referenced by score + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/tests/utils/test_http_client.py b/langfuse/api/tests/utils/test_http_client.py index 4a37a5236..21b37b58f 100644 --- a/langfuse/api/tests/utils/test_http_client.py +++ b/langfuse/api/tests/utils/test_http_client.py @@ -1,8 +1,7 @@ # This file was auto-generated by Fern from our API Definition. - -from langfuse.api.core.http_client import get_request_body -from langfuse.api.core.request_options import RequestOptions +from finto.core.http_client import get_request_body +from finto.core.request_options import RequestOptions def get_request_options() -> RequestOptions: diff --git a/langfuse/api/tests/utils/test_query_encoding.py b/langfuse/api/tests/utils/test_query_encoding.py index fdbcf6b76..a5a366eb4 100644 --- a/langfuse/api/tests/utils/test_query_encoding.py +++ b/langfuse/api/tests/utils/test_query_encoding.py @@ -1,7 +1,6 @@ # This file was auto-generated by Fern from our API Definition. - -from langfuse.api.core.query_encoder import encode_query +from finto.core.query_encoder import encode_query def test_query_encoding() -> None: From e1536b3ccc24544ab33e0f28a478112edbb5d358 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:38:48 +0100 Subject: [PATCH 02/42] add media upload --- .../ingestion_consumer.py} | 268 +++++------------- langfuse/_task_manager/media_manager.py | 245 ++++++++++++++++ .../_task_manager/media_upload_consumer.py | 41 +++ langfuse/_task_manager/media_upload_queue.py | 14 + langfuse/_task_manager/task_manager.py | 195 +++++++++++++ langfuse/client.py | 42 ++- langfuse/openai.py | 56 ++-- langfuse/types/__init__.py | 6 +- poetry.lock | 10 +- static/joke_prompt.wav | Bin 0 -> 157774 bytes static/puton.jpg | Bin 0 -> 650780 bytes tests/test_core_sdk.py | 28 +- tests/test_langchain.py | 66 +++-- tests/test_llama_index.py | 14 +- tests/test_task_manager.py | 40 +-- 15 files changed, 698 insertions(+), 327 deletions(-) rename langfuse/{task_manager.py => _task_manager/ingestion_consumer.py} (51%) create mode 100644 langfuse/_task_manager/media_manager.py create mode 100644 langfuse/_task_manager/media_upload_consumer.py create mode 100644 langfuse/_task_manager/media_upload_queue.py create mode 100644 langfuse/_task_manager/task_manager.py create mode 100644 static/joke_prompt.wav create mode 100644 static/puton.jpg diff --git a/langfuse/task_manager.py b/langfuse/_task_manager/ingestion_consumer.py similarity index 51% rename from langfuse/task_manager.py rename to langfuse/_task_manager/ingestion_consumer.py index a507785fe..4fa704847 100644 --- a/langfuse/task_manager.py +++ b/langfuse/_task_manager/ingestion_consumer.py @@ -1,56 +1,45 @@ -"""@private""" - -import atexit import json import logging -import queue import threading -from queue import Empty, Queue import time -from typing import List, Any, Optional import typing +from queue import Empty, Queue +from typing import Any, List, Optional -from langfuse.Sampler import Sampler -from langfuse.parse_error import handle_exception -from langfuse.request import APIError -from langfuse.utils import _get_timestamp -from langfuse.types import MaskFunction +import backoff try: - import pydantic.v1 as pydantic # type: ignore + import pydantic.v1 as pydantic except ImportError: - import pydantic # type: ignore - - -import backoff + import pydantic -from langfuse.request import LangfuseClient +from langfuse.api.client import FernLangfuse +from langfuse.parse_error import handle_exception +from langfuse.request import APIError, LangfuseClient +from langfuse.Sampler import Sampler from langfuse.serializer import EventSerializer +from langfuse.types import MaskFunction -# largest message size in db is 331_000 bytes right now -MAX_MSG_SIZE = 1_000_000 - -# https://vercel.com/docs/functions/serverless-functions/runtimes#request-body-size -# The maximum payload size for the request body or the response body of a Serverless Function is 4.5 MB -# 4_500_000 Bytes = 4.5 MB -# configured to be 3 MB to be safe +from .media_manager import MediaManager -BATCH_SIZE_LIMIT = 2_500_000 +MAX_EVENT_SIZE_BYTES = 1_000_000 +MAX_BATCH_SIZE_BYTES = 2_500_000 -class LangfuseMetadata(pydantic.BaseModel): +class IngestionMetadata(pydantic.BaseModel): batch_size: int - sdk_integration: typing.Optional[str] = None - sdk_name: str = None - sdk_version: str = None - public_key: str = None + sdk_integration: Optional[str] = None + sdk_name: Optional[str] = None + sdk_version: Optional[str] = None + public_key: Optional[str] = None -class Consumer(threading.Thread): +class IngestionConsumer(threading.Thread): _log = logging.getLogger("langfuse") - _queue: Queue + _ingestion_queue: Queue _identifier: int _client: LangfuseClient + _api_client: FernLangfuse _flush_at: int _flush_interval: float _max_retries: int @@ -60,16 +49,19 @@ class Consumer(threading.Thread): _sdk_integration: str _mask: Optional[MaskFunction] _sampler: Sampler + _media_manager: MediaManager def __init__( self, - queue: Queue, + *, + ingestion_queue: Queue, identifier: int, client: LangfuseClient, flush_at: int, flush_interval: float, max_retries: int, public_key: str, + media_manager: MediaManager, sdk_name: str, sdk_version: str, sdk_integration: str, @@ -77,15 +69,15 @@ def __init__( mask: Optional[MaskFunction] = None, ): """Create a consumer thread.""" - threading.Thread.__init__(self) - # Make consumer a daemon thread so that it doesn't block program exit - self.daemon = True - self._queue = queue + super().__init__() # It's important to set running in the constructor: if we are asked to # pause immediately after construction, we might set running to True in # run() *after* we set it to False in pause... and keep running # forever. self.running = True + # Make consumer a daemon thread so that it doesn't block program exit + self.daemon = True + self._ingestion_queue = ingestion_queue self._identifier = identifier self._client = client self._flush_at = flush_at @@ -97,73 +89,81 @@ def __init__( self._sdk_integration = sdk_integration self._mask = mask self._sampler = Sampler(sample_rate) + self._media_manager = media_manager def _next(self): """Return the next batch of items to upload.""" - queue = self._queue - items = [] + events = [] start_time = time.monotonic() total_size = 0 - while len(items) < self._flush_at: + while len(events) < self._flush_at: elapsed = time.monotonic() - start_time if elapsed >= self._flush_interval: break try: - item = queue.get(block=True, timeout=self._flush_interval - elapsed) + event = self._ingestion_queue.get( + block=True, timeout=self._flush_interval - elapsed + ) # convert pydantic models to dicts - if "body" in item and isinstance(item["body"], pydantic.BaseModel): - item["body"] = item["body"].dict(exclude_none=True) + if "body" in event and isinstance(event["body"], pydantic.BaseModel): + event["body"] = event["body"].dict(exclude_none=True) # sample event - if not self._sampler.sample_event(item): - queue.task_done() + if not self._sampler.sample_event(event): + self._ingestion_queue.task_done() continue + # handle multimodal data + self._media_manager.process_multimodal_event_in_place(event) + # truncate item if it exceeds size limit item_size = self._truncate_item_in_place( - item=item, - max_size=MAX_MSG_SIZE, + event=event, + max_size=MAX_EVENT_SIZE_BYTES, log_message="", ) # apply mask - self._apply_mask_in_place(item) + self._apply_mask_in_place(event) # check for serialization errors try: - json.dumps(item, cls=EventSerializer) + json.dumps(event, cls=EventSerializer) except Exception as e: self._log.error(f"Error serializing item, skipping: {e}") - queue.task_done() + self._ingestion_queue.task_done() continue - items.append(item) + events.append(event) total_size += item_size - if total_size >= BATCH_SIZE_LIMIT: + if total_size >= MAX_BATCH_SIZE_BYTES: self._log.debug("hit batch size limit (size: %d)", total_size) break except Empty: break - self._log.debug("~%d items in the Langfuse queue", self._queue.qsize()) - return items + self._log.debug( + "~%d items in the Langfuse queue", self._ingestion_queue.qsize() + ) + + return events def _truncate_item_in_place( self, *, - item: typing.Any, + event: typing.Any, max_size: int, log_message: typing.Optional[str] = None, ) -> int: """Truncate the item in place to fit within the size limit.""" - item_size = self._get_item_size(item) + item_size = self._get_item_size(event) self._log.debug(f"item size {item_size}") if item_size > max_size: @@ -172,14 +172,14 @@ def _truncate_item_in_place( item_size, ) - if "body" in item: + if "body" in event: drop_candidates = ["input", "output", "metadata"] sorted_field_sizes = sorted( [ ( field, - self._get_item_size((item["body"][field])) - if field in item["body"] + self._get_item_size((event["body"][field])) + if field in event["body"] else 0, ) for field in drop_candidates @@ -191,10 +191,10 @@ def _truncate_item_in_place( for _ in range(len(sorted_field_sizes)): field_to_drop, size_to_drop = sorted_field_sizes.pop() - if field_to_drop not in item["body"]: + if field_to_drop not in event["body"]: continue - item["body"][field_to_drop] = log_message + event["body"][field_to_drop] = log_message item_size -= size_to_drop self._log.debug( @@ -205,16 +205,16 @@ def _truncate_item_in_place( break # if item does not have body or input/output fields, drop the event - if "body" not in item or ( - "input" not in item["body"] and "output" not in item["body"] + if "body" not in event or ( + "input" not in event["body"] and "output" not in event["body"] ): self._log.warning( "Item does not have body or input/output fields, dropping item." ) - self._queue.task_done() + self._ingestion_queue.task_done() return 0 - return self._get_item_size(item) + return self._get_item_size(event) def _get_item_size(self, item: typing.Any) -> int: """Return the size of the item in bytes.""" @@ -235,7 +235,7 @@ def _apply_mask_in_place(self, event: dict): body[key] = "" def run(self): - """Runs the consumer.""" + """Run the consumer.""" self._log.debug("consumer is running...") while self.running: self.upload() @@ -253,7 +253,7 @@ def upload(self): finally: # mark items as acknowledged from queue for _ in batch: - self._queue.task_done() + self._ingestion_queue.task_done() def pause(self): """Pause the consumer.""" @@ -262,7 +262,7 @@ def pause(self): def _upload_batch(self, batch: List[Any]): self._log.debug("uploading batch of %d items", len(batch)) - metadata = LangfuseMetadata( + metadata = IngestionMetadata( batch_size=len(batch), sdk_integration=self._sdk_integration, sdk_name=self._sdk_name, @@ -287,134 +287,4 @@ def execute_task_with_backoff(batch: List[Any]): raise e execute_task_with_backoff(batch) - self._log.debug("successfully uploaded batch of %d items", len(batch)) - - -class TaskManager(object): - _log = logging.getLogger("langfuse") - _consumers: List[Consumer] - _enabled: bool - _threads: int - _max_task_queue_size: int - _queue: Queue - _client: LangfuseClient - _flush_at: int - _flush_interval: float - _max_retries: int - _public_key: str - _sdk_name: str - _sdk_version: str - _sdk_integration: str - _sample_rate: float - _mask: Optional[MaskFunction] - - def __init__( - self, - client: LangfuseClient, - flush_at: int, - flush_interval: float, - max_retries: int, - threads: int, - public_key: str, - sdk_name: str, - sdk_version: str, - sdk_integration: str, - enabled: bool = True, - max_task_queue_size: int = 100_000, - sample_rate: float = 1, - mask: Optional[MaskFunction] = None, - ): - self._max_task_queue_size = max_task_queue_size - self._threads = threads - self._queue = queue.Queue(self._max_task_queue_size) - self._consumers = [] - self._client = client - self._flush_at = flush_at - self._flush_interval = flush_interval - self._max_retries = max_retries - self._public_key = public_key - self._sdk_name = sdk_name - self._sdk_version = sdk_version - self._sdk_integration = sdk_integration - self._enabled = enabled - self._sample_rate = sample_rate - self._mask = mask - - self.init_resources() - - # cleans up when the python interpreter closes - atexit.register(self.join) - - def init_resources(self): - for i in range(self._threads): - consumer = Consumer( - queue=self._queue, - identifier=i, - client=self._client, - flush_at=self._flush_at, - flush_interval=self._flush_interval, - max_retries=self._max_retries, - public_key=self._public_key, - sdk_name=self._sdk_name, - sdk_version=self._sdk_version, - sdk_integration=self._sdk_integration, - sample_rate=self._sample_rate, - mask=self._mask, - ) - consumer.start() - self._consumers.append(consumer) - - def add_task(self, event: dict): - if not self._enabled: - return - - try: - event["timestamp"] = _get_timestamp() - - self._queue.put(event, block=False) - except queue.Full: - self._log.warning("analytics-python queue is full") - return False - except Exception as e: - self._log.exception(f"Exception in adding task {e}") - - return False - - def flush(self): - """Force a flush from the internal queue to the server.""" - self._log.debug("flushing queue") - queue = self._queue - size = queue.qsize() - queue.join() - # Note that this message may not be precise, because of threading. - self._log.debug("successfully flushed about %s items.", size) - - def join(self): - """End the consumer threads once the queue is empty. - - Blocks execution until finished - """ - self._log.debug(f"joining {len(self._consumers)} consumer threads") - - # pause all consumers before joining them so we don't have to wait for multiple - # flush intervals to join them all. - for consumer in self._consumers: - consumer.pause() - - for consumer in self._consumers: - try: - consumer.join() - except RuntimeError: - # consumer thread has not started - pass - - self._log.debug(f"consumer thread {consumer._identifier} joined") - - def shutdown(self): - """Flush all messages and cleanly shutdown the client.""" - self._log.debug("shutdown initiated") - - self.flush() - self.join() - - self._log.debug("shutdown completed") + self._log.debug("successfully uploaded batch of %d events", len(batch)) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py new file mode 100644 index 000000000..9874ff874 --- /dev/null +++ b/langfuse/_task_manager/media_manager.py @@ -0,0 +1,245 @@ +import base64 +import hashlib +import logging +from queue import Empty +from typing import Literal + +import requests + +from langfuse.api import GetMediaUploadUrlRequest, PatchMediaBody +from langfuse.api.client import FernLangfuse +from langfuse.utils import _get_timestamp + +from .media_upload_queue import MediaUploadQueue, UploadMediaJob + + +class MediaManager: + _log = logging.getLogger(__name__) + + def __init__( + self, *, api_client: FernLangfuse, media_upload_queue: MediaUploadQueue + ): + self._api_client = api_client + self._queue = media_upload_queue + + def process_next_media_upload(self): + try: + data = self._queue.get(block=True, timeout=1) + self._process_upload_media_job(data=data) + + self._queue.task_done() + except Empty: + pass + except Exception as e: + self._log.error(f"Error uploading media: {e}") + self._queue.task_done() + + def process_multimodal_event_in_place(self, event: dict): + try: + if "body" not in event: + return + + body = event["body"] + multimodal_fields = ["input", "output"] + + for field in multimodal_fields: + if field in body: + field_data = body[field] + + if field == "output": + self._process_multimodal_message( + event=event, body=body, field=field, message=field_data + ) + + if isinstance(field_data, list): + for message in field_data: + self._process_multimodal_message( + event=event, body=body, field=field, message=message + ) + + except Exception as e: + self._log.error(f"Error processing multimodal event: {e}") + + def _process_multimodal_message( + self, *, event: dict, body: dict, field: str, message: dict + ): + if isinstance(message, dict) and message.get("content", None) is not None: + content = message["content"] + + for content_part in content: + if isinstance(content_part, dict): + if content_part.get("image_url", None) is not None: + base64_data_uri = content_part["image_url"]["url"] + if base64_data_uri.startswith("data:"): + media_reference_string = self._enqueue_media_upload( + event=event, + body=body, + field=field, + base64_data_uri=base64_data_uri, + ) + + if media_reference_string: + content_part["image_url"]["url"] = ( + media_reference_string + ) + + if content_part.get("input_audio", None) is not None: + base64_data_uri = ( + f"data:audio/{content_part['input_audio']['format']};base64," + + content_part["input_audio"]["data"] + ) + + media_reference_string = self._enqueue_media_upload( + event=event, + body=body, + field=field, + base64_data_uri=base64_data_uri, + ) + + if media_reference_string: + content_part["input_audio"]["data"] = media_reference_string + + if content_part.get("output_audio", None) is not None: + base64_data_uri = ( + f"data:audio/{content_part['output_audio']['format']};base64," + + content_part["output_audio"]["data"] + ) + + media_reference_string = self._enqueue_media_upload( + event=event, + body=body, + field=field, + base64_data_uri=base64_data_uri, + ) + + if media_reference_string: + content_part["output_audio"]["data"] = ( + media_reference_string + ) + + def _enqueue_media_upload( + self, *, event: dict, body: dict, field: str, base64_data_uri: str + ): + parsed_content = self._parse_base64_data_uri(base64_data_uri) + trace_id = body.get("traceId", None) or ( + body.get("id", None) + if "type" in event and "trace" in event["type"] + else None + ) + + if trace_id is None: + raise ValueError("trace_id is required for media upload") + + observation_id = ( + body.get("id", None) + if "type" in event + and ("generation" in event["type"] or "span" in event["type"]) + else None + ) + + if parsed_content: + content_length = parsed_content["content_length"] + content_type = parsed_content["content_type"] + content_sha256_hash = parsed_content["content_sha256_hash"] + content_bytes = parsed_content["content_bytes"] + + upload_url_response = self._api_client.media.get_upload_url( + request=GetMediaUploadUrlRequest( + field=field, + contentLength=content_length, + contentType=content_type, + sha256Hash=content_sha256_hash, + traceId=trace_id, + observationId=observation_id, + ) + ) + + upload_url = upload_url_response.upload_url + media_id = upload_url_response.media_id + + if upload_url is not None: + self._queue.put( + item={ + "content_bytes": content_bytes, + "content_type": content_type, + "content_sha256_hash": content_sha256_hash, + "upload_url": upload_url, + "media_id": media_id, + }, + block=True, + ) + + return self._format_media_reference_string( + content_type=content_type, + media_id=media_id, + source="base64", + ) + + def _process_upload_media_job( + self, + *, + data: UploadMediaJob, + ): + upload_response = requests.put( + data["upload_url"], + headers={ + "Content-Type": data["content_type"], + "x-amz-checksum-sha256": data["content_sha256_hash"], + }, + data=data["content_bytes"], + ) + + self._api_client.media.patch( + media_id=data["media_id"], + request=PatchMediaBody( + uploadedAt=_get_timestamp(), + uploadHttpStatus=upload_response.status_code, + uploadHttpError=upload_response.text, + ), + ) + + def _format_media_reference_string( + self, *, content_type: str, media_id: str, source: Literal["base64"] + ) -> str: + return f"@@@langfuseMedia:type={content_type}|id={media_id}|source={source}@@@" + + def _parse_base64_data_uri(self, data: str): + if not data or not isinstance(data, str): + return None + + if not data.startswith("data:"): + return None + + try: + # Split the data into metadata and actual data + header, _, actual_data = data[5:].partition(",") + if not header or not actual_data: + return None + + # Determine if the data is base64 encoded + is_base64 = header.endswith(";base64") + if not is_base64: + return None + + content_type = header[:-7] + if not content_type: + return None + + try: + content_bytes = base64.b64decode(actual_data) + except Exception: + return None + + content_length = len(content_bytes) + + sha256_hash_bytes = hashlib.sha256(content_bytes).digest() + sha256_hash_base64 = base64.b64encode(sha256_hash_bytes).decode("utf-8") + + return { + "content_type": content_type, + "content_bytes": content_bytes, + "content_length": content_length, + "content_sha256_hash": sha256_hash_base64, + } + except Exception: + return None diff --git a/langfuse/_task_manager/media_upload_consumer.py b/langfuse/_task_manager/media_upload_consumer.py new file mode 100644 index 000000000..c4720165d --- /dev/null +++ b/langfuse/_task_manager/media_upload_consumer.py @@ -0,0 +1,41 @@ +import logging +import threading + +from .media_manager import MediaManager + + +class MediaUploadConsumer(threading.Thread): + _log = logging.getLogger(__name__) + _identifier: int + _max_retries: int + _media_manager: MediaManager + + def __init__( + self, + *, + identifier: int, + max_retries: int, + media_manager: MediaManager, + ): + """Create a consumer thread.""" + super().__init__() + # Make consumer a daemon thread so that it doesn't block program exit + self.daemon = True + # It's important to set running in the constructor: if we are asked to + # pause immediately after construction, we might set running to True in + # run() *after* we set it to False in pause... and keep running + # forever. + self.running = True + self._identifier = identifier + self._max_retries = max_retries + self._media_manager = media_manager + + def run(self): + """Run the media upload consumer.""" + self._log.debug("consumer is running...") + while self.running: + self._media_manager.process_next_media_upload() + + def pause(self): + """Pause the media upload consumer.""" + self.running = False diff --git a/langfuse/_task_manager/media_upload_queue.py b/langfuse/_task_manager/media_upload_queue.py new file mode 100644 index 000000000..81bd9d331 --- /dev/null +++ b/langfuse/_task_manager/media_upload_queue.py @@ -0,0 +1,14 @@ +from queue import Queue +from typing import TypedDict + + +class UploadMediaJob(TypedDict): + upload_url: str + media_id: str + content_type: str + content_bytes: bytes + content_sha256_hash: str + + +class MediaUploadQueue(Queue[UploadMediaJob]): + pass diff --git a/langfuse/_task_manager/task_manager.py b/langfuse/_task_manager/task_manager.py new file mode 100644 index 000000000..76df2ca66 --- /dev/null +++ b/langfuse/_task_manager/task_manager.py @@ -0,0 +1,195 @@ +"""@private""" + +import atexit +import logging +import queue +from queue import Queue +from typing import List, Optional + +from langfuse.api.client import FernLangfuse +from langfuse.request import LangfuseClient +from langfuse.types import MaskFunction +from langfuse.utils import _get_timestamp + +from .ingestion_consumer import IngestionConsumer +from .media_manager import MediaManager +from .media_upload_consumer import MediaUploadConsumer +from .media_upload_queue import MediaUploadQueue + + +class TaskManager(object): + _log = logging.getLogger(__name__) + _ingestion_consumers: List[IngestionConsumer] + _enabled: bool + _threads: int + _media_upload_threads: int + _max_task_queue_size: int + _ingestion_queue: Queue + _media_upload_queue: MediaUploadQueue + _client: LangfuseClient + _api_client: FernLangfuse + _flush_at: int + _flush_interval: float + _max_retries: int + _public_key: str + _sdk_name: str + _sdk_version: str + _sdk_integration: str + _sample_rate: float + _mask: Optional[MaskFunction] + + def __init__( + self, + *, + client: LangfuseClient, + api_client: FernLangfuse, + flush_at: int, + flush_interval: float, + max_retries: int, + threads: int, + media_upload_threads: int = 1, + public_key: str, + sdk_name: str, + sdk_version: str, + sdk_integration: str, + enabled: bool = True, + max_task_queue_size: int = 100_000, + sample_rate: float = 1, + mask: Optional[MaskFunction] = None, + ): + self._max_task_queue_size = max_task_queue_size + self._threads = threads + self._media_upload_threads = media_upload_threads + self._ingestion_queue = queue.Queue(self._max_task_queue_size) + self._media_upload_queue = MediaUploadQueue(self._max_task_queue_size) + self._media_manager = MediaManager( + api_client=api_client, media_upload_queue=self._media_upload_queue + ) + self._ingestion_consumers = [] + self._media_upload_consumers = [] + self._client = client + self._api_client = api_client + self._flush_at = flush_at + self._flush_interval = flush_interval + self._max_retries = max_retries + self._public_key = public_key + self._sdk_name = sdk_name + self._sdk_version = sdk_version + self._sdk_integration = sdk_integration + self._enabled = enabled + self._sample_rate = sample_rate + self._mask = mask + + self.init_resources() + + # cleans up when the python interpreter closes + atexit.register(self.join) + + def init_resources(self): + for i in range(self._threads): + ingestion_consumer = IngestionConsumer( + ingestion_queue=self._ingestion_queue, + identifier=i, + client=self._client, + media_manager=self._media_manager, + flush_at=self._flush_at, + flush_interval=self._flush_interval, + max_retries=self._max_retries, + public_key=self._public_key, + sdk_name=self._sdk_name, + sdk_version=self._sdk_version, + sdk_integration=self._sdk_integration, + sample_rate=self._sample_rate, + mask=self._mask, + ) + ingestion_consumer.start() + self._ingestion_consumers.append(ingestion_consumer) + + for i in range(self._media_upload_threads): + media_upload_consumer = MediaUploadConsumer( + identifier=i, + max_retries=self._max_retries, + media_manager=self._media_manager, + ) + media_upload_consumer.start() + self._media_upload_consumers.append(media_upload_consumer) + + def add_task(self, event: dict): + if not self._enabled: + return + + try: + event["timestamp"] = _get_timestamp() + + self._ingestion_queue.put(event, block=False) + except queue.Full: + self._log.warning("analytics-python queue is full") + return False + except Exception as e: + self._log.exception(f"Exception in adding task {e}") + + return False + + def flush(self): + """Force a flush from the internal queue to the server.""" + self._log.debug("flushing ingestion and media upload queues") + + # Ingestion queue + ingestion_queue_size = self._ingestion_queue.qsize() + self._ingestion_queue.join() + self._log.debug( + f"Successfully flushed ~{ingestion_queue_size} items from ingestion queue" + ) + + # Media upload queue + media_upload_queue_size = self._media_upload_queue.qsize() + self._media_upload_queue.join() + self._log.debug( + f"Successfully flushed ~{media_upload_queue_size} items from media upload queue" + ) + + def join(self): + """End the consumer threads once the queue is empty. + + Blocks execution until finished + """ + self._log.debug(f"joining {len(self._ingestion_consumers)} consumer threads") + + # pause all consumers before joining them so we don't have to wait for multiple + # flush intervals to join them all. + for ingestion_consumer in self._ingestion_consumers: + ingestion_consumer.pause() + + for media_upload_consumer in self._media_upload_consumers: + media_upload_consumer.pause() + + for ingestion_consumer in self._ingestion_consumers: + try: + ingestion_consumer.join() + except RuntimeError: + # consumer thread has not started + pass + + self._log.debug( + f"IngestionConsumer thread {ingestion_consumer._identifier} joined" + ) + + for media_upload_consumer in self._media_upload_consumers: + try: + media_upload_consumer.join() + except RuntimeError: + # consumer thread has not started + pass + + self._log.debug( + f"MediaUploadConsumer thread {media_upload_consumer._identifier} joined" + ) + + def shutdown(self): + """Flush all messages and cleanly shutdown the client.""" + self._log.debug("shutdown initiated") + + self.flush() + self.join() + + self._log.debug("shutdown completed") diff --git a/langfuse/client.py b/langfuse/client.py index f9e6a2380..74a2f53d4 100644 --- a/langfuse/client.py +++ b/langfuse/client.py @@ -1,28 +1,19 @@ -from contextlib import contextmanager import datetime as dt import logging import os -import typing -import uuid -import backoff -import httpx -from enum import Enum import time import tracemalloc -from typing import ( - Any, - Dict, - Optional, - Literal, - Union, - List, - Sequence, - overload, -) +import typing import urllib.parse +import uuid import warnings +from contextlib import contextmanager from dataclasses import dataclass +from enum import Enum +from typing import Any, Dict, List, Literal, Optional, Sequence, Union, overload +import backoff +import httpx from langfuse.api.resources.commons.types.dataset_run_with_items import ( DatasetRunWithItems, @@ -39,8 +30,8 @@ ) from langfuse.api.resources.ingestion.types.create_span_body import CreateSpanBody from langfuse.api.resources.ingestion.types.score_body import ScoreBody -from langfuse.api.resources.ingestion.types.trace_body import TraceBody from langfuse.api.resources.ingestion.types.sdk_log_body import SdkLogBody +from langfuse.api.resources.ingestion.types.trace_body import TraceBody from langfuse.api.resources.ingestion.types.update_generation_body import ( UpdateGenerationBody, ) @@ -51,28 +42,26 @@ from langfuse.api.resources.prompts.types import ( CreatePromptRequest_Chat, CreatePromptRequest_Text, - Prompt_Text, Prompt_Chat, + Prompt_Text, ) from langfuse.api.resources.trace.types.traces import Traces from langfuse.api.resources.utils.resources.pagination.types.meta_response import ( MetaResponse, ) from langfuse.model import ( + ChatMessageDict, + ChatPromptClient, CreateDatasetItemRequest, CreateDatasetRequest, CreateDatasetRunItemRequest, - ChatMessageDict, DatasetItem, DatasetStatus, ModelUsage, PromptClient, - ChatPromptClient, TextPromptClient, ) -from langfuse.parse_error import ( - handle_fern_exception, -) +from langfuse.parse_error import handle_fern_exception from langfuse.prompt_cache import PromptCache try: @@ -80,13 +69,13 @@ except ImportError: import pydantic # type: ignore +from langfuse._task_manager.task_manager import TaskManager from langfuse.api.client import FernLangfuse from langfuse.environment import get_common_release_envs from langfuse.logging import clean_logger from langfuse.model import Dataset, MapValue, Observation, TraceWithFullDetails from langfuse.request import LangfuseClient -from langfuse.task_manager import TaskManager -from langfuse.types import SpanLevel, ScoreDataType, MaskFunction +from langfuse.types import MaskFunction, ScoreDataType, SpanLevel from langfuse.utils import _convert_usage_input, _create_prompt_context, _get_timestamp from .version import __version__ as version @@ -308,6 +297,7 @@ def __init__( "flush_interval": flush_interval, "max_retries": max_retries, "client": langfuse_client, + "api_client": self.client, "public_key": public_key, "sdk_name": "python", "sdk_version": version, @@ -1383,7 +1373,7 @@ def _log_memory_usage(self): :top_k_items ], "total_usage": f"{total_memory_usage:.2f} MB", - "langfuse_queue_length": self.task_manager._queue.qsize(), + "langfuse_queue_length": self.task_manager._ingestion_queue.qsize(), } self.log.debug("Memory usage: ", logged_memory_usage) diff --git a/langfuse/openai.py b/langfuse/openai.py index d3e66f9e5..ccd917fd6 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -17,18 +17,17 @@ See docs for more details: https://langfuse.com/docs/integrations/openai """ -import copy import logging -from inspect import isclass import types - from collections import defaultdict from dataclasses import dataclass -from typing import List, Optional +from inspect import isclass +from typing import Optional import openai.resources from openai._types import NotGiven from packaging.version import Version +from pydantic import BaseModel from wrapt import wrap_function_wrapper from langfuse import Langfuse @@ -36,7 +35,6 @@ from langfuse.decorators import langfuse_context from langfuse.utils import _get_timestamp from langfuse.utils.langfuse_singleton import LangfuseSingleton -from pydantic import BaseModel try: import openai @@ -200,13 +198,13 @@ def _extract_chat_prompt(kwargs: any): # uf user provided functions, we need to send these together with messages to langfuse prompt.update( { - "messages": _filter_image_data(kwargs.get("messages", [])), + "messages": kwargs.get("messages", []), } ) return prompt else: # vanilla case, only send messages in openai format to langfuse - return _filter_image_data(kwargs.get("messages", [])) + return kwargs.get("messages", []) def _extract_chat_response(kwargs: any): @@ -215,15 +213,31 @@ def _extract_chat_response(kwargs: any): "role": kwargs.get("role", None), } + audio_content = None + if kwargs.get("function_call") is not None: response.update({"function_call": kwargs["function_call"]}) if kwargs.get("tool_calls") is not None: response.update({"tool_calls": kwargs["tool_calls"]}) + if kwargs.get("audio") is not None: + audio = kwargs["audio"].__dict__ + + audio_content = [ + {"type": "text", "text": audio.get("transcript", None)}, + { + "type": "output_audio", + "output_audio": { + "data": audio.get("data", None), + "format": audio.get("format", "wav"), + }, + }, + ] + response.update( { - "content": kwargs.get("content", None), + "content": kwargs.get("content", None) or audio_content, } ) return response @@ -727,32 +741,6 @@ def auth_check(): return modifier._langfuse.auth_check() -def _filter_image_data(messages: List[dict]): - """https://platform.openai.com/docs/guides/vision?lang=python - - The messages array remains the same, but the 'image_url' is removed from the 'content' array. - It should only be removed if the value starts with 'data:image/jpeg;base64,' - - """ - output_messages = copy.deepcopy(messages) - - for message in output_messages: - content = ( - message.get("content", None) - if isinstance(message, dict) - else getattr(message, "content", None) - ) - - if content is not None: - for index, item in enumerate(content): - if isinstance(item, dict) and item.get("image_url", None) is not None: - url = item["image_url"]["url"] - if url.startswith("data:image/"): - del content[index]["image_url"] - - return output_messages - - class LangfuseResponseGeneratorSync: def __init__( self, diff --git a/langfuse/types/__init__.py b/langfuse/types/__init__.py index 896557489..1836561be 100644 --- a/langfuse/types/__init__.py +++ b/langfuse/types/__init__.py @@ -1,10 +1,12 @@ """@private""" from datetime import datetime -from langfuse.client import PromptClient, ModelUsage, MapValue -from typing import Any, List, Optional, TypedDict, Literal, Dict, Union, Protocol +from typing import Any, Dict, List, Literal, Optional, Protocol, TypedDict, Union + from pydantic import BaseModel +from langfuse.model import MapValue, ModelUsage, PromptClient + SpanLevel = Literal["DEBUG", "DEFAULT", "WARNING", "ERROR"] ScoreDataType = Literal["NUMERIC", "CATEGORICAL", "BOOLEAN"] diff --git a/poetry.lock b/poetry.lock index 5b11c6aa1..76de20c89 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -3058,13 +3058,13 @@ sympy = "*" [[package]] name = "openai" -version = "1.45.0" +version = "1.54.3" description = "The official Python library for the openai API" optional = false -python-versions = ">=3.7.1" +python-versions = ">=3.8" files = [ - {file = "openai-1.45.0-py3-none-any.whl", hash = "sha256:2f1f7b7cf90f038a9f1c24f0d26c0f1790c102ec5acd07ffd70a9b7feac1ff4e"}, - {file = "openai-1.45.0.tar.gz", hash = "sha256:731207d10637335413aa3c0955f8f8df30d7636a4a0f9c381f2209d32cf8de97"}, + {file = "openai-1.54.3-py3-none-any.whl", hash = "sha256:f18dbaf09c50d70c4185b892a2a553f80681d1d866323a2da7f7be2f688615d5"}, + {file = "openai-1.54.3.tar.gz", hash = "sha256:7511b74eeb894ac0b0253dc71f087a15d2e4d71d22d0088767205143d880cca6"}, ] [package.dependencies] diff --git a/static/joke_prompt.wav b/static/joke_prompt.wav new file mode 100644 index 0000000000000000000000000000000000000000..3923b1b9eccc2e0c1758cbc5e6f047beda9f1f52 GIT binary patch literal 157774 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

}C@#5zW0%!B+UOLd|WJTJA}zAUnYMuA~F8A5r8` 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 HQs9399`!%9 literal 0 HcmV?d00001 diff --git a/static/puton.jpg b/static/puton.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf15cbef9a83cdc4e752ca77a5f633825357e19f GIT binary patch literal 650780 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

@WZF+Si_;FG*XFlJ`s!5Ubs)0Aw!V#V- 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 z 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≥3$~4=0E8m>M0xDgN_juj(Er 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 z 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%0D;(4 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�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 z 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%0AeB++&lUDYqpIs#*MvMh zWo>ISPjQd5N4F<*e;^q2s-Fmaed6yM!(pXpI&it3UL`Dfc_jehIE5_s7Dyo zqd_*#H%2>g^siL2_=~9|SP(q>PfT&gO1G}+R=T{m7FuXaHi|MXZr_z)a7r)Zg&#`8 z@YUsnaLESJWKI`=cY2?td)ek)3@#6nheONBGf84G3RsI2Zv0Q;ZF*N zoig3-Zrrv$@#qD2(P`}!t6a$z#XSkH68M*>Tt{eNLPEEtepxDVzrN4a@Y9R;VvnBw zDC^6AG}Gj4L-JR|o;vYW^l{t^XCP;h+cor0jO{Pww`o8oJ=m`t@jrx;eH_fOKIT6$ z#~mu^sHdsvD6U(dCR=#o^H0@M`sA5Bwg+!&`zzu1jz^2M{{TKrrW%!dM4yAE(iPr|%W?B}ub77*A23P?LfE57hO?ZolCS8bi6*RiEuhr6Lrt?yj( zJx9csng*hq#{;fAR66H~%8#q-2`%%@~LC?E%bF zay^)Lt_Gx+DeJ+->UrmkmSHkR-2(0WtH8WZ%nrVWzNPW@nk3Vry-pf4^M5M&XT;^! z@W+prZDUHCQ#xx+do$wi9^3tsSQjCB`c@UPK`df;`*Dizz9S(w0|0T7eQV9M=Gz33 zw;21Q74|q;UI_TSTKCxdn5}N+2*YkhJq2(#-XC<8%uVtP{*~8@f#-nSR&CAkhj*FC zQ_sD6(Ae^2 zwMBSc9aw2}KGX1zjW2vFH~J03eVS}A0PqiL`fEb?>-McZ?DcoVh`%8`1CM(A*3vbZ ztk^**Eg9+UUY91VGuQ=)WRZ`haZ`+WY|ldWJ=?`U8WQ5|;2T7UNDsT6wTGa5K)%1Z zFx+ql-6x?H@+^-!>x^zsE^(Uo4+_HbM;6|(oF8#q7}!QJx;;D-zUS1II-z($2k&(P zyvxRV6j%32b8LQKa!0LgXqNNGg*`ffT3V&E`2^sMb6yoXjxxE|h@_lPBfEd>$QWG= z59MDg{8jOf_QZn1(Z6*W!+Y1U{6+CM+2N84f>QwW?_VX)eHGM-ksPWmsK3 ztdE1t@fW=`V37*o0=mV;4T3ERbtxk#D!RVwd>Sc9#tuF=z1T8 zbQ7pLCA#jB+Zgw+)X&-H;4P7g4O7HyCT0ML+wOsmE8wqz`gpv(hU!JyBX5^IEA>~v z`mKevyheM)U4RT{0DB7gjMA*_$rIVZ#a{A0vC(`n;k^PNEN$W(e*%tcneip2op%JN zAdN{M-4)I0dd;~aTWQ3r(*?3WDy6RK+LU>?iY4;c^aj3hDRXLit*(cR`13`A(%mPG z)Je#~^a8w22#orKGL;*l&tB)Xdq;_NdugqmZiknH&~wdrMfReWj<045O7d}z!_ZfC z4Gf;A?HBC94XuZTVci%LOp03{O8R@m0vYUHB2<2DhU$0?bRQQ4`d-aD;mBPt0 zU;|%o{1Nz5r0H5kz3-5XG@uguMrqPdVk%TnjoI-x!(Z6*Qnb5+Ro8Br%Hf1TFsqvV zAMg)^VeplVF~m5C0iKoWH~LI=7KFyXHU@Ls9+lz#CGnN+oJ*Nmbf$gYR4)hgc_WNh%3e3{RsNFhOeLYi3<1cjm6^OMEsq`3@8-3< zT!z|P|qqjNIYQI&bM*Bw5VcsK)mfetI@O_Ot36sxVcUHhDgcHeAA@rg;)Y|2>h$o^c_f&pf^E}@+-+{$3s)wtZWov zB--3{_O6oF&d3a~3=iR6eQB=46a{1;=!Coy@Aj>qF_QY2&dU-covzo-5IG zNvt&(L|_Gf;cr70L}3-1;r@JWsmW@IgJkmF?m27Jf&SUk}WC zo&JL=J{Sfgs2{`+@~#&9!&Y-aAeKLnsSKTQUYn%r&}&vnDmX5xF^bfiH8ekGEshz!R;C({w=SJ1u-H^q!<8MrURp4g0SgTd0diX3)I^>zzj|+HX zQC)`-GY!2flh*zn-|3N?-7uM9UZd$Es{{V1u zE69!^qqW1a;c(u`BKa37 zuJGLV9>R&EzMPegW+{~<+6nc+K9y~sdV|h=fBMy&>5Sw6LvhVI0`a+SymYKhlewUh zJ}ZH@XdV9mDwc+5y~8gXvyalLdGd89Bc(Ngd;yQb zk~A5`D*-8e$+ENd?LMBIR+hjqfll%_aoF@UfPxmrGn{%>yaW^SpTe?ywu`<8sPw5r z73Zh&tmOI)Xl@d?+uQUM$uakM1FnCy|ENVf=G>Wl?(Qf%y8U7lrCS&1_2sp@A_#&yB<9+jPO3O-jK(zhl+Qw!Jhtof5Glh}S0NEkxDI<=1Vwp5+ELbO>@Tw}>Xk@{7S$w(rjz9fXZ*w8s zF^^GMGs0kEaBz91M|4z;yn)bkH2H23b~^ic1nJapF^_syk33^b)QE|=^;*jNRBZS>dx})m_9?W9 z)>RxHztWq%NyqSxew9V`l?)po3=jVRRZ%w%4pF*w2a4*98IzJWe6^Ht21li4&t`Fz z#yx3byBo4P_Z_QZ-gsnPtN_OtrL1=aXR*mLx+&fD{{TLf4g+;PM^nXh7gk8in9fgN zeJc)IY;r*K9>%qV(VU}W9$~=;wPVQ>D}1La2LifnoB&39eJZTh<7p|u;{&yC85qu; z_A$_GImXkG*RCsi+4m?$IUklQ72@SrZa>fRtvi2_cJK(t(ysa$rELQBKpYHK69i=k zfzKxut$BqbY3tA9R2CpcTY@ZsB0 zkELCSV|cu?+aIlPxt$g`n4<_lesNW`O)@)(%P<5VO4z@I!$12u?ZpZbMZg<{PcXSr z=A**)(nv#v#dG?n!|O(U(4ZOi;=Q6v5{bGne<~of5=P!<813&{#}d&$SB$qjM%&@V zi3G}klhcY|_AEB~DZ=y~ohzUb zgh8;51z2DkAayl8yaO0+y{n#6a(bFVDH)+wba>_#!?SH@uaEwPLHsYhWjH%q2 z&1EOh(Ijt4vE#z}16gD=bNQdbeJPeVC6AZykIJ;?x8uxT#8xd>-D*<11u-gjAB8Mq zbbGLe8IZA`K@}Q3|mHfLu|&W0M%Mi&K=kvo7!(9CxP}_VnrBioOtS+C^l` zFio>Y`-Td)KGl9JU{rrDm2Y5NM~)9lurV0q1N|vn4su&z45W{`X2UPV#@q(sLj)3t0g0%XYR+ObvC zzTsQ;^Df*1IP|M~2{SB5uSL3E z!St=?kUHdc;}xAE7vy}TcB_e$*J9PR%9H`SRjF1v#@>W-E1h!DxMBHKpS7?d^T!#Z z;WP3g`Qw|(>JPPP+sMg;UPvsA$IO3Jb*trDmuaQ=non2jeaa5vGakHFt z;5dA^pHCkpK zSp;?NDjPN?292@DN+e;l$KM@2s3F9pNJEa*ZC}ky@sZlH$Rrg!kxsVxU!L?CnxQes z??H@h!Qj)QA1+83G^K`ingGm`_k4l$HEz;yNC%2Zqd3UqR(8^dBcM4IZ4EmehES-^sk}*3;xX3nq{x{{{W9HR_jv% zCyvrXh~eAwV6Q^orG4S2-P>rs8nD!^)(GRAGF!m{{nsOCAP&eY_0AsPNjO6hj$7>$ z^3EaSg&WYo?z;5(9M6ZmC*eM^@v$49+H0?_t=|5;YWi6Q!E<-jw$G1~h+UBFFc#1onGXCf6 z_F8VlnUri8P$ak<;3C+@B)R53c_JzI_F3Slsw`Le*i?G^Up7{jO5U*x)FVF`4-O>huStLfV$6VWU~= zc55H*_iIxls*o-&$Jw;&PpTp0b~VgeLnnqM)OE`U(^9(Aq_xqVOk78IeBrK39Oa1I zHj(tHtCmr(PHIcZdhPyJ^*XTmr0La#kEMKBX3R6fuxW3vP+(SyN;Fa{waBW$tAppZs~9b zd@XUB>`LAp*%i8b01iP7mEG8n8xWQM0DG~o zk!1^`YDmuHP35zkcO+)NM0{hVNj{5v@`fQl=(3{p#?KjFue- zs@iW)IN{?BlnwN)eN#pA^oW6NvZ~{Of<&Tzm0fYy45VgGpxjWfEP>Cp|h>kxBcQq#z8BPfGN?e^Xf`%VXv_$F*=8 zgdqWvBf;vwTKYT^X(V_RfiZ%H(XRTZLcb0K%1Tnz`S8<@>AXsmyU7i zU#K22vKnOK?UyRV2J{s|+ez@2uWDtUD1+c0M^Zg&>oVNhq+!a|hsfp`bR{ly?0#q` zgmoG149yYV#3&f+^sfH^Ncc&n#bx&265NQHZUrZpDG_6--rz9-V}mTMcy z8B}DZN&GA54-b4*)b8R)wTOgjaq|(1`Ln>75!Z*?$L6mKj?2XD1Yii$SBW6?Y{tzPM7-WZM$fT2fWUWse* zGEFN|7Nw2=>0F)cR(fTenv}=^ake0M!1Wd8nr)@lyQr28xwj5Sr=?vg(&W&_bfVqb zK7{cvi5phZTKCHZcAVp_d<*e9Xzm(If_X#GcCWU)O=}j7;lT+%GspRHUjq2{4M$Pb z1-+ClGB@4`3HG;U|>36`j11kt)VANaDUd_%ZOt%{2IL#6jj@A0%XxUvYSHL#Du% z+d{H|?TmJ>LkCCg9%eSPZ0D*?{j?cI z0ON|*@i&QW#_YPTbBvr~zEAO&jIVyt{)s05kV2j@TGqqIp;Q}tp4+HiY1776XeW`8 zUNPeR8%(-}R%Kk^^1{4-{uA9&0P6Cv!2|q=ZIPfH=`fvUF2R8ib%?ygk)m8=fu7omewZQoKz_3VT=C&2_(`s z?dP6^bgi3BS#DUw?o*N0yq4Y>`B=#%c*Sqo&n#>KI4Z-6B$yt>WqE(6ku+y=1KPbS zMDdDF>tlL&amMb)+Prr{)qLj>N~6;)&{ttTi}sWkHZO-xa5`4hq|ub%eN*85akSP{ zjq@IB-fZzG|^^)He70(xhqeGB2g5=m(yK{@$5HG3FrMwUFv z_-pER8q~Lb9=K`kz->O@=2*KSJ;45z^8WzE&xft6FZRxl%%|oX1_lrJtLyDfNUtqQ zun!xcHRjUC6_I;Miuo=$1n@CYhQZ`gc#)EvG;}UYN!K70CF%!a6>+8%u4EIE>_RUp{CaHkM$6cG55i_Z8~)J}Wc) zgXQRd{Z*CSHgs|>hnebs3+Iit$fF%{J6Asc01Tj%6qtTr*1hWYS>G5vPjg;Zz|9M!2KRq6o(s)+H^k56C1kjuVqSQE$?q+_@ooB>ep90Eugrwok!I+{h@ z4cHG=$ODh1QJy{z9CqzjTc;gIZ}6Hb2*xp1rcK1M_v!TX zteICIE`Ja3rjQXy#~A!-jKJ+}pmga{w2Yvs9FBw9t21vq*M`UW%~gRE3XTtMn4~^~ z0~H<2n^!AK!+atG8#w&6Q&oVHQ9&kRDk9laj^Pcr|;G#`wHj44zNZ2^XV?@^{86zFJ z6{!W9xX8dK`Fc~P)5g)?cl51!qKsT+Z4P)|lZ~eYAI_~usmmG3?b3s$9sdA#=}K)0 zOfvEZLs~aYlDUzk4!qxWvBw-$^weONAlE9kOny)b)mb8%B1#tHu=K2@PCLZWRDDj! zh})FMJwN?bo_XO&$nDy(ZEoiTD+9;rTMIaqNyp3w9ffAqjTF%fLWB{wob;;fte+_u zU-0y;4DP^hpvOv#vbGh+9Wp7c2I858aUt9}&pZmVZ73;|#~msyLfy_;e=hZr9J8qd zZ%*Eow01E+|J38PyJ+rU^9Tfij1HB>X@FU?TH_15EBM!=TiY3+DBnN@aC+UmmKPp( z@UJHwfUnG>C2Jq1HL2U_Gd{+E`_`OOynig8=hCpWOPDSoj^;DC5!6=v@QtQH(3;8E z(knu}+;L5V-m6CwB#L>*uCI8Th>Vo`qp#smQJ*Fmi31fvXk-Lz=~{3RG<%n*;+-U8rD+|BImb<{ zk;fGE$RG~Yc327zm%mDj%K+yYr#kq%V*aZnQ3D%D}e8)@rM$}nk&&2?yG4u=5t zu9DK=TtpP|aaeNz<2dU{V=0OD9`&4-nim&ipxMqq=zCE%Bu%}?`Nc_<3-bOLs4{nM zZjD$P8SY#RV;HK?DKdus6UA#?+On$1gP!BqR%AR9y~O}SsakDa>M`k9kvxzxw?5U} zl#c2Gho}|GURtybv4_feTBw1uYbv-IKX_K0(Zh9a701lE{VSEUmj}yZgWKA*1 zmB-x~#}(88f>3whS2=t;;?3n zsk;OxrAVw>rU+wjj!p+7|TfS74oo%)E+Q z+g~^4QJSG_S!LM6k4mj9X0&!X7-r8oz^OdWcX5&0qK+U3MIiMJhtF`wW61EDa4ab zkgJe+_N^BAWZ&5FkELP2!3fVv*9;jxw4{i86T)3iSAklVmrO%M+;P+CSi7(~;;k!m zarsm@gk6i1NC@Mxsgg{EbIbgfJPuL!C9}4eKAwY_-qboe6c6KI^wA<0Lm`WoUL7g@5~`z z6qCTAGNYwqZt|Zr>@;;oGq*UZ?i3EZj+JK0Q#3j2k6NjCe6H=aZa7`xja`z;137uUOn+F8Xl7#;^Y@| z_ajW;l75}5uL*{!UaVTIIfsWqLfl7uqG?%_6;6ZZcAfT*wNo)_S%I2fw+wW;|Zgz+~QRmQhQj+FlZ zGg36wwPuuB{L6J2+bCWR-@Gx`9`)HzrY4Qy?I!iE;LFl@cH9K{^0>(*+@gLJ_Vp=B zZEIwYgi}Mcn^dyUu4A(EWxTPS1`*EHOLh}UxG(S-3a7tHu=dxQmCI??xV*5}Buyse zmOdGw2IEnc7@w5!upd!VJer+{+O-(M%WnX6^4PO2(_8$wBaUUde1E`eK5bspNAUE% z6tpqi>X!(bY{Jufd2Moh%|dkk>#lbF1z*1{A+PoNXhUgkLk6R!Yc|VsV+5b*&3EEW zN(O{U`d%!p;|93PORYo17oTOCVSOLOEl&B( zj1G>6Pt%WojKj9j=@k~~YsGGe}G_5FzcTt+_$MflNr221# z;EEm5e3vfMAmlGk-8W%eww~7)Iwh>q1`N<3b#9@6=OVu|;>?z=5h}ClewV{J?Ho#U z;r357)-=?(wVKjTxgxMXLM!u+;e;{N~z zxU{#rXNKSR(T8G6{{XZ8>GZDyv9pp`^viUN;R9UAG1PVZtE|;Lo4*dp;slG!Z9?HA zjZYg@4%36~EA$CQGHEm6s#R%oAFy8lKWG~tiP}6mcZlRjZ?I36+$roaUqDT#%VQ(W zXqy6@?vIr|mH2<~>U~o|@tp9%KiQ$QvUg@bbA``Q(B~MhzWx$?QPuSQDhodn>Th)p zxV~MpADU}&qafqH)4}$yGZT~ZyTs|CoH(Txev)X{&#vf^7GK^(3bx*%s*a1Jyn5lg zXu_V2>4Dz3PlA3eZF2VN#(j=0ip49T!pL#MFZHiM@g}ivq+iSSa>7B*GxD;YFrWRTeeaxOp0(rt zEV#K)ZDYzP9c#qId#>ldLU)fT^QXn16Sk=HSW4K2F_VMT`hFGhCy6{u5uDn`DwSW9 zDC=KRc>e%QyJ+sQ%P?YEzdJlbX>$g#B(1nIxj8>t-vL2ZckFZKHGPUmqvAXH{@U`l zL|_*kFvwCmW~~0taueMnpqjT zwZdJ;9NPm)xT|BgrE^fm<%?q=cCOb(OG6a0-2>#VD zt$L87q2>$&{Wz`FEe=UkySd0f>@LTWNQ|Hydv>n2 z(^nB$@CowH2^}h}u7rtUd#VW(f%~{dFh=e_l}Nf|mR3oz)iXri5g`hdi z)~90+VbZ>v`y#wM{Q$*&X^g_komU6Y`n8Bsij+^DJ|%c<@APYxi9U8hRQrL&eso=U z$Hdwsb7|%Fv@(=!!;l4jx@&eTacJq+kIKI*zBp(S=)N|ZL`+-WfcVE5UbXM=jm`dA~A>sTO9hh~D{Oy>1+bc5(#>qZ*2jv*_uTuDTqD_5rsLWO%`EPUBR|loo%X1*O zMEm^z0J~pL{5jBCSmTN{{p$hvS1vAUFtO8xgL6KZ@D-Jvg}U1X-pWUAmG-}fbX_j% zPKdBX7#p`&$JRE{=o)if+&A1^+;_!C;r{@O*SexjV{0i=hZyw&zDl+mo!s|hG_+^i z_c||zt!7ymMpqmWjw&g2NF0I8q;~isP zwp}Mgc;Jbb=J~n&ar~<_f_+&|qDIfezlaT~>TziLcQJ<%BBy_P`WxZ5g$16Q4duf8 z~uR-E7UdF~I9tRgW%)l2UlOA8^VU4iDu^5Bdb_Kj}xJ4=kFE z0IO~Z&jPeH4;QMZ*)9Pj54~B{s^uO~g%=m0&_Qz=w&iX|Zk5h>tHy7pS+?G|$F*Qf zui7a6+`T#HjAFct$DS*;Xm+U^N*(0%2DqaY4NjjUgz@LaiK7H0_&v`Vs7H4pJ9tiVIn7z{nT}bPW1YNi_8yguY2Rber3DmvjBE9c)8YX;n#P@v|ftC!=Etxs(Co+^sbXgM!1xsNJ^(We~T5yX`0GQ2b6Y+BCdDmN&r(BhK>jN9PY&x68HK!~<@$P6I4x~2?Uv#M!?pk-ptrYs z3*fT$#~8(U^`!5i=u+je^e&TiZs?&Tr;%;F02?^P zbJ~Z9jNiLqhRsYh6p`dQrR(XpPE>8%oa3RbUky(dsQX=lDL*OenxW$BSg(>tw#btl z1726*+r3Xr)IN7)D0*}U-xbj5`?n@6`oT1Nt7yf{O2#qHK*f3=hIL^WRhQ)8E_-9? zT(5$BLmlP3QO}nQql417b*(U2xxUkhF%P`H{?(N?amq($ty;hpZ?H4`EWMA?x(^R{ zkhhlw*E@UtE6sHMZqoA5+RT3MOw!w4!)b7hwCwGUE21-K!ckT}y3+N|=kX4?^Sl505mYE=IGdk>{^8m6xdv2RA> zt$37I)1SYU$s-=sr+cXRb{vKoscX}s{X3_Ok4=2bm$6;S;_&3J3o+8m( zPk8}WPm?{k>0g%8Y7Wjk!ZX)CmFu4md|^JBbgAbZokwcUtq99h9FE6N@vlTn9b#Lx zMMTDbF17RXA24(2`d83D6t3S})8V^}teu!1I5qRsjy(1ea0UTWkESb5OCw4<5xfL* z!4+a0E=N)IsdlM5mmNP0RBInUCsX-WZ5;-bY^`gZA46{r!g zIl)n!cBnJADb!V_K)|wc2jNicPMt@3QeA+ApHAG>NrvSZ{c7W;PFL2O<#~&h#~!sT zv~#xrp(pYkt2w9s5)E{h7R<}jj@5y6XweM*BB}#!#!TF)$0I#zs{#V3$4-@Oq1}vq z+KJPSIQ7L}D+seS)mbpu&1N)yTk-gMiq)3{73e#0Rc7>WY;oF-Qi^-_;ZHuE)fpHE zZU^JG5(dBNnD1) zp4b%90+i6pZrB4VIvT9^JcV=ep8o*n(z;0YP6%usD=SdbKpW!dJ65oInblesbk^Q@ z+R8c2Zh30Q0|V3PUU_S9_OgID!OyV*yX`vi8>CmyHI-p$JdsJ=mbvr;A0=6c#;|d4U6+!ISHsQ!0&a_e$ilKlRT;toCtZkxmhHMU_ zBBz-OjyO2!^s0s5zi;JRM`NDWKmXOvMN~Lb0PH{$zl`xzwQVUb?Va(vj(DhV97KSr z$>a2`-8yxi*<*3n^smcyKT)yfo*!|f-Zi1XNBf}m`d6hyeBx9dafB9+&W-4PJs3Ht1w&(hys5Q;E29LL&#u|Ne-%6|b=okBkBV2abZjCLJri>kWd zfAy$n3zqjg)L`_hXXbB|@sHNIxF_;u*^yf@pD=O2;<21;Tum`Na!0ZFBadpNVhVDj zZr-@66NZHD8NlN`t4_#y$)5F@VDfn&ZR0i1YBQM`es8;74bf4R;E!6tV1>+Yz^4&2 zGA2(jIO7#NO|*=6{VJWzUuKX9`X03Mr)KPR>00uMNWAVOQX?D=e=3GWStIiY80|&7 zWqiE*eQ{2mJd7XVZ_1+9H0CpAj|t|lZY!U@i|q^MCnQ%xDI*|sJu3l&LoXk6)d{mQ zGzW(mBie$zU>swmUzY*$xC7}`op}Uw=zCV8D6%uJ%sEk3BN>kjaaKWC*f!sk_N93C ze9O|Iv;@{t5dK-K(>OzhIP3`NSm14N>%s3@Gq(G1eJeJHeGL1XWpCc6TB`tU+<%ct z1<_f&x8QnKq>%;v>JBM_MPY_H9Y>`;Pu|0k)KrJ}fECB##Z&VNbBdkIGg>gLNcH;D zn%HgLy$Ivlt+ZqB$J6;!m*pICrxir(}~LuT*o`*^?`kY+{^*pQS~+&5M)GMF!S9vkQ^yyY$aU%I=6;4$0 z+YQpGA~qOVoA9e}$+f!U0~n}Lc;g)@jn^ZsP#O+%z~ptTX|2alD`{{SE&dp)@(}z| z0-cS)h4$xz#ay|OXHo#HX#*p1#yV5un1TVSQ9?26>*$$diz)C3G-EOT3Gl8GQalak}vk1wavtAmkn(c5d*eFRocX79QlL;S9~gl z$`sxPeLo0!PB4sW|7) zah^YhqPM@)bc@TW{F!F7#MfI^x(@iKU*3y^Kd$TU64BhA+EIJr zyIWO|U)x%lC7IerOLl`tL%L3w1@51Zb@rxe@OW2F@b001eG^NlXnILY*Iw1g`Ls5p*Eo8K{wBOd-!|#WU%$Q%b-oD;3pSlVDD(B?g;(PmhRoxUCh0XVf zrntLJf)s!VATxk*vjUZ|(C6509Pt#!VtP!DC z+kL4R^X2a91ZO3?Ra@vZ?+EHT*Y*UF81xM?%fos*G$tt_yO)Uq$T%$#!8qzGAH%8P zI1|H`chl*U4Ip25vhrZgvPUX{u}004Ek%8-73LL)dc3+Oa@IMn(9$~i{Dfnxy>-KlI(xh5`i5uA7!#|%J z-d-^#c@UiZ?~u#VnPF{gCGekxbUV-O3w;*a<5|6lSlLN6%z>YfxF0V&bHU=VJY2T^ zBhWlMEK*o%5bORS*{Rz^e3{h}MlpqNy|PX>cIO=`vv`6J?B5h>jN&`lE=PxSw77tx zt(=zbEplTni1HImrFCfO09>Qm-WIKddNH}Gx#pWzROR$e5I8-sbSY7h%m%Uw^X zEWhhVa-m1gqtlA{ek9AIjloJWSC>!g(H`bSkNTb=N$f7IJbGozTAc1v#w+Dd+D1sO zd=qsMb1!%aJV#kPkGw|B{b z6#oEfiyOD7`Ac^L(!EdM#+jhlKBKPO*=*Q_RgwC+{Qou@puYv$`voa$X8=y2GD2rW-g(-mdV(Ga%Xyl1s}Plv@fnRLPEIWQ3??Zwnems4bb!d= zmm!pnmHD^h%QTC{66qT-(mpzL$>P6Yd_khCBV~DB*sslxikcL5U!O5L=*9>sjO66&qz%Mkwn zT3a~CK9%|;aPUh*^T}dn&NlbLQbFO{a`C)vb273190tw?I#+LZ;HY7JGRn}R%E%gI z5$_1xV=dDJR>j#ns%Rcb0j~wzm?O= z-@SfrM%?fU=bG!T?arO1>N3vwxYVQ(?fcG%?VOKM+O%~Y9@!w!G{Gvh%#$6_G98;6 zJ6(rj)f}kPnDZ;e*<+?f00aZH^Scex=Ju<9*cUVE<4wAqAU2p0#yKurZuw6@F0a#VT`O3iDS<+{1mTHNN_e3BJEF2?y&1F@&dnEC8-_gYI| zYL|CX08~3@=Z`%B8RYOW?M*=mJ#KwZ`zrXXXj=HvZkzWyhY6FwVPC5jR_i^PDgnk1 zwSE%lmsff|t))GYG0SJOB$B^Aa!B>!zhizB{6fr0RqYh63z7PGU{4@Um62;cAKXCk?_G|Bbe^7!FU0h?g(!MqL z`LF5Hcy{K(U99&CRx}=?`d5XM(wfD=#T{9NX!{2f^RC%#?UqaCjQI?}1t%Rn>#efW zG~G%V;kR5Yr#O6MeQ{a(^}5<=HuhUVYlaW$^LEFzQ?q-RHAS#OBa_NGE7<$j=+z;3 z`=`y*nzpC3_;cZe#zaUYRzr;YX1<*8--YzQ2*$VCr13(4U~|hK{MZdsk_F;wv+DhSkG1LB@Jl zG_X^H&X9eps#lAR-!paz>VVMBi z=qtw?#j(5ZBn+NN?OimmjmKj-R@Zau9TUcSyss6$p?uOjofkbbU9O=m*+nwBWFTPr zSH)IdD!4j~Hvxdy!>>X;tL&{KRI%2yh-Hb@n`p?-KT77rP;|}dRZl~=@O|`_WaMT! z7y@hRpND$7={Fv8494AYUngjG%Ipel01z?KzL)S+1 zkGAMJh5We?aqV9%-uzY8JS(X@7gL5rZ?DVkUZ<(}raLVx#d9h|m^owLiuiNlzm06& zWQN8hXOlQ_{VF}9HKR{mPrCdW@z2BBx%(yb<0q%|uVlILKZc}?H=d1@91+N`#*YE( zK2z_wXC(7p-zST8SY9`UWf_mlb3w5dHBw>_{bw66>_1ywr0mD7o{wu9jB{Sgr87VTEO>Fx9sO&~d^hDgDU2(*$6ms_)Doo1#O(m`1#;pd zjj6p4a`0}fAYp9mJ8d7*z2+?&M%V2DbL8A(gV0yT+G9wwtkFAe2P5fT&!Kq!-ZqZg zPzPw>vhmGxM-3KirqOT38g{+m)^(A0TW95U1(`ig*wHZw3Z?$pM!zla*Oe;HDM+f2?=_5tk_muPTT>f>wBzm$)%5;}Bzm2i zv!E4JYxzvSG)Lr&PzDeB;cODoO)I?)|WGVj(fyjA6t10*608n z{Jd8Z@=kyWGNpd#ucmHv)YNT7!$t^EwSxZuJXe_Nz8G0cWpTI=4^As|XU%73dG)rl zBC78Bus~ot*I^fl&#igf7Vx7q)>DFy&e6#g)7tCO zL2O}n%PAPor9N#eWYwO9PZYy8v*F+Do2c_F0k*OJ?_pn`z9`Xd^vza4>UbnzcNO}G zVYAk342VL=2X5xRa`=z%`df%)x`hTvC#N-ZZnP;*);=w_bYM9?Vt)^y6+G7oBx-St zo=3G!scH8bWy{ATeE}J)HMrd$l0jT_&$Vwo7KdzFDPCFbZ#E)9UUA#-sWjW~A>uOS zRB%o?;j0%`qupz+&dvvRNPz~c8 z{{Rkorw0BdIQFP}7C9}!BaBm?BADZfvjEOG9Pv^*aez91pUR*LN_L(&#~gPQxC4RG zhmDlwNBQ=qkC?7L@Sq1N&t9ID8-tDx525s=lW^Uf?E5Z6zBXa6~Zq;0t8)Orr5_WNs+Op&XaClr+thsD))~hm-K5m%7 z%}|zxJCH}VdUvXFotfk1tr_AdK2wl8^{R44;C1QJoy+GaFzP_)d8*70J9_o2C0jY@ zaZo=15Iw3(<|`IGzFc(tYA01>I2ig>hCoM7Kx2@zy@*>kx&9>a>MYjD<%N;gj4_0t$bAaRPuxv?YX zLAUAcR<%|zlI3?tV_|;<#2Zfxyj5%MzcEsAj{gAtYT^<}?T+EldRFWjq;idtWCK}y zEpBY9bYuqUqdj)*{3}M!R*9KXM$f4ot2Xj9VYqS+dcg9fR{hz?TG!actxR2Jo`<7( zt0LqO!}Y4IBPk%B2c>crdWFPC51*l}SJX>w-PfnJVCZtQqBT=R_qs(n90Tb~=PZg3 z1CBW6u%>ll8-Q`%vYO?Uh7K{sXsKvrD%Lt_Hej|vz{lrV4#-Y3&~a53cX+lEKtGjN zV=Qh8kXIjScWao4L*5)mcT@Nl!TNTjRTP3D8gIvPMwzs=uY>qRI25Yg3Wnt6i zugeeAih8}WURya{xaaHXUSp)p`d#x_zCy@JUqS6&uQP|tYut4AuQ>5_i`(MjAH1Cp z^Q(*K%%-}Yho)WmiLmD?KD<>6*$i{;>0FP8b#FZp)w==5wRSffXHPK&Ly2*hLhN!2 zs7`qxepQ2Uz6abs?tjRw3mHJnIQ9anYDpt!J-sN8w zjI39)RmFxg^B%swl)$oh2X{;iVvWJT$8P=U`vH%RNaOIV#+0L#?d&m%0Fq6?H;${% z;aKi)-eBraYP}@cKVChmnHyN(;7|na+hPoQk z8xelycylrh-My(6aLx*A3d8z`G)q`8x`=7)euM>^f8nwnf}KQm#;f zI#L3^$gI(xy^To=BMpuDQ!Y^8OucJ6c~j;C)2#p|qiSQ2OA+8!zL_%I!{o{Lfa0MH zw=r!UKTN(vhWRra2S zt+YXN=xa6^cDB-S{xy9jKXmjx#Q;*70bV-P0ZJTI*Fs$SRYwGT-h;IfC89Yv>EF_* zq=jG0>}uSMHuJ?)W!yJ$$E9dxGG+%M*Mo|?Z+xJD=bEh;1x9!^Lh2Tc@`oeRf>wuA z#V(U_fuCwfhR#pZ70=mRv{HedJu9hE=BSZzl0TJaEe%t-k9ldhd5AmKCy>d>72059 z4bvSfI^x|F@%K+k(i66fiBmbqr1G1e{{U59llMqxOch{13d^}tljE_gc1}<33k(|9 zLlRqgiRX;{D_T3xB<(#7Q-;sVlLG>!k~GdZ;ne+qDs|i}zcA@pKfG24kVQ}$jVq=FSKsp= z&YnJH+T3&%RhMIXeJO~r$|M|PKb2<484n#Q*nXXjMJf4D6`&Bc!o?Uqy{qew*_Yv+ zuA_9mKh~is92X)DFgU`r;2g>BsrN^{eBMjs z{c8PDw6fD}bPGFOIU|QhwT4(N6FytL)Oc?!FR4&))%v%F{44dU{{Y$;mF`DxH~#J%TpE&P}K5-|QB)$f~5y?2iCHIZF}yCEV~+`l$D<#Fj&?`PE`(5JPV z%Msqg=0)~)1I$SPU>N=fIIkt~1=Y0L4c*<6GET8Vcb6*5Z!?hz+uX$5Kec-vhpXA% zX_mTdc1F>x1aiV3pESSv&b__8EBX?uaZ1Zi$owV>>gR2x>QQMv7+54n-*0EUG-K`~ z;|$%gTtnJJu{AwH=2F+%i7gR0ERhY!G0p~YjCZb!S!>NnWU{nAba$~NQCr5LRNKe% zN*s?|V0u6MaZIRm(>Q23d~yQf;+`F2`#QY=qB#ka~WbY$M`_}w-b`c|)q zAk*}lEmF%+u}C7ZXl|mINxDmzwD3MaSN?lW#Hj2=U}|>Juw5qGN|oN%`!_^sUgdnv z_XJ&Cf)8IYFs?^A6w{4O)}1!nPsnRSE5|xLjihqw*BX=`+G9;OHz~28D}Ss`6cqsc zrDI>+=a4HqRPhaj+KtYi;LA6{Aa$(&01jFwg}guETT8UElJ8En)Vx(ayou!8EzQ7f zi=K!M@=*I?w2jmfmi@osyIR9Y>a~p*LAlWUOQqWCzhsYCytnY>pPy>1X0wd#l_Eel zv&HiQ-8ilb#}@t-@lKWE?QcwiE89&yEj%}7BA0CGJ+a5yf-wOjXC+Gi0JBy69e01H z-uPq0TH{M?9+9V9Yq!%rB};pYwkAKDoPr4tii1wnA=G?Xp;J@atOe zo#W_jCAOogc!E2KEUw1$HI%HO!vzQAh~)bLS0WdFA3h`TXNN8P#JJ@&|Otq8Fj#FzbwB&7fHsgnM7{|4GKZNu}*F0aMcr(PY zS+&Q5EiN@1m7Mu^4|gE*3;|OK@@FBwmB>q`MQ>-O_{k*F|mg zD*=79*+(;wj}$->QB?Fi8jjN1eJ92mFNe+Nm*M>q!8Ms?((oZe{&_hQUzYuL0od|$0JQmv1L^o6jFNI*6(D31gbZdWCT(!93sM%1St53Dqp ze$A*u47#zGMho_R!vr(#?zzdwHRzrqvebN4;eoE{?zXo6GuDci(g&K}LVoit8OUH% z4CG)Mw|}N-{t&zIM~hNsy&fL4iq_Wd)wfONTt~BUfkqWq`1t-+#y9r>>xS-FxwwIam{$9 zt7CT;k33J}ozY!G;JrCCn3h#PY>rhxcShre+J5aQ;bR-75vb(!I_*=$@pyY*@m2IO zN_;&Oa-BZup=Ft*ml64K=a%x=U}K8rd|3^v>E0XA?XEBW+jS_ooZLFYDxf2U9XZbe zvo#+J4R7Ixg|Dx*EBlN4?Pesnwzz*P_=a6C!ygqE>sNbw%N-L; z@$%~%s3!d!XF*9Nj1$mtfOev#EM6m_dPitmGe0S`7;P3=rcN=(*q^setYW{Ogsgl zY4NtkzPL#)A>Wsfj*OkaCbjMK=kaE#rCY-c5uXh}M4R7i%sQSi+Px{X3GMzRjS_W% zZEbY4cZ{w}ZBotT`VK0W!>dgq-VYUPx6-0mNV2M2F!|B{0EB1s#eTgyGF=bO>D5*| zMc~x6`+aA`Agoy}ADpKO06RjTKyg&zzP*RT7J39xb2Z*rM%WFv0BwKAoL5t2G+J+k zpwRAKI2Tp9VC?J9mOqH8AC*ZijbnS`3oQ;it8|M_iCK;?BnJ#iWA3&q2}J5s(&l~s zgD$77S@=Q=A1$Mj3D21!R)-&a4_xDl*gA`k8c!-Rh%A)G%y3bX1;F|m>85QjSJi*E ztbDSXd0^Kd=ISuH3ha9UUTLLy&!hON^+L%cq$18g<)~-J;7_Gy;%f=qn?bp{veUIa za@t=zZ<#mFxC-)i{{UzKRp!#Aw(#OSW*wT`dnI;!0tY0IOjgA9kZIluvbB|_M!mUp zV2k_gg~mM!oP8?pq_Qh`d&727q|?P38BxYnmH8ZjfN|7TWe|9aPtxx+T?<9F2V_wX zn0)QMn{F8Y0C(TgvGv^=#e83BV|B4&u@R$3{Chy@n!QM}Z33;jyzT0w9fQHpKYTke%T#ye6>X2yE)aoVhQ1E*#rKA8V`vF6j!b8#;a{kKv)9EtPZGuUX^2@=0kocf3i-T7 z50UAy>O!Y7KIgi(gUQH#2NlI?VIxw=xgV8uEq1SN23H^9Tu!NR8!=HPILAFPTr-W) zq;zML`0D-!vk~58sOX@9^skh4D+qNRS1B1(}Rh6@+B&ZsM(WTKEm%3A{(+m~O7(62TA5Gt)Kt)1v9|Tie5BW}9Ca>3|e_cCVU# z3V0Ud!Zsd#)L>08!e@?a>bouaewRJuxM>x3htIb`UhWz%ms7#TNhxS}N5spCu5X&s z(oQ1C`A?;MbK~~$d@#zIWT1SdRFR*;zRtYUnps|bq?t)QIl-k@$u2LO&F&?)uf3WDUfCb6!_vbr9MmRXdMN{n1~ee;IT=H6x!2nLUW@ zUjXVlTo(GzlN%sRld*p39+|GHQuhsx-$>Q1w9v1!1Y-nxde=<{i&3WtxcU2v@|{Uu z2!T=t7p{AH3g;~~Z!T@f+%HN_nr6^G#Ix4mj>RN>zH9WyrDRL03FSL@8O}$wcpaCC zE_SGp@!Qx}py=0z?;kfEMRLlUiL_bnJ{s{g_LVryr)LC$eQW3lwaXt7>A;VgMF3!9 zo-5`JGR34-C(v{4UWcaJ-09esFmO8#1}lc6T@7Jwr$K$ES{D$h!EOq1#c|rth8|Ti zKuWR?mx}8ocxIo@NQ%hE<~{NBuJ^-mCFbi%Bfw?A?_5(z>51c72Dy8p%q^upT!>e1 zI0RSQz5vy2wY@$$_zuGZz72fM<8K1XXAjzuK>&Q19PwIz3AOpO%f+;jkC&03uhODW zv~Ll0KH|2wXu*kqM3X#Y(y+CiE-aF9_j-;qT~3R5m-cAL;HdoS)}wB>7UDc~Tnd=2 z4tb-(bsZ|(P_-)?eEmNW+PrUA(0~mTu@9Hi`d86+w(!`>?X>mfRO1!L_>Rg8!Y-}X zXB_+0#q?nr9tUSN=ACiDAy3QrS9rHJ+LQ>&aVmkwsjN+3PLkhr!z3>!j@3s@of%cE z+XN6>Jvr(qYQ~x~thLtf^w~VP^M&;E`crRwdkG-jwo05HIK^0o1(rR_j+=PxUQgn? z0}B$IDaa$xiqf9;8;aQG{Ap*S-pKbbwoCloxUZjeD`=sbMIE|gyX{j^bd{seMZgE8 zdHvoek%?}0w(QlL>8B3;@AQ)H}LN1 zOC0P@)*C?J{c0HDFiDPzc2X~#WlTOf~+{uRcn6&{%DT2NgP z*QPkBaO_-UZn^-SJAAc4u#yb(gH}>yb;d^>y{VFb%aQn0jD^)sIp_4M%ouTyX~f|B z4mwi<52@*j0EA#18n&)B4DvlH0=~VvVv{S8$4^=SSIOXXs7T1`?Z>4ofmnKDj0&gb zd3|{8?M(p;(VTAW--^YV6^Y5my>B}!50{bXYbI#7F$06xb`@l{Rv5uU+w`Vf!l*t| zf!d;*F_3=n_NWEe+Eo208rZ1aepcXql~!PkxE*oLTXL)jTxambQIQV?Ngmy(8J@wi zGsmSy>z_~lwNEJ9$nJY}s{8}((w`{Ga$sp`R3IRt~#KGjZT3-c#W zZfXa1Rou(NebLf}z!?}k{vU-mEWDq~r5ncwAbmvzMUk1BHXwBAQ$sLpfuHm3RSp=F z$MU9>+mfXHD&jUvb8Hz4CK!%!&>H7uid8$)BmDYS(Q?O={zV%>1-A6`^s2d(tYR(m z#tC89tu4LeGO-xsQ*U5aA0p!erE`WUV`AeWy4Orq;&V<`JLR@X6csrgMME{Cs_tG$ z9R*a;FN~N;I@eXS9x=zYa@2NbT{N0FvmA;5!5OOFOEKhUn(NxzJQdAE)=S3G$o(pP zqOhGSnDD?hfsFflRL0Pex3yl_=zd<_wBV$D{{YvfDLTD_*`NQ{<*tYf9F8jWq~(_Y z;~fuLF73m`^6|$?%Cwx?PvuBC7{{m5zb!vfHr7K8&&|j^KgO);utBI=5Jqr0$MmX` z#?t=ucOT?c>kuWj!}T0v(vY60^IJ$^(&qBFZAT{q`PXr$%CkqY4n{c5ay~86WJVG~ zNGr%A`BtBXwFqam5+(yF+RNM;yJ%;zu^94hK5jeawV9Qp8-_Mw1k;(&f zJbfxV`(Uk*xZa-S1LEa@P?u$a&krqy}rQPC&&+Ckw|1(yT5#%pNMF>_Gti z)#*%K2%~m&!isZ`FdU3=+L9H)W9l(eNH!mAcIinOlp=Eh-cA5LD*e%l<}Jv1suMz_ zGJr4u#TJLGY<{0gWvLL`Owhi^#c00S6XpFYHtrq2I2?NVQ>|_?e6!CSQ)@xp3l#qV zXOM>&7v-|1E@rTyML zDk+>R0y<--YG@)u3BwA!(Fvd}oVR`|p9Qp-qokJr=-Fgp7z<35qHyG(%Nde*xI^wdfA{&9=%PEviRtm;$9_-n*1?Dx9Zy`A!I+2Q11DmU>onqsow>=y{}l!<=HKW=n|2 z%Z6G2b)yB7XFzIus1zKJOp2(81|2%76{)!U!E-ROm&ocn_N{n!NSyUr$eB6Zy(&v-n zigpC-ZJG1;xg9thRev*aD1QT0_jMWLy+gkQdiJU1ML893paf^36-L;Uec0(+Jj}sJ z+TTiz?3z4CD*74Qv7rp2MFjT86Iesh=AgNdw+9Q;^q`Yfwz3JMJg-qsf>5V<^~V*0WOW!*_*9niK5%~R zHh}BjY_RV`&~~Un-Y`2>TsOiF2+EO)Q**LF%0|*^IaqWryKWmX)L?s7Ot6^A&uXzO zrM`Ih$K_O{x!)enGwW275ZL7T_P0t|U3*nEBxD}B;+rgl^y~d9k^<6v-FU@4E#;O} zh7~frgeoZNNjL(iq_{af1${63ID9?-0ED;2CtcMT+iALKJ0&T(8tY+YU-$qSJ-;gU za!j&$hB6pheSZXb`L1J61BIR@uF+rc$oe z3)eOMbCu=PaC9Swq4336{$*bA$ond<-t( z^Puluuihb6l>*9<{1nPoT>cjDKTv zbn^^bn28;FWq4HymLt7g@Xgq?(Pf6>)=8I3h?iA~Th5x*e$^w6_-S4+2ev8;Z7SyP zZLXblnC?tR$dX{JPbx%;qo74UfvTD$Q0Th2ZE5W-Bi{rq3QXBqBxb$2h=bQ`Xp8>o zu4=K1gNg*sn*L2f$489b+nJ2EklN-uak?b3KWn@=KgGO&E1T3V1NcOEk6*ihTz_U? zYpOhwvJ0(Ayt`Fweb3#D0(s9&RXfPFpA+eKdW36r8WXrfZE`%+eP-YkQ`thr^0&82 z)wKI{&atRNIG0J&bsb1qT&2p1)pXq!Fk5aoU)~Nqjbq56+Ur+umYsTbMaNwZLs_wh zOwqMJCe;nau9cQM_=iE&wQua(J=#}?z`KL* z!k9A08-Ek7dXC>p?EF7Am#^FCv9;cnGYwBs*HxX$G?61RqLu#uZ8q&a1$hRQcNL`i zCx~@fXSIssQPuUNg5-UrAxL*5O}qj^<$z*)S5zYP?!T}7v})EpBUaL5n@{n6nWky) zr%QdQTWESz)>16XF2!BQs(4>C9P%(JlIjxN>AoVoyEgOPcz;ckL$){Zc~VY*F8JPH zG3P{n?%vg3!O?4)+3+kar$cLL3g2sYH=1mN_m8oI92^p3X2>}0Sh_!m^<88|;2mSh zp7+FhpZ1lMm$2>f(jrWE8#*wP3a9H*x8?0`^8AoH+d~@PPw+~3%fYsGx1ZRvXgXw( zYkGt~J*=$i8Ye8@e+Td5=~{Ycgs*h_9|1w(`?bA&V^zGlxth`b&yOwMP0bhamXGFK z^zBU5^bH?O(fm|=QKCmDKbwN#~`ruEvoTHT$v2%VMu;o+r_~G2?#{+}fL6 zTTIY&D8-%Co<7%OZz%oYL>w7oAY}E%1v|F?0CfKV%lg;w(9$Z&6L^bU)HUmC`^#I1 zH7#4knu_T5pSo)ewy+(BLoZP$%0pLWt7;l|hx|{fCZ`+P+xRC=7Phu7q}xe6(2OeF zFyJx!qdjXE!`AlRF}Cn$f%LnW^$Tk@{@>rMuaSF#!F2+hvZoize?n_Jqcpdejsc1`hBIY+}ow~q|G6Zdj(Cg z4gxp#MS7=F`=h+yg&&KxNIq_oH#|qk7CY58Y!y)sQA%tASIs$W(-m)UlZlTwF2jS>$E>`0} zwwm^9>llP-9lH0riLx{9IW(JgxvIUiH#PqN5w4ly>$&_@ri=RvZw*Cmx3>Ll!($V? z3-=^aK5jV0cxQ^WsWnf8bFH22zM*&G9ai37^k_}J$Pf*o!xQuF3-qq1#8O=@nd0w> zc6XM#LU^4Gy{*#8=d1kNc06N*5`mRpTEp=VhIHBQyd&Xjq?cT^S*`D2)hv&by46ST zqhwM(Xxq1?N3nwC{77{{TykWMBq(`MP7$y;H);py|uw&lk(6TSV6}c^0~a z&6#Y`+y_V_=tybb&=^n{3aV@&?rPCiTJgGganbW&E z9MQ=5r^Egp(DhFO>H1!!b0IOT&n|Y&9Jx?cly(EPewp}t#9DU0;p=!;jcuU2a)|-DF z!|4{XnIKX7$Uyl)BELGy_*WHA7OGT@l0MG1cS2MgBO}DD^{ISQXRmmtQN4`+0Aksj zYk%GOWNjq@-~40_Fe-+$)|wZ?t6Lp1c6QY6keksLb;eiA$F~)KLGa{9;hn_V#nhLO z-r+4Iw}FXEg&9<3QGyS>H&0`I;-3uYy2ZqncXm5cV9{dOo~gWJ8OIg+O?78(hsjYe zyg}f*jZflVg{|)#M+N1)du}99@kz9T!+-!d?O8Kv5$WF&we4EM)tgGSNg1NtwYmv6{;Wnf5^F-_1c0M! zcTLjey77*qt>S1czRfe+XK9LQ6Dx!Rk?qpEZ4Xn@{7vE=dj4BjaTTn#aNR=NO1cfG zvmV6ayyr;M^$jP%ck{iy&zkZGSyD~R2H}Q?^y^&iCaPyKq268Sme(5EO9YE2?jmvW zv~54%66cb>^)&t+mM;asEhc%M>fx?RKvdx);1nmS*5`>liz^K)MxNYROzdO=;xb*2 zK#~FKdLEUt;#7xLxzjv3rrO&{GTEdurL>zTw{`im5b6CZE1ITpb7(qa+gfOCs`GQ? z%#qzdP;Ybd0U*Fu7~;FBZY{1gnD0Nc?qr8dAT7)@D=r}zA*0TE_r-Ena%!4ah>iWy zO*O5!Z#&LJk}oX=GTVAEt*?fuYWlvduUcCR_)=30YZ>zQtlZ;k5IfY#XfgU{h}Tu| z1>cI0K$jNLNRcY=>Uv?p;~a5{z_XUxZ?@`sf|${t%PlJX$A7)Z{u9u8R@SwpFNHLV ztDB2M442m*x`OT1wkSQFGsS3Yz8{jy!a7Z~e`vK?fV`GiP)@LkPw|ud9)_;S3{85> zX*w#bZJ)QYh?g6Pj1DoL*{*j~(c_xiP0}r6cDRxxGDR2|X&CdI_5!*O7L7wx@g0_u zCAUP=p^S3-OQr$b6n}UQl#*U(ms-Rcrju~-OJeOL>gsd0A^az&&C-hr9KFS(+<3NV ztxyQ8lM*LI8yB8EtCF=g_SbhB%SoRov}(Ib^4w;+=`}4Yey8F)VJpEt;9_sxx(7W6 zO!3pwv-MjGID9i}d2P5sbj+qXUoNUSP)~XavB%w8v>qR6Y{>gH*#Ux&pL%uuDuu%8SB5dhz@xbKq*9fRPgv5#_YhlKMoQSA^H}kMz4rRnevuTHH#alLfy7|OSnzr2 z?b5r=JpTY|TpF^_7O*wITvkG<2% zK(Jt+GD5%(GBd!ccY0gJr~)v^7cHJS#}(N&n{RWdL#O%0Sy4)pz|J@yTEUesM7ON? zkV4x?^dM%LXyv2;&i-E+KPWs`xcnXQeBK+@A-VH>zHoWt0=!J2n%O02_W6yR`c;^% zu5Bfa;yi5(IsWxyUXpP-DbCFO!SF|o;nwV9l*_q_j)#xJx=m`}EKF4Jqd$dySNt~k zovnCC#rBml+V|(~*VT*hw?fsl^?0P)CfsF@74r3|^1TmDN2#sieOVG=13vxD$G5e1 zo))w>FezpEa0eCQT1Y-6)xOd9gAjP>Us7mRX=7v;ZU|m6?Os(_E1sSfX5NwEsI>{! z(QvKCIIpih7<@6)?IT;e!U0i{#eB)&%e6X^zD7{-o-6GC01WE!MF0f!0B5&O)zO2b zr7cc;eP)%B>FK4~!cpQ~zyK6ur~6fFRDwo{VYS0<{VO8dP&YVoLEvYeIQFeujY=zf zX1I{;+t63IpprZ-S;*^=L#Dt4syC6Jp|6;JAb5?T^8{VGeJj#@ZQ~TUGM(7k4;l2Y zi~M`y_KhB9lkaC}uR9S~leT4k4rv`4j_ zF(@2y-yB!XI`4(AJSD8H%xKD+xy5}=rI*m<%j3&p21v*iKa8|ZKUcJCg8mzBs>JQKhb^hS%REybP-=NKPf zrC%+KreXMjKp>udYn+YZmHek1V}N+a9jmC<5P2n|>yMjvQCuS3M+DwnnI)HQKD{VN zgv_mDO<4n=7#RDt;L|L+Hl%k9Mo-~iNKVTvTN@TGHHf=wEJHt$s3MZKvhOZq+eXX6Jx- zuE->wVvGVm8uDA&W=Zp$0n)vf#IWH=$-womC%Sv3z!e~$N{Zsc%=ysmBehhwR*FEIMnUUR)rw5H zEDQi60|%$IP%w^9=qq$GN`NpK#y+*3JZOYu4k%1!f0y#-BaD6(10w;+=rM}4Tn*e~ z(DfA=Y;Z^cyAISetTP_sHQT-}-AB^1{l_)XI*y}^eLB`P%sl+RDbLcTBJ>yvI0u3J zG#;4t;~&zh4c#$=jZ9dH|` zPSk~BrO4dDlY%i>Zo8Y2$nRTn$Hp5wyLwemEWDT_1P{u!gzce}qEm$$B3OL9*5!_% z0ox%U`--O;{_iC620C`CvOyyBJZhWml@l>#Y(1j3fzyqi0SX!Q%$v>Pr3fyN%uX!a5UM6GG?%kO&|Vj+DT?sahq>1S$dm{DpZc#`+ej@r*1N zKR3~Zdj+cpi~xA(M@r#5X{MjDywI;BkUoN(I~mCx4Taa5n14!hH;~-%pYDp_{5h(v z-JEQ!Rj>mC*p9W_N>WIdV{&@>P~&3a^w3j@kLOinPyi%hTk@%`jt|Y$a4GjhV-$vB zOOu%T`eV|cVxeWh=}gKO#y-DFnM!a+ZlZu2eF2J7B7yIUt8k;s-nhuEsbzv_fIM;2 z+PV2#AG*ioLM7}}jzOKP&01#j5U9rQ(*m*GThAkqJ5{kd#tRY1;;AAK{t4$DJvjPR zWBaBA5%_vkGF*_whZywiDna|$at|G-DKgCe05n-02(EFaXrv4{#cM-zhVmHIT}s(h zZeE?K#dIb`rI1e%&m31Xa?b?YhZ#8Ht=Qa_K3U@it!fdh%g|>XY1-NdtpuQsM?I)% zcQ(VtVcOk1ax@YTx+?k|?Ywc@@TsuVv973gjGk&_W>L=r=~a-Of~+bMo5C&wvqXj)Gwa5W|={<@otfn>!I0RE9U`gHgY7!avd@dHE-=iX{iWD4!sXrNU+~0aawlK05IJRCagG>rwk;S_aP;F8p++`-wWg5nO}~~aK1CzyJ*WnXdzf%L ze@bIOvVQb->r*O+`@L7KMx>3ywFY(vU6J}$UUo^ibo8y)ggkg1>l@1b=Em*E;Z~WO zRxFdS44mhWYOTCy1M>8(MT01Pg<|2-W4U^Etsn-hPlgTs-u1RTsiGxu)1`AE$^dcN zweCe-Ourox2<$m~LVbYdzfQDWGRNU3hAp(M8c1ijOKET5ib4w9%WS|-ymOY$0{U0Q-vl(MZM5B2 z#?wR$_6lumaz6FLF6VLE;C`&8rqkOuQWXjYIaE--vW}4q?q4VvRI14E5 z#BpDy`)g=?9V$vmZVl`exhA?z8sL9n-d$^u zM|hD1n$Z^HWIkkPbePBSla0Jq&N_3yEe|rRz2W!1D)J{6Q7qbgwl+fCl(hv}8bK0~ zowR`*b!>1>U7Lp@b&e5NPl$DmI_IORoc)krv`vP0ElG_s_ zOR3BEqz5g#_*)fyuEwvVUwC6yxwdw&(d-}+-9%%Zr`9GdI)+{{MhM4BPZdtuXuMwz z+ew?9XHU{I1mav<*ecC1jZXqMPO{{RbkkHl8CW-UhF zPVn`Xk0qv{JgJ4v$5o7|+mX3Q1GRLXDb)0hDl5mx(Jr(<4#%TQDj=51N4sTMytV7N zjPByKrtu*0cDJWZX?0<#wf_K!;*=%KTNZ0u6yF;wW0@4L);^-K?rrox7~ATTC5!12 zYaT4~tR`>ti8Eru&WxzYR2vwtYH@Ay`&H3?i*LWDPa>j~h&6u>_<-ozmG6S@?e8S; z_lMxqq5BI2y7I07-9EfmTu(`GPjWbImnxXLagjieZQTca!q)uZ=xI|Hm zr>}06dqUS>k}YdP(&hfu)I3S8N+6oY5P9)HxRx35$`Yx-s`{^p{8{lU!#*Uwioyvj z?ll`d7+bubWVwzjb`hZx4p^&h4edw07U1n|yLSHogV=HGW?c9h`&qE?FNbaHFRgB* zo=sy=)F71H+sOzem(6_g=-Wek40Nm?5co&MKk$s&*lx1EI^MrEtIwe#`GPfU?Pl(> zfyg{ps9AXC*TIkCJx1Oc^t*ozX|G{nZ*X&BH9L?5k#WHd#y+);taxL@UKDQ#-|2S4 z?1N30TN2m}u)WMgHrHSJXS^(2Tg?+%@JE9*YtJ(8P0pvOS?cNLxSmjUz6T5D0(cw)S=I}A z<1Y+Y>hP=@g#Iz{2cLR0(k(6)6puR;=Oi}VF|AJxc!x=k#9lJ-E~{}B=9{MJ{{Y#d z(lpsZY;o|`Sd0@JgyJda%QmG+I{U4K`%hT$RcUa0UdJT`=6+!{IG57;Ym>Hl01jGqGHatLAsc4Rl(biD7l3d^Vd$ zxJEX2%{}gqenhHW0dqb&1Gj>D172t1OPiL^{v_)j37O>3uWn<89Xj?eEhLg$2~q;s z`H=KIF6aSP{{UrKUfRWH;k5XJsYoY=$%WsS5{>GzC>RBgTyQD6 z(rUM#6Fg0=*jybu>>3Z*Ak-0u*e+#6{{WVQ_)7zhM_TjW479pNz2I##Pmt-FrGzHq zP_RgZw$a3jN;650Hx3D{OPMqu5cm(odWF5L+J3LDYjMDkT}o2Y^65Z%l?gS@K6*KhPD8Iwy!|WQb-jN_Z;aNLdZp{x z>Rubu3|AK`7TZgJtC(_n4a>m-xTNsCr~D)y6!5K{p%#m%!EGepVU>4V%w2)~$vh0N zQY$N5)MT5&-Zk-4-_Dw{PbQoFn(-^a(-x6Fhz+PV}3D!sEE_eX{04nD1FLfOh_$%RX(rqApR)6gYEj-QW5lCFaCvt0T z{vTQEUIFlOczzk%Pq?~;bt@fKZ!OgIS+Y;ve%R?&bzc@}x<|#EdnAevuxOfThB!)j zv)fF7dvbi7 z=NVDUF~_)5c5pH_9aX{WiggUcl!gS|2Gs{8h=@ezkEo0UrOYq6WF z!DkPMbk7OtT8;EtZLXVZa?)BVku1`G6zT`aSMaVn4+;hdI-r$W7sZ%eeFO7M2Mso%$Yac{1quvI*fYMo&|Vs z>~ueeTI?6GNpc9CZIco@j)C~&9<|i?xo#xz?}PLOmj3byQKnfTA!Lk<23E#84oA|e zYUXbYd}z@wtmL?8qSMi$a&hJb{`bFQUNw47);(G^6pl;9FBE?j{{XU*cl#cis*J3m zqjZD<0dB{&Y50Ft@Kf1q9w5He1R@ypcS&jkzxF7s`fW-zW-zef6%M>qfeh#kTQW11-LVY%SjAIY5>D%#r`kS;gmdI*;`_kVxYx3s)kk0I`M<_u6w}$0A|0}_1$(zV}UGu z`=uUPRt?JIcXbuD;EOkCJX@{LX*4&22c9o6gT*3uC;=f)r$bz<6Kmh_hDoi-sH3dk z=!bF$)&zde2T|`>$~Vx}KEzsNHKM100{|^0A0vRhfDb#w*daF9u5|gM2w@VQVC_ZQpz3OXX}0!m^x#0Uni$ zsQ52NxzsH@Cl;!0t}U7wqk?tc9GlN4c;Q>9`qp<=F6K_VqxhaHEebmuTc{!m+oQm^ zXe4|LK6COAdepb^-e35l-@>;DwxZm}9IbD0nIw%y?WP`#p2wwkw(uQ$Sh~N8!bsxK zRfAs(<{QjsXjX+!BRz=eUU{YKlj_=rp{ZU=Zw!{vJc}%LNfLu1@PERw zEIbja!K(e1JcZx*8uZTr-N&n0+d4K`Q=sXZ_dg4GVtecOCywWsCY^)-WUiKc#&I;XjEt1fW(s02T5EzV5e7Vr*^c>6%MTdsVWIF~2O` z$6;LcYo?Vdzoj&YxH zUhkzCe6t111UT*e+Tnax;c1)xCKfVz(3AH^S|gy^x#B-&lu5L6&mVgmpqd zJl3>2WYWl)jE%f=#d`k$g}gfr&LWa9cM4OTkx3Bv4pSt*XPH3VjAp))@cq5kn&~B( z=z3Qbrg#inO1Cg4-1e_}@YbFtg&}3ZUNMT`sZm(gC(@q`ykO676gPi(s8;^~^;flO z76KSP-5T#k(6Xft?W=-MmBxdUzff4T{g33Ac`K_ghIbMzZE5NNUrqQ)SYI7Vc zcp&mUs^cGa##h$I(wCPZw;b+X+;jA=H`O31bM}PK%-QF)Thn!&t%H`&UVkc0RUUQ= zvnc&B*ELB6$`5oFEvR@LaqnCYiW&aNl|A};S4#;AIYQXjeqi71^sZaQ7jdi-qX4A- zT-B(JGlvLiibl;Qh`NqF{{X_d z%cx#5O7r)hpY^fB@3t$jeIISsKIj!StMi)Lb97}zU+I@lK~>K8m7c&=vR-^-Kb z?Ci<$QL7!MOl0M$&hKg!$J9C}hRf!_z$ z=~{}3B6j?$319$aMolm(0IiUE{Wz-T2&B&7Rfj|EQnv6gI&?J6*v3ZRYKZ|xco{n6 zbMMq;A?FI(WG3Yp~(#)f7GskMPDR_yA z$5Z(J6xLnDGV%PyRkSE>;1mK!Zcp^4PJ%(te*XYUklU6SKf+EcJ>Enm4n_w|e<~Dg z1#5^`KQi&hO03*3&A~klU&$XfGCEavMJu(2K^#yrsVYbk@^RaWX2JXNkk6~DvWU(lFcKJ&4?M3t*jhkzvhGvPehXb`5vdcqdno!#?V@qYf>aBt!1=|HW}@D!R|6I_zjvasA8$>^kdSEuP0!c+)- z2pO&~#=1dc=Ei<#&gDHhrg(n&*%9A@Kc7nKapsNAc z>70H7fHR?!%9Jww)9KQ!-A2+TO;HRmRYyN}W* z4mTJJW&ug*LPtO-tKVxQOxetUD+QW;4dq`BzdU+?d5wnk5H%;dthf zZq_Wd1CbZH)jP%9cc))USmYzWK~PI5Z0+C<#+8KLg=pVs-g@-KEWtq%MtJn5Z25^D zF;f5&A8g|tI#gRrH(r0GM5Lki{VHGenCwUN?LY!Z6nxwf(z7QU+ja&$ zt4dhM-%f|ERCrlNarDJ&PDv3YQgs;H)KvCl!uxwwVYs5z zl4y1SSM;oQxhs*3_Tsuo1!?b8xPC-9>&I8k3Cc$WLbLJK`t zQ@)Qzy}nOA;zo-$_y=mHWBt*YtaXhwx4WR5nbYc%* zO8E-nEm+(|GDr5A$N_J($MY8r+XIpBkzc8w34R=2cw^xHlRo7)cNw1M++a8o^0^1l zR~8npwW^~nj+|olRJ1$m{{XhZV-CM!7Z;cI*6tIT7AaQ_0*_I~D;rC?eF)l2*7GKm zE?h{n+lF*q#$*fr(MZ5Pm7jTh=4fuT@3h4=x0mHbBci~5Zd;G;o@uBJ#nt`2(P?G1 zxmKO+Zb?>><<=!Ahl0UDBObN%p2tfw=RFNC5`SkwuUhT6wRx^CVY+J%FKlX?THx;V zXxjz7v0S#R@b|`={{V-j*XOWF7yB_UBUr9TC+)Wf%qYAK%AfC>T6XU!TX+qG{N#P@fST1R)UnGy{`GJxA@mitZ^a01A?PqD7% z(?rv>o4qT<7xry6fYUWSbjxFMWedHyTn- zDcqh1O5kVlJ=cce@l}qgs~stlD_suC7ykfBwqG-Eo8^VZ@yCO_L4U8?8FdXS!!a$DyKgP0#Pg^^ z_#ILI0E;~_TRt4nAn?w$@b>RUo*VgYA-KM{j{gAtX}s7=Vl(%A!JKxkHtWPO>iSjw ziQyHWOMemSS2kfUV=k8vl3GNK2OFc16;oGc0M0r5_oGs@z;qw zPiq#7s$S}erbT^ciO75aAIlwMbZ$WJT>k)wJUMorA<$ybq`B7g?+a-QeAkg5D8S_o z3#VPduyKx+&lxFB>Hh#pf59z6%GNUCQE}o=iTa7;kaZZqs-saF{{WBSw~iTaG;as#f?IpGVz;)=S1g1Ka);a6n@_#%`e;(V z=%cS{dX}eo@ejsO#|gI6yuB@AkblI+-DAQQj~tS{hjCg{zKDD|;ZF=+TIyaanJ$uR z127iy+Cq#AhaWEw+m4jW9e={pd?UWG)iroz)pZ?FF70(aJqegOeED;X9G$&;Q{GJv z#UB+EYO+jUPtwMpX{yHMExh2FN0CMVagYvbZtbeIjXb&?XNk2<9ehWBsm~^xb7kS} zCSj#pFVB3dD8UZiu{S~1yqfXF*TG#P&RdJkaO*nCTr^7u+3ur|9zyU5On0o8So9Bu z+OC`8`MQmhlq7AHgP1rY%)Yn@}5sypGF&<% ztGtltULW{p3^$Oi(UtGSHqiNzU2FgbWyS{`>r%=5HRHdDz9jJupMP~}aSf!BeV!N; zTCB>4A*9E4A9PdvKY4$q{8F1mMzecQ4d_Z*+hCAwb<6oD_;(J~%J^eh()7=T{v+`k zUrBdqeKgkoO}YeYIV5byo;MtHH7zb%qi4CsSa>O-_)+4I5b6U`ySuqizEtQonBB5u zkNw`&U&MN6gRj0CX}%baYwP>Fq)Ui0pXn(g<8osh0oJrNKO5>F@Tv5l30Pm=3tevH z+xe|-T3Dk847?2e4@_1c_7%iG5{8rgxpO1w77-h3h+qa6V3`I+0}JRydG+so4ddo; z+FZZee-hRye$;LB8)b&xNK7~;I| z#rAPpc-|{LG%=3Je2Hz?7miOaIQGdNoyB<7=~>yHojR7#p5s-M#hx;^w`<4+wWNfL zNa7`dQS-DlCQMr{PKW95(xrGi}b9CR|n&oKeOwpT8 zIwyfIBaYVc!Yk{9^Wut8Jki9zdPHN8RP@J6;-s7VAn7(X)4N(-lOSoM%fBOPN}ymI zcg1>Ezo)COhqTLUEkamjflkY5GvxW0`CHX{`cyZ_%j0%7DImAfqKzhqL>eYU86>_w z_iigUV7-jJQtwdLym~DW3`wWQ2u4}Td0|vB{n)^D&#y}4HQVS{S30z_Pv@kr*ARpv z5EF%DY<@VeRq$u_W~ZxogTxv=#l6y5MABPfvOFOw$k%i6ir(H_&nTJQG!Q)#a) zz(+y^&l|AHJbQDM=NKGTdLo?fv4P-?LrK#UQq;9b(^YLn{D~J&lW4d`9IKWf2OrXs z`YlVto)Ngev9XfMJITaInv<-XVeG8QyN|}PwOs}De-Bv+;!R51R6cQIC)u*e*kh3E zj-Bhd*6c29^sOOuNpDu(;w`Nds%|1jBn^y6;eGmwp1K-AkGqFb&~#lFMT%E}=ZIWM zbp!(96gLMOTO))cr=}|tR=&E`d|_$f__j+0v5ZS`1iL(?LAdQsn@&1Zy1Y7{{3W(J zb*<51%CX9^zhYN{G0@jx zYdm^(g?W9b*v{!L5*RL76%Z-T14qWg`c_YkbPG8=C#Bu#+pQZ?m86>5^;u$~kD2 zWQrop7#-htX&r@PT6lIv@RVsR{%rTMg;Bd_8O8~r*mgOI>>o(c?V*WA>$EdQ=!b3x z3%GXrR@k_Xd+j2@@QZIB%69R)8Lo%LaEI13uMH!FO9)Y4Y5A}QarCZM$!zX5*J+pp zvq$6}$F@3Bup=hkc4;-8ZsD>*m z9+R^535ND(A$MRE{t?AVtm*K}tXtSyf@4@CZokL3ziMW&)b?+Jx@G0$>8IN!RdM%y zEA-3Z-^01KMDs>KJ3#g#z6Sl1wXHS}7`=|Av>%lQ?wJP%>0h;)eWipp5lv{zuqbQ} z)$qB^{j*2VVB_xG%#t+O#7_VvZPP7piZoxUPkUV{^ zrNo6+L6kgzYs64@vD*fDW~p=MPRY+x*R?Xv7M3zppO%R3Y_BGA&w>~8HPTr{7nH0R-qWn)fcb2k!wnm3T12X9*W$H(3;xJiwiE=Oa7UccjgS!^w&*l@VW74iPB zs4eyLPrPG1itMFJOPEe~3wgB*>!ArbSr0k(uUpXcSsmkS1Ne5XBg2*gQj%>T=K%Xx z(q0_Vo6Alz4_+{8YThWSY_+9nvBkH}iCR2%;8u3EZDAu8n=!@*-dtk6MjaKF-wHlZ zGx%2tuGpNg$T97~7{)8lQ#(_>$Cuqek-wX5KbjN)>5=J9x4V`vk&`LVW}vvTXk;KA zqk+KfTH1ZD+d)XrBe$=;YM2QIl?Brah}XEt>HbA_dUc_<*w)!sh~#72`c$@BG`7f+ zN->jxj+NS3>FA+z&#hxpeG#k?>i!3~w$<$sBmy~y%g^ywve~RgY1r@k%8-q z!_(tVToQpg=cRNu7m?jKRKfDPd(=3x6ptd;<^IFe8Koo-%kZtQ4|ts}quR4&a0c4F z@hiik{{T;W$P+FTkzXKb-Y2@yb(ezcDiMYN?OhP1%^eB$iD-R&s5Pb3M62_jgN)aK z_^Q$`v=RYQ4{mE-)5X7Ob#UOLV3Soft(P*b!nSfb6xAk-=KB>iNhFK_?VjL~>+4>H z7022wf(%!hTWmrHBaRP2T}6%BfC7$B2BuK#S28Q=R+C%EWrTp|9lg_P4tiVf5fvLWj-i*mSQwl17W}ayaYjT6S8CLU7DR zD0J_t1v9F;wKFFm6X-sb#OfMzqxpe)9OQaebp_(dft+Uz#Z|kvNk#`F95pCP%yUVj zjJ2LLAx{8S*O46Yg0+u(YveY4II6JfFB9!2k4osh)`m7T3(DL04lSl)5T0(hE^-r)Ky87BaRqj0^f>(J101`;xNvyj9{kmaZirB=$Q6F>*y>BS_HhX*4gwN--R!paqgW5C5jBna3G$m>;I znjz+@gN5ltcWCXLgrKCzo*yWW&|;}!i7GmJR@sxx;~r%FR9U}TZdebpn1 zt2|1lbZ4hk^gZhIgXARO9-scIrdS^MIOu!Q0=B`qM^po!YG56~qss~zX`Ro_|z_^aZ!T4-KuvOA1_ZsQ2^e<=~~9tGwMKN%JlF2shQfpH$Is3 ztC_&c^gXH#p-Cg|{&ho>MLDBcM^Vr8tg^mWA#?4D+f+H)27a6#DUA*Z#t6j_5?k!`HSR9UVT&I{d8&bP^j)JM_ml9bpw{C>j<`PK# zHZI4c+stK!laEeol(|`KE{1v@LwbtXwURBlISOkdU0;=3JPwr!Yhy>Dpy%yz?;S8d z{Z(U4l=EvLkZDUnq59UD9mGW>UQ}RUarjq{ zTe|4Fvsp}bM>i->Lc_Iv02EIEXZmqoE%6sak>c~9L*~bZPf?1x6W5f=taQ3MD;t&j znHcR?rFIFsJu#1^dB=uz54PCHAjow)Sb7m&i3jgu+&be1s&TW>QIRYcN_wwO)s?6y z^FuG!ijqR{&ACSe)Ke9aanSmDQb5SO#bxd>&{cO<3>bS=R-DHtJbfziI<^l{j+6kG zQSXc}7{C=lNuDsI<8NxSHQMeAoOb$FOmc{>aLw|u#zi=xHb%s&91s4rQes04j`gE< zo?M)L);SfMA?@qZw@X59O%wTNgU5O#UBsMyDl`gz4slcc^&b6&OGP4kN8E6FbgI`3 zVV5cotxs&ZlWD7WHsVD&>Ic@d<{4_*Lo5LPwL_SpV2k_#tqYjen;9ym)hK<;G+H+cDJ0}M_dJgrG9DpFsGn&$dMdx-a8i?Ku z%eWv7!|yLOMP@&Gwyxrf8C>SD$VlAAMn|Vg$k3fG0^vs$Q&5FWeqim-PSo~HHrx(6 zQ(8^RV{fG(IoQh*8amqy-cVk|RTyFN-vn`*)o4^M4^LVEz?*bZ@mFIw!Kt1BCU){g zD%<&MvBxK+03`8;LVAzztk@Y8nA?iHlC*!ilj&7vjHk^X1Fb%QXhAN1RqB}hs>F^k z7-I&q6BzT?t~zF?4l&c^YDIGrpOkJ|qV7KaKfBcCJqP&j)cC2c>q-ndcox9+i=C7CuH5r72j- zv{8j(Oh?OZ1zwWkNQqqWRXn1OKQ4Yy=6W`L?o!wR1hL1;Ezm*I$?_IOT3E8OUdE;QryJt zQY{735+G)Bx^665DH(e#fa+H=xtfAa6Mn3G05QY8KiRmCfbk zhI4ynY*1WV@V4&TRpY=pF{+Y5?_Ae~FKvIZt!}R_Y&8@!HLOLVF}^Qu0DatGW-uS# zz4n{BT@NLB9n?A{hlY$=KA~}YV{vPFV6VIVA|jDno0%V{3K_C}FGPr_!SZtGdizoP%!5H*4!%C+#d8O0z(fyd_m#| z+`1&fZ!+G&bG4(!26k=$bgr`2`ocTCDo+w>b47I}-l3|COO3Ms0HfLi6}CtiRa}KW z)#Kh3xq#p4bI)dMB-3p*eQryeR}#iczD5_ascaASYidz#^Y&f8uHI(++F10B8&{87 zwa{-q&uy&TYP#+Att?EQQ@mEunBxIB4f3kz{h?f)rLL!^&u4jUY|!bRG1l7d(RE0K zf)fGxO8)?NYYvC_YjQ0|PP(wLv60s0yfdX->PJ+u0vX|w8~#|*}!R<$u2~<>G!qdx^(gd+`!kYwM!iXQ1Kkr z>!V)ykHogtQ(i#cb*rpQtMkRt6|wUBn&Ui4ZE+G`i9ec;~=SU_~0H(9%VVB6i3DoBx%ViFeNTR0w-%HKt)X=6#3Qna5$ zvD7tvLsGc5g#Du4XszTsWsO(voxp#7~@ix8VeJ{uQ-i4)kcCzT&ELN#y$CEM?+{P9^cY5*%sI89? zd>Tjp0E81(@Wu36mYt~De*NxW%XYkiGTZ@-WDE-8H3)6=jSI#1-`b6?uBSbYmWVR9 zkQ2rubJxo!Y4jDzg_LDYMQXO!?)?Y0%EZ=dX|8xH!TNRcTxqx3rO~{UOj>ujNZ4SE zWD>aN&{skDW*$`(nDk0&Dj6UMSN1 zBcbXRm#N|1He0c0EFtbv;z-DQVB?Gt&3KNtaj$>EDQj=33C5e^PY{Wk#_{$av&Q?! zm*3?)eJY%J+osl^*ZCHk-0d`t3eQr#@PC5uHGk|&t5~Gfe#>q=)RA28jk0(_{3PPM z%fuRmg_fh@?;F}!Nu^$h*2IZqK26Q($`&iyHyt}yPkFAsk?{+}`j3RJ;=R$WG`P&x z>^IL8TS$^1$CcW83gRq$1*zP8GG7r|T0W;O=BBTyTVBn$m}Gz4I1G9LfIzKNOId76 zSJ>aMztb)3J{)*)n#W7leD|H?gKOK(ZhCHPb=}2jO&zYIW$`D)7I2$e%b9-0w)Y<; zwBUe}c_*P`jtH)b)B7oWeXmKT*;?BT7ed)_rCfy}r-?FrpYE?9@m?^~Y76jIOC*wQ zXZvGVw`fqQj%z~4ckZ+Im3n5m)9iHVv61301YKEc-W&LD1Ka4bENgiz7c-gHbijFX zCVunv1Xoeu+YMjgx5Y0LSlr#qE%mLo_@a1(c5`Mt<0O2$y8&9-b-+)Fw%UfTZ62v* zr0Ho4x`c&I#C~GnBQH>5#Xj@JGHV(qiTquw-$i*7+YKrNx3+IMh}#J$enT)Godst$ z-uo7pQkJQ3(tH@Ux3Gre&)4-NxVW>sV6&7h$%FlzjD0H`RnRoubK)n3MXiOf)3oJ` zTxt8Z&ucP$i^BK%zr*bV#gbp@_He-@(n|_#n%ptMq=f*&j=iehnHPuU z@xP3J)Uvd5?(n$f58Tg|zGKRtrhB$-^6%P=$4morOmmkF8YG^t~Pa6kjHz z6|Iftt$QDlIqWwBHI_Y7#>FRg##V-Zhfdn1i*P^4 zD9+RASbEUZHGdWOcS#nPk&8{MCCcT0a>Mw&*S~uAA0FRo7g~pathK2wKHaC{Z?xOQ zWQpzg*|>q*xUW62@ji>Id`Q-H>-+1AS#ZxU--9rCrJ-8`{c-9j0o-2VW5cnyGi zS8J(V>5Jj*TjDl@tX^KcOPbu0rw+NxThZKBaoUXw)xNV7>A% z6#oFvHb4Qxb`|7TqIxu{+_~cG>&-8~dT*URmnH9ru32Qc5cx5AL~;y#YY8ka zw2ui%ZEJj!;oQc%VL8Uqi|bu)i0phrd#q?W4Aa_8cLGP|S~$U+AL2lM>DoF~%Xp#j z2LR_l7{87dWR4%QXu@R*>;=S49yenhl=1YhHdJhO!hMX$ujYf|Tx|^7Z0sUMS)hI+ z^3#~ze!rDJ!yjh3J}B2>)TfFT5t4~V zY&spV?&0IqMZKusZh}GfBGHT~!upS1 z_2uyDklyN(T;92X!lF! zExqUOR}SAQA90=yWhlFrXn2y=PYZZ=Mbqq{iU_5eSV~<3a{+eaXl(t~?b^B-qk`97 zvGCjzOeR#dMTc*hYE^z_MmWIZrE|Kx_cuD$kDyI)FoMlui9n1z2ORQo$F*wMJ*-|g zlTp1cpJa|lj$QlXlWO28QTK5}y{;E9^y7E`01GDiJ67^iF>xq6xGJCxn|cB}dshVx zvZZy6d991Dao;x3&{Ydh%0d zVDOv%;Lf*qZpdxM*5SVRQ`69jw9tyfSiQRNrRK{B#5b~FENDm@2PfC-Rb!c~&Yz;m zAXkz&_C#Xf0)M^R73jLKS+ors!uB@IlkQiQ<6x2v#AIXB9c!J{G?<^pk$=lWrpK@b zJvNU1^dgh7i{eI(=f*91ma@kMygpH$Md6)BFbJwTK7}@;;j8s%KRlYvhVM6j1b4yazfOJ=e%1P8X_neA zh;9UO7}a;Tb6=XP9C7$hO^ke#+)RFMoM(!P*H4yhY)1gvmdn#WbbI>(0 zFqC4W4S|*E`PO~-xP2bS%aOj=ryCpYoO6Ob#d2ZtSW?xUQ^u#U?z%^ebq2Un(qVDC zc6)kPvFV;ZOPeDXnhOrZ<2CU0uB)i6l9FCRcn%<38Rs^9v0ON}EuZVMfiq)kc z2IwovbeoSp;uhl|<2AHtHw&A}X&*so7ozSRk__>c{41#1v8fW{SUs3oX=gUvtr{3o|{+05NhprRt2YxVl z#eFT{$(8NZ3EDBo_*P1urgdhISej*pS%UQ$9+<2+wb(5#kf{JRaslV*R$gY3*xR|o z0z&7Y7301px4yBNr$#>8YQ3G#byCOCV^X)&EDpj775t5SckxTZ`*jI#t%9$Amx}aH z4S2zVJ)D_b4tIAof#QaW@ei51XL2#u*Xdmp;mQ~4cwLU6d1%V2^&;xjd1He?Ct>JzLmQrZhI@q1h9sOl7AtZw`5i=r1DQ{ z<5uhC*om{JO6m0bfY9!61`i&hu$4O&YurR`6sqz_{#D|BHq+YP7m)@BJuBK$P|&#t zuidUA#kPw!mRs)}9MXhz6*sBzrmj$j8?a7BE18wb?J@v%-~-aTO=c@}yqQ49ryUJ* zeove7$^Zp;&-AYsojRdPFi6@9V0aXH5wdQ(XpsK=+ZTzeTZdn@LQj2z>(f0c9* z-|qhababvVWMyzc8SH(&m2TGSZ_2~vIOdar1tX)mL2$i>Mk}0~N&Y3r0|vLExKJ=T z$m80stYTHefz#<(UdEQW#weEAz;8|uOxCEoNmK^KXkOVP3=#U~xyhku3FjEcr~(WRE!lPD{fd2a(&_fif`Xr%KA4?fI9WIr^F&*@4~ zH{Af#4TOEe{{YugdC7y3f;jZ0U@Kf(B#DqYs(we6{3Lty;;xx-x3xQTQYqYc>F-IP zC~p9TJpmO?^3FL_us+p!(lgxg#sI3s1Wr0Kk2NQ6TTRzgemyw?0pB#jMPdLB_ zwms{9bXh?KKqHL%3c`{XgMhglay=@9POgvgj;GUsRHnD`*t+%gsKo5NrZ^zgs9(+? z5J&W>8A3P1dWEeR-C8`8$K^!UVa63eCbP@51g>yLQQQ9j)j?^JTnslnj<~80xya`~ zm0A)81RUenwrQmS`tIWfiw*2n!8iv8pvdC_n7}Rw9Cpnv2nA2e@BFC?W2pf8j}k(#ygC6ugnkA2UyGI zS|o~nD$b!F+ARW+^L91O>2jMZm$I1UdW`XprFE{LM6I3=27%n0)=kBO0%SD@alSOQ?Cyi?IYY*Q(Va$>rD=h?ozJBJARd!=KT2w ztv~GoScx2;;>~9}6eR8WPhr}nM4`9QzBeerHD1o_ugNZW{A$p3VUBuMWaz5F!Nw}A zE04JbM-B!>MS@eF8~iHTx0x5P>5p2XKX)d^<2^o=RYSnbJO}(T&0s*zLtm#a<1ksLgXA`BI&{8bEAaCsUFS zQHssqyBPb!gIbZXod7*6BJMA;xR^FmxS;`}IaSU*#ZbA5KlR9PM_;8)1fF2v=RG|s zmjDF^83%!nN)Qy1T&_JoO0nmio4bxGyhtX=qucY2gyZ}v5S(E3 z?dip2QCc|5;jz!9SdJ*XNeLfAPYr&_f!+?&_7F;wRHCCKP| zcH*Ul@-`ly%7GN;UBF4f$KgzW-!Gu4$q6Y_-`CQrZ1Uy<_*=CARDhVL+DFNn(AcQk zM@AfbRE+|%WC4Lt$U`Vj>(knR1IQ|R&{y|(Ju%X&$0wKwVe^WztV-?2Bi4X1oH9Ab zO0{lJ-RdfN7joc_r8X7AW4!=t!n>pTVxw@&^A4-&=}R2A;}tFgjl=%{)rtV2IKf$0 zj+|8MBCuajIj1rWj1NQ7sPhz|J2e0-<3BI2KbLCESqIFmh3)xP!l--$-=$^WLFF)% zbUbFZi!zi%hbr9kt$60#p?YGml1?`N0QITAXfTkzgB5x*6s@_|+nvKAq`HTC0)S?) z?XGv9l=@dhlBAGx&!PVS3c;>ZWbTX?wplp?kVPheiJY4u3P^ zv2(}c=Zc@&e}_-N;`~{A;T>n~7t4QfqDO0({>I?Dv%ky&7wgYc+PD7zX3vLrUl2TV zVEUTJ~!v6qrHY2Y-m4*_7#8*q9*NUqgJui22=xd9+T`R)c zh0_!%FPCp_kjfFGWEcd2*b3)#8#~+kYmHpVZ!~&!ke+K~otimS8vvZ+_l!SEiY0Ac z!ud4m5w2`*BbBYb&GMMBl1V-B`PBNJv1c;~uJubTE-$jH6oMiNl#UgE>JQz*Rc+moqc$JVUNSXK$&&8rs`KadxN+383?QqRR%{XMo&x7{yt+)_g6acs}Cu zNxHUzJF;26)SLduu*dtSMeIDx#(gtf8{29+#l5}IPqW8=aU9^<%0zbCP5aqg#CkU)r=Y1kIig=)>6$N#t{&f5wtYiZ%qjw0hr^xG^1nME{OV5) zMHG<5;`M+SR{sD{y8CXEhCvmbzml>|7gx>)7~;I*`%=_y^lSSaKGiRuOVMqXdy7Nl z&XeEBOH8TqgxG%Z>OsX|qU79RrN7{-eg6RP#))?x_BR@Sp?Rxli*pOu_+iAhy3o!| z(IEhSpS&Nas~5fze+zhTQZYq!VS5&hW2RZ$L;-?EyzR4-wfY`AS4D5F{{U%e`n|55 zedpapeWYn|Y1)_(r|x#UqB;BfTb{VVqUXgLjh3Me$M5w0OH}bRcCf9&iLFF7qvnVa zl~EoGt!XNg*?(IG#qDlA3t3MS>H3|q({29CrRgzWS}yi$m=hpvPH^noPaQ@n+OCbL zS@?U!`tF3bnxk6UTIp})AN0&^0j0xz!ya~!IId;9OJJIeZK%ll9;2`LqIo8{w;SP} zD_p49c?tt4Z*EOc(yy-|vDR(8L471Qn%=u2$#bTGA-;uA&k+M5e{`XSI@c$%m6g1| zPxAi&fNiC&&fmlLBU1Zawwx;UE%#Q z=Y+BF-0gj#UXW!-1z%QCCZ-v^zUJEmBnf08Y1$qc-jj$bT_TbYh!L>HdH4;!fKb*1EQt zr^(?BGeEhYM_I0}brrC>`Qk7lu!>J-BML`gYc9s?!?WmKCe<_u&VzZbYJqg6o0Xg# zEyPcs`DeHm71?;F!WNzt*WkT{lT+~L_AHkn!>e9e%F*IgO!5MpHY>>d9q{*Ab?}C{ zp~$zgrQuJo-nY%?C@ho4tauU*52kB)we0!g#+rMcnRl)0dPj^e^{dNUjb1MV{hCxZ z(iO0cb_~AJ#!o^q+N*fu#DDOXT4)hT5L+E{ToG{V#9|g#3i5V~itp#c68S-V^aG{vH0x)gjR(wXk_E?Gta3F0G@) zQaKz9kCwdtR;yl1(B1qx7#a1;u>*qtC(in{?>N3JJ&;V zt9Wn4dXK~Z0ESwp+UCE~$-ce3xL+-zcV2Qh`9^nF%KCliI&PNekEh;hTBOrYbs#No za{zwW;O!&j_OG^dT{lA3J}umMg6OsYw^HJ$t%i9~V`H|_OW;(S)O*82Ydg*+%OnY2>~f9)H0 zDzYkIvdRZiho*X0u(yV;FFYmTS^O<)VPP(>er3M0z4?)T&P&^2_18r1cj&_cQv^70aOQG=J!n56C`rc1I8;fZ170h7rvH{Z`rlizv{3CJTJ4;^< z*j#CmUhBqa>~8akt+!{8-GS&mF;}$~(i`IS?z!Qs$YQwDbYf1QDES4#t|V3d?pLNO zG>xThhfAnU;Ax=vi{gm%yPF&NM0U`#5Al&8rPQ{6i;@U?)Ax;6?+Mt8sv-rcu zI$wfxmxdiDPqmVH679Uph^8x(5JT=Wky9weLELfEq0=t9x~IjhKTL*nv(>Eha#>>_ z+ufqZSvL{Tp7rILO^=8)?*{mfR5o|BHn8)g(M|rLqhrsP{_kq${41eq+Af{rpBA>F zmj_2PK(I0qG;!z47-P;r91hj!+Q*Aw)qWXxU&1#N&m>xf%yPwZZrHd`yht1Y!s4<@ z$s}88{3R>D2s_z$Kf@X<2;=>H)|b+4Y>)_$WAA-EYuEe_X)f&70sasq_`ev z9eA%n_=&0BYAN9_0*!XwDPGzM+jKw+fuENEebPErIkatd$HN*w!xpyFY~|Iq>N2g= zfuf02{H%kf=Juy)-V?R)7sNegOM93mvGD$$i1A8r;Gp@o9?B0QvX!rLmfWo9yb^Ui zTT|C`>%D#yeF`~JEjUICNT@zxyRh`deBGhw`gi;xek<3tJArd(Wb&d(2HEW47LKC!05aL&Tk^I-Wg*^h8n0=#SD=7Xqd9vjm%yG>5g^)-99l54wY zu!wLlxb8hFAftAfPf2KM>X(`gkHEVP2HJTZ?pxKK!ICV^F^PunlN|+f-Z1!$b*Xrx z!@d``c%Q=Bf|AGL){Eh@ug7fv0NKiRw0>|d>&ZoK6u7T7 zn?suC;-85nQxUSUxbkkd$NrHTuLYxX_dx54^Q%#dI;qsOj)KbiJ$vFNr+ImGrfi1X zi4~N6qTSSUu=cMe@N9Orc77<0EZ~<>x`uBi`CBG!%y>S9maOTP&7pt7Pp*iDuM`sf zp59nk5A~c6F#C@5r^7mphl6x|J`FXYms!3J_V&|{Hb}w9!{@h3^QQ|d9)&4b3T#4?@YMU;ZbjI0(qNSLyfL*dgHBXwZ+Bnjr5%}Q-bi|r9SyJvyp>*c5SPX?*U;mgfC#hSLU za6H>Iwzz2{W4b>qj4O^h@zT8~PVmjldd|Dza}Ax}*u>2R{8H|iA^Bqr2Ll4U`$nGP z-@&@(v7y}Dt>I|mxrXsP<-s{S2X*J5u1bZ(;dCt$j z9sKq>oRBOpJ*!LP$jEv+06As+E12=+g6m!{(zKgPmxk2A6NHs=jU0S|ybc(8SD{I- zcyq*FG&+8vX{TzMb+bO?kY?^6o`?In>?_S+u$t#s)UIsJ!rI!&G}h5E-3mqt!Bf;= zcIjBbKBkh~xnM5uyiP*g{gMQUvoT=k=@`cPwgm6_ zuzpkgL%6BDEdxd2oljrW(JgLXQ4yL2^S6%w04eXDxUCIAX4gDDX<>b7{iCT#zISUz zOKD24LU|Y?(x<6wV~x};^*bK~+qI43-hXOM=J{5rkeI^o2n=zbP-;tvG^^{41+{yH zL2ZGkMw0nXIuJq+UMoi1L>BW|XCE& z8whvE8Zq{m!VChZy*V+SXK86^tNc$$Ev9L0APmtuM*B-o4;ajHC^}TXKEBR1F>KMnhWv~rU0n~)Y#SJ0e( z6s4o`124rI1*|?2w!YIY+Tdzswzax#d=7x8=~(*ak)|N<{)=}T$1F;Y2pp1nf;}r& zPJ5TN)3iwgB#Vg?ErJQ}f&8hyIlg^M#}>f`WwePz#drabe7se|`9$AiKFh)OF z_W~;sfOFRs+0Pu&c&VfEnO4%=fC0(ja0#v#?Fw`|+l#%;=S&hYpPP=fu4tK=abaru zDqBYu*S?!9#ODEyIH`3#Gwho9(|pXuZn4R79BYBthuhF zlT^RBJjWWUB%OI32jNa2ypD3`N`~sgQq(?SBuqm308gjVslzOmiE6NnNK_mF!5FT} zWJt7mEhcZC?Q)@g4@%6`Y>(RDXaL)33U0veMk=KQ&?~J`rK5O~-sUHc=Eorej`u*ldnrn%VyBbTeJkqUhkhrGVOD>;(2q*^pk03wlAw`;>6+_2J>v;%FFdJS zjfHcL0Tt#~z{JFgOGZ4>0coHGx(cjb|JTE z7a#%i918l|Ox9BCPGv3#3-aQ;NzmnXX!IjA)`!8r7p!H8WrtzloOZ7j@RhB~95^{s z!1S-NekkbT^(8wv#zlE=hP)gC40Qo1C#fLE115Wtj8o{918Q4F7!HGM3L8MmqIy){*A$}p!_YYNpBto3W728 z74pV|slh7k4g+V8!o7aSP-{y}t8;*VO4ZP^wT?$yQ|U{6dKQr62|U5aJuzJFt9=dF zG052Cx9MIR;r{>{B5I=Eb^w;(dV^gDh%eeXA-RFUi2h#HlB3JHs*?b%J3U(^}3_zyAQLyei3D`V2mb!UgkCD;~goD>mm& z^1g64dRDq^zzu`jK9wshXA8SI9lfiX_Bw2E{(D0v*+u~Qb5h}t&Vzwkx0-2YG7p$m zdADnEwXjt3J*#L*7)mV++|mx+c=p9a$a9g8pzT-oZ`+J?`~^b5C?jq-#s{~hXqlaa zhGt#|{{UE5MP+uZHopM(9jlpSAOrk8F;Yb&u@FbysFX^Ktaim#K%n$I1B%PMwd~j@ zrh8(YWqLm2^gXLos>r82fzyh^;bxCh&tZJS8f3$@JFXg%W2z&TGqRa zGHx7ub*yP3$F4y16mp5a!zG=L8(}!5idJE?{uCrU5(gfYcw3?Qhab|DT4)HYBxP)# z1vXg}uc$R|$j|cYS@K5F<(HxB?MTrOygA%C0~}_kN{i9{o|SmaWBE^dj#WoZ-h)3% z26OXT54{llMMV%~Voz^Q!nS^3xL$*i+lr%c2|v6C9^SM8I?2MG8z5l%R5v!>dU3~W z_N?zb$HC!8BOR+kIX4At=OcskpbSZo?HG)Fq+=i9PljmOf!YTEZS<{~BaY>9w+&q6 z*3w%_dB7PU;-_G_Zf&iCpI$1XWT68Y6)N2B#AFQj_os;WFU$CQ5l9U4g#tMM8KncF z`~0L;nU&vz&wP7TWma4$ZK}6sO8+N>OYlH znFm9R^NMge!tLks1XDKxKuKc3mnaA$ABWPmtnWp|va%l4 z1f*SAmU0*YjCI9wx+VCEggOBN6N2eCjwK;9S<&*RsIrgtrH%TNOy+wKMw{Bu_br9hW zLB(7&&{Y>yYDIRbC>bSB2B*51bxdtOmB~ea6!zjzk(JF) zw)uEcIi}88kTUn`DukPr@O^(O+p)8#)jZZo?HI_4;jT+vKTEBj-0Q(S2pI(=Ldkm;;hNR5+_<>7FYoUarjnx z<|#(*gY?C1%*nA>amR03z?_`q&{R==eW6v8y;W0{9XO~~UEd~nsdkZt1b-?>qI-F; zc4YPK-lM#PG4nvE5ANJIAXcv^rVJNILxA&Y+AG+mV1rcY9%Vn{bG;lUr30RHR@ zb*pm2x-je5aw>xybmR(13UZQP2d8RC56|WFqD3k}JolzHPt3hXYHa~5{{T1*)Q{H{ zT}YWu;sIK^n3VzR>yJvOcMp`}RO#u`kQOZ_LctFn#-X}|qh)`URZqSccCBP@H971k zD{~a4(j^~5jxkpT7;cZD>rh<&>4+nSs@B(DT;WgLZYlDTNh&g(stHOBtBfDgvLdxr zeDtkbZJuK885#Ogp5uzLu{^NL5I0J{COTGa%WqDV(Y4Ty7mfK=917<|E%!$t(^gDP zXmXQ8LuR@SBT({}%8-32^4bBN!>3BiaAIMR?_2X+$CAfMs9DE6CAj2qUdj78cuMX~ zZ&2}M%D-mPpmevBa9{M@o?t=mv-~T>pt&=^6}cmz9e$Pi1Mug<78+-PG@lA;H%p^l z%8+Xhc<}BYYb5!W`%X8xOaMLW^dAl~WsJ;~TC3fruk-2sc^?eIW-e_8cI$pbRWFxt^jw2PjtTH~-I6Fga89jQ} z%>Mvlj^^HJwS6(+zcMU#mwJ2QNOCjgAoTRbe#x5R9A(Il$*^=6Dc}ChUke9|JbR^E z-DxH->}zp*cwjhCcYLv*UD&VGKkV=ADet_9Mjr^VnFL`(f55r->0WpHI`}V4_*>w( zwQWjA7k93*-A{7gJem87eE=PWZ|eU5>Dv8_*FIgc&2uA30o;k@vtdr}LbdPYcu7-* z-j_Ta&l4Hcve_MdzlSwgbjfb?dwbhiCk}38NtQ$VzPUb_uQ`_H^If$suU@sFhVB-% zxDW+Wjy`SNbAY^kE3>lkB156vX%R8=!66n8S(!Sjt#52dESVmrJ8H`eX;wE$E zMt<=n^XXjfo8jBJv>Oi<$#HEYS}puBh=PR|1~|7uSf5;!YVLKIG?*@>(t(oc7G_DW ztah1_+TwIfI-VI>7mhnsQK4D3g?SExZ3eXjuxb~^dx=7R&lre{hVCNr7O0}Su z^|@fNRleGZ<# z=@(YksP+s57tq*4n~3fJ{>iUA)YWJ4bR~K3qn|Xbv$8~Kqd4NrBf!!ig z{5w=h$5EQd({833g`T%`^4WQp8lI;ft7pxW=&k~Jk*D1U0H0%u&NTIP8rSsGL!v8U zO&3Dbwao`b)%3|fwIUkMqknT@aft4sh9qF3Jm8Y6h5Cw*z;jtisQ6`U?`24Bpug1S z(=`#7b2dapN$%0*bK4cIXQ{<>*V=`~muaX;X{Bm6l3!S#Dtk$;uw6W}g27H1eXED@ z4bAnvtgWPM)}Hm!#HOuxdVhZ~38 zK7)$qd@(%U64Ld_Z}llJ;n4Ibp_b7=k5RLEIc<%{37x~&HI1p?CaI|2-sm!|?Y4vA z=}-1$=m~g|&IaHgvlE5{b*@>d%BK1+_&?@>tL!IUNS0%Jd`u>ro#P|A#_Lh_4?-6RcK(w4|v0b3Yh>t59c ziEAy!i>bw91KIdvNNd@(aUjHzOBo6RFY(5IO7TDK+3dV0s>!B8mQnb_QE+Xq+z1sJ z@@0o38AFmis@H`swaH}hex(F$YWDF*YSylCWpNs&8)^HQaq|pTGUjVd3Q$cPm)&F?b|0;OC`S@gKp@4`}PJ>l!u8numwUhAAPm`L34Q z@pmpde(4 z_KRUX#igx`zAcqmS~2FwBzeOz7~z2AQk!bcZ`=Cv9AkY9-vK_0qhEM?;m)Vw%Zs(Q z&Eh@!?V1>meW$YyK&kaTPf>{cMAr1X(|x5frK~cD{{VX&4tDHcLmBj|dbf|PweO4i z72daRHJ#p*XNfN)QX;rTAfY(ms|=27sqvK;5h3#Bc3!QHmFmr9HnrkU9^X$p*=kW~Nd>u93k=&w?%Sp^>VHb} z4-==vKLStT{{RBn$!lbFrnkJ35_1V&4o4U+4{ECr?*T)%GkqOmn1ca;84{2a23UoNQar=X_DDY4?5+*G{2r zYh$eIm+5t98oHFshYqpB!o9Dg3L<=DfJ@w}-rc;z^^jbhx>a%G&B6Hw>HsC#MzV`aZQT ztv`%>V`=uwTbaz3)^{7fcR4|{FQCn2_>Fas4174#v>V+rW}n1UB-2~TAoAxy{8|3? zYn9ToxvQ4OpZ124b>ZI#=&$w*3;Ax;$YVH);@tJ=)w^Q7568soUO3P+Z4PToduSdg zt{|5g%y=P`WB7o;uOIP0graX1_%BD$wBNFofJrn`He|PvIVAz>$4cqE9R{VZ_}^6V zD_O&J7Mjm*_SqX`z$QXvdJUuu(`jDeyEd-;MXBBVP1ZGgI4yq5qCyp>U83PcLnCfE z03Nl#>)P8~_-DmFFx4cthVR6Ce#(###UG-F#~E?fht?j`!M-Har_dH1X71_HFO|Vd zo!==;gTN!TWNV%nu-1MD*<5K_QHJi$Wn1VX;J>4fTvt5p)Y&bLZ&Wg9{{RiFG-xbD zQ|ePA%^Y|hbb0K3MOyK<+OF@sIj7p`H;WyuuxNhH#ah{k8S^pFcLKT%W<3i}(mXHW z&3fAD@8XgPVlktB>Ng{Be@u0zUF-1Qd~;~5ucS!hjY6br`>TlJPrII(t{K~+I^%Xz zzSV6t4L-0PKE#;Q!eDgJ~9IpIe0yC90uj6ete+T%N zLA0`xNu!<^%yQg(%W!1s8$HEvN;(}0Sk>08XS}%36{CTo(}WEETkLJlHx^Z{L8V<^ z;zY7Mvsy#tzns!9?%XFCQ~m5#hL37IPw^J+eMwf`?P7c|Z0sn!0y=E3JcCTUI$p7@ z%c!#(IrgZXPSo6f@?-darE{dMV`USq(mX6@w$ydqHaiRWt#^4BcE@eNZ|+O$p4H`0 zUtZ{1E#<|7%V@JmON*1dC~l!~#@}l64IM9RJP|B6R_k{ju`vccI$tf^DdCf*4Pp47 zONU3(^xqCd&uui0vw3%i%wQP($M-dz?V+NQM@RP9v_FM5O{GaGy1$gk{*I%DW5cdS zKMLjbYkR9*V@bCvjdLVXd4@LF``fAG*SN1m@k;1%e`8t6Z8S@=FrQ_U5yK*pkjv8_ zL0oRTG&A__Yn?XUAT7XX-JdcmDCC9otl(UphSJJ+-_z#q4RiK-jm74rb*bIX&jdLnMIOdk81&uWHQef+AcouF z?ZwsWyq{=%TiaZ)502ol?deZzAvJT)yftZ$2O{aJxM~Pz#4aLWp$;$v7^e6dOSABBYwzsEfntDeR zGDY(%0N62(gVKQ~Z4A2`%N--emX^0xQM#K{Ah+L%y;rs=H2Cgsd`+!tD-=wYu}Sl6 z#Ee^@$8qUYH7m=D?N;V#p=A3M9!j_aJD0evdt0dNye)IAMR6aPhZ?=HYQXWF)Ib!%(QR`XF% z+hMg3g&gPUis!GIJ3SH=WORFp6sTdalblnGdK9!QYc|otscCk|cIGgy52(dFIZN$I zO~JDk+;$k^v-R7LKV4ba@oy3Wdjn6JDIw8rZ_aT%fk7XoU95`cGb0P+LlFu?vB$Mi z)il+T?dOg~%P9kn)u{H8CH0(Be2l8C$j3Ea=|e>=#CR-ZVT{l#Xl8w#5n+wGoMaDg zN~3pZ%*`}88(SQn)wc+aRfV@N8QdvngJccm;GleQQsOwWD-Byv(;ORliV&l}74}EM zPmafAIzF)|S5PopxanUQ%@}26E66}|Qt6E(SFte2E5?0=apG{1nmTCKag~qOId1Ls zyK^j9e=~px?0=3$oAC`+Q?j=*|Xo_rOVwM!V%XWRlN-u(rASq70DFcPPz>(ag} zFjjud_bKgkcuujVM$t1W;O+iZ^N)(<`#E7D04T?&(!QoGFBa-+X6+2g14~XT9%v5ZsU4ean{Z;i7%k|jvKD4?XyAOyS4N))QU`idNA3?f0 zil;%;@m@zItsHRJ?I$}q1Jb&GW5dRBGTwz5kUq<{zT`&XVmxXSxk3jn}mbf$f#dw^SR z3iQvXVOhLdTON#XcHH!T?MSE3J6Ev&wajbUiIZqX8&`q!tSE2aZ_WFnKJXPzcUeOa ze(2~$a#qE*td5#kWS!2FNx8?(+a3GXZT7~Qqys8XN~HzDtYC-eK7dloGO`y;ZpU2l z#d+?f)sD3rJqml-dF&1xy5S33P~S1sy9jH90SK+ty+Bu zaWh^bybwUo6rnb#$QbEbF^J{)Tc1j=It0m8>Dw4JN=AID#c2Ll+L`qBt@tk;07o1O z<`zw@k_g~^D^@u-_2A>BCW=QxCzQ%gat(9WcB`G;sz~RO76UbTW{y?C9e+v}x(ysH z%w{JHpa3|ny*}g!%Da50^s5(kisK++vy5Iz-N63<3e_}cYZvbQ#=M5T8g zqpm-~u^!Mm_4TKe1MZ%Kze)hcmftDIw@xa$ z!ph$_@bEF#wI)HsuRuQo_*5S*4nQLnZU=WyOb(n1 zr!WAGzbWbsSSJI5PCL|i$p`Nb)~z8GN6K;sPQ$J#&f{U**l;`kRQVM{Zcc`(J{7U} zao(5^W838e9>SV1paZn_=lRs69Ot*CK){2^0DU;c0Du40@{3nVt+3n%7!B!BLvn20 z;*+BcE)8V(dhF-y$DQ7tt4CY4k{E^BE>w}YdROL~GxW4w({5Ndl)wcf=CZYGHiG4D z;UgZ^Qr_u+Rztx!$F*(F;^N$|TrUUwDp<>Qw}Rp%V}gE|rfLfxmz?8{IO4heGH)r` zCLhwaE?J%v&M+w;Dp_9v8$j6{{I!*;M#C2$#p~=U809cb8>c-g<@xiW0eg-IwQiP# zw_z-=a;kGh>WhfT&jfU?awm8s0kQ|RboS}yaNg84Z9{X*V{>JyOKl-OT;~JOH??$D z5P5Bv?rI+xX%amBu?TWOL2ID#O$4Z9s42{_9>rAK>Vg^Y{kGar*jFY`YxD06y6G$LUi><}aM%ujg2^w6^n*-3i5B zhG8m=-7|_DRfMHxbs(gmIL9L#R1(MKxE)7d!_u>@UE+P2;QCgw6EuES0Ab#^dJ63Ya$~N)2c;}4OSpmCtqFBiTuTN^{(;SY`YwipICnwsbakj-G z;bnOCF~bg(Q6&s^F~J=v2k$sM9DW9)#{U3fJ5;1Hc?)g%dWxVWV zc-vGJfOXt)wzei^njyCUo)6(biY6u43jQXjq1xEbJ*wh9%%gSfSr;MlT@F5-jcFZ> zrJ=6OWIzr$?N=aFbpQdlcB~tD3m_-y`Bm7Y!OHfe#EUm@k`6J)P%ECffVvh{o7#q0asuv3;jn9O>7}Wez~C z#hOj7iD{|cUPms2e{_Auh8 ztU1Qe{{Si=18CWRSdO*&RqzMHcRvg~1!b=Ik|osjF97yH3BM9f)2d9|q7m|_<2VDL zucD)emM0RAoyFHwC_glM_OYj2-0B*Qs>IC&rLwyy#?mp#P(3QO?Y6HDl>^)v{|# zP^YN$h^1#J3*&MV6z)IYG^D~s7K zBZy1qPX)?uhDC+GP(3hIX1!YG+r$!02ihf!i5@n&w!dK!c)K#UUPnsdwcRfEBIdy^ zt=3t{cy43!?a~{hyCU+K%@C@n4SWxA5g*xcAK62_3LPRk@m zA8?cSR{^7G`qsOD1a?v-+?W1UwCQR7jK#LS!z9D7W%)^7LE7E67; z_ep#-QY1n&EQ7Dh&*6&U+g{dfFYPtx+ABE4$+sH3XXjV8v>0h&1EzcZD}pz)xh?&F zUPiVvbq^M#&7x^PZ#MUV^&9zO)MEr2mHpHRU;Cmw$N5)d;r&O$8Xk)+j11a7ryqs} zE!=t9X}P;|i1I-jm<_yRwRz^XqiQ}O&AEc#Seh#%_NZiw%DFFmver}CjRVDB*iyopcCy|f zoX8yswYZKTNGLilY<+3oG4~esHBRME7wT)Q$Ktz>Ek(WE{f33c)IAwiX(up2N@chCHU2E(rv-(^M@qy(arliexf)O8ZjR zHh!&{EJC$YfIqGA^bn%4R$Etyq8JS;M3mjCI0|S&cIBK+!)E{9Ytkd8`!ly8ht?_ z@gIluj}9@GKonev=3kvQbp;P1x!)Vy-f5F~nKj8*K-K(5tEIP@31+pL-L|9PbOfLj z-?G`*$Ky?MS){VmbjxUMbnB>(`YqF{fJQ#)GAY3x)rw7f()oSJRv=qFKT*&;4P|X% zCcU7nw{thzFqbx4atX$AL5z|GU-0z0R+-@0d_Qbt@eZG=_>vT~iC=7=Wkv-^JQBaa z-%5{Iw9!AcW72Q#XVWgN{5T%pP=xHaGEOrQAaU5QBB|M1YUwA#uMO)Vbh$%Ib!&fY zp^`-Z0G@eXIBYS^4%#L)qCGlK0w$84F4ufJsoUS#+t@UbX=7=)jwb|73CPIuxWKO{ zlg2X-4tP&Umd*8zJtd0bH@e52YvnJ@i{BECg1VhX>VFMr8m6?dCYPyrk5+3zsk^kR zBQMDz^2Y)-Tme1it{fRXu92+3B3;k(D~^rp#Z$P{bw3dJ`^1{^#r7M^9SI_iMIm9hmNfjb!1Syy zr!z&yF69pgYxX+49yHawaj7J_cA)0o8;D2m;$g%mj^hAvR{TeyXfJ*6>q4@5bv-%I z++TU0G||nUn75!KoL2+lojx5O!yXs5w9?)D8Ri z6^HKGzu6rt%I$RD7~X0g4~G7Emfk>@P+dZ~Nj8DG2ptIQaZ>0S{nTC@OBJ*EyiD$r zi^nD@P@Y&bblZ%9+P;YRZ>e~fO7UO(Bk?tt*)$R6i#agTy2%kcq0jIUO0(pJil-fP zEO@g^@b`Gj(yF9&Ov7aDcGl|HL4 z?sW*{UDr*!KQfNYJ6E7u>mDY%_;=$CR?AQ_=ulnCE;QdS=kjKAmE1qOURAC5e@2JF znjeSsEgDOi^%%v>(chhgOl_5D%X6G@#bZu7a=wKnW_qR6c77wa@K=QFwJTjB?IIUb z$dT_$rQogr=tt>XVbwJmej#|G`fW*N{>QeJ7fy8j)QF402cXVs_lGYoYAx07rQSL5HSuk4o`-eHrxc z6L>emny#=N4$G*nVqe|Klftt0BE7@J@oHW#_^-0s^X$!~Td$c44kt0M-Ur-P5{aap z+Gw|=>fRjIJbS4<#jJ+=Pqp%`bxa?#sYJjYgSKm&@KvqOpW!bSYfEP=x`e)By|jD_ zg?=}p{uI{8Z6M4}~2~s?!CvN2QBA(Vdu9M(2@jr&VO>p*icL{AX zFg|Qb-3LFz+cnD5S{p(uar*GnH1CBPb+xUn$C_`qU)z>rD(*Zm9k{EymaB85$)R{# zPSoz(NxHR3+8cO$+ol1sV|;YSucck_{+J@X@V|$@whCI^#*>@vftpO&19y#9cPiK+-f#Jv7(^*BfS#L&R)&!y&Gp#;42Cd_Sko z(cGA>BKu9eZHS!@Lm2LRS9RlW1lah;SkN@vZSdJz#kw^^hKX=DDf(i$EN>Q~dGuH5 z;%^rCUq*RlBGG#vl|aGT=N$)Xr{epqXT?4wx{6I=37188`#pjw45+{Db|6;Q!~GHE z@%FBe`KY>7Zc$47ue4)>-!;?tO4%*EHLvQ|X42|eW^r$Gv_`>{XUmZFIq6(=BNZcV zbI5!z7QYpqw|E;W>5POTn6ktu%jW^Q2t7ScSk& z#~*msZChhR_BnfrptkT-_Rr=qp6@^JCg5%~r z3GeMtYC2@oeVr$kH#b;ix4AoHIXJ=h^sc*Abhh!noujK@#|&stpewWt_4cPFW{P?l z`fc{PeXZH}MtMYW$G7()AYtHi+(+e2O%n278P7bf@qLjQh7ZaL^y$;mwQh>u_@-N} z1W5y0M$GI;E0pxCttVQ$yRp`<(MOzPC`dcE=A%$b`jY8dFq=l#ZZC{+&hNfAX38+{ z^rzcdSV7>M3ms`+g57N3jeOB50S#fuG(rwe!g$@3#Ffam&@*9m(c%j!Xon;YCafN(igVYadEWyU) z_PTAP9vrt;m|K5n%FzbKatYvV_O6iVkf(|*G>t$l;#k`d3k)Fzcq{a-4_bz2u<-rY z%vLv6;PHd%E4|XMwHwb8UOliTFS29lflHN+HrVpZ8(6L4)t}1qJeO^pZBR4E9@Uwu zoBdkzMz++5T$CZY4VmEn71^{`YocCW1}J2ljo2KIKq{T}q>^hoUY&jdFOsaQjALly zpGvWu)~ljhMXKN2zURVn7w-B7{{ZV&TT08}w9{CFx_#(C=%bqJzR~AcYEwv5`ETWM z##C|oRz9VsHvJ<{js8i|Sx!0=$rQl5Yh*QzW=5LL3Hq!*JLZAx~O4S+-ksKsFE?x}O8r(mqF{?P0{F-bC7<)LV+GaNG^3Ha)dJOjbDwUK873j8{VMig4LI={B zJl#*Neh2(hxA6V!b~mg9L;w$A?O&r7{vy*geL6dv36X;+BxHJauf*XKTSl^5lG|Gu z91)-CUH654A^4la%o57-Ko@}5qEW)c!1Lx}=M1a}UoZa_V@^aCcX;-i0jRGUPDrp49T}wp3-! zA~6`HHDq(TJW^X~E&I=6;^j|DhRrwBOEdPE9n$ej~VkV5W0S+a1vOhRoSPExBGKB`A62h%fl10 zBF-OhI1Pi`b^NQxB8ttX!USk7-A%_C^JeLR+aub#pABByY4^{h!6y7JTXz_CB$fQD z%FZy{)UJs67d_`tWieUU%G3x)%;9S+^?EcV;=SM9+j)Lu?KcCeq0~B zinp!!o#jMjamF$;UkN&@D#zKZFEi6)yVZ5@@k&X{V*2RR_;1JffRH#rv#zrtlrAYjX=Lr#h%zb#xR$HOF=3l+WDe=5zGaoD64OJ2HImyrIO2BKW zMoezUe0If7>A-M7$MULCD`020Po-RD;9&8<6&3=tsvC}r-l?i$OpZR4rG@?;hpkqU z9Fc%Q{VJ0KM&5n`w;r9pDw<3>=V<4O!r$d^`M~~_p%kHj+J71w0vs|NsNhtJ%Q)KK zc>2|nt0s2+K9x<-BN5xynqsj^OMG&ET8KzfwIw+^=p8SCU2}<<4tPRASlJ$2cGmMtW^E6xPb$GW7Hn%-UbH zXKbs<@6)Aq*7Cz523%u~1w&Rei%jQbiJ|339^cZR1@kEK!Ry+#Zf!#Yjs`y?T;%Xc z0}?sF;;l%DMWaeZNmTb8>n=olaq^N==~7!<9#r-8tMed|K00HkrBNnSS6Cy`uLq63 zQPBQC)&$YKE?9G(*um-36p&rEdCm`GKqFQ_815^Q20pb;X#QM`bozc3eG0m6LDRSN zraE8@jDJt90x=cLE$!*)TF_6($Ki^tGH)BOIOFM6;KDb`-1>H;JDs(?%DMpKpy^q+ zQyhT2ZK~Gt@<`9qx8YJsgr-O2deqq2Jqi*&{{T$mgZ%|Uj-%xsojoeN%uth$yV9sh zGv{&nN3|9e(l**4=XTIQ^z16L#G$dq&ZiYpJN<_w=Nx_&ppvBPl*VzNaZ1c-re#YK zo<|tz{uQ3^FzMU1bTh$^x(#K@g9V%bds7P-?io%-032i1p<)nV9D$ApYO^eCvF=mQ zbRXx6&sJfzMhX10=~hUxJ_sYPaf-8TGLenA?Z-;20Asv$Bk-doer)43z?$aSf|D0R z*l}6nLm4CQ52hyER(k)V5hYKMFuqVyuXJo)4!LT&l0idQ^FmE;;n+(wwcl ze8Yi2o`fu=PI*1LbfgDvI5|92#|M`5>DrKm2X`y${uN0LY=8gO`R-WGm8eA`{OHaz zj@9XiQtHdglLaMQaoV`a;uqR_GM}549@wki9l4mqV3U%(3jESX=}5%#9@=>=BpBFo zr`ohEt_IePxMclBTG#EqXzwHXFs^x|^6=xK;PFgC-sU;Q!hONi4|>&xK{5tYxL|N< zqax32WA@H#FH4?Srg$7<9X^y;6ErUE@J}2LGAfi4eBMhQSB`xvbR$09*yq!lp{QxY z0%$(+a(h*#4Hd3!V`Sgx4LeGojhP1njP@03&6eUFkI?XIo|PKH_h1AJ^r~n_V|yRl zZOlwK0~O?!k^cZ->rVu%RvDP_>0Ym8I?EUwW7EBI9x~F|;QLe{7hjkkr7CY;Rw|ME zNYmdN$Gf*+JtWgt?ir|R{1bdH9YS$8xE_-@aN){zEZYjinf08;H zzPC#vVSf*5!E=HRI2b%}Rv;l|1Rfi=rDw`%a^g>=k2CDoJHX(c)q3LHkd1?%Zq-6a_b%hcIH9G`sG7Ga z=Efudbp2~8J<+&5D^3?zi)H{SG0*d=Qia){PAW<*%ARCCVCp*7MADp`4i6sne%*rt zr=jckReOkranMi&YYAL;&N%1NtxXzAy#`HFNW=}EgZb6C^*i(zI2) z^~oHCsuzjX`}U}9CSHW(ieNEGx4R$?59wV+q{tH^w?5U)-bb7;$NvCYoojXEk1dWc zIH_^DtOzxj6iyjO4_J#ZfxN!i&2`rbCxo}R70AyH=lQt6l%AY{kJ7Yaa;!3cOjdO%mr6%dd=Mu5XLVv(+^kN>z+m*pYSg#I z)H`y1m4k5$#Um~-SEX`CL!w5U=#BR}W4HCH@G~oUM;md+{{UK|if@;w$m0~r$qAlv zJ9-M+LPp#~xnvv;qOn~(lk;O9ovT~SGsGBh%k5dy{_%5;oKgYy$~W>pR_3T`R$C+z zAi%9%J(ZKnem0MmtV<5?e98dJu;wg}zB>;}(eli(=Nxpb=ttP+1axkd(JF$TYIGu^ zLOBb|a}Ul36FH0C4-k<@PQLX)q#t|Ikxybfl)&@j=s00gTHNj!$IH^0 z=LS-^$YI{8#td`gvGnOd29?ZP({g7c`BOBV8&%hC#h#yR^D~TL266STWcXF^w^;ax zsz+}eY?jJ?c>v=cg1=OL7yi#$4~1;w32L5TUzy7CYv0Q9YM7PI^oil-Ijkr?NbY`V z_+$2D@s_C!bKHS!tTBvan)Rzs*)8BjYl&RsWSnBZRU+{2o2J_c!k`1E6^DG5+>L|q zucTQ<8k)6_0p^vZ)clk2AMDepSqU1&n2deX{{Ysn5Wo0O;=K}Q-3u}fG6xm=JAbD^ zD-;O4*A1!oGRo~4T~$H#9Dk8q(aLDlnv7Ajb4rw#Gw6J6;ja$KW#COF$HfiYpBNf12>6Zm3Z8+gx3v9;Gm zrKb(IQo^v|zRL$i^yj(nU!^`fjjwIANOW}%bpr_Cf;Gb|c^GcMWAd*L{hvG+rD+}; z)O=~Az+?MdEgTH^-Q~gel|aBn&p<1|Y@yNQT1CsMqRPfGPNOfM?- z#|CF#+E16FJqa|+m225`_~f>}wzYME<&9>BRUmK*_vepF(DLk|u(Z|E;8WLGyW0)C;w_(NXydok6AISlxjWDCEn#a~ zq;cvH=rG;AmWw5%Z9TQ%^CI7eU}HUbAY;U7B-CVki)Alp@$N{zbm%w(x6-{2P`q6N!oyMU z!IIF=3`1D9ljgQ#Zkx}RPZ$Fk#b)YuiD{#)+)E~zCZ(lWywIU7XzzP;PTk!G;lVwt z2tUN6U7N)6c$v~`?KN#LqMuK&7nUuFCGs%qD~0HczbDs<=lorJed29xb#JxW>g{o= zpFYYVwnT>3CRp5O1h&vshpj(Hn@5$cZK1iF!|es#>r53@)<^?nKK|<*pkvS)#s1TM z3r?|`*48V%Q%Q#Z09JiU*kKHFXUtQcxO2N6ohXGU(|3y4u6yWp-Wu^;wu9k~JN^-? zD77feSJz)`yIuD%Z5h~usA9aS_N@N^0j1ut;;T(hUf()Jr`_sTFy7j$AsdF`q8Ag(DY*k z)~9TT%z#aS6D~RZ+0O53=dBd9g5Q55RIIMd%UCR$=fl=|6VIyY(Ar$;)7V`Qw~EXN z#7)P_%6Rt`rQpacZePQCHi>S~svGTQ?$=XY^KB~IN;hK3#}(%mljz!Qo&C+j&p6Zc zVQX!yLKsOOnaYBlK~~_8O52mh`aYqi*=g5JaE+wtQmg9Ff{vbW{o1(em2MBQr6@~i zmlCC(qj};xEfzgFBhJS?OII!Aw;^< z?!HohKMa}dt_a7aZ1`Ki8j5P39hbyU6n5i6l51(84}xxBLgM-0$?<$b+D`_(ln#@3JZ{aA5Fka(`lSbu%|6Bfr(9^| zPUvli%H}idMnD~_+PovD%dB{7L`l}(%S+Pi=ex0iq}_IA5fx}aJcVJCTz88uKG|cb zYWkg_!D#wYm z&lg+#Gi^%l$_sfltzI?zZK3&ziLgA}e+-H!eUWk4z_ ztP#-ZHj`+&mxZ+0EiEo|t1B5LYdh_)JTrg^#(4yb?ld#eeR(h zx0M&mJ-WzomGvrk$EA8Usp0E=bK;Jz7Nh6KKAWbP?X?KpM;y39VrCsPjw{EtElW}G ze}jBKYkzDk?k@F(l_iLS6w17nU^pb2$!oC9-Dk%h9x`}q;pOg^KD8E=7`XFfJ6_oB z83c96#&Oc6v({m|&^50UYZ|ONoxI8Yp9Y-*?sI99qj3Xv^*Hvblgp=g*Ww?Dd{boy z_I|BprlQ4eapg^Ni_Qq+=32pm;j|qSL((syi^E#A)#;W=Ff!J%INUSbiqAx>jbgRb z>wG_^*+4uEqIjcEmh(%EUf~f}_mMwMvJSg;^Id{?I{Me*H;FHAu9n)}Z8lh5f(Fzo zOe%5wBc*WHGTiIG7H=W4)r@0D)6dyv{{WVAlDR^AbBtF%YkD8R(&~DJ#lvbkrl}l8 zD~Wdb$gQ=OKlVjoQZ1TAokjG1Bk;F?v~LaTS8?gf;?|L*yh!&Wq93{d=va5JKb!j- zS@@x(=vtl4=BHt&TQAt|W8qbQ+Q;`zZQb~bUz5lF9q{toi>Ne2W}3$1{#j&jW6uOK z*8}1Gcf%GQKG(cKaepdl8{JmhVP7emhCq68*a~oiwxJbm8S1I3rjM@pw_lRXLn_+~ z6ukubQoh_FAaFMh4LeNLb-xLCAHw=2&Y5ilnuejiL~tGnQ#r`(n&2h4w}av4rG25z zsA^DN$|8|2W9t*Q%Z0~5*w?Qvm8IW9;2kRP&vkC$Cq+(L-G(v`rYnxTS1p-z%O4gc z&~(p@ejL}JiqKjc2$uHQz#dyJGqetsnpD-Y4AeJZq}{3KodKB%zE_4 zrDyA&4z=;e#19a7j6-tqX;74o@Q>Y(EpP!HI@g+LLsZhf8u)_v+86}VG$ICHmg|2X zFVd!+HOi8ED;0aAIxBdu{1uJ_9YL}}mw8*(uY=TkFD@(?oZqTfJJ)&xJ+ACho z5i#2!*(^)SRL;W3wVCc$4&trWR~jL+bo4xVS=AgTlyZgFNpkoaVPd=z4n)( zz!V99^I$mTLZ3re)r(HX@nZPHQj^ABC5ywJ6|}R8+eeJc&-&jmrd@H+52blWgDiEK zF8oh_sa(P>R^8%RiQ4fw>G^c8TljCH%Pr4{?*u94&esnG#Ao=_lA!twafz>uW zsp$)@c+X82I#tBUqN1wYkCrsR`9ph;O5$ew7#EgSo+$CQn`vXDys+uR&S@3Au@bL4 zO844&Qutc-Elb2&{;f23LjK%JA-HBgXTtG-2emW7nzL!XJk)iaLeAznqMedS8!H1v zj2sS!BDQQsim~{X>q*tjdPUy%SCIe_%hw8h2TICn+7%br=YAgemiNOJn$EWb!d9OV zDY{$;*z!8{2Bg;E@hrM5P+e)3I-mBg?d&5R6ThkE8bLuh}tJUw9W%V_bWWXB6(B650<_DylhH}{T}saM5XEv}8H>G~Y@ zw>Ah*+_qxPZ7Jv*)oZP3^$RU`Pw?=9()e6Q0!inO-UI_aVpfNXuIzP>6WZ>(nJ+A( zMV>IYhERu$oN{qog}$q4tN6z6S-PG9YhseD0u!0z+AuzVbgp^FOPax*2(nEh#Tu@m z6}-YR6Nzq#-y6n8F^<@;HSpcdy@sExUFnw*T-p^rRu0w#AG&zy+PCcdS7)a9cUztY zlHIN&+Q#qZk8wE#eZ7Twbb9`<`b%4XXG3@|!3u2g8aj_m^fk}Rrl&%Yy{O!2cU}wB zTEf)WUCSmPFXkpl`@_<(4b|qE;Ja-WBr=PJ21khbW)0y{&4qZjS-NB$z3K=xaBzaWr%rRPy!hQqnmRWdt*Z$`w6+l|s@xn;!_>YmxbJ z5hy9;u0t<;)LM4Eb*Fe{^u}Yi`&8^?bQ`b;$4^QxGZ%xbY}#oGT(6kkNa^Xvr3q*! z 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%0DvK#Pg8W(sb8R%gI`a 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 ZO`@OoSKQN+AahZkrj>D?Y5M?b|Jef(M3Mji literal 0 HcmV?d00001 diff --git a/tests/test_core_sdk.py b/tests/test_core_sdk.py index 1d17e5e25..46ecee01f 100644 --- a/tests/test_core_sdk.py +++ b/tests/test_core_sdk.py @@ -3,6 +3,9 @@ from asyncio import gather from datetime import datetime, timedelta, timezone +import pytest + +from langfuse import Langfuse from langfuse.client import ( FetchObservationResponse, FetchObservationsResponse, @@ -11,11 +14,6 @@ FetchTracesResponse, ) from langfuse.utils import _get_timestamp - - -import pytest - -from langfuse import Langfuse from tests.api_wrapper import LangfuseAPI from tests.utils import ( CompletionUsage, @@ -61,7 +59,7 @@ def test_flush(): langfuse.flush() # Make sure that the client queue is empty after flushing - assert langfuse.task_manager._queue.empty() + assert langfuse.task_manager._ingestion_queue.empty() def test_shutdown(): @@ -76,7 +74,7 @@ def test_shutdown(): # we expect two things after shutdown: # 1. client queue is empty # 2. consumer thread has stopped - assert langfuse.task_manager._queue.empty() + assert langfuse.task_manager._ingestion_queue.empty() def test_invalid_score_data_does_not_raise_exception(): @@ -89,7 +87,7 @@ def test_invalid_score_data_does_not_raise_exception(): ) langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 score_id = create_uuid() @@ -102,7 +100,7 @@ def test_invalid_score_data_does_not_raise_exception(): ) langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 def test_create_numeric_score(): @@ -116,7 +114,7 @@ def test_create_numeric_score(): ) langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 score_id = create_uuid() @@ -131,7 +129,7 @@ def test_create_numeric_score(): langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 trace = api_wrapper.get_trace(trace.id) @@ -152,7 +150,7 @@ def test_create_boolean_score(): ) langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 score_id = create_uuid() @@ -168,7 +166,7 @@ def test_create_boolean_score(): langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 trace = api_wrapper.get_trace(trace.id) @@ -189,7 +187,7 @@ def test_create_categorical_score(): ) langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 score_id = create_uuid() @@ -204,7 +202,7 @@ def test_create_categorical_score(): langfuse.flush() - assert langfuse.task_manager._queue.qsize() == 0 + assert langfuse.task_manager._ingestion_queue.qsize() == 0 trace = api_wrapper.get_trace(trace.id) diff --git a/tests/test_langchain.py b/tests/test_langchain.py index 9f4f9093a..1b0be988a 100644 --- a/tests/test_langchain.py +++ b/tests/test_langchain.py @@ -2,42 +2,41 @@ import random import string import time - -from typing import Any, List, Mapping, Optional, Dict +from typing import Any, Dict, List, Mapping, Optional import pytest -from langchain_community.llms.anthropic import Anthropic -from langchain_community.llms.huggingface_hub import HuggingFaceHub from langchain.agents import AgentType, initialize_agent -from langchain_community.agent_toolkits.load_tools import load_tools from langchain.chains import ( ConversationalRetrievalChain, + ConversationChain, LLMChain, RetrievalQA, SimpleSequentialChain, - ConversationChain, ) -from langchain_core.tools import StructuredTool -from langchain_core.runnables.base import RunnableLambda from langchain.chains.openai_functions import create_openai_fn_chain from langchain.chains.summarize import load_summarize_chain -from langchain_community.document_loaders import TextLoader -from langchain_community.embeddings import OpenAIEmbeddings -from langchain_openai import OpenAI, AzureChatOpenAI, ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.prompts import ChatPromptTemplate, PromptTemplate -from langchain.schema import Document +from langchain.schema import Document, HumanMessage, SystemMessage from langchain.text_splitter import CharacterTextSplitter +from langchain_community.agent_toolkits.load_tools import load_tools +from langchain_community.document_loaders import TextLoader +from langchain_community.embeddings import OpenAIEmbeddings +from langchain_community.llms.anthropic import Anthropic +from langchain_community.llms.huggingface_hub import HuggingFaceHub from langchain_community.vectorstores import Chroma +from langchain_core.callbacks.manager import CallbackManagerForLLMRun +from langchain_core.language_models.llms import LLM +from langchain_core.output_parsers import StrOutputParser +from langchain_core.runnables.base import RunnableLambda +from langchain_core.tools import StructuredTool +from langchain_openai import AzureChatOpenAI, ChatOpenAI, OpenAI from pydantic.v1 import BaseModel, Field -from langchain.schema import HumanMessage, SystemMessage + from langfuse.callback import CallbackHandler from langfuse.client import Langfuse from tests.api_wrapper import LangfuseAPI from tests.utils import create_uuid, get_api -from langchain_core.callbacks.manager import CallbackManagerForLLMRun -from langchain_core.language_models.llms import LLM -from langchain_core.output_parsers import StrOutputParser def test_callback_init(): @@ -1760,7 +1759,7 @@ def test_disabled_langfuse(): }, ) - assert handler.langfuse.task_manager._queue.empty() + assert handler.langfuse.task_manager._ingestion_queue.empty() handler.flush() @@ -2211,3 +2210,36 @@ def _generate_random_dict(n: int, key_length: int = 8) -> Dict[str, Any]: print(f"Full execution took {duration_full}ms") assert duration_full > 1000, "Full execution should take longer than 1 second" + + +def test_multimodal(): + import base64 + + from langsmith.wrappers import wrap_openai + from openai import OpenAI + + client = wrap_openai(OpenAI()) + + def encode_image(image_path): + with open(image_path, "rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + image_path = "static/puton.jpg" + base64_image = encode_image(image_path) + + response = client.chat.completions.create( + model="gpt-4o-mini", + messages=[ + { + "role": "user", + "content": [ + {"type": "text", "text": "What’s in this image?"}, + { + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, + }, + ], + } + ], + ) + print(response.choices[0]) diff --git a/tests/test_llama_index.py b/tests/test_llama_index.py index 1fc5547cf..f3ccadc37 100644 --- a/tests/test_llama_index.py +++ b/tests/test_llama_index.py @@ -1,16 +1,12 @@ import pytest -from llama_index.core import ( - Settings, - PromptTemplate, -) +from llama_index.core import PromptTemplate, Settings from llama_index.core.callbacks import CallbackManager -from llama_index.llms.openai import OpenAI -from llama_index.llms.anthropic import Anthropic from llama_index.core.query_pipeline import QueryPipeline +from llama_index.llms.anthropic import Anthropic +from llama_index.llms.openai import OpenAI -from langfuse.llama_index import LlamaIndexCallbackHandler from langfuse.client import Langfuse - +from langfuse.llama_index import LlamaIndexCallbackHandler from tests.utils import create_uuid, get_api, get_llama_index_index @@ -540,7 +536,7 @@ def test_disabled_langfuse(): trace_id = callback.trace.id assert trace_id is not None - assert callback.langfuse.task_manager._queue.empty() + assert callback.langfuse.task_manager._ingestion_queue.empty() callback.flush() diff --git a/tests/test_task_manager.py b/tests/test_task_manager.py index 7c281f0b3..e066787ae 100644 --- a/tests/test_task_manager.py +++ b/tests/test_task_manager.py @@ -2,14 +2,14 @@ import subprocess import threading from urllib.parse import urlparse, urlunparse -import httpx +import httpx import pytest from pytest_httpserver import HTTPServer from werkzeug.wrappers import Request, Response +from langfuse._task_manager.task_manager import TaskManager from langfuse.request import LangfuseClient -from langfuse.task_manager import TaskManager logging.basicConfig() log = logging.getLogger("langfuse") @@ -109,7 +109,7 @@ def handler(request: Request): tm.add_task({"foo": "bar"}) tm.add_task({"foo": "bar"}) - assert tm._queue.empty() + assert tm._ingestion_queue.empty() tm.flush() assert not request_fired @@ -298,7 +298,7 @@ def handler(request: Request): # a race condition. We do our best to load it up though. tm.flush() # Make sure that the client queue is empty after flushing - assert tm._queue.empty() + assert tm._ingestion_queue.empty() assert not failed @@ -338,12 +338,12 @@ def handler(request: Request): # we expect two things after shutdown: # 1. client queue is empty # 2. consumer thread has stopped - assert tm._queue.empty() + assert tm._ingestion_queue.empty() - assert len(tm._consumers) == 5 - for c in tm._consumers: + assert len(tm._ingestion_consumers) == 5 + for c in tm._ingestion_consumers: assert not c.is_alive() - assert tm._queue.empty() + assert tm._ingestion_queue.empty() assert not failed @@ -382,7 +382,7 @@ def handler(request: Request): # a race condition. We do our best to load it up though. tm.flush() # Make sure that the client queue is empty after flushing - assert tm._queue.empty() + assert tm._ingestion_queue.empty() assert not failed @@ -428,7 +428,7 @@ def handler(request: Request): # a race condition. We do our best to load it up though. tm.flush() # Make sure that the client queue is empty after flushing - assert tm._queue.empty() + assert tm._ingestion_queue.empty() assert not failed assert count == 2 @@ -442,14 +442,14 @@ def test_truncate_item_in_place(httpserver): langfuse_client, 10, 0.1, 3, 1, 100, "test-sdk", "1.0.0", "default" ) - consumer = tm._consumers[0] + consumer = tm._ingestion_consumers[0] # Item size within limit MAX_MSG_SIZE = 100 small_item = {"body": {"input": "small"}} assert ( - consumer._truncate_item_in_place(item=small_item, max_size=MAX_MSG_SIZE) + consumer._truncate_item_in_place(event=small_item, max_size=MAX_MSG_SIZE) <= MAX_MSG_SIZE ) assert small_item["body"]["input"] == "small" # unchanged @@ -457,7 +457,7 @@ def test_truncate_item_in_place(httpserver): # Item size exceeding limit large_item = {"body": {"input": "a" * (MAX_MSG_SIZE + 10)}} truncated_size = consumer._truncate_item_in_place( - item=large_item, max_size=MAX_MSG_SIZE + event=large_item, max_size=MAX_MSG_SIZE ) assert truncated_size <= MAX_MSG_SIZE @@ -466,7 +466,7 @@ def test_truncate_item_in_place(httpserver): # Logs message if item is truncated large_item = {"body": {"input": "a" * (MAX_MSG_SIZE + 10)}} truncated_size = consumer._truncate_item_in_place( - item=large_item, max_size=MAX_MSG_SIZE, log_message="truncated" + event=large_item, max_size=MAX_MSG_SIZE, log_message="truncated" ) assert truncated_size <= MAX_MSG_SIZE @@ -481,7 +481,7 @@ def test_truncate_item_in_place(httpserver): } } truncated_size = consumer._truncate_item_in_place( - item=full_item, max_size=MAX_MSG_SIZE + event=full_item, max_size=MAX_MSG_SIZE ) assert truncated_size <= MAX_MSG_SIZE @@ -497,7 +497,7 @@ def test_truncate_item_in_place(httpserver): "metadata": "c" * 10, } } - consumer._truncate_item_in_place(item=input_largest, max_size=MAX_MSG_SIZE) + consumer._truncate_item_in_place(event=input_largest, max_size=MAX_MSG_SIZE) assert input_largest["body"]["input"] is None assert input_largest["body"]["output"] is not None assert input_largest["body"]["metadata"] is not None @@ -510,7 +510,7 @@ def test_truncate_item_in_place(httpserver): "metadata": "c" * 20, } } - consumer._truncate_item_in_place(item=mixed_size, max_size=MAX_MSG_SIZE) + consumer._truncate_item_in_place(event=mixed_size, max_size=MAX_MSG_SIZE) assert mixed_size["body"]["input"] is not None assert mixed_size["body"]["output"] is None assert mixed_size["body"]["metadata"] is not None @@ -523,14 +523,14 @@ def test_truncate_item_in_place(httpserver): "metadata": "c" * 50, } } - consumer._truncate_item_in_place(item=very_large, max_size=MAX_MSG_SIZE) + consumer._truncate_item_in_place(event=very_large, max_size=MAX_MSG_SIZE) assert very_large["body"]["input"] is None assert very_large["body"]["output"] is None assert very_large["body"]["metadata"] is not None # Return value assert isinstance( - consumer._truncate_item_in_place(item=small_item, max_size=MAX_MSG_SIZE), int + consumer._truncate_item_in_place(event=small_item, max_size=MAX_MSG_SIZE), int ) # JSON serialization @@ -540,7 +540,7 @@ def test_truncate_item_in_place(httpserver): } } assert ( - consumer._truncate_item_in_place(item=complex_item, max_size=MAX_MSG_SIZE) + consumer._truncate_item_in_place(event=complex_item, max_size=MAX_MSG_SIZE) <= MAX_MSG_SIZE ) assert complex_item["body"]["input"] is None From 266d33419509f9defc20e844229e8a6fd5faf33d Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:04:24 +0100 Subject: [PATCH 03/42] add mediawrapper --- langfuse/_task_manager/ingestion_consumer.py | 2 +- langfuse/_task_manager/media_manager.py | 282 ++++++++----------- langfuse/langfuse_media.py | 102 +++++++ langfuse/openai.py | 54 +++- langfuse/serializer.py | 21 +- 5 files changed, 283 insertions(+), 178 deletions(-) create mode 100644 langfuse/langfuse_media.py diff --git a/langfuse/_task_manager/ingestion_consumer.py b/langfuse/_task_manager/ingestion_consumer.py index 4fa704847..1d2ed0fb0 100644 --- a/langfuse/_task_manager/ingestion_consumer.py +++ b/langfuse/_task_manager/ingestion_consumer.py @@ -118,7 +118,7 @@ def _next(self): continue # handle multimodal data - self._media_manager.process_multimodal_event_in_place(event) + self._media_manager.process_media_in_event(event) # truncate item if it exceeds size limit item_size = self._truncate_item_in_place( diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index 9874ff874..80e3dc2fe 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -1,13 +1,12 @@ -import base64 -import hashlib import logging from queue import Empty -from typing import Literal +from typing import Any, Optional import requests from langfuse.api import GetMediaUploadUrlRequest, PatchMediaBody from langfuse.api.client import FernLangfuse +from langfuse.langfuse_media import MediaWrapper from langfuse.utils import _get_timestamp from .media_upload_queue import MediaUploadQueue, UploadMediaJob @@ -24,8 +23,8 @@ def __init__( def process_next_media_upload(self): try: - data = self._queue.get(block=True, timeout=1) - self._process_upload_media_job(data=data) + upload_job = self._queue.get(block=True, timeout=1) + self._process_upload_media_job(data=upload_job) self._queue.task_done() except Empty: @@ -34,145 +33,138 @@ def process_next_media_upload(self): self._log.error(f"Error uploading media: {e}") self._queue.task_done() - def process_multimodal_event_in_place(self, event: dict): + def process_media_in_event(self, event: dict): try: if "body" not in event: return body = event["body"] - multimodal_fields = ["input", "output"] + trace_id = body.get("traceId", None) or ( + body.get("id", None) + if "type" in event and "trace" in event["type"] + else None + ) + + if trace_id is None: + raise ValueError("trace_id is required for media upload") + + observation_id = ( + body.get("id", None) + if "type" in event + and ("generation" in event["type"] or "span" in event["type"]) + else None + ) + + multimodal_fields = ["input", "output", "metadata"] for field in multimodal_fields: if field in body: - field_data = body[field] + processed_data = self._find_and_process_media( + data=body[field], + trace_id=trace_id, + observation_id=observation_id, + field=field, + ) - if field == "output": - self._process_multimodal_message( - event=event, body=body, field=field, message=field_data - ) - - if isinstance(field_data, list): - for message in field_data: - self._process_multimodal_message( - event=event, body=body, field=field, message=message - ) + body[field] = processed_data except Exception as e: self._log.error(f"Error processing multimodal event: {e}") - def _process_multimodal_message( - self, *, event: dict, body: dict, field: str, message: dict - ): - if isinstance(message, dict) and message.get("content", None) is not None: - content = message["content"] - - for content_part in content: - if isinstance(content_part, dict): - if content_part.get("image_url", None) is not None: - base64_data_uri = content_part["image_url"]["url"] - if base64_data_uri.startswith("data:"): - media_reference_string = self._enqueue_media_upload( - event=event, - body=body, - field=field, - base64_data_uri=base64_data_uri, - ) - - if media_reference_string: - content_part["image_url"]["url"] = ( - media_reference_string - ) - - if content_part.get("input_audio", None) is not None: - base64_data_uri = ( - f"data:audio/{content_part['input_audio']['format']};base64," - + content_part["input_audio"]["data"] - ) - - media_reference_string = self._enqueue_media_upload( - event=event, - body=body, - field=field, - base64_data_uri=base64_data_uri, - ) - - if media_reference_string: - content_part["input_audio"]["data"] = media_reference_string - - if content_part.get("output_audio", None) is not None: - base64_data_uri = ( - f"data:audio/{content_part['output_audio']['format']};base64," - + content_part["output_audio"]["data"] - ) - - media_reference_string = self._enqueue_media_upload( - event=event, - body=body, - field=field, - base64_data_uri=base64_data_uri, - ) - - if media_reference_string: - content_part["output_audio"]["data"] = ( - media_reference_string - ) - - def _enqueue_media_upload( - self, *, event: dict, body: dict, field: str, base64_data_uri: str + def _find_and_process_media( + self, + *, + data: Any, + trace_id: str, + observation_id: Optional[str], + field: str, ): - parsed_content = self._parse_base64_data_uri(base64_data_uri) - trace_id = body.get("traceId", None) or ( - body.get("id", None) - if "type" in event and "trace" in event["type"] - else None - ) - - if trace_id is None: - raise ValueError("trace_id is required for media upload") + seen = set() - observation_id = ( - body.get("id", None) - if "type" in event - and ("generation" in event["type"] or "span" in event["type"]) - else None - ) + def _process_data_recursively(data: Any): + if id(data) in seen: + return data - if parsed_content: - content_length = parsed_content["content_length"] - content_type = parsed_content["content_type"] - content_sha256_hash = parsed_content["content_sha256_hash"] - content_bytes = parsed_content["content_bytes"] + seen.add(id(data)) - upload_url_response = self._api_client.media.get_upload_url( - request=GetMediaUploadUrlRequest( + if isinstance(data, MediaWrapper): + self._process_media( + media=data, + trace_id=trace_id, + observation_id=observation_id, field=field, - contentLength=content_length, - contentType=content_type, - sha256Hash=content_sha256_hash, - traceId=trace_id, - observationId=observation_id, ) - ) - upload_url = upload_url_response.upload_url - media_id = upload_url_response.media_id - - if upload_url is not None: - self._queue.put( - item={ - "content_bytes": content_bytes, - "content_type": content_type, - "content_sha256_hash": content_sha256_hash, - "upload_url": upload_url, - "media_id": media_id, - }, - block=True, + return data + + if isinstance(data, str) and data.startswith("data:"): + media = MediaWrapper( + obj=data, + base64_data_uri=data, + ) + + self._process_media( + media=media, + trace_id=trace_id, + observation_id=observation_id, + field=field, ) - return self._format_media_reference_string( - content_type=content_type, - media_id=media_id, - source="base64", + return media + + if isinstance(data, list): + return [_process_data_recursively(item) for item in data] + + if isinstance(data, dict): + return { + key: _process_data_recursively(value) for key, value in data.items() + } + + return data + + return _process_data_recursively(data) + + def _process_media( + self, + *, + media: MediaWrapper, + trace_id: str, + observation_id: Optional[str], + field: str, + ): + if ( + media._content_length is None + or media._content_type is None + or media._content_sha256_hash is None + or media._content_bytes is None + ): + return + + upload_url_response = self._api_client.media.get_upload_url( + request=GetMediaUploadUrlRequest( + contentLength=media._content_length, + contentType=media._content_type, + sha256Hash=media._content_sha256_hash, + field=field, + traceId=trace_id, + observationId=observation_id, + ) + ) + + upload_url = upload_url_response.upload_url + media._media_id = upload_url_response.media_id # Important as this is will be used in the media reference string in serializer + + if upload_url is not None: + self._queue.put( + item={ + "upload_url": upload_url, + "media_id": media._media_id, + "content_bytes": media._content_bytes, + "content_type": media._content_type, + "content_sha256_hash": media._content_sha256_hash, + }, + block=True, + timeout=1, ) def _process_upload_media_job( @@ -197,49 +189,3 @@ def _process_upload_media_job( uploadHttpError=upload_response.text, ), ) - - def _format_media_reference_string( - self, *, content_type: str, media_id: str, source: Literal["base64"] - ) -> str: - return f"@@@langfuseMedia:type={content_type}|id={media_id}|source={source}@@@" - - def _parse_base64_data_uri(self, data: str): - if not data or not isinstance(data, str): - return None - - if not data.startswith("data:"): - return None - - try: - # Split the data into metadata and actual data - header, _, actual_data = data[5:].partition(",") - if not header or not actual_data: - return None - - # Determine if the data is base64 encoded - is_base64 = header.endswith(";base64") - if not is_base64: - return None - - content_type = header[:-7] - if not content_type: - return None - - try: - content_bytes = base64.b64decode(actual_data) - except Exception: - return None - - content_length = len(content_bytes) - - sha256_hash_bytes = hashlib.sha256(content_bytes).digest() - sha256_hash_base64 = base64.b64encode(sha256_hash_bytes).decode("utf-8") - - return { - "content_type": content_type, - "content_bytes": content_bytes, - "content_length": content_length, - "content_sha256_hash": sha256_hash_base64, - } - except Exception: - return None diff --git a/langfuse/langfuse_media.py b/langfuse/langfuse_media.py new file mode 100644 index 000000000..154137c63 --- /dev/null +++ b/langfuse/langfuse_media.py @@ -0,0 +1,102 @@ +import base64 +import hashlib +import logging +from typing import Optional + + +class MediaWrapper: + """A class for wrapping media objects for upload to Langfuse. + + This class handles the preparation and formatting of media content for Langfuse, + supporting both base64 data URIs and raw content bytes. + + Args: + obj: The source object to be wrapped. + base64_data_uri (Optional[str]): A base64-encoded data URI containing the media content + and content type (e.g., "data:image/jpeg;base64,/9j/4AAQ..."). + content_type (Optional[str]): The MIME type of the media content when providing raw bytes. + content_bytes (Optional[bytes]): Raw bytes of the media content. + + Raises: + ValueError: If neither base64_data_uri or the combination of content_bytes + and content_type is provided. + """ + + obj: object + _log = logging.getLogger(__name__) + _content_bytes: bytes | None + _content_type: str | None + _source: str | None + _media_id: str | None + + def __init__( + self, + obj: object, + *, + base64_data_uri: Optional[str] = None, + content_type: Optional[str] = None, + content_bytes: Optional[bytes] = None, + ): + self.obj = obj + self._media_id = None + + if base64_data_uri is not None: + parsed_data = self._parse_base64_data_uri(base64_data_uri) + self._content_bytes, self._content_type = parsed_data + self._source = "base64_data_uri" + + elif content_bytes is not None and content_type is not None: + self._content_type = content_type + self._content_bytes = content_bytes + self._source = "bytes" + else: + raise ValueError( + "base64_data_uri or content_bytes and content_type must be provided" + ) + + @property + def _content_length(self) -> int | None: + return len(self._content_bytes) if self._content_bytes else None + + @property + def _content_sha256_hash(self) -> str | None: + if self._content_bytes is None: + return None + + sha256_hash_bytes = hashlib.sha256(self._content_bytes).digest() + + return base64.b64encode(sha256_hash_bytes).decode("utf-8") + + @property + def _reference_string(self) -> str | None: + if self._content_type is None or self._source is None or self._media_id is None: + return None + + return f"@@@langfuseMedia:type={self._content_type}|id={self._media_id}|source={self._source}@@@" + + def _parse_base64_data_uri(self, data: str): + try: + if not data or not isinstance(data, str): + raise ValueError("Data URI is not a string") + + if not data.startswith("data:"): + raise ValueError("Data URI does not start with 'data:'") + + header, _, actual_data = data[5:].partition(",") + if not header or not actual_data: + raise ValueError("Invalid URI") + + is_base64 = header.endswith(";base64") + if not is_base64: + raise ValueError("Data is not base64 encoded") + + content_type = header[:-7] + if not content_type: + raise ValueError("Content type is empty") + + return base64.b64decode(actual_data), content_type + + except Exception as e: + self._log.error("Error parsing base64 data URI", exc_info=e) + + return None, None diff --git a/langfuse/openai.py b/langfuse/openai.py index ccd917fd6..ab07a82e2 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -33,6 +33,7 @@ from langfuse import Langfuse from langfuse.client import StatefulGenerationClient from langfuse.decorators import langfuse_context +from langfuse.langfuse_media import MediaWrapper from langfuse.utils import _get_timestamp from langfuse.utils.langfuse_singleton import LangfuseSingleton @@ -198,13 +199,52 @@ def _extract_chat_prompt(kwargs: any): # uf user provided functions, we need to send these together with messages to langfuse prompt.update( { - "messages": kwargs.get("messages", []), + "messages": [ + _process_message(message) for message in kwargs.get("messages", []) + ], } ) return prompt else: # vanilla case, only send messages in openai format to langfuse - return kwargs.get("messages", []) + return [_process_message(message) for message in kwargs.get("messages", [])] + + +def _process_message(message): + if not isinstance(message, dict): + return message + + processed_message = {**message} + + content = processed_message.get("content", None) + if not isinstance(content, list): + return processed_message + + processed_content = [] + + for content_part in content: + if content_part.get("type") == "input_audio": + audio_base64 = content_part.get("input_audio", {}).get("data", None) + format = content_part.get("input_audio", {}).get("format", "wav") + + if audio_base64 is not None: + base64_data_uri = f"data:audio/{format};base64,{audio_base64}" + + processed_content.append( + { + "type": "input_audio", + "input_audio": { + "data": MediaWrapper(None, base64_data_uri=base64_data_uri), + "format": format, + }, + } + ) + else: + processed_content.append(content_part) + + processed_message["content"] = processed_content + + return processed_message def _extract_chat_response(kwargs: any): @@ -224,12 +264,19 @@ def _extract_chat_response(kwargs: any): if kwargs.get("audio") is not None: audio = kwargs["audio"].__dict__ + base64_data_uri = ( + f"data:audio/{audio.get('format', 'wav')};base64,{audio.get('data', None)}" + ) + audio_content = [ {"type": "text", "text": audio.get("transcript", None)}, { "type": "output_audio", "output_audio": { - "data": audio.get("data", None), + "data": MediaWrapper( + None, + base64_data_uri=base64_data_uri, + ), "format": audio.get("format", "wav"), }, }, @@ -240,6 +287,7 @@ def _extract_chat_response(kwargs: any): "content": kwargs.get("content", None) or audio_content, } ) + return response diff --git a/langfuse/serializer.py b/langfuse/serializer.py index 4536ff97a..9a34acb53 100644 --- a/langfuse/serializer.py +++ b/langfuse/serializer.py @@ -1,18 +1,21 @@ """@private""" +import enum from asyncio import Queue +from collections.abc import Sequence +from dataclasses import asdict, is_dataclass from datetime import date, datetime -from dataclasses import is_dataclass, asdict -import enum from json import JSONEncoder +from logging import getLogger +from pathlib import Path from typing import Any from uuid import UUID -from collections.abc import Sequence -from langfuse.api.core import serialize_datetime, pydantic_utilities -from pathlib import Path -from logging import getLogger + from pydantic import BaseModel +from langfuse.api.core import pydantic_utilities, serialize_datetime +from langfuse.langfuse_media import MediaWrapper + # Attempt to import Serializable try: from langchain.load.serializable import Serializable @@ -40,6 +43,12 @@ def default(self, obj: Any): # Timezone-awareness check return serialize_datetime(obj) + if isinstance(obj, MediaWrapper): + return ( + obj._reference_string + or "" + ) + # Check if numpy is available and if the object is a numpy scalar # If so, convert it to a Python scalar using the item() method if np is not None and isinstance(obj, np.generic): From 5b33316fe82e603a0261efcb367e64ad075db2b3 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:34:43 +0100 Subject: [PATCH 04/42] add tests --- tests/test_langchain.py | 33 ------ tests/test_openai.py | 244 +++++++++++++++++++--------------------- 2 files changed, 118 insertions(+), 159 deletions(-) diff --git a/tests/test_langchain.py b/tests/test_langchain.py index 1b0be988a..8ca4b925d 100644 --- a/tests/test_langchain.py +++ b/tests/test_langchain.py @@ -2210,36 +2210,3 @@ def _generate_random_dict(n: int, key_length: int = 8) -> Dict[str, Any]: print(f"Full execution took {duration_full}ms") assert duration_full > 1000, "Full execution should take longer than 1 second" - - -def test_multimodal(): - import base64 - - from langsmith.wrappers import wrap_openai - from openai import OpenAI - - client = wrap_openai(OpenAI()) - - def encode_image(image_path): - with open(image_path, "rb") as image_file: - return base64.b64encode(image_file.read()).decode("utf-8") - - image_path = "static/puton.jpg" - base64_image = encode_image(image_path) - - response = client.chat.completions.create( - model="gpt-4o-mini", - messages=[ - { - "role": "user", - "content": [ - {"type": "text", "text": "What’s in this image?"}, - { - "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, - }, - ], - } - ], - ) - print(response.choices[0]) diff --git a/tests/test_openai.py b/tests/test_openai.py index 62de030d8..1c24078c8 100644 --- a/tests/test_openai.py +++ b/tests/test_openai.py @@ -1,8 +1,10 @@ +import base64 import os import pytest -from pydantic import BaseModel from openai import APIConnectionError +from openai.types.chat.chat_completion_message import ChatCompletionMessage +from pydantic import BaseModel from langfuse.client import Langfuse from langfuse.openai import ( @@ -10,14 +12,10 @@ AsyncOpenAI, AzureOpenAI, _is_openai_v1, - _filter_image_data, openai, ) -from openai.types.chat.chat_completion import ChatCompletionMessage - from tests.utils import create_uuid, get_api - chat_func = ( openai.chat.completions.create if _is_openai_v1() else openai.ChatCompletion.create ) @@ -1171,127 +1169,6 @@ async def test_async_azure(): assert generation.data[0].level == "ERROR" -def test_image_data_filtered(): - api = get_api() - generation_name = create_uuid() - - openai.chat.completions.create( - name=generation_name, - model="gpt-4-vision-preview", - messages=[ - { - "role": "user", - "content": [ - {"type": "text", "text": "What is in this image?"}, - { - "type": "image_url", - "image_url": { - "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AKp//2Q==" - }, - }, - ], - } - ], - max_tokens=300, - ) - - generation = api.observations.get_many(name=generation_name, type="GENERATION") - - assert len(generation.data) == 1 - assert "data:image/jpeg;base64" not in generation.data[0].input - - -def test_image_data_filtered_png(): - api = get_api() - generation_name = create_uuid() - - openai.chat.completions.create( - name=generation_name, - model="gpt-4-vision-preview", - messages=[ - { - "role": "user", - "content": [ - {"type": "text", "text": "What is in this image?"}, - { - "type": "image_url", - "image_url": { - "url": "data:image/png;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AKp//2Q==" - }, - }, - ], - } - ], - max_tokens=300, - ) - - generation = api.observations.get_many(name=generation_name, type="GENERATION") - - assert len(generation.data) == 1 - assert "data:image/jpeg;base64" not in generation.data[0].input - - -def test_image_filter_base64(): - messages = [ - { - "role": "user", - "content": [ - {"type": "text", "text": "What’s in this image?"}, - { - "type": "image_url", - "image_url": {"url": "data:image/jpeg;base64,base64_image"}, - }, - ], - } - ] - result = _filter_image_data(messages) - - print(result) - - assert result == [ - { - "role": "user", - "content": [ - {"type": "text", "text": "What’s in this image?"}, - {"type": "image_url"}, - ], - } - ] - - -def test_image_filter_url(): - result = _filter_image_data( - [ - { - "role": "user", - "content": [ - {"type": "text", "text": "What’s in this image?"}, - { - "type": "image_url", - "image_url": { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg", - }, - }, - ], - } - ] - ) - assert result == [ - { - "role": "user", - "content": [ - {"type": "text", "text": "What’s in this image?"}, - { - "type": "image_url", - "image_url": { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg", - }, - }, - ], - } - ] - - def test_openai_with_existing_trace_id(): langfuse = Langfuse() trace = langfuse.trace( @@ -1380,6 +1257,7 @@ def test_disabled_langfuse(): openai.langfuse_enabled = True import importlib + from langfuse.openai import openai importlib.reload(openai) @@ -1483,6 +1361,7 @@ def test_structured_output_response_format_kwarg(): def test_structured_output_beta_completions_parse(): from typing import List + from packaging.version import Version class CalendarEvent(BaseModel): @@ -1593,3 +1472,116 @@ async def test_close_async_stream(): assert generation.data[0].completion_start_time is not None assert generation.data[0].completion_start_time >= generation.data[0].start_time assert generation.data[0].completion_start_time <= generation.data[0].end_time + + +def test_base_64_image_input(): + api = get_api() + client = openai.OpenAI() + generation_name = "test_base_64_image_input" + create_uuid()[:8] + + content_path = "static/puton.jpg" + content_type = "image/jpeg" + + base64_image = encode_file(content_path) + + client.chat.completions.create( + name=generation_name, + model="gpt-4o-mini", + messages=[ + { + "role": "user", + "content": [ + {"type": "text", "text": "What’s in this image?"}, + { + "type": "image_url", + "image_url": { + "url": f"data:{content_type};base64,{base64_image}" + }, + }, + ], + } + ], + max_tokens=300, + ) + + openai.flush_langfuse() + + generation = api.observations.get_many(name=generation_name, type="GENERATION") + + assert len(generation.data) != 0 + assert generation.data[0].name == generation_name + assert generation.data[0].input[0]["content"][0]["text"] == "What’s in this image?" + assert ( + f"@@@langfuseMedia:type={content_type}|id=" + in generation.data[0].input[0]["content"][1]["image_url"]["url"] + ) + assert generation.data[0].type == "GENERATION" + assert "gpt-4o-mini" in generation.data[0].model + assert generation.data[0].start_time is not None + assert generation.data[0].end_time is not None + assert generation.data[0].start_time < generation.data[0].end_time + assert generation.data[0].usage.input is not None + assert generation.data[0].usage.output is not None + assert generation.data[0].usage.total is not None + assert "dog" in generation.data[0].output["content"] + + +def test_audio_input_and_output(): + api = get_api() + client = openai.OpenAI() + generation_name = "test_audio_input_and_output" + create_uuid()[:8] + + content_path = "static/joke_prompt.wav" + base64_string = encode_file(content_path) + + client.chat.completions.create( + name=generation_name, + model="gpt-4o-audio-preview", + modalities=["text", "audio"], + audio={"voice": "alloy", "format": "wav"}, + messages=[ + { + "role": "user", + "content": [ + {"type": "text", "text": "Do what this recording says."}, + { + "type": "input_audio", + "input_audio": {"data": base64_string, "format": "wav"}, + }, + ], + }, + ], + ) + + openai.flush_langfuse() + + generation = api.observations.get_many(name=generation_name, type="GENERATION") + + assert len(generation.data) != 0 + assert generation.data[0].name == generation_name + assert ( + generation.data[0].input[0]["content"][0]["text"] + == "Do what this recording says." + ) + assert ( + "@@@langfuseMedia:type=audio/wav|id=" + in generation.data[0].input[0]["content"][1]["input_audio"]["data"] + ) + assert generation.data[0].type == "GENERATION" + assert "gpt-4o-audio-preview" in generation.data[0].model + assert generation.data[0].start_time is not None + assert generation.data[0].end_time is not None + assert generation.data[0].start_time < generation.data[0].end_time + assert generation.data[0].usage.input is not None + assert generation.data[0].usage.output is not None + assert generation.data[0].usage.total is not None + print(generation.data[0].output) + assert ( + "@@@langfuseMedia:type=audio/wav|id=" + in generation.data[0].output["content"][1]["output_audio"]["data"] + ) + + +def encode_file(image_path): + with open(image_path, "rb") as file: + return base64.b64encode(file.read()).decode("utf-8") From ea186e40f026219a4860b47bada1594f09b22513 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:44:31 +0100 Subject: [PATCH 05/42] add decorator test --- static/bitcoin.pdf | Bin 0 -> 184292 bytes tests/test_decorators.py | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 static/bitcoin.pdf diff --git a/static/bitcoin.pdf b/static/bitcoin.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1e19b739f6e296dd1b38f71f20bf9152e6d9f6d1 GIT binary patch literal 184292 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%0AuqRR%y(EF;^kYm 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 literal 0 HcmV?d00001 diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 4714fd178..a6f81bfd2 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -1,15 +1,17 @@ import asyncio -from contextvars import ContextVar from collections import defaultdict from concurrent.futures import ThreadPoolExecutor -import pytest +from contextvars import ContextVar +from typing import Optional -from langchain_community.chat_models import ChatOpenAI +import pytest from langchain.prompts import ChatPromptTemplate -from langfuse.openai import AsyncOpenAI +from langchain_community.chat_models import ChatOpenAI + from langfuse.decorators import langfuse_context, observe +from langfuse.langfuse_media import MediaWrapper +from langfuse.openai import AsyncOpenAI from tests.utils import create_uuid, get_api, get_llama_index_index -from typing import Optional mock_metadata = "mock_metadata" mock_deep_metadata = "mock_deep_metadata" @@ -1404,6 +1406,7 @@ def test_threadpool_executor(): mock_parent_observation_id = create_uuid() from concurrent.futures import ThreadPoolExecutor, as_completed + from langfuse.decorators import langfuse_context, observe @observe() @@ -1457,3 +1460,28 @@ def main(): if o.parent_observation_id == mock_parent_observation_id ] assert len(child_observations) == 2 + + +def test_pdf_in_metadata(): + mock_trace_id = create_uuid() + + with open("static/bitcoin.pdf", "rb") as pdf_file: + pdf_bytes = pdf_file.read() + + @observe() + def main(): + langfuse_context.update_current_trace( + metadata={ + "context": MediaWrapper( + pdf_bytes, content_bytes=pdf_bytes, content_type="application/pdf" + ) + }, + ) + + main(langfuse_observation_id=mock_trace_id) + + langfuse_context.flush() + + trace_data = get_api().trace.get(mock_trace_id) + + assert "@@@langfuseMedia:type=application/pdf|id=" in trace_data.metadata["context"] From 71c717bf282264bb0106cd06a7167d4e4482fd10 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:02:04 +0100 Subject: [PATCH 06/42] add langchain test --- tests/test_langchain.py | 38 +++++++++++++++++++++++++++++++++++++- tests/test_openai.py | 12 +++--------- tests/utils.py | 15 ++++++++++----- 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/tests/test_langchain.py b/tests/test_langchain.py index 8ca4b925d..d96758302 100644 --- a/tests/test_langchain.py +++ b/tests/test_langchain.py @@ -36,7 +36,7 @@ from langfuse.callback import CallbackHandler from langfuse.client import Langfuse from tests.api_wrapper import LangfuseAPI -from tests.utils import create_uuid, get_api +from tests.utils import create_uuid, encode_file_to_base64, get_api def test_callback_init(): @@ -2210,3 +2210,39 @@ def _generate_random_dict(n: int, key_length: int = 8) -> Dict[str, Any]: print(f"Full execution took {duration_full}ms") assert duration_full > 1000, "Full execution should take longer than 1 second" + + +def test_multimodal(): + api = get_api() + handler = CallbackHandler() + model = ChatOpenAI(model="gpt-4o-mini") + + image_data = encode_file_to_base64("static/puton.jpg") + + message = HumanMessage( + content=[ + {"type": "text", "text": "What's in this image?"}, + { + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}, + }, + ], + ) + + response = model.invoke([message], config={"callbacks": [handler]}) + + print(response.content) + + handler.flush() + + trace = api.trace.get(handler.get_trace_id()) + + assert len(trace.observations) == 1 + assert trace.observations[0].type == "GENERATION" + + print(trace.observations[0].input) + + assert ( + "@@@langfuseMedia:type=image/jpeg|id=" + in trace.observations[0].input[0]["content"][1]["image_url"]["url"] + ) diff --git a/tests/test_openai.py b/tests/test_openai.py index 1c24078c8..fe69b72bb 100644 --- a/tests/test_openai.py +++ b/tests/test_openai.py @@ -1,4 +1,3 @@ -import base64 import os import pytest @@ -14,7 +13,7 @@ _is_openai_v1, openai, ) -from tests.utils import create_uuid, get_api +from tests.utils import create_uuid, encode_file_to_base64, get_api chat_func = ( openai.chat.completions.create if _is_openai_v1() else openai.ChatCompletion.create @@ -1482,7 +1481,7 @@ def test_base_64_image_input(): content_path = "static/puton.jpg" content_type = "image/jpeg" - base64_image = encode_file(content_path) + base64_image = encode_file_to_base64(content_path) client.chat.completions.create( name=generation_name, @@ -1532,7 +1531,7 @@ def test_audio_input_and_output(): generation_name = "test_audio_input_and_output" + create_uuid()[:8] content_path = "static/joke_prompt.wav" - base64_string = encode_file(content_path) + base64_string = encode_file_to_base64(content_path) client.chat.completions.create( name=generation_name, @@ -1580,8 +1579,3 @@ def test_audio_input_and_output(): "@@@langfuseMedia:type=audio/wav|id=" in generation.data[0].output["content"][1]["output_audio"]["data"] ) - - -def encode_file(image_path): - with open(image_path, "rb") as file: - return base64.b64encode(file.read()).decode("utf-8") diff --git a/tests/utils.py b/tests/utils.py index 6c16dd962..583770d3c 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,3 +1,4 @@ +import base64 import os import typing from uuid import uuid4 @@ -7,18 +8,17 @@ except ImportError: import pydantic # type: ignore -from langfuse.api.client import FernLangfuse - from llama_index.core import ( Settings, - VectorStoreIndex, SimpleDirectoryReader, - load_index_from_storage, StorageContext, + VectorStoreIndex, + load_index_from_storage, ) - from llama_index.core.callbacks import CallbackManager +from langfuse.api.client import FernLangfuse + def create_uuid(): return str(uuid4()) @@ -106,3 +106,8 @@ def get_llama_index_index(callback, force_rebuild: bool = False): index = load_index_from_storage(storage_context) return index + + +def encode_file_to_base64(image_path) -> str: + with open(image_path, "rb") as file: + return base64.b64encode(file.read()).decode("utf-8") From d03e27529a97ca088fa2f186668c016aee410c2c Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:07:44 +0100 Subject: [PATCH 07/42] rename to LangfuseMedia --- langfuse/_task_manager/media_manager.py | 8 ++++---- langfuse/{langfuse_media.py => media.py} | 2 +- langfuse/openai.py | 8 +++++--- langfuse/serializer.py | 4 ++-- tests/test_decorators.py | 4 ++-- 5 files changed, 14 insertions(+), 12 deletions(-) rename langfuse/{langfuse_media.py => media.py} (99%) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index 80e3dc2fe..b3e5f4032 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -6,7 +6,7 @@ from langfuse.api import GetMediaUploadUrlRequest, PatchMediaBody from langfuse.api.client import FernLangfuse -from langfuse.langfuse_media import MediaWrapper +from langfuse.media import LangfuseMedia from langfuse.utils import _get_timestamp from .media_upload_queue import MediaUploadQueue, UploadMediaJob @@ -87,7 +87,7 @@ def _process_data_recursively(data: Any): seen.add(id(data)) - if isinstance(data, MediaWrapper): + if isinstance(data, LangfuseMedia): self._process_media( media=data, trace_id=trace_id, @@ -98,7 +98,7 @@ def _process_data_recursively(data: Any): return data if isinstance(data, str) and data.startswith("data:"): - media = MediaWrapper( + media = LangfuseMedia( obj=data, base64_data_uri=data, ) @@ -127,7 +127,7 @@ def _process_data_recursively(data: Any): def _process_media( self, *, - media: MediaWrapper, + media: LangfuseMedia, trace_id: str, observation_id: Optional[str], field: str, diff --git a/langfuse/langfuse_media.py b/langfuse/media.py similarity index 99% rename from langfuse/langfuse_media.py rename to langfuse/media.py index 154137c63..cfbde90b4 100644 --- a/langfuse/langfuse_media.py +++ b/langfuse/media.py @@ -4,7 +4,7 @@ from typing import Optional -class MediaWrapper: +class LangfuseMedia: """A class for wrapping media objects for upload to Langfuse. This class handles the preparation and formatting of media content for Langfuse, diff --git a/langfuse/openai.py b/langfuse/openai.py index ab07a82e2..2423ea716 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -33,7 +33,7 @@ from langfuse import Langfuse from langfuse.client import StatefulGenerationClient from langfuse.decorators import langfuse_context -from langfuse.langfuse_media import MediaWrapper +from langfuse.media import LangfuseMedia from langfuse.utils import _get_timestamp from langfuse.utils.langfuse_singleton import LangfuseSingleton @@ -234,7 +234,9 @@ def _process_message(message): { "type": "input_audio", "input_audio": { - "data": MediaWrapper(None, base64_data_uri=base64_data_uri), + "data": LangfuseMedia( + None, base64_data_uri=base64_data_uri + ), "format": format, }, } @@ -273,7 +275,7 @@ def _extract_chat_response(kwargs: any): { "type": "output_audio", "output_audio": { - "data": MediaWrapper( + "data": LangfuseMedia( None, base64_data_uri=base64_data_uri, ), diff --git a/langfuse/serializer.py b/langfuse/serializer.py index 9a34acb53..ac2f981ad 100644 --- a/langfuse/serializer.py +++ b/langfuse/serializer.py @@ -14,7 +14,7 @@ from pydantic import BaseModel from langfuse.api.core import pydantic_utilities, serialize_datetime -from langfuse.langfuse_media import MediaWrapper +from langfuse.media import LangfuseMedia # Attempt to import Serializable try: @@ -43,7 +43,7 @@ def default(self, obj: Any): # Timezone-awareness check return serialize_datetime(obj) - if isinstance(obj, MediaWrapper): + if isinstance(obj, LangfuseMedia): return ( obj._reference_string or "" diff --git a/tests/test_decorators.py b/tests/test_decorators.py index a6f81bfd2..c39728f0b 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -9,7 +9,7 @@ from langchain_community.chat_models import ChatOpenAI from langfuse.decorators import langfuse_context, observe -from langfuse.langfuse_media import MediaWrapper +from langfuse.media import LangfuseMedia from langfuse.openai import AsyncOpenAI from tests.utils import create_uuid, get_api, get_llama_index_index @@ -1472,7 +1472,7 @@ def test_pdf_in_metadata(): def main(): langfuse_context.update_current_trace( metadata={ - "context": MediaWrapper( + "context": LangfuseMedia( pdf_bytes, content_bytes=pdf_bytes, content_type="application/pdf" ) }, From 5338ebb607b2affa3cbb03c970820de9ccae666d Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:10:21 +0100 Subject: [PATCH 08/42] fix test client --- langfuse/api/tests/utils/test_http_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/langfuse/api/tests/utils/test_http_client.py b/langfuse/api/tests/utils/test_http_client.py index 21b37b58f..950fcdeb1 100644 --- a/langfuse/api/tests/utils/test_http_client.py +++ b/langfuse/api/tests/utils/test_http_client.py @@ -1,7 +1,7 @@ # This file was auto-generated by Fern from our API Definition. -from finto.core.http_client import get_request_body -from finto.core.request_options import RequestOptions +from langfuse.api.core.http_client import get_request_body +from langfuse.api.core.request_options import RequestOptions def get_request_options() -> RequestOptions: From a7dcb631f6902a279f2c831e06101847ebca39f9 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:29:29 +0100 Subject: [PATCH 09/42] add upload time ms --- langfuse/_task_manager/media_manager.py | 4 ++++ langfuse/api/reference.md | 1 + langfuse/api/resources/media/client.py | 2 ++ langfuse/api/resources/media/types/patch_media_body.py | 7 +++++++ langfuse/api/tests/utils/test_query_encoding.py | 2 +- 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index b3e5f4032..1256048d5 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -2,6 +2,7 @@ from queue import Empty from typing import Any, Optional +import time import requests from langfuse.api import GetMediaUploadUrlRequest, PatchMediaBody @@ -172,6 +173,7 @@ def _process_upload_media_job( *, data: UploadMediaJob, ): + upload_start_time = time.time() upload_response = requests.put( data["upload_url"], headers={ @@ -180,6 +182,7 @@ def _process_upload_media_job( }, data=data["content_bytes"], ) + upload_time_ms = int((time.time() - upload_start_time) * 1000) self._api_client.media.patch( media_id=data["media_id"], @@ -187,5 +190,6 @@ def _process_upload_media_job( uploadedAt=_get_timestamp(), uploadHttpStatus=upload_response.status_code, uploadHttpError=upload_response.text, + uploadTimeMs=upload_time_ms, ), ) diff --git a/langfuse/api/reference.md b/langfuse/api/reference.md index 07103519d..cc91e6643 100644 --- a/langfuse/api/reference.md +++ b/langfuse/api/reference.md @@ -1346,6 +1346,7 @@ client.media.patch( ), upload_http_status=1, upload_http_error="string", + upload_time_ms=1, ), ) diff --git a/langfuse/api/resources/media/client.py b/langfuse/api/resources/media/client.py index 8b7b9e93a..bb4c0767b 100644 --- a/langfuse/api/resources/media/client.py +++ b/langfuse/api/resources/media/client.py @@ -138,6 +138,7 @@ def patch( ), upload_http_status=1, upload_http_error="string", + upload_time_ms=1, ), ) """ @@ -382,6 +383,7 @@ async def main() -> None: ), upload_http_status=1, upload_http_error="string", + upload_time_ms=1, ), ) diff --git a/langfuse/api/resources/media/types/patch_media_body.py b/langfuse/api/resources/media/types/patch_media_body.py index 8c8d6b336..49f0c3432 100644 --- a/langfuse/api/resources/media/types/patch_media_body.py +++ b/langfuse/api/resources/media/types/patch_media_body.py @@ -25,6 +25,13 @@ class PatchMediaBody(pydantic_v1.BaseModel): The HTTP error message of the upload """ + upload_time_ms: typing.Optional[int] = pydantic_v1.Field( + alias="uploadTimeMs", default=None + ) + """ + The time in milliseconds it took to upload the media record + """ + def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = { "by_alias": True, diff --git a/langfuse/api/tests/utils/test_query_encoding.py b/langfuse/api/tests/utils/test_query_encoding.py index a5a366eb4..9afa0ea78 100644 --- a/langfuse/api/tests/utils/test_query_encoding.py +++ b/langfuse/api/tests/utils/test_query_encoding.py @@ -1,6 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from finto.core.query_encoder import encode_query +from langfuse.api.core.query_encoder import encode_query def test_query_encoding() -> None: From a81006227b67c9501085433fbd947600c6b56553 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 12:27:19 +0100 Subject: [PATCH 10/42] update post endpoint --- langfuse/api/resources/media/client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/langfuse/api/resources/media/client.py b/langfuse/api/resources/media/client.py index bb4c0767b..d5501fed5 100644 --- a/langfuse/api/resources/media/client.py +++ b/langfuse/api/resources/media/client.py @@ -220,7 +220,7 @@ def get_upload_url( ) """ _response = self._client_wrapper.httpx_client.request( - "api/public/media/upload-url", + "api/public/media", method="POST", json=request, request_options=request_options, @@ -476,7 +476,7 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._client_wrapper.httpx_client.request( - "api/public/media/upload-url", + "api/public/media", method="POST", json=request, request_options=request_options, From a590e15f473935ec05eb59edb932dd8ded90db2d Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 12:44:40 +0100 Subject: [PATCH 11/42] keep openai format on audio --- langfuse/openai.py | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/langfuse/openai.py b/langfuse/openai.py index 6ad5f533a..0cf661442 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -22,7 +22,7 @@ from collections import defaultdict from dataclasses import dataclass from inspect import isclass -from typing import List, Optional +from typing import Optional import openai.resources @@ -256,7 +256,7 @@ def _extract_chat_response(kwargs: any): "role": kwargs.get("role", None), } - audio_content = None + audio = None if kwargs.get("function_call") is not None: response.update({"function_call": kwargs["function_call"]}) @@ -267,30 +267,21 @@ def _extract_chat_response(kwargs: any): if kwargs.get("audio") is not None: audio = kwargs["audio"].__dict__ - base64_data_uri = ( - f"data:audio/{audio.get('format', 'wav')};base64,{audio.get('data', None)}" - ) - - audio_content = [ - {"type": "text", "text": audio.get("transcript", None)}, - { - "type": "output_audio", - "output_audio": { - "data": LangfuseMedia( - None, - base64_data_uri=base64_data_uri, - ), - "format": audio.get("format", "wav"), - }, - }, - ] + if "data" in audio and audio["data"] is not None: + # base64_data_uri is detected in ingestion_consumer and handled accordingly + audio["data"] = ( + f"data:audio/{audio.get('format', 'wav')};base64,{audio.get('data', None)}" + ) response.update( { - "content": kwargs.get("content", None) or audio_content, + "content": kwargs.get("content", None), } ) + if audio is not None: + response.update({"audio": audio}) + return response From 5f24726a8f01c50ff9d0f55a33199ba2749e6e7a Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 14:45:38 +0100 Subject: [PATCH 12/42] check for mediacontenttype --- langfuse/api/__init__.py | 2 + langfuse/api/reference.md | 1 - langfuse/api/resources/__init__.py | 2 + langfuse/api/resources/media/__init__.py | 2 + langfuse/api/resources/media/client.py | 2 - .../api/resources/media/types/__init__.py | 2 + .../types/get_media_upload_url_request.py | 7 +- .../media/types/media_content_type.py | 15 +++ langfuse/media.py | 114 ++++++++++++++++-- langfuse/types/__init__.py | 16 ++- 10 files changed, 143 insertions(+), 20 deletions(-) create mode 100644 langfuse/api/resources/media/types/media_content_type.py diff --git a/langfuse/api/__init__.py b/langfuse/api/__init__.py index 89d3df091..df6daeace 100644 --- a/langfuse/api/__init__.py +++ b/langfuse/api/__init__.py @@ -73,6 +73,7 @@ IngestionSuccess, IngestionUsage, MapValue, + MediaContentType, MethodNotAllowedError, Model, ModelUsageUnit, @@ -225,6 +226,7 @@ "IngestionSuccess", "IngestionUsage", "MapValue", + "MediaContentType", "MethodNotAllowedError", "Model", "ModelUsageUnit", diff --git a/langfuse/api/reference.md b/langfuse/api/reference.md index cc91e6643..068e8bce5 100644 --- a/langfuse/api/reference.md +++ b/langfuse/api/reference.md @@ -1434,7 +1434,6 @@ client.media.get_upload_url( request=GetMediaUploadUrlRequest( trace_id="string", observation_id="string", - content_type="string", content_length=1, sha_256_hash="string", field="string", diff --git a/langfuse/api/resources/__init__.py b/langfuse/api/resources/__init__.py index c75efc510..4a6cc0319 100644 --- a/langfuse/api/resources/__init__.py +++ b/langfuse/api/resources/__init__.py @@ -110,6 +110,7 @@ GetMediaResponse, GetMediaUploadUrlRequest, GetMediaUploadUrlResponse, + MediaContentType, PatchMediaBody, ) from .metrics import DailyMetrics, DailyMetricsDetails, UsageByModel @@ -222,6 +223,7 @@ "IngestionSuccess", "IngestionUsage", "MapValue", + "MediaContentType", "MethodNotAllowedError", "Model", "ModelUsageUnit", diff --git a/langfuse/api/resources/media/__init__.py b/langfuse/api/resources/media/__init__.py index d66dfeb2c..f337d7a04 100644 --- a/langfuse/api/resources/media/__init__.py +++ b/langfuse/api/resources/media/__init__.py @@ -4,6 +4,7 @@ GetMediaResponse, GetMediaUploadUrlRequest, GetMediaUploadUrlResponse, + MediaContentType, PatchMediaBody, ) @@ -11,5 +12,6 @@ "GetMediaResponse", "GetMediaUploadUrlRequest", "GetMediaUploadUrlResponse", + "MediaContentType", "PatchMediaBody", ] diff --git a/langfuse/api/resources/media/client.py b/langfuse/api/resources/media/client.py index d5501fed5..4541966e9 100644 --- a/langfuse/api/resources/media/client.py +++ b/langfuse/api/resources/media/client.py @@ -212,7 +212,6 @@ def get_upload_url( request=GetMediaUploadUrlRequest( trace_id="string", observation_id="string", - content_type="string", content_length=1, sha_256_hash="string", field="string", @@ -465,7 +464,6 @@ async def main() -> None: request=GetMediaUploadUrlRequest( trace_id="string", observation_id="string", - content_type="string", content_length=1, sha_256_hash="string", field="string", diff --git a/langfuse/api/resources/media/types/__init__.py b/langfuse/api/resources/media/types/__init__.py index 1e1cba980..20af676d8 100644 --- a/langfuse/api/resources/media/types/__init__.py +++ b/langfuse/api/resources/media/types/__init__.py @@ -3,11 +3,13 @@ from .get_media_response import GetMediaResponse from .get_media_upload_url_request import GetMediaUploadUrlRequest from .get_media_upload_url_response import GetMediaUploadUrlResponse +from .media_content_type import MediaContentType from .patch_media_body import PatchMediaBody __all__ = [ "GetMediaResponse", "GetMediaUploadUrlRequest", "GetMediaUploadUrlResponse", + "MediaContentType", "PatchMediaBody", ] diff --git a/langfuse/api/resources/media/types/get_media_upload_url_request.py b/langfuse/api/resources/media/types/get_media_upload_url_request.py index 8415c0a2d..d0cde59fe 100644 --- a/langfuse/api/resources/media/types/get_media_upload_url_request.py +++ b/langfuse/api/resources/media/types/get_media_upload_url_request.py @@ -5,6 +5,7 @@ from ....core.datetime_utils import serialize_datetime from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from .media_content_type import MediaContentType class GetMediaUploadUrlRequest(pydantic_v1.BaseModel): @@ -20,11 +21,7 @@ class GetMediaUploadUrlRequest(pydantic_v1.BaseModel): The observation ID associated with the media record. If the media record is associated directly with a trace, this will be null. """ - content_type: str = pydantic_v1.Field(alias="contentType") - """ - The MIME type of the media record - """ - + content_type: MediaContentType = pydantic_v1.Field(alias="contentType") content_length: int = pydantic_v1.Field(alias="contentLength") """ The size of the media record in bytes diff --git a/langfuse/api/resources/media/types/media_content_type.py b/langfuse/api/resources/media/types/media_content_type.py new file mode 100644 index 000000000..bf9368fb3 --- /dev/null +++ b/langfuse/api/resources/media/types/media_content_type.py @@ -0,0 +1,15 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +MediaContentType = typing.Literal[ + "image/png", + "image/jpeg", + "image/jpg", + "image/webp", + "audio/mpeg", + "audio/mp3", + "audio/wav", + "text/plain", + "application/pdf", +] diff --git a/langfuse/media.py b/langfuse/media.py index cfbde90b4..ca9970e96 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -1,7 +1,13 @@ +"""This module contains the LangfuseMedia class, which is used to wrap media objects for upload to Langfuse.""" + import base64 import hashlib import logging -from typing import Optional +import os +from typing import Optional, cast + +from langfuse.api import MediaContentType +from langfuse.types import ParsedMediaReference class LangfuseMedia: @@ -11,11 +17,13 @@ class LangfuseMedia: supporting both base64 data URIs and raw content bytes. Args: - obj: The source object to be wrapped. + obj (Optional[object]): The source object to be wrapped. Can be accessed via the `obj` attribute. base64_data_uri (Optional[str]): A base64-encoded data URI containing the media content and content type (e.g., "data:image/jpeg;base64,/9j/4AAQ..."). content_type (Optional[str]): The MIME type of the media content when providing raw bytes. content_bytes (Optional[bytes]): Raw bytes of the media content. + file_path (Optional[str]): The path to the file containing the media content. For relative paths, + the current working directory is used. Raises: ValueError: If neither base64_data_uri or the combination of content_bytes @@ -23,20 +31,34 @@ class LangfuseMedia: """ obj: object + _log = logging.getLogger(__name__) - _content_bytes: bytes | None - _content_type: str | None - _source: str | None - _media_id: str | None + _content_bytes: Optional[bytes] + _content_type: Optional[MediaContentType] + _source: Optional[str] + _media_id: Optional[str] def __init__( self, - obj: object, *, + obj: Optional[object] = None, base64_data_uri: Optional[str] = None, - content_type: Optional[str] = None, + content_type: Optional[MediaContentType] = None, content_bytes: Optional[bytes] = None, + file_path: Optional[str] = None, ): + """Initialize a LangfuseMedia object. + + Args: + obj: The object to wrap. + + base64_data_uri: A base64-encoded data URI containing the media content + and content type (e.g., "data:image/jpeg;base64,/9j/4AAQ..."). + content_type: The MIME type of the media content when providing raw bytes or reading from a file. + content_bytes: Raw bytes of the media content. + file_path: The path to the file containing the media content. For relative paths, + the current working directory is used. + """ self.obj = obj self._media_id = None @@ -49,11 +71,26 @@ def __init__( self._content_type = content_type self._content_bytes = content_bytes self._source = "bytes" + elif ( + file_path is not None and content_type is None and os.path.exists(file_path) + ): + self._content_bytes = self._read_file(file_path) + self._content_type = content_type if self._content_bytes else None + self._source = "file" if self._content_bytes else None else: raise ValueError( - "base64_data_uri or content_bytes and content_type must be provided" + "base64_data_uri or content_bytes and content_type, or file_path must be provided" ) + def _read_file(self, file_path: str) -> Optional[bytes]: + try: + with open(file_path, "rb") as file: + return file.read() + except Exception as e: + self._log.error(f"Error reading file at path {file_path}", exc_info=e) + + return None + @property def _content_length(self) -> int | None: return len(self._content_bytes) if self._content_bytes else None @@ -74,7 +111,62 @@ def _reference_string(self) -> str | None: return f"@@@langfuseMedia:type={self._content_type}|id={self._media_id}|source={self._source}@@@" - def _parse_base64_data_uri(self, data: str): + @staticmethod + def parse_reference_string(reference_string: str) -> ParsedMediaReference: + """Parse a media reference string into a ParsedMediaReference. + + Example reference string: + "@@@langfuseMedia:type=image/jpeg|id=some-uuid|source=base64_data_uri@@@" + + Args: + reference_string: The reference string to parse. + + Returns: + A TypedDict with the media_id, source, and content_type. + + Raises: + ValueError: If the reference string is empty or not a string. + ValueError: If the reference string does not start with "@@@langfuseMedia:type=". + ValueError: If the reference string does not end with "@@@". + ValueError: If the reference string is missing required fields. + """ + if not reference_string: + raise ValueError("Reference string is empty") + + if not isinstance(reference_string, str): + raise ValueError("Reference string is not a string") + + if not reference_string.startswith("@@@langfuseMedia:type="): + raise ValueError( + "Reference string does not start with '@@@langfuseMedia:type='" + ) + + if not reference_string.endswith("@@@"): + raise ValueError("Reference string does not end with '@@@'") + + content = reference_string.removeprefix("@@@langfuseMedia:").removesuffix("@@@") + + # Split into key-value pairs + pairs = content.split("|") + parsed_data = {} + + for pair in pairs: + key, value = pair.split("=", 1) + parsed_data[key] = value + + # Verify all required fields are present + if not all(key in parsed_data for key in ["type", "id", "source"]): + raise ValueError("Missing required fields in reference string") + + return ParsedMediaReference( + media_id=parsed_data["id"], + source=parsed_data["source"], + content_type=parsed_data["type"], + ) + + def _parse_base64_data_uri( + self, data: str + ) -> tuple[Optional[bytes], Optional[MediaContentType]]: try: if not data or not isinstance(data, str): raise ValueError("Data URI is not a string") @@ -94,7 +186,7 @@ def _parse_base64_data_uri(self, data: str): if not content_type: raise ValueError("Content type is empty") - return base64.b64decode(actual_data), content_type + return base64.b64decode(actual_data), cast(MediaContentType, content_type) except Exception as e: self._log.error("Error parsing base64 data URI", exc_info=e) diff --git a/langfuse/types/__init__.py b/langfuse/types/__init__.py index 1836561be..1cef199f7 100644 --- a/langfuse/types/__init__.py +++ b/langfuse/types/__init__.py @@ -4,7 +4,7 @@ from typing import Any, Dict, List, Literal, Optional, Protocol, TypedDict, Union from pydantic import BaseModel - +from langfuse.api import MediaContentType from langfuse.model import MapValue, ModelUsage, PromptClient SpanLevel = Literal["DEBUG", "DEFAULT", "WARNING", "ERROR"] @@ -48,3 +48,17 @@ class MaskFunction(Protocol): """ def __call__(self, *, data: Any) -> Any: ... + + +class ParsedMediaReference(TypedDict): + """A parsed media reference. + + Attributes: + media_id: The media ID. + source: The original source of the media, e.g. a file path, bytes, base64 data URI, etc. + content_type: The content type of the media. + """ + + media_id: str + source: str + content_type: MediaContentType From 634f7e4200e443ec31048fa3f9f80cdf7ba890e9 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:05:47 +0100 Subject: [PATCH 13/42] add tests --- langfuse/media.py | 12 +++-- langfuse/openai.py | 10 ++--- tests/test_media.py | 106 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 tests/test_media.py diff --git a/langfuse/media.py b/langfuse/media.py index ca9970e96..bafeb630b 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -72,16 +72,22 @@ def __init__( self._content_bytes = content_bytes self._source = "bytes" elif ( - file_path is not None and content_type is None and os.path.exists(file_path) + file_path is not None + and content_type is not None + and os.path.exists(file_path) ): self._content_bytes = self._read_file(file_path) self._content_type = content_type if self._content_bytes else None self._source = "file" if self._content_bytes else None else: - raise ValueError( - "base64_data_uri or content_bytes and content_type, or file_path must be provided" + self._log.error( + "base64_data_uri, or content_bytes and content_type, or file_path must be provided to LangfuseMedia" ) + self._content_bytes = None + self._content_type = None + self._source = None + def _read_file(self, file_path: str) -> Optional[bytes]: try: with open(file_path, "rb") as file: diff --git a/langfuse/openai.py b/langfuse/openai.py index 0cf661442..9fa30b046 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -235,9 +235,7 @@ def _process_message(message): { "type": "input_audio", "input_audio": { - "data": LangfuseMedia( - None, base64_data_uri=base64_data_uri - ), + "data": LangfuseMedia(base64_data_uri=base64_data_uri), "format": format, }, } @@ -268,10 +266,8 @@ def _extract_chat_response(kwargs: any): audio = kwargs["audio"].__dict__ if "data" in audio and audio["data"] is not None: - # base64_data_uri is detected in ingestion_consumer and handled accordingly - audio["data"] = ( - f"data:audio/{audio.get('format', 'wav')};base64,{audio.get('data', None)}" - ) + base64_data_uri = f"data:audio/{audio.get('format', 'wav')};base64,{audio.get('data', None)}" + audio["data"] = LangfuseMedia(base64_data_uri=base64_data_uri) response.update( { diff --git a/tests/test_media.py b/tests/test_media.py new file mode 100644 index 000000000..181ec4775 --- /dev/null +++ b/tests/test_media.py @@ -0,0 +1,106 @@ +import base64 +import pytest +from langfuse.media import LangfuseMedia + +# Test data +SAMPLE_JPEG_BYTES = b"\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00" +SAMPLE_BASE64_DATA_URI = ( + "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAA" +) + + +def test_init_with_base64_data_uri(): + media = LangfuseMedia(base64_data_uri=SAMPLE_BASE64_DATA_URI) + assert media._source == "base64_data_uri" + assert media._content_type == "image/jpeg" + assert media._content_bytes is not None + + +def test_init_with_content_bytes(): + media = LangfuseMedia(content_bytes=SAMPLE_JPEG_BYTES, content_type="image/jpeg") + assert media._source == "bytes" + assert media._content_type == "image/jpeg" + assert media._content_bytes == SAMPLE_JPEG_BYTES + + +def test_init_with_invalid_input(): + # LangfuseMedia logs error but doesn't raise ValueError when initialized without required params + media = LangfuseMedia() + assert media._source is None + assert media._content_type is None + assert media._content_bytes is None + + media = LangfuseMedia(content_bytes=SAMPLE_JPEG_BYTES) # Missing content_type + assert media._source is None + assert media._content_type is None + assert media._content_bytes is None + + media = LangfuseMedia(content_type="image/jpeg") # Missing content_bytes + assert media._source is None + assert media._content_type is None + assert media._content_bytes is None + + +def test_content_length(): + media = LangfuseMedia(content_bytes=SAMPLE_JPEG_BYTES, content_type="image/jpeg") + assert media._content_length == len(SAMPLE_JPEG_BYTES) + + +def test_content_sha256_hash(): + media = LangfuseMedia(content_bytes=SAMPLE_JPEG_BYTES, content_type="image/jpeg") + assert media._content_sha256_hash is not None + # Hash should be base64 encoded + assert base64.b64decode(media._content_sha256_hash) + + +def test_reference_string(): + media = LangfuseMedia(content_bytes=SAMPLE_JPEG_BYTES, content_type="image/jpeg") + # Reference string should be None initially as media_id is not set + assert media._reference_string is None + + # Set media_id + media._media_id = "test-id" + reference = media._reference_string + assert reference is not None + assert "test-id" in reference + assert "image/jpeg" in reference + assert "bytes" in reference + + +def test_parse_reference_string(): + valid_ref = "@@@langfuseMedia:type=image/jpeg|id=test-id|source=base64_data_uri@@@" + result = LangfuseMedia.parse_reference_string(valid_ref) + + assert result["media_id"] == "test-id" + assert result["content_type"] == "image/jpeg" + assert result["source"] == "base64_data_uri" + + +def test_parse_invalid_reference_string(): + with pytest.raises(ValueError): + LangfuseMedia.parse_reference_string("") + + with pytest.raises(ValueError): + LangfuseMedia.parse_reference_string("invalid") + + with pytest.raises(ValueError): + LangfuseMedia.parse_reference_string( + "@@@langfuseMedia:type=image/jpeg@@@" + ) # Missing fields + + +def test_file_handling(): + file_path = "static/puton.jpg" + + media = LangfuseMedia(file_path=file_path, content_type="image/jpeg") + assert media._source == "file" + assert media._content_bytes is not None + assert media._content_type == "image/jpeg" + + +def test_nonexistent_file(): + media = LangfuseMedia(file_path="nonexistent.jpg") + + assert media._source is None + assert media._content_bytes is None + assert media._content_type is None From db9358614cfbf1185d7b3e90df289fb5b903e394 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:39:26 +0100 Subject: [PATCH 14/42] add retries --- langfuse/_task_manager/media_manager.py | 49 ++++++++++++++++--- .../_task_manager/media_upload_consumer.py | 2 - langfuse/_task_manager/task_manager.py | 5 +- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index 1256048d5..cd8769128 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -1,11 +1,13 @@ import logging from queue import Empty -from typing import Any, Optional +from typing import Any, Callable, Optional, TypeVar, ParamSpec import time import requests +import backoff from langfuse.api import GetMediaUploadUrlRequest, PatchMediaBody +from langfuse.api.core import ApiError from langfuse.api.client import FernLangfuse from langfuse.media import LangfuseMedia from langfuse.utils import _get_timestamp @@ -13,14 +15,23 @@ from .media_upload_queue import MediaUploadQueue, UploadMediaJob +T = TypeVar("T") +P = ParamSpec("P") + + class MediaManager: _log = logging.getLogger(__name__) def __init__( - self, *, api_client: FernLangfuse, media_upload_queue: MediaUploadQueue + self, + *, + api_client: FernLangfuse, + media_upload_queue: MediaUploadQueue, + max_retries: Optional[int] = 3, ): self._api_client = api_client self._queue = media_upload_queue + self._max_retries = max_retries def process_next_media_upload(self): try: @@ -141,7 +152,8 @@ def _process_media( ): return - upload_url_response = self._api_client.media.get_upload_url( + upload_url_response = self._request_with_backoff( + self._api_client.media.get_upload_url, request=GetMediaUploadUrlRequest( contentLength=media._content_length, contentType=media._content_type, @@ -149,7 +161,7 @@ def _process_media( field=field, traceId=trace_id, observationId=observation_id, - ) + ), ) upload_url = upload_url_response.upload_url @@ -174,7 +186,8 @@ def _process_upload_media_job( data: UploadMediaJob, ): upload_start_time = time.time() - upload_response = requests.put( + upload_response = self._request_with_backoff( + requests.put, data["upload_url"], headers={ "Content-Type": data["content_type"], @@ -184,7 +197,8 @@ def _process_upload_media_job( ) upload_time_ms = int((time.time() - upload_start_time) * 1000) - self._api_client.media.patch( + self._request_with_backoff( + self._api_client.media.patch, media_id=data["media_id"], request=PatchMediaBody( uploadedAt=_get_timestamp(), @@ -193,3 +207,26 @@ def _process_upload_media_job( uploadTimeMs=upload_time_ms, ), ) + + def _request_with_backoff( + self, func: Callable[P, T], *args: P.args, **kwargs: P.kwargs + ) -> T: + @backoff.on_exception( + backoff.expo, Exception, max_tries=self._max_retries, logger=None + ) + def execute_task_with_backoff() -> T: + try: + return func(*args, **kwargs) + except ApiError as e: + if ( + e.status_code is not None + and 400 <= e.status_code < 500 + and (e.status_code) != 429 + ): + raise e + except Exception as e: + raise e + + raise Exception("Failed to execute task") + + return execute_task_with_backoff() diff --git a/langfuse/_task_manager/media_upload_consumer.py b/langfuse/_task_manager/media_upload_consumer.py index c4720165d..544a0a3c6 100644 --- a/langfuse/_task_manager/media_upload_consumer.py +++ b/langfuse/_task_manager/media_upload_consumer.py @@ -14,7 +14,6 @@ def __init__( self, *, identifier: int, - max_retries: int, media_manager: MediaManager, ): """Create a consumer thread.""" @@ -27,7 +26,6 @@ def __init__( # forever. self.running = True self._identifier = identifier - self._max_retries = max_retries self._media_manager = media_manager def run(self): diff --git a/langfuse/_task_manager/task_manager.py b/langfuse/_task_manager/task_manager.py index 76df2ca66..bff7d62d3 100644 --- a/langfuse/_task_manager/task_manager.py +++ b/langfuse/_task_manager/task_manager.py @@ -63,7 +63,9 @@ def __init__( self._ingestion_queue = queue.Queue(self._max_task_queue_size) self._media_upload_queue = MediaUploadQueue(self._max_task_queue_size) self._media_manager = MediaManager( - api_client=api_client, media_upload_queue=self._media_upload_queue + api_client=api_client, + media_upload_queue=self._media_upload_queue, + max_retries=max_retries, ) self._ingestion_consumers = [] self._media_upload_consumers = [] @@ -108,7 +110,6 @@ def init_resources(self): for i in range(self._media_upload_threads): media_upload_consumer = MediaUploadConsumer( identifier=i, - max_retries=self._max_retries, media_manager=self._media_manager, ) media_upload_consumer.start() From 61b87c6c3702732983a87c8c06d4eda1c023fa13 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:27:48 +0100 Subject: [PATCH 15/42] fix decorator serialization --- langfuse/_task_manager/media_manager.py | 10 ++++++++++ langfuse/decorators/langfuse_decorator.py | 13 ++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index cd8769128..109f9cfe4 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -36,10 +36,12 @@ def __init__( def process_next_media_upload(self): try: upload_job = self._queue.get(block=True, timeout=1) + self._log.debug(f"Processing upload for {upload_job['media_id']}") self._process_upload_media_job(data=upload_job) self._queue.task_done() except Empty: + self._log.debug("Media upload queue is empty") pass except Exception as e: self._log.error(f"Error uploading media: {e}") @@ -168,6 +170,7 @@ def _process_media( media._media_id = upload_url_response.media_id # Important as this is will be used in the media reference string in serializer if upload_url is not None: + self._log.debug(f"Scheduling upload for {media._media_id}") self._queue.put( item={ "upload_url": upload_url, @@ -180,6 +183,9 @@ def _process_media( timeout=1, ) + else: + self._log.debug(f"Media {media._media_id} already uploaded") + def _process_upload_media_job( self, *, @@ -208,6 +214,10 @@ def _process_upload_media_job( ), ) + self._log.debug( + f"Media upload completed for {data['media_id']} in {upload_time_ms}ms" + ) + def _request_with_backoff( self, func: Callable[P, T], *args: P.args, **kwargs: P.kwargs ) -> T: diff --git a/langfuse/decorators/langfuse_decorator.py b/langfuse/decorators/langfuse_decorator.py index 9b7271294..838f21843 100644 --- a/langfuse/decorators/langfuse_decorator.py +++ b/langfuse/decorators/langfuse_decorator.py @@ -5,7 +5,6 @@ from functools import wraps import httpx import inspect -import json import logging from typing import ( Any, @@ -38,7 +37,6 @@ ScoreDataType, StateType, ) -from langfuse.serializer import EventSerializer from langfuse.types import ObservationParams, SpanLevel from langfuse.utils import _get_timestamp from langfuse.utils.langfuse_singleton import LangfuseSingleton @@ -390,15 +388,11 @@ def _get_input_from_func_args( ) -> Any: # Remove implicitly passed "self" or "cls" argument for instance or class methods logged_args = func_args[1:] if is_method else func_args - raw_input = { + return { "args": logged_args, "kwargs": func_kwargs, } - # Serialize and deserialize to ensure proper JSON serialization. - # Objects are later serialized again so deserialization is necessary here to avoid unnecessary escaping of quotes. - return json.loads(json.dumps(raw_input, cls=EventSerializer)) - def _finalize_call( self, observation: Optional[ @@ -446,13 +440,10 @@ def _handle_call_result( ) end_time = observation_params["end_time"] or _get_timestamp() - raw_output = observation_params["output"] or ( + output = observation_params["output"] or ( result if result and capture_output else None ) - # Serialize and deserialize to ensure proper JSON serialization. - # Objects are later serialized again so deserialization is necessary here to avoid unnecessary escaping of quotes. - output = json.loads(json.dumps(raw_output, cls=EventSerializer)) observation_params.update(end_time=end_time, output=output) if isinstance(observation, (StatefulSpanClient, StatefulGenerationClient)): From ca74a28c992d8765d08762091a478878ec5145d2 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:29:00 +0100 Subject: [PATCH 16/42] fix test --- tests/test_decorators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_decorators.py b/tests/test_decorators.py index c39728f0b..710a9ba58 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -1473,7 +1473,7 @@ def main(): langfuse_context.update_current_trace( metadata={ "context": LangfuseMedia( - pdf_bytes, content_bytes=pdf_bytes, content_type="application/pdf" + content_bytes=pdf_bytes, content_type="application/pdf" ) }, ) From 9a817db3723be106af377074e90b2bdf9ac3b91f Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:39:19 +0100 Subject: [PATCH 17/42] fix operand --- langfuse/_task_manager/task_manager.py | 8 +++++++- langfuse/media.py | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/langfuse/_task_manager/task_manager.py b/langfuse/_task_manager/task_manager.py index bff7d62d3..cfefc07c2 100644 --- a/langfuse/_task_manager/task_manager.py +++ b/langfuse/_task_manager/task_manager.py @@ -154,7 +154,9 @@ def join(self): Blocks execution until finished """ - self._log.debug(f"joining {len(self._ingestion_consumers)} consumer threads") + self._log.debug( + f"joining {len(self._ingestion_consumers)} ingestion consumer threads" + ) # pause all consumers before joining them so we don't have to wait for multiple # flush intervals to join them all. @@ -175,6 +177,10 @@ def join(self): f"IngestionConsumer thread {ingestion_consumer._identifier} joined" ) + self._log.debug( + f"joining {len(self._media_upload_consumers)} media upload consumer threads" + ) + for media_upload_consumer in self._media_upload_consumers: try: media_upload_consumer.join() diff --git a/langfuse/media.py b/langfuse/media.py index bafeb630b..30c9142cc 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -98,11 +98,11 @@ def _read_file(self, file_path: str) -> Optional[bytes]: return None @property - def _content_length(self) -> int | None: + def _content_length(self) -> Optional[int]: return len(self._content_bytes) if self._content_bytes else None @property - def _content_sha256_hash(self) -> str | None: + def _content_sha256_hash(self) -> Optional[str]: if self._content_bytes is None: return None @@ -111,7 +111,7 @@ def _content_sha256_hash(self) -> str | None: return base64.b64encode(sha256_hash_bytes).decode("utf-8") @property - def _reference_string(self) -> str | None: + def _reference_string(self) -> Optional[str]: if self._content_type is None or self._source is None or self._media_id is None: return None From f05dbcb654f3463f97d1cdc3d474d08e06f22e7d Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:45:27 +0100 Subject: [PATCH 18/42] pause upload consumer after ingestion --- langfuse/_task_manager/task_manager.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/langfuse/_task_manager/task_manager.py b/langfuse/_task_manager/task_manager.py index cfefc07c2..0744cfbdb 100644 --- a/langfuse/_task_manager/task_manager.py +++ b/langfuse/_task_manager/task_manager.py @@ -163,9 +163,6 @@ def join(self): for ingestion_consumer in self._ingestion_consumers: ingestion_consumer.pause() - for media_upload_consumer in self._media_upload_consumers: - media_upload_consumer.pause() - for ingestion_consumer in self._ingestion_consumers: try: ingestion_consumer.join() @@ -180,6 +177,8 @@ def join(self): self._log.debug( f"joining {len(self._media_upload_consumers)} media upload consumer threads" ) + for media_upload_consumer in self._media_upload_consumers: + media_upload_consumer.pause() for media_upload_consumer in self._media_upload_consumers: try: From 8bf9b0d676d14a190df5ca762506618ee43d0079 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Nov 2024 17:10:12 +0100 Subject: [PATCH 19/42] move paramspec to typing extensions --- langfuse/_task_manager/media_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index 109f9cfe4..3590a3987 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -1,6 +1,7 @@ import logging from queue import Empty -from typing import Any, Callable, Optional, TypeVar, ParamSpec +from typing import Any, Callable, Optional, TypeVar +from typing_extensions import ParamSpec import time import requests From 023658d763f2bf53e94b65ffe151227a76db6778 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 08:49:04 +0100 Subject: [PATCH 20/42] fix type access for python <3.10 --- langfuse/media.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/langfuse/media.py b/langfuse/media.py index 30c9142cc..d5453774f 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -164,11 +164,11 @@ def parse_reference_string(reference_string: str) -> ParsedMediaReference: if not all(key in parsed_data for key in ["type", "id", "source"]): raise ValueError("Missing required fields in reference string") - return ParsedMediaReference( - media_id=parsed_data["id"], - source=parsed_data["source"], - content_type=parsed_data["type"], - ) + return { + "media_id": parsed_data["id"], + "source": parsed_data["source"], + "content_type": parsed_data["type"], + } def _parse_base64_data_uri( self, data: str From d55e56f099f8af818494288e50ec16a61e307746 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 08:49:53 +0100 Subject: [PATCH 21/42] search for media 10 levels deep only --- langfuse/_task_manager/media_manager.py | 12 +++++++----- langfuse/serializer.py | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index 3590a3987..ee548a72c 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -95,9 +95,10 @@ def _find_and_process_media( field: str, ): seen = set() + max_levels = 10 - def _process_data_recursively(data: Any): - if id(data) in seen: + def _process_data_recursively(data: Any, level: int): + if id(data) in seen or level > max_levels: return data seen.add(id(data)) @@ -128,16 +129,17 @@ def _process_data_recursively(data: Any): return media if isinstance(data, list): - return [_process_data_recursively(item) for item in data] + return [_process_data_recursively(item, level + 1) for item in data] if isinstance(data, dict): return { - key: _process_data_recursively(value) for key, value in data.items() + key: _process_data_recursively(value, level + 1) + for key, value in data.items() } return data - return _process_data_recursively(data) + return _process_data_recursively(data, 1) def _process_media( self, diff --git a/langfuse/serializer.py b/langfuse/serializer.py index ac2f981ad..bca9013ed 100644 --- a/langfuse/serializer.py +++ b/langfuse/serializer.py @@ -46,7 +46,7 @@ def default(self, obj: Any): if isinstance(obj, LangfuseMedia): return ( obj._reference_string - or "" + or f"" ) # Check if numpy is available and if the object is a numpy scalar From 4b269a01f73a7767b09400a27ca963f25a4d40b1 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 09:11:35 +0100 Subject: [PATCH 22/42] handle ingestion consumer errors gracefully --- langfuse/_task_manager/ingestion_consumer.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/langfuse/_task_manager/ingestion_consumer.py b/langfuse/_task_manager/ingestion_consumer.py index 1d2ed0fb0..f55128c78 100644 --- a/langfuse/_task_manager/ingestion_consumer.py +++ b/langfuse/_task_manager/ingestion_consumer.py @@ -2,7 +2,7 @@ import logging import threading import time -import typing + from queue import Empty, Queue from typing import Any, List, Optional @@ -149,6 +149,13 @@ def _next(self): except Empty: break + except Exception as e: + self._log.warning( + "Failed to process event in IngestionConsumer, skipping", + exc_info=e, + ) + self._ingestion_queue.task_done() + self._log.debug( "~%d items in the Langfuse queue", self._ingestion_queue.qsize() ) @@ -158,9 +165,9 @@ def _next(self): def _truncate_item_in_place( self, *, - event: typing.Any, + event: Any, max_size: int, - log_message: typing.Optional[str] = None, + log_message: Optional[str] = None, ) -> int: """Truncate the item in place to fit within the size limit.""" item_size = self._get_item_size(event) @@ -216,7 +223,7 @@ def _truncate_item_in_place( return self._get_item_size(event) - def _get_item_size(self, item: typing.Any) -> int: + def _get_item_size(self, item: Any) -> int: """Return the size of the item in bytes.""" return len(json.dumps(item, cls=EventSerializer).encode()) From f11776e61ffbb03d824af5dcc68e21455a4eacab Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 09:18:30 +0100 Subject: [PATCH 23/42] revert decorator io media --- langfuse/decorators/langfuse_decorator.py | 13 +++++++++++-- tests/test_decorators.py | 21 ++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/langfuse/decorators/langfuse_decorator.py b/langfuse/decorators/langfuse_decorator.py index 838f21843..9b7271294 100644 --- a/langfuse/decorators/langfuse_decorator.py +++ b/langfuse/decorators/langfuse_decorator.py @@ -5,6 +5,7 @@ from functools import wraps import httpx import inspect +import json import logging from typing import ( Any, @@ -37,6 +38,7 @@ ScoreDataType, StateType, ) +from langfuse.serializer import EventSerializer from langfuse.types import ObservationParams, SpanLevel from langfuse.utils import _get_timestamp from langfuse.utils.langfuse_singleton import LangfuseSingleton @@ -388,11 +390,15 @@ def _get_input_from_func_args( ) -> Any: # Remove implicitly passed "self" or "cls" argument for instance or class methods logged_args = func_args[1:] if is_method else func_args - return { + raw_input = { "args": logged_args, "kwargs": func_kwargs, } + # Serialize and deserialize to ensure proper JSON serialization. + # Objects are later serialized again so deserialization is necessary here to avoid unnecessary escaping of quotes. + return json.loads(json.dumps(raw_input, cls=EventSerializer)) + def _finalize_call( self, observation: Optional[ @@ -440,10 +446,13 @@ def _handle_call_result( ) end_time = observation_params["end_time"] or _get_timestamp() - output = observation_params["output"] or ( + raw_output = observation_params["output"] or ( result if result and capture_output else None ) + # Serialize and deserialize to ensure proper JSON serialization. + # Objects are later serialized again so deserialization is necessary here to avoid unnecessary escaping of quotes. + output = json.loads(json.dumps(raw_output, cls=EventSerializer)) observation_params.update(end_time=end_time, output=output) if isinstance(observation, (StatefulSpanClient, StatefulGenerationClient)): diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 710a9ba58..428d3f50e 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -1462,19 +1462,21 @@ def main(): assert len(child_observations) == 2 -def test_pdf_in_metadata(): +def test_media(): mock_trace_id = create_uuid() with open("static/bitcoin.pdf", "rb") as pdf_file: pdf_bytes = pdf_file.read() + media = LangfuseMedia(content_bytes=pdf_bytes, content_type="application/pdf") + @observe() def main(): langfuse_context.update_current_trace( metadata={ - "context": LangfuseMedia( - content_bytes=pdf_bytes, content_type="application/pdf" - ) + "context": { + "nested": media, + }, }, ) @@ -1484,4 +1486,13 @@ def main(): trace_data = get_api().trace.get(mock_trace_id) - assert "@@@langfuseMedia:type=application/pdf|id=" in trace_data.metadata["context"] + assert ( + "@@@langfuseMedia:type=application/pdf|id=" + in trace_data.metadata["context"]["nested"] + ) + parsed_reference_string = LangfuseMedia.parse_reference_string( + trace_data.metadata["context"]["nested"] + ) + assert parsed_reference_string["content_type"] == "application/pdf" + assert parsed_reference_string["media_id"] is not None + assert parsed_reference_string["source"] == "bytes" From fcb71fdafd3fff3f565ca0a6d7da5e6bef4a3dd9 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 09:29:30 +0100 Subject: [PATCH 24/42] make data uri parsing more robust --- langfuse/media.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/langfuse/media.py b/langfuse/media.py index d5453774f..50d62dd43 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -173,6 +173,7 @@ def parse_reference_string(reference_string: str) -> ParsedMediaReference: def _parse_base64_data_uri( self, data: str ) -> tuple[Optional[bytes], Optional[MediaContentType]]: + # Example data URI: data:image/jpeg;base64,/9j/4AAQ... try: if not data or not isinstance(data, str): raise ValueError("Data URI is not a string") @@ -180,15 +181,17 @@ def _parse_base64_data_uri( if not data.startswith("data:"): raise ValueError("Data URI does not start with 'data:'") - header, _, actual_data = data[5:].partition(",") + header, actual_data = data[5:].split(",", 1) if not header or not actual_data: raise ValueError("Invalid URI") - is_base64 = header.endswith(";base64") - if not is_base64: + # Split header into parts and check for base64 + header_parts = header.split(";") + if "base64" not in header_parts: raise ValueError("Data is not base64 encoded") - content_type = header[:-7] + # Content type is the first part + content_type = header_parts[0] if not content_type: raise ValueError("Content type is empty") From aaef73cde94b752f28c5147dfa7946bc6a232c5b Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 10:41:07 +0100 Subject: [PATCH 25/42] use threads for media upload threads --- langfuse/_task_manager/task_manager.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/langfuse/_task_manager/task_manager.py b/langfuse/_task_manager/task_manager.py index 0744cfbdb..c58287046 100644 --- a/langfuse/_task_manager/task_manager.py +++ b/langfuse/_task_manager/task_manager.py @@ -22,7 +22,6 @@ class TaskManager(object): _ingestion_consumers: List[IngestionConsumer] _enabled: bool _threads: int - _media_upload_threads: int _max_task_queue_size: int _ingestion_queue: Queue _media_upload_queue: MediaUploadQueue @@ -47,7 +46,6 @@ def __init__( flush_interval: float, max_retries: int, threads: int, - media_upload_threads: int = 1, public_key: str, sdk_name: str, sdk_version: str, @@ -59,7 +57,6 @@ def __init__( ): self._max_task_queue_size = max_task_queue_size self._threads = threads - self._media_upload_threads = media_upload_threads self._ingestion_queue = queue.Queue(self._max_task_queue_size) self._media_upload_queue = MediaUploadQueue(self._max_task_queue_size) self._media_manager = MediaManager( @@ -107,7 +104,7 @@ def init_resources(self): ingestion_consumer.start() self._ingestion_consumers.append(ingestion_consumer) - for i in range(self._media_upload_threads): + for i in range(self._threads): media_upload_consumer = MediaUploadConsumer( identifier=i, media_manager=self._media_manager, From ca7bcc1fb5aa503a56461c3d0ca0abbfbab1f669 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 10:50:01 +0100 Subject: [PATCH 26/42] fix test --- tests/test_task_manager.py | 135 +++++++++++++++++++++++++++++++------ 1 file changed, 114 insertions(+), 21 deletions(-) diff --git a/tests/test_task_manager.py b/tests/test_task_manager.py index e066787ae..231979414 100644 --- a/tests/test_task_manager.py +++ b/tests/test_task_manager.py @@ -58,7 +58,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 10, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=10, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) tm.add_task({"foo": "bar"}) @@ -93,15 +103,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, - 10, - 0.1, - 3, - 1, - 10_000, - "test-sdk", - "1.0.0", - "default", + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=10, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", enabled=False, ) @@ -133,7 +145,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 10, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=10, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) tm.add_task({"type": "bar", "body": {"trace_id": "trace_123"}}) @@ -166,7 +188,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 10, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=10, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) tm.add_task({"foo": "bar"}) @@ -198,7 +230,17 @@ def add_task_concurrently(tm, func): ) tm = TaskManager( - langfuse_client, 1, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=1, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) threads = [ threading.Thread( @@ -222,7 +264,7 @@ def test_atexit(): python_code = """ import time import logging -from langfuse.task_manager import TaskManager # assuming task_manager is the module name +from langfuse._task_manager.task_manager import TaskManager from langfuse.request import LangfuseClient import httpx @@ -236,7 +278,7 @@ def test_atexit(): ] ) print("Adding task manager", TaskManager) -manager = TaskManager(langfuse_client, 10, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default") +manager = TaskManager(client=langfuse_client, api_client=None, public_key=None, flush_at=10, flush_interval=0.1, max_retries=3, threads=1, max_task_queue_size=10_000, sdk_name="test-sdk", sdk_version="1.0.0", sdk_integration="default") """ @@ -260,7 +302,8 @@ def test_atexit(): print(process.stderr) - assert "consumer thread 0 joined" in logs + assert "MediaUploadConsumer thread 0 joined" in logs + assert "IngestionConsumer thread 0 joined" in logs def test_flush(httpserver: HTTPServer): @@ -289,7 +332,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 1, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=1, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) for _ in range(100): @@ -328,7 +381,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 1, 0.1, 3, 5, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=1, + flush_interval=0.1, + max_retries=3, + threads=5, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) for _ in range(100): @@ -370,7 +433,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 1, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=1, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) tm.add_task({"foo": "bar"}) @@ -411,7 +484,17 @@ def handler(request: Request): ) tm = TaskManager( - langfuse_client, 1, 0.1, 3, 1, 10_000, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=1, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=10_000, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) tm.add_task({"type": "bar", "body": {"trace_id": "trace_123"}}) @@ -439,7 +522,17 @@ def test_truncate_item_in_place(httpserver): ) tm = TaskManager( - langfuse_client, 10, 0.1, 3, 1, 100, "test-sdk", "1.0.0", "default" + client=langfuse_client, + api_client=None, + public_key=None, + flush_at=10, + flush_interval=0.1, + max_retries=3, + threads=1, + max_task_queue_size=100, + sdk_name="test-sdk", + sdk_version="1.0.0", + sdk_integration="default", ) consumer = tm._ingestion_consumers[0] From e909c6cf012eaac000240bfde920c0807c57e578 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 10:55:34 +0100 Subject: [PATCH 27/42] fix test --- langfuse/media.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/langfuse/media.py b/langfuse/media.py index 50d62dd43..555baa0da 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -4,7 +4,7 @@ import hashlib import logging import os -from typing import Optional, cast +from typing import Optional, cast, Tuple from langfuse.api import MediaContentType from langfuse.types import ParsedMediaReference @@ -164,15 +164,15 @@ def parse_reference_string(reference_string: str) -> ParsedMediaReference: if not all(key in parsed_data for key in ["type", "id", "source"]): raise ValueError("Missing required fields in reference string") - return { - "media_id": parsed_data["id"], - "source": parsed_data["source"], - "content_type": parsed_data["type"], - } + return ParsedMediaReference( + media_id=parsed_data["id"], + source=parsed_data["source"], + content_type=parsed_data["type"], + ) def _parse_base64_data_uri( self, data: str - ) -> tuple[Optional[bytes], Optional[MediaContentType]]: + ) -> Tuple[Optional[bytes], Optional[MediaContentType]]: # Example data URI: data:image/jpeg;base64,/9j/4AAQ... try: if not data or not isinstance(data, str): From 7f966ff21f0000d0a27767c7836d1776ab9d85cc Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:06:03 +0100 Subject: [PATCH 28/42] fix logging --- langfuse/client.py | 5 +++-- tests/test_logger.py | 6 ------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/langfuse/client.py b/langfuse/client.py index 74a2f53d4..6137c2c02 100644 --- a/langfuse/client.py +++ b/langfuse/client.py @@ -257,11 +257,12 @@ def __init__( # Otherwise, defaults to WARNING level. # See https://docs.python.org/3/howto/logging.html#what-happens-if-no-configuration-is-provided logging.basicConfig() - self.log.setLevel(logging.DEBUG) + # Set level for all loggers under langfuse package + logging.getLogger("langfuse").setLevel(logging.DEBUG) clean_logger() else: - self.log.setLevel(logging.WARNING) + logging.getLogger("langfuse").setLevel(logging.WARNING) clean_logger() self.base_url = ( diff --git a/tests/test_logger.py b/tests/test_logger.py index 6d7700818..0c5d78b24 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -18,7 +18,6 @@ def test_via_env(): langfuse = Langfuse() assert langfuse.log.level == 10 - assert langfuse.task_manager._log.level == 10 os.environ.pop("LANGFUSE_DEBUG") @@ -30,20 +29,17 @@ def test_via_env_callback(): assert callback.log.level == 10 assert callback.langfuse.log.level == 10 - assert callback.langfuse.task_manager._log.level == 10 os.environ.pop("LANGFUSE_DEBUG") def test_debug_langfuse(): langfuse = Langfuse(debug=True) assert langfuse.log.level == 10 - assert langfuse.task_manager._log.level == 10 def test_default_langfuse(): langfuse = Langfuse() assert langfuse.log.level == 30 - assert langfuse.task_manager._log.level == 30 def test_default_langfuse_callback(): @@ -68,7 +64,6 @@ def test_default_langfuse_trace_callback(): assert callback.log.level == 30 assert callback.log.level == 30 assert callback.trace.log.level == 30 - assert callback.trace.task_manager._log.level == 30 def test_debug_langfuse_trace_callback(): @@ -79,4 +74,3 @@ def test_debug_langfuse_trace_callback(): assert callback.log.level == 10 assert callback.log.level == 10 assert callback.trace.log.level == 10 - assert callback.trace.task_manager._log.level == 10 From 1a141e459615598cb3d10bb93fbd7fa2e4c2a153 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:06:27 +0100 Subject: [PATCH 29/42] fix openai test --- tests/test_openai.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_openai.py b/tests/test_openai.py index fe69b72bb..7e2ba6ec3 100644 --- a/tests/test_openai.py +++ b/tests/test_openai.py @@ -89,6 +89,7 @@ def test_openai_chat_completion(): assert trace.input == [ { "content": "You are an expert mathematician", + "audio": None, "function_call": None, "refusal": None, "role": "assistant", From b65579007fd9922919e7076422bf2f21b8888c1c Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:06:43 +0100 Subject: [PATCH 30/42] address comments --- langfuse/_task_manager/ingestion_consumer.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/langfuse/_task_manager/ingestion_consumer.py b/langfuse/_task_manager/ingestion_consumer.py index f55128c78..a29ba0c28 100644 --- a/langfuse/_task_manager/ingestion_consumer.py +++ b/langfuse/_task_manager/ingestion_consumer.py @@ -13,7 +13,6 @@ except ImportError: import pydantic -from langfuse.api.client import FernLangfuse from langfuse.parse_error import handle_exception from langfuse.request import APIError, LangfuseClient from langfuse.Sampler import Sampler @@ -28,10 +27,10 @@ class IngestionMetadata(pydantic.BaseModel): batch_size: int - sdk_integration: Optional[str] = None - sdk_name: Optional[str] = None - sdk_version: Optional[str] = None - public_key: Optional[str] = None + sdk_integration: str + sdk_name: str + sdk_version: str + public_key: str class IngestionConsumer(threading.Thread): @@ -39,7 +38,6 @@ class IngestionConsumer(threading.Thread): _ingestion_queue: Queue _identifier: int _client: LangfuseClient - _api_client: FernLangfuse _flush_at: int _flush_interval: float _max_retries: int From 9706d63d5c568e1fe77767238c9e0210c2ca5701 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:42:31 +0100 Subject: [PATCH 31/42] fix ci script --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2307376aa..206a67076 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,11 +71,11 @@ jobs: cd ./langfuse-server echo "::group::Run langfuse server" - TELEMETRY_ENABLED=false docker compose up -d db + TELEMETRY_ENABLED=false docker compose -f docker-compose.v3beta up -d postgres echo "::endgroup::" echo "::group::Logs from langfuse server" - TELEMETRY_ENABLED=false docker compose logs + TELEMETRY_ENABLED=false docker compose -f docker-compose.v3beta logs echo "::endgroup::" echo "::group::Install dependencies (necessary to run seeder)" @@ -89,7 +89,7 @@ jobs: echo "::endgroup::" echo "::group::Run server" - TELEMETRY_ENABLED=false docker compose up -d langfuse-server + TELEMETRY_ENABLED=false LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3beta up -d echo "::endgroup::" # Add this step to check the health of the container From a93d5c8f014c2b4dbd9e96c8b188f27b00f031ad Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:46:59 +0100 Subject: [PATCH 32/42] push --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 206a67076..a7f6fc604 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,11 +71,11 @@ jobs: cd ./langfuse-server echo "::group::Run langfuse server" - TELEMETRY_ENABLED=false docker compose -f docker-compose.v3beta up -d postgres + TELEMETRY_ENABLED=false docker compose -f docker-compose.v3preview.yml up -d postgres echo "::endgroup::" echo "::group::Logs from langfuse server" - TELEMETRY_ENABLED=false docker compose -f docker-compose.v3beta logs + TELEMETRY_ENABLED=false docker compose -f docker-compose.v3preview.yml logs echo "::endgroup::" echo "::group::Install dependencies (necessary to run seeder)" @@ -89,7 +89,7 @@ jobs: echo "::endgroup::" echo "::group::Run server" - TELEMETRY_ENABLED=false LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3beta up -d + TELEMETRY_ENABLED=false LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3preview.yml up -d echo "::endgroup::" # Add this step to check the health of the container From bc3774138757ae3506a6f9b54709a47c49ab15c3 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:58:55 +0100 Subject: [PATCH 33/42] remove queue type for 3.8 support --- langfuse/_task_manager/media_manager.py | 15 +++++++-------- langfuse/_task_manager/media_upload_queue.py | 5 ----- langfuse/_task_manager/task_manager.py | 5 ++--- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index ee548a72c..61e23ac60 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -1,20 +1,19 @@ import logging -from queue import Empty +import time +from queue import Empty, Queue from typing import Any, Callable, Optional, TypeVar -from typing_extensions import ParamSpec -import time -import requests import backoff +import requests +from typing_extensions import ParamSpec from langfuse.api import GetMediaUploadUrlRequest, PatchMediaBody -from langfuse.api.core import ApiError from langfuse.api.client import FernLangfuse +from langfuse.api.core import ApiError from langfuse.media import LangfuseMedia from langfuse.utils import _get_timestamp -from .media_upload_queue import MediaUploadQueue, UploadMediaJob - +from .media_upload_queue import UploadMediaJob T = TypeVar("T") P = ParamSpec("P") @@ -27,7 +26,7 @@ def __init__( self, *, api_client: FernLangfuse, - media_upload_queue: MediaUploadQueue, + media_upload_queue: Queue, max_retries: Optional[int] = 3, ): self._api_client = api_client diff --git a/langfuse/_task_manager/media_upload_queue.py b/langfuse/_task_manager/media_upload_queue.py index 81bd9d331..912af2546 100644 --- a/langfuse/_task_manager/media_upload_queue.py +++ b/langfuse/_task_manager/media_upload_queue.py @@ -1,4 +1,3 @@ -from queue import Queue from typing import TypedDict @@ -8,7 +7,3 @@ class UploadMediaJob(TypedDict): content_type: str content_bytes: bytes content_sha256_hash: str - - -class MediaUploadQueue(Queue[UploadMediaJob]): - pass diff --git a/langfuse/_task_manager/task_manager.py b/langfuse/_task_manager/task_manager.py index c58287046..5b5a7c91a 100644 --- a/langfuse/_task_manager/task_manager.py +++ b/langfuse/_task_manager/task_manager.py @@ -14,7 +14,6 @@ from .ingestion_consumer import IngestionConsumer from .media_manager import MediaManager from .media_upload_consumer import MediaUploadConsumer -from .media_upload_queue import MediaUploadQueue class TaskManager(object): @@ -24,7 +23,7 @@ class TaskManager(object): _threads: int _max_task_queue_size: int _ingestion_queue: Queue - _media_upload_queue: MediaUploadQueue + _media_upload_queue: Queue _client: LangfuseClient _api_client: FernLangfuse _flush_at: int @@ -58,7 +57,7 @@ def __init__( self._max_task_queue_size = max_task_queue_size self._threads = threads self._ingestion_queue = queue.Queue(self._max_task_queue_size) - self._media_upload_queue = MediaUploadQueue(self._max_task_queue_size) + self._media_upload_queue = Queue(self._max_task_queue_size) self._media_manager = MediaManager( api_client=api_client, media_upload_queue=self._media_upload_queue, From 281b50ce12872c73a0f4c93f879657bf256de710 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:40:51 +0100 Subject: [PATCH 34/42] fix test --- tests/test_task_manager.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/test_task_manager.py b/tests/test_task_manager.py index 231979414..373493670 100644 --- a/tests/test_task_manager.py +++ b/tests/test_task_manager.py @@ -60,7 +60,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=10, flush_interval=0.1, max_retries=3, @@ -105,7 +105,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=10, flush_interval=0.1, max_retries=3, @@ -147,7 +147,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=10, flush_interval=0.1, max_retries=3, @@ -190,7 +190,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=10, flush_interval=0.1, max_retries=3, @@ -232,7 +232,7 @@ def add_task_concurrently(tm, func): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=1, flush_interval=0.1, max_retries=3, @@ -278,7 +278,7 @@ def test_atexit(): ] ) print("Adding task manager", TaskManager) -manager = TaskManager(client=langfuse_client, api_client=None, public_key=None, flush_at=10, flush_interval=0.1, max_retries=3, threads=1, max_task_queue_size=10_000, sdk_name="test-sdk", sdk_version="1.0.0", sdk_integration="default") +manager = TaskManager(client=langfuse_client, api_client=None, public_key='pk', flush_at=10, flush_interval=0.1, max_retries=3, threads=1, max_task_queue_size=10_000, sdk_name="test-sdk", sdk_version="1.0.0", sdk_integration="default") """ @@ -334,7 +334,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=1, flush_interval=0.1, max_retries=3, @@ -383,7 +383,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=1, flush_interval=0.1, max_retries=3, @@ -435,7 +435,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=1, flush_interval=0.1, max_retries=3, @@ -486,7 +486,7 @@ def handler(request: Request): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=1, flush_interval=0.1, max_retries=3, @@ -524,7 +524,7 @@ def test_truncate_item_in_place(httpserver): tm = TaskManager( client=langfuse_client, api_client=None, - public_key=None, + public_key="pk", flush_at=10, flush_interval=0.1, max_retries=3, From c83e6c7ffe80ac8d945d6a1dfe4ef675d16f0c1e Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:49:47 +0100 Subject: [PATCH 35/42] fix openai test --- tests/test_openai.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_openai.py b/tests/test_openai.py index 7e2ba6ec3..bab25a048 100644 --- a/tests/test_openai.py +++ b/tests/test_openai.py @@ -60,6 +60,7 @@ def test_openai_chat_completion(): assert generation.data[0].input == [ { "content": "You are an expert mathematician", + "audio": None, "function_call": None, "refusal": None, "role": "assistant", From 1b2bbe130b63d11b2ab75c5548e020e696488ae2 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:54:08 +0100 Subject: [PATCH 36/42] fix langchain test --- tests/test_langchain.py | 1 + tests/test_openai.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_langchain.py b/tests/test_langchain.py index d96758302..3ed864fe6 100644 --- a/tests/test_langchain.py +++ b/tests/test_langchain.py @@ -224,6 +224,7 @@ def test_callback_generated_from_lcel_chain(): ) langfuse.flush() + handler.flush() trace_id = handler.get_trace_id() trace = api.trace.get(trace_id) diff --git a/tests/test_openai.py b/tests/test_openai.py index bab25a048..29752be94 100644 --- a/tests/test_openai.py +++ b/tests/test_openai.py @@ -1579,5 +1579,5 @@ def test_audio_input_and_output(): print(generation.data[0].output) assert ( "@@@langfuseMedia:type=audio/wav|id=" - in generation.data[0].output["content"][1]["output_audio"]["data"] + in generation.data[0].output["audio"]["data"] ) From 22dc7a83ebbb3a3ed557f5a611387273cdd4e6c8 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:19:21 +0100 Subject: [PATCH 37/42] fix --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7f6fc604..6fb066ee9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,7 +97,7 @@ jobs: run: | echo "Checking if the langfuse server is up..." retry_count=0 - max_retries=5 + max_retries=10 until curl --output /dev/null --silent --head --fail http://localhost:3000/api/public/health do retry_count=`expr $retry_count + 1` From 765850d6b28cd755875560f01a37f7f3599807a8 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:24:03 +0100 Subject: [PATCH 38/42] push --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6fb066ee9..2f9ab346a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -104,7 +104,7 @@ jobs: echo "Attempt $retry_count of $max_retries..." if [ $retry_count -ge $max_retries ]; then echo "Langfuse server did not respond in time. Printing logs..." - docker logs langfuse-server_langfuse-server_1 + docker logs langfuse-server-langfuse-web-1 echo "Failing the step..." exit 1 fi From 359e9954c0e537ef8a5bb46d63fa7601ee520548 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:57:45 +0100 Subject: [PATCH 39/42] push --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f9ab346a..c56896a9a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,7 +89,7 @@ jobs: echo "::endgroup::" echo "::group::Run server" - TELEMETRY_ENABLED=false LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3preview.yml up -d + TELEMETRY_ENABLED=false LANGFUSE_AUTO_POSTGRES_MIGRATION_DISABLED=true LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3preview.yml up -d echo "::endgroup::" # Add this step to check the health of the container From 1f2df0b77e1fc732efdea1290e3e108c5ed08ce9 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 19:27:03 +0100 Subject: [PATCH 40/42] fix --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c56896a9a..56c50f8c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,7 +89,7 @@ jobs: echo "::endgroup::" echo "::group::Run server" - TELEMETRY_ENABLED=false LANGFUSE_AUTO_POSTGRES_MIGRATION_DISABLED=true LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3preview.yml up -d + TELEMETRY_ENABLED=false CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000 LANGFUSE_ASYNC_INGESTION_PROCESSING=false LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=false docker compose -f docker-compose.v3preview.yml up -d echo "::endgroup::" # Add this step to check the health of the container From 10d8977d45cf4870b1f4791b9000c76b74d0178d Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Fri, 15 Nov 2024 19:44:31 +0100 Subject: [PATCH 41/42] fix string stripping --- langfuse/media.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langfuse/media.py b/langfuse/media.py index 555baa0da..02ccfa81f 100644 --- a/langfuse/media.py +++ b/langfuse/media.py @@ -150,7 +150,7 @@ def parse_reference_string(reference_string: str) -> ParsedMediaReference: if not reference_string.endswith("@@@"): raise ValueError("Reference string does not end with '@@@'") - content = reference_string.removeprefix("@@@langfuseMedia:").removesuffix("@@@") + content = reference_string[len("@@@langfuseMedia:") :].rstrip("@@@") # Split into key-value pairs pairs = content.split("|") From d19f4f16dbe3f49c5bb9133ed15ebf2542ca7bc5 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Sat, 16 Nov 2024 12:01:54 +0100 Subject: [PATCH 42/42] increase ci timeout --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56c50f8c4..5f40243b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: ci: runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 30 env: LANGFUSE_HOST: "http://localhost:3000" LANGFUSE_PUBLIC_KEY: "pk-lf-1234567890"