openlit 1.34.23__tar.gz → 1.34.25__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openlit-1.34.23 → openlit-1.34.25}/PKG-INFO +1 -1
- {openlit-1.34.23 → openlit-1.34.25}/pyproject.toml +1 -1
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/__helpers.py +48 -3
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/chroma/__init__.py +38 -34
- openlit-1.34.25/src/openlit/instrumentation/chroma/chroma.py +59 -0
- openlit-1.34.25/src/openlit/instrumentation/chroma/utils.py +227 -0
- openlit-1.34.25/src/openlit/instrumentation/pinecone/__init__.py +174 -0
- openlit-1.34.25/src/openlit/instrumentation/pinecone/async_pinecone.py +58 -0
- openlit-1.34.25/src/openlit/instrumentation/pinecone/pinecone.py +58 -0
- openlit-1.34.25/src/openlit/instrumentation/pinecone/utils.py +186 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/semcov/__init__.py +13 -1
- openlit-1.34.23/src/openlit/instrumentation/chroma/chroma.py +0 -199
- openlit-1.34.23/src/openlit/instrumentation/pinecone/__init__.py +0 -66
- openlit-1.34.23/src/openlit/instrumentation/pinecone/pinecone.py +0 -173
- {openlit-1.34.23 → openlit-1.34.25}/LICENSE +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/README.md +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/all.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/bias_detection.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/hallucination.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/toxicity.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/all.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/prompt_injection.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/restrict_topic.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/sensitive_topic.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/ag2.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/async_ag2.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/ai21.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/async_ai21.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/anthropic.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/async_anthropic.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/assemblyai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/assemblyai/assemblyai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/assemblyai/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/astra.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/async_astra.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/async_azure_ai_inference.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/azure_ai_inference.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/bedrock/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/bedrock/bedrock.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/bedrock/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/async_cohere.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/cohere.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/controlflow/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/controlflow/controlflow.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crawl4ai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crawl4ai/async_crawl4ai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crawl4ai/crawl4ai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crewai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crewai/crewai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/dynamiq/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/dynamiq/dynamiq.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/async_elevenlabs.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/elevenlabs.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/embedchain/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/embedchain/embedchain.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/firecrawl/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/firecrawl/firecrawl.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/async_google_ai_studio.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/google_ai_studio.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpt4all/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpt4all/gpt4all.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpt4all/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpu/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/async_groq.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/groq.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/haystack/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/haystack/haystack.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/julep/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/julep/async_julep.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/julep/julep.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/async_langchain.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/langchain.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/async_langchain_community.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/langchain_community.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/letta/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/letta/letta.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/async_litellm.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/litellm.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/llamaindex/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/llamaindex/llamaindex.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mem0/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mem0/mem0.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/milvus/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/milvus/milvus.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/async_mistral.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/mistral.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/multion/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/multion/async_multion.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/multion/multion.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/async_ollama.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/ollama.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/async_openai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/openai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai_agents/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai_agents/openai_agents.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/phidata/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/phidata/phidata.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/premai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/premai/premai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/premai/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/pydantic_ai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/pydantic_ai/pydantic_ai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/pydantic_ai/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/qdrant/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/qdrant/async_qdrant.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/qdrant/qdrant.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/async_reka.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/reka.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/async_together.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/together.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/transformers/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/transformers/transformers.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/transformers/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/async_vertexai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/vertexai.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vllm/__init__.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vllm/utils.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vllm/vllm.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/otel/events.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/otel/metrics.py +0 -0
- {openlit-1.34.23 → openlit-1.34.25}/src/openlit/otel/tracing.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: openlit
|
3
|
-
Version: 1.34.
|
3
|
+
Version: 1.34.25
|
4
4
|
Summary: OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications and GPUs, facilitating the integration of observability into your GenAI-driven projects
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: OpenTelemetry,otel,otlp,llm,tracing,openai,anthropic,claude,cohere,llm monitoring,observability,monitoring,gpt,Generative AI,chatGPT,gpu
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "openlit"
|
3
|
-
version = "1.34.
|
3
|
+
version = "1.34.25"
|
4
4
|
description = "OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications and GPUs, facilitating the integration of observability into your GenAI-driven projects"
|
5
5
|
authors = ["OpenLIT"]
|
6
6
|
license = "Apache-2.0"
|
@@ -205,11 +205,22 @@ def set_server_address_and_port(client_instance: Any,
|
|
205
205
|
config = getattr(client_instance, 'sdk_configuration', None)
|
206
206
|
base_url = getattr(config, 'server_url', None)
|
207
207
|
|
208
|
+
if not base_url:
|
209
|
+
# Attempt to get host from instance.config.host (used by Pinecone and other vector DBs)
|
210
|
+
config = getattr(client_instance, 'config', None)
|
211
|
+
base_url = getattr(config, 'host', None)
|
212
|
+
|
208
213
|
if base_url:
|
209
214
|
if isinstance(base_url, str):
|
210
|
-
|
211
|
-
|
212
|
-
|
215
|
+
# Check if it's a full URL or just a hostname
|
216
|
+
if base_url.startswith(('http://', 'https://')):
|
217
|
+
url = urlparse(base_url)
|
218
|
+
server_address = url.hostname or default_server_address
|
219
|
+
server_port = url.port if url.port is not None else default_server_port
|
220
|
+
else:
|
221
|
+
# If it's just a hostname (like Pinecone's case), use it directly
|
222
|
+
server_address = base_url
|
223
|
+
server_port = default_server_port
|
213
224
|
else: # base_url might not be a str; handle as an object.
|
214
225
|
server_address = getattr(base_url, 'host', None) or default_server_address
|
215
226
|
port_attr = getattr(base_url, 'port', None)
|
@@ -442,3 +453,37 @@ def record_image_metrics(metrics, gen_ai_operation, gen_ai_system, server_addres
|
|
442
453
|
metrics["genai_client_operation_duration"].record(end_time - start_time, attributes)
|
443
454
|
metrics["genai_requests"].add(1, attributes)
|
444
455
|
metrics["genai_cost"].record(cost, attributes)
|
456
|
+
|
457
|
+
def common_db_span_attributes(scope, db_system, server_address, server_port,
|
458
|
+
environment, application_name, version):
|
459
|
+
"""
|
460
|
+
Set common span attributes for database operations.
|
461
|
+
"""
|
462
|
+
|
463
|
+
scope._span.set_attribute(TELEMETRY_SDK_NAME, "openlit")
|
464
|
+
scope._span.set_attribute(SemanticConvention.GEN_AI_OPERATION, SemanticConvention.GEN_AI_OPERATION_TYPE_VECTORDB)
|
465
|
+
scope._span.set_attribute(SemanticConvention.DB_SYSTEM_NAME, db_system)
|
466
|
+
scope._span.set_attribute(SemanticConvention.SERVER_ADDRESS, server_address)
|
467
|
+
scope._span.set_attribute(SemanticConvention.SERVER_PORT, server_port)
|
468
|
+
scope._span.set_attribute(DEPLOYMENT_ENVIRONMENT, environment)
|
469
|
+
scope._span.set_attribute(SERVICE_NAME, application_name)
|
470
|
+
scope._span.set_attribute(SemanticConvention.DB_SDK_VERSION, version)
|
471
|
+
|
472
|
+
def record_db_metrics(metrics, db_system, server_address, server_port,
|
473
|
+
environment, application_name, start_time, end_time):
|
474
|
+
"""
|
475
|
+
Record database-specific metrics for the operation.
|
476
|
+
"""
|
477
|
+
|
478
|
+
attributes = create_metrics_attributes(
|
479
|
+
operation=SemanticConvention.GEN_AI_OPERATION_TYPE_VECTORDB,
|
480
|
+
system=db_system,
|
481
|
+
request_model=db_system,
|
482
|
+
server_address=server_address,
|
483
|
+
server_port=server_port,
|
484
|
+
response_model=db_system,
|
485
|
+
service_name=application_name,
|
486
|
+
deployment_environment=environment,
|
487
|
+
)
|
488
|
+
metrics["db_requests"].add(1, attributes)
|
489
|
+
metrics["db_client_operation_duration"].record(end_time - start_time, attributes)
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
"""
|
2
|
+
OpenLIT ChromaDB Instrumentation
|
3
|
+
"""
|
4
|
+
|
3
5
|
from typing import Collection
|
4
6
|
import importlib.metadata
|
5
7
|
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
@@ -10,77 +12,79 @@ from openlit.instrumentation.chroma.chroma import general_wrap
|
|
10
12
|
_instruments = ("chromadb >= 0.4.0",)
|
11
13
|
|
12
14
|
class ChromaInstrumentor(BaseInstrumentor):
|
13
|
-
"""
|
15
|
+
"""
|
16
|
+
An instrumentor for ChromaDB's client library.
|
17
|
+
"""
|
14
18
|
|
15
19
|
def instrumentation_dependencies(self) -> Collection[str]:
|
16
20
|
return _instruments
|
17
21
|
|
18
22
|
def _instrument(self, **kwargs):
|
19
|
-
|
20
|
-
environment = kwargs.get("environment")
|
23
|
+
version = importlib.metadata.version("chromadb")
|
24
|
+
environment = kwargs.get("environment", "default")
|
25
|
+
application_name = kwargs.get("application_name", "default")
|
21
26
|
tracer = kwargs.get("tracer")
|
27
|
+
pricing_info = kwargs.get("pricing_info", {})
|
28
|
+
capture_message_content = kwargs.get("capture_message_content", False)
|
22
29
|
metrics = kwargs.get("metrics_dict")
|
23
|
-
pricing_info = kwargs.get("pricing_info")
|
24
|
-
capture_message_content = kwargs.get("capture_message_content")
|
25
30
|
disable_metrics = kwargs.get("disable_metrics")
|
26
|
-
version = importlib.metadata.version("chromadb")
|
27
31
|
|
32
|
+
# Sync operations
|
28
33
|
wrap_function_wrapper(
|
29
|
-
"chromadb.db",
|
30
|
-
"DB.create_collection",
|
34
|
+
"chromadb.db",
|
35
|
+
"DB.create_collection",
|
31
36
|
general_wrap("chroma.create_collection", version, environment, application_name,
|
32
|
-
|
37
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
33
38
|
)
|
34
39
|
|
35
40
|
wrap_function_wrapper(
|
36
|
-
"chromadb",
|
37
|
-
"Collection.add",
|
41
|
+
"chromadb",
|
42
|
+
"Collection.add",
|
38
43
|
general_wrap("chroma.add", version, environment, application_name,
|
39
|
-
|
44
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
40
45
|
)
|
41
46
|
|
42
47
|
wrap_function_wrapper(
|
43
|
-
"chromadb",
|
44
|
-
"Collection.get",
|
48
|
+
"chromadb",
|
49
|
+
"Collection.get",
|
45
50
|
general_wrap("chroma.get", version, environment, application_name,
|
46
|
-
|
51
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
47
52
|
)
|
48
53
|
|
49
54
|
wrap_function_wrapper(
|
50
|
-
"chromadb",
|
51
|
-
"Collection.peek",
|
55
|
+
"chromadb",
|
56
|
+
"Collection.peek",
|
52
57
|
general_wrap("chroma.peek", version, environment, application_name,
|
53
|
-
|
58
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
54
59
|
)
|
55
60
|
|
56
61
|
wrap_function_wrapper(
|
57
|
-
"chromadb",
|
58
|
-
"Collection.query",
|
62
|
+
"chromadb",
|
63
|
+
"Collection.query",
|
59
64
|
general_wrap("chroma.query", version, environment, application_name,
|
60
|
-
|
65
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
61
66
|
)
|
62
67
|
|
63
68
|
wrap_function_wrapper(
|
64
|
-
"chromadb",
|
65
|
-
"Collection.update",
|
69
|
+
"chromadb",
|
70
|
+
"Collection.update",
|
66
71
|
general_wrap("chroma.update", version, environment, application_name,
|
67
|
-
|
72
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
68
73
|
)
|
69
74
|
|
70
75
|
wrap_function_wrapper(
|
71
|
-
"chromadb",
|
72
|
-
"Collection.upsert",
|
76
|
+
"chromadb",
|
77
|
+
"Collection.upsert",
|
73
78
|
general_wrap("chroma.upsert", version, environment, application_name,
|
74
|
-
|
79
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
75
80
|
)
|
81
|
+
|
76
82
|
wrap_function_wrapper(
|
77
|
-
"chromadb",
|
78
|
-
"Collection.delete",
|
83
|
+
"chromadb",
|
84
|
+
"Collection.delete",
|
79
85
|
general_wrap("chroma.delete", version, environment, application_name,
|
80
|
-
|
86
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
81
87
|
)
|
82
88
|
|
83
|
-
|
84
|
-
@staticmethod
|
85
89
|
def _uninstrument(self, **kwargs):
|
86
90
|
pass
|
@@ -0,0 +1,59 @@
|
|
1
|
+
"""
|
2
|
+
Module for monitoring ChromaDB API calls.
|
3
|
+
"""
|
4
|
+
|
5
|
+
import time
|
6
|
+
from opentelemetry.trace import SpanKind
|
7
|
+
from opentelemetry import context as context_api
|
8
|
+
from openlit.__helpers import (
|
9
|
+
handle_exception,
|
10
|
+
set_server_address_and_port,
|
11
|
+
)
|
12
|
+
from openlit.instrumentation.chroma.utils import (
|
13
|
+
process_vectordb_response,
|
14
|
+
DB_OPERATION_MAP,
|
15
|
+
)
|
16
|
+
|
17
|
+
def general_wrap(gen_ai_endpoint, version, environment, application_name,
|
18
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics):
|
19
|
+
"""
|
20
|
+
Generates a telemetry wrapper for ChromaDB function calls.
|
21
|
+
"""
|
22
|
+
|
23
|
+
def wrapper(wrapped, instance, args, kwargs):
|
24
|
+
"""
|
25
|
+
Wraps the ChromaDB function call.
|
26
|
+
"""
|
27
|
+
|
28
|
+
if context_api.get_value(context_api._SUPPRESS_INSTRUMENTATION_KEY):
|
29
|
+
return wrapped(*args, **kwargs)
|
30
|
+
|
31
|
+
# Get server address and port using the standard helper
|
32
|
+
server_address, server_port = set_server_address_and_port(instance, "localhost", 8000)
|
33
|
+
|
34
|
+
db_operation = DB_OPERATION_MAP.get(gen_ai_endpoint, "unknown")
|
35
|
+
if db_operation == "create_collection":
|
36
|
+
namespace = kwargs.get("name") or (args[0] if args else "unknown")
|
37
|
+
else:
|
38
|
+
namespace = getattr(instance, "name", "unknown")
|
39
|
+
span_name = f"{db_operation} {namespace}"
|
40
|
+
|
41
|
+
with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
|
42
|
+
try:
|
43
|
+
start_time = time.time()
|
44
|
+
response = wrapped(*args, **kwargs)
|
45
|
+
|
46
|
+
# Process response and generate telemetry
|
47
|
+
response = process_vectordb_response(
|
48
|
+
response, db_operation, server_address, server_port,
|
49
|
+
environment, application_name, metrics, start_time, span,
|
50
|
+
capture_message_content, disable_metrics, version, instance, args, endpoint=gen_ai_endpoint, **kwargs
|
51
|
+
)
|
52
|
+
|
53
|
+
except Exception as e:
|
54
|
+
handle_exception(span, e)
|
55
|
+
|
56
|
+
return response
|
57
|
+
|
58
|
+
|
59
|
+
return wrapper
|
@@ -0,0 +1,227 @@
|
|
1
|
+
"""
|
2
|
+
ChromaDB OpenTelemetry instrumentation utility functions
|
3
|
+
"""
|
4
|
+
import time
|
5
|
+
|
6
|
+
from opentelemetry.trace import Status, StatusCode
|
7
|
+
|
8
|
+
from openlit.__helpers import (
|
9
|
+
common_db_span_attributes,
|
10
|
+
record_db_metrics,
|
11
|
+
)
|
12
|
+
from openlit.semcov import SemanticConvention
|
13
|
+
|
14
|
+
# Operation mapping for simple span naming
|
15
|
+
DB_OPERATION_MAP = {
|
16
|
+
"chroma.create_collection": SemanticConvention.DB_OPERATION_CREATE_COLLECTION,
|
17
|
+
"chroma.add": SemanticConvention.DB_OPERATION_INSERT,
|
18
|
+
"chroma.get": SemanticConvention.DB_OPERATION_GET,
|
19
|
+
"chroma.peek": SemanticConvention.DB_OPERATION_PEEK,
|
20
|
+
"chroma.query": SemanticConvention.DB_OPERATION_GET,
|
21
|
+
"chroma.update": SemanticConvention.DB_OPERATION_UPDATE,
|
22
|
+
"chroma.upsert": SemanticConvention.DB_OPERATION_UPSERT,
|
23
|
+
"chroma.delete": SemanticConvention.DB_OPERATION_DELETE,
|
24
|
+
}
|
25
|
+
|
26
|
+
def object_count(obj):
|
27
|
+
"""
|
28
|
+
Counts length of object if it exists, else returns 0.
|
29
|
+
"""
|
30
|
+
return len(obj) if obj else 0
|
31
|
+
|
32
|
+
def common_vectordb_logic(scope, environment, application_name,
|
33
|
+
metrics, capture_message_content, disable_metrics, version, instance=None, endpoint=None):
|
34
|
+
"""
|
35
|
+
Process vector database request and generate telemetry.
|
36
|
+
"""
|
37
|
+
|
38
|
+
scope._end_time = time.time()
|
39
|
+
|
40
|
+
# Set common database span attributes using helper
|
41
|
+
common_db_span_attributes(scope, SemanticConvention.DB_SYSTEM_CHROMA, scope._server_address, scope._server_port,
|
42
|
+
environment, application_name, version)
|
43
|
+
|
44
|
+
# Set DB operation specific attributes
|
45
|
+
scope._span.set_attribute(SemanticConvention.DB_OPERATION_NAME, scope._db_operation)
|
46
|
+
scope._span.set_attribute(SemanticConvention.DB_CLIENT_OPERATION_DURATION, scope._end_time - scope._start_time)
|
47
|
+
|
48
|
+
# Set collection name from instance
|
49
|
+
if hasattr(instance, "name"):
|
50
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, instance.name)
|
51
|
+
|
52
|
+
# Set Create Collection operation specific attributes
|
53
|
+
if scope._db_operation == SemanticConvention.DB_OPERATION_CREATE_COLLECTION:
|
54
|
+
# Standard database attributes
|
55
|
+
collection_name = scope._kwargs.get("name") or (scope._args[0] if scope._args else "unknown")
|
56
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
57
|
+
|
58
|
+
# Vector database specific attributes (extensions)
|
59
|
+
metadata = scope._kwargs.get("metadata", {})
|
60
|
+
if metadata:
|
61
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_METADATA, str(metadata))
|
62
|
+
|
63
|
+
elif scope._db_operation == SemanticConvention.DB_OPERATION_INSERT:
|
64
|
+
collection_name = getattr(instance, "name", "unknown")
|
65
|
+
query = scope._kwargs.get("ids", [])
|
66
|
+
|
67
|
+
# Standard database attributes
|
68
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
|
69
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
70
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
|
71
|
+
|
72
|
+
# Vector database specific attributes (extensions)
|
73
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
74
|
+
f"{scope._db_operation} {collection_name} "
|
75
|
+
f"ids={query} "
|
76
|
+
f"documents={scope._kwargs.get('documents', [])}")
|
77
|
+
|
78
|
+
elif scope._db_operation == SemanticConvention.DB_OPERATION_GET:
|
79
|
+
collection_name = getattr(instance, "name", "unknown")
|
80
|
+
|
81
|
+
# Handle different GET operations based on endpoint
|
82
|
+
if endpoint == "chroma.get":
|
83
|
+
# Collection.get() - retrieve documents by IDs
|
84
|
+
query = scope._kwargs.get("ids", [])
|
85
|
+
|
86
|
+
# Standard database attributes
|
87
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
|
88
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
89
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
|
90
|
+
|
91
|
+
# Vector database specific attributes (extensions)
|
92
|
+
scope._span.set_attribute(SemanticConvention.DB_FILTER, str(scope._kwargs.get("where", "")))
|
93
|
+
|
94
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
95
|
+
f"{scope._db_operation} {collection_name} "
|
96
|
+
f"ids={query} "
|
97
|
+
f"limit={scope._kwargs.get('limit', 'None')} "
|
98
|
+
f"offset={scope._kwargs.get('offset', 'None')}")
|
99
|
+
|
100
|
+
elif endpoint == "chroma.query":
|
101
|
+
query_texts = scope._kwargs.get("query_texts", [])
|
102
|
+
query_embeddings = scope._kwargs.get("query_embeddings", [])
|
103
|
+
|
104
|
+
# Create comprehensive query text (can be either embeddings or texts)
|
105
|
+
if query_texts:
|
106
|
+
query_content = f"texts={query_texts}"
|
107
|
+
elif query_embeddings:
|
108
|
+
query_content = f"embeddings={len(query_embeddings) if query_embeddings else 0} vectors"
|
109
|
+
else:
|
110
|
+
query_content = "no query provided"
|
111
|
+
|
112
|
+
# Standard database attributes
|
113
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, query_content)
|
114
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
115
|
+
|
116
|
+
# Vector database specific attributes (extensions)
|
117
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_QUERY_TOP_K, scope._kwargs.get("n_results", 10))
|
118
|
+
scope._span.set_attribute(SemanticConvention.DB_FILTER, str(scope._kwargs.get("where", "")))
|
119
|
+
|
120
|
+
# Extract response metrics if available
|
121
|
+
if scope._response:
|
122
|
+
# Get number of results returned
|
123
|
+
if hasattr(scope._response, 'get') and scope._response.get('ids'):
|
124
|
+
returned_rows = object_count(scope._response['ids'][0]) if scope._response['ids'] else 0
|
125
|
+
scope._span.set_attribute(SemanticConvention.DB_RESPONSE_RETURNED_ROWS, returned_rows)
|
126
|
+
|
127
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
128
|
+
f"{scope._db_operation} {collection_name} "
|
129
|
+
f"n_results={scope._kwargs.get('n_results', 10)} "
|
130
|
+
f"{query_content} "
|
131
|
+
f"filter={scope._kwargs.get('where', 'None')}")
|
132
|
+
|
133
|
+
elif scope._db_operation == SemanticConvention.DB_OPERATION_UPDATE:
|
134
|
+
collection_name = getattr(instance, "name", "unknown")
|
135
|
+
query = scope._kwargs.get("ids", [])
|
136
|
+
|
137
|
+
# Standard database attributes
|
138
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
|
139
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
140
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
|
141
|
+
|
142
|
+
# Vector database specific attributes (extensions)
|
143
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
144
|
+
f"{scope._db_operation} {collection_name} "
|
145
|
+
f"ids={query} "
|
146
|
+
f"embeddings={scope._kwargs.get('embeddings', 'None')} "
|
147
|
+
f"metadatas={scope._kwargs.get('metadatas', 'None')} "
|
148
|
+
f"documents={scope._kwargs.get('documents', 'None')}")
|
149
|
+
|
150
|
+
elif scope._db_operation == SemanticConvention.DB_OPERATION_UPSERT:
|
151
|
+
collection_name = getattr(instance, "name", "unknown")
|
152
|
+
query = scope._kwargs.get("ids", [])
|
153
|
+
|
154
|
+
# Standard database attributes
|
155
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
|
156
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
157
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
|
158
|
+
|
159
|
+
# Vector database specific attributes (extensions)
|
160
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
161
|
+
f"{scope._db_operation} {collection_name} "
|
162
|
+
f"ids={query} "
|
163
|
+
f"embeddings={scope._kwargs.get('embeddings', 'None')} "
|
164
|
+
f"metadatas={scope._kwargs.get('metadatas', 'None')} "
|
165
|
+
f"documents={scope._kwargs.get('documents', 'None')}")
|
166
|
+
|
167
|
+
elif scope._db_operation == SemanticConvention.DB_OPERATION_DELETE:
|
168
|
+
collection_name = getattr(instance, "name", "unknown")
|
169
|
+
query = scope._kwargs.get("ids", [])
|
170
|
+
|
171
|
+
# Standard database attributes
|
172
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
|
173
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
174
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
|
175
|
+
|
176
|
+
# Vector database specific attributes (extensions)
|
177
|
+
scope._span.set_attribute(SemanticConvention.DB_FILTER, str(scope._kwargs.get("where", "")))
|
178
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
179
|
+
f"{scope._db_operation} {collection_name} "
|
180
|
+
f"ids={query} "
|
181
|
+
f"filter={scope._kwargs.get('where', 'None')} "
|
182
|
+
f"delete_all={scope._kwargs.get('delete_all', False)}")
|
183
|
+
|
184
|
+
elif scope._db_operation == SemanticConvention.DB_OPERATION_PEEK:
|
185
|
+
collection_name = getattr(instance, "name", "unknown")
|
186
|
+
query = f"PEEK limit={scope._kwargs.get('limit', '')}"
|
187
|
+
|
188
|
+
# Standard database attributes
|
189
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, query)
|
190
|
+
scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
|
191
|
+
scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, scope._kwargs.get("limit", ""))
|
192
|
+
|
193
|
+
# Vector database specific attributes (extensions)
|
194
|
+
scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
|
195
|
+
f"{scope._db_operation} {collection_name} "
|
196
|
+
f"limit={scope._kwargs.get('limit', 'None')}")
|
197
|
+
|
198
|
+
scope._span.set_status(Status(StatusCode.OK))
|
199
|
+
|
200
|
+
# Record metrics using helper
|
201
|
+
if not disable_metrics:
|
202
|
+
record_db_metrics(metrics, SemanticConvention.DB_SYSTEM_CHROMA, scope._server_address, scope._server_port,
|
203
|
+
environment, application_name, scope._start_time, scope._end_time)
|
204
|
+
|
205
|
+
def process_vectordb_response(response, db_operation, server_address, server_port,
|
206
|
+
environment, application_name, metrics, start_time, span,
|
207
|
+
capture_message_content=False, disable_metrics=False,
|
208
|
+
version="1.0.0", instance=None, args=None, endpoint=None, **kwargs):
|
209
|
+
"""
|
210
|
+
Process vector database response and generate telemetry following OpenTelemetry conventions.
|
211
|
+
"""
|
212
|
+
|
213
|
+
scope = type("GenericScope", (), {})()
|
214
|
+
|
215
|
+
scope._start_time = start_time
|
216
|
+
scope._span = span
|
217
|
+
scope._kwargs = kwargs
|
218
|
+
scope._args = args or []
|
219
|
+
scope._db_operation = db_operation
|
220
|
+
scope._response = response
|
221
|
+
scope._server_address = server_address
|
222
|
+
scope._server_port = server_port
|
223
|
+
|
224
|
+
common_vectordb_logic(scope, environment, application_name,
|
225
|
+
metrics, capture_message_content, disable_metrics, version, instance, endpoint)
|
226
|
+
|
227
|
+
return response
|
@@ -0,0 +1,174 @@
|
|
1
|
+
"""Initializer of Auto Instrumentation of Pinecone Functions"""
|
2
|
+
|
3
|
+
from typing import Collection
|
4
|
+
import importlib.metadata
|
5
|
+
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
6
|
+
from wrapt import wrap_function_wrapper
|
7
|
+
|
8
|
+
from openlit.instrumentation.pinecone.pinecone import general_wrap
|
9
|
+
from openlit.instrumentation.pinecone.async_pinecone import async_general_wrap
|
10
|
+
|
11
|
+
_instruments = ("pinecone >= 7.3.0",)
|
12
|
+
|
13
|
+
class PineconeInstrumentor(BaseInstrumentor):
|
14
|
+
"""
|
15
|
+
An instrumentor for Pinecone's client library.
|
16
|
+
"""
|
17
|
+
|
18
|
+
def instrumentation_dependencies(self) -> Collection[str]:
|
19
|
+
return _instruments
|
20
|
+
|
21
|
+
def _instrument(self, **kwargs):
|
22
|
+
version = importlib.metadata.version("pinecone")
|
23
|
+
environment = kwargs.get("environment", "default")
|
24
|
+
application_name = kwargs.get("application_name", "default")
|
25
|
+
tracer = kwargs.get("tracer")
|
26
|
+
pricing_info = kwargs.get("pricing_info", {})
|
27
|
+
capture_message_content = kwargs.get("capture_message_content", False)
|
28
|
+
metrics = kwargs.get("metrics_dict")
|
29
|
+
disable_metrics = kwargs.get("disable_metrics")
|
30
|
+
|
31
|
+
# Sync operations
|
32
|
+
wrap_function_wrapper(
|
33
|
+
"pinecone.pinecone",
|
34
|
+
"Pinecone.create_index",
|
35
|
+
general_wrap("pinecone.create_collection", version, environment, application_name,
|
36
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
37
|
+
)
|
38
|
+
|
39
|
+
wrap_function_wrapper(
|
40
|
+
"pinecone.pinecone",
|
41
|
+
"Pinecone.create_index_for_model",
|
42
|
+
general_wrap("pinecone.create_collection", version, environment, application_name,
|
43
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
44
|
+
)
|
45
|
+
|
46
|
+
wrap_function_wrapper(
|
47
|
+
"pinecone.db_data.index",
|
48
|
+
"Index.upsert",
|
49
|
+
general_wrap("pinecone.upsert", version, environment, application_name,
|
50
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
51
|
+
)
|
52
|
+
|
53
|
+
wrap_function_wrapper(
|
54
|
+
"pinecone.db_data.index",
|
55
|
+
"Index.upsert_records",
|
56
|
+
general_wrap("pinecone.upsert_records", version, environment, application_name,
|
57
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
58
|
+
)
|
59
|
+
|
60
|
+
wrap_function_wrapper(
|
61
|
+
"pinecone.db_data.index",
|
62
|
+
"Index.query",
|
63
|
+
general_wrap("pinecone.query", version, environment, application_name,
|
64
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
65
|
+
)
|
66
|
+
|
67
|
+
wrap_function_wrapper(
|
68
|
+
"pinecone.db_data.index",
|
69
|
+
"Index.search",
|
70
|
+
general_wrap("pinecone.search", version, environment, application_name,
|
71
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
72
|
+
)
|
73
|
+
|
74
|
+
wrap_function_wrapper(
|
75
|
+
"pinecone.db_data.index",
|
76
|
+
"Index.fetch",
|
77
|
+
general_wrap("pinecone.fetch", version, environment, application_name,
|
78
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
79
|
+
)
|
80
|
+
|
81
|
+
wrap_function_wrapper(
|
82
|
+
"pinecone.db_data.index",
|
83
|
+
"Index.search_records",
|
84
|
+
general_wrap("pinecone.search_records", version, environment, application_name,
|
85
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
86
|
+
)
|
87
|
+
|
88
|
+
wrap_function_wrapper(
|
89
|
+
"pinecone.db_data.index",
|
90
|
+
"Index.update",
|
91
|
+
general_wrap("pinecone.update", version, environment, application_name,
|
92
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
93
|
+
)
|
94
|
+
|
95
|
+
wrap_function_wrapper(
|
96
|
+
"pinecone.db_data.index",
|
97
|
+
"Index.delete",
|
98
|
+
general_wrap("pinecone.delete", version, environment, application_name,
|
99
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
100
|
+
)
|
101
|
+
|
102
|
+
# Async operations
|
103
|
+
wrap_function_wrapper(
|
104
|
+
"pinecone.pinecone_asyncio",
|
105
|
+
"PineconeAsyncio.create_index",
|
106
|
+
async_general_wrap("pinecone.create_index", version, environment, application_name,
|
107
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
108
|
+
)
|
109
|
+
|
110
|
+
wrap_function_wrapper(
|
111
|
+
"pinecone.pinecone_asyncio",
|
112
|
+
"PineconeAsyncio.create_index_for_model",
|
113
|
+
async_general_wrap("pinecone.create_index", version, environment, application_name,
|
114
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
115
|
+
)
|
116
|
+
|
117
|
+
wrap_function_wrapper(
|
118
|
+
"pinecone.db_data.index_asyncio",
|
119
|
+
"_IndexAsyncio.upsert",
|
120
|
+
async_general_wrap("pinecone.upsert", version, environment, application_name,
|
121
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
122
|
+
)
|
123
|
+
|
124
|
+
wrap_function_wrapper(
|
125
|
+
"pinecone.db_data.index_asyncio",
|
126
|
+
"_IndexAsyncio.upsert_records",
|
127
|
+
async_general_wrap("pinecone.upsert_records", version, environment, application_name,
|
128
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
129
|
+
)
|
130
|
+
|
131
|
+
wrap_function_wrapper(
|
132
|
+
"pinecone.db_data.index_asyncio",
|
133
|
+
"_IndexAsyncio.query",
|
134
|
+
async_general_wrap("pinecone.query", version, environment, application_name,
|
135
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
136
|
+
)
|
137
|
+
|
138
|
+
wrap_function_wrapper(
|
139
|
+
"pinecone.db_data.index_asyncio",
|
140
|
+
"_IndexAsyncio.search",
|
141
|
+
async_general_wrap("pinecone.search", version, environment, application_name,
|
142
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
143
|
+
)
|
144
|
+
|
145
|
+
wrap_function_wrapper(
|
146
|
+
"pinecone.db_data.index_asyncio",
|
147
|
+
"_IndexAsyncio.fetch",
|
148
|
+
async_general_wrap("pinecone.fetch", version, environment, application_name,
|
149
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
150
|
+
)
|
151
|
+
|
152
|
+
wrap_function_wrapper(
|
153
|
+
"pinecone.db_data.index_asyncio",
|
154
|
+
"_IndexAsyncio.search_records",
|
155
|
+
async_general_wrap("pinecone.search_records", version, environment, application_name,
|
156
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
157
|
+
)
|
158
|
+
|
159
|
+
wrap_function_wrapper(
|
160
|
+
"pinecone.db_data.index_asyncio",
|
161
|
+
"_IndexAsyncio.update",
|
162
|
+
async_general_wrap("pinecone.update", version, environment, application_name,
|
163
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
164
|
+
)
|
165
|
+
|
166
|
+
wrap_function_wrapper(
|
167
|
+
"pinecone.db_data.index_asyncio",
|
168
|
+
"_IndexAsyncio.delete",
|
169
|
+
async_general_wrap("pinecone.delete", version, environment, application_name,
|
170
|
+
tracer, pricing_info, capture_message_content, metrics, disable_metrics),
|
171
|
+
)
|
172
|
+
|
173
|
+
def _uninstrument(self, **kwargs):
|
174
|
+
pass
|