Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ classifiers=[
"Operating System :: OS Independent",
]
dependencies = [
'trace-attributes==7.0.1',
'trace-attributes==7.0.3',
'opentelemetry-api>=1.25.0',
'opentelemetry-sdk>=1.25.0',
'opentelemetry-instrumentation>=0.47b0',
Expand Down
18 changes: 12 additions & 6 deletions src/examples/weaviate_example/query_text.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,14 @@
import requests
import weaviate
import weaviate.classes as wvc
import weaviate.classes.config as wc
from dotenv import load_dotenv
from weaviate.classes.aggregate import GroupByAggregate
from weaviate.classes.query import Filter, HybridFusion, MetadataQuery
from weaviate.collections.classes.grpc import Move

import langtrace_python_sdk.langtrace as langtrace
from langtrace_python_sdk import with_langtrace_root_span
from dotenv import load_dotenv

load_dotenv()
# Set these environment variables
Expand All @@ -44,11 +45,16 @@ def create():
if not client.collections.get("Question"):
questions = client.collections.create(
name="Question",
# Set the vectorizer to "text2vec-openai" to use the OpenAI API for vector-related operations
vectorizer_config=wvc.config.Configure.Vectorizer.text2vec_openai(),
# Ensure the `generative-openai` module is used for generative queries
generative_config=wvc.config.Configure.Generative.openai(),
)
properties=[
wc.Property(name="answer", data_type=wc.DataType.TEXT),
wc.Property(name="question", data_type=wc.DataType.TEXT),
wc.Property(name="category", data_type=wc.DataType.TEXT),
],
# Define the vectorizer module
vectorizer_config=wc.Configure.Vectorizer.text2vec_openai(),
# Define the generative module
generative_config=wc.Configure.Generative.openai(),
)


@with_langtrace_root_span("insert")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class WeaviateInstrumentation(BaseInstrumentor):
"""

def instrumentation_dependencies(self) -> Collection[str]:
return ["weaviate-client >= 4.6.1", "trace-attributes >= 4.0.2"]
return ["weaviate-client >= 4.6.1", "trace-attributes >= 7.0.3"]

def _instrument(self, **kwargs):
tracer_provider = kwargs.get("tracer_provider")
Expand Down
29 changes: 22 additions & 7 deletions src/langtrace_python_sdk/instrumentation/weaviate/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,21 @@

import json

from importlib_metadata import version as v
from langtrace.trace_attributes import DatabaseSpanAttributes
from langtrace_python_sdk.utils.llm import get_span_name
from opentelemetry import baggage, trace
from opentelemetry.trace import SpanKind
from opentelemetry.trace.status import Status, StatusCode
from opentelemetry.trace.propagation import set_span_in_context
from opentelemetry.trace.status import Status, StatusCode

from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
from langtrace_python_sdk.constants.instrumentation.common import (
LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
SERVICE_PROVIDERS,
)
from langtrace_python_sdk.constants.instrumentation.weaviate import APIS
from langtrace_python_sdk.utils.llm import get_span_name
from langtrace_python_sdk.utils.misc import extract_input_params, to_iso_format
from importlib_metadata import version as v

from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME

# Predefined metadata response attributes
METADATA_ATTRIBUTES = [
Expand All @@ -45,6 +45,22 @@
]


def extract_inputs(args, kwargs):
extracted_params = {}
kwargs_without_properties = {k: v for k, v in kwargs.items() if k != "properties"}
extracted_params.update(extract_input_params(args, kwargs_without_properties))

if kwargs.get("properties", None):
extracted_params["properties"] = []
for each_prop in kwargs.get("properties"):
if hasattr(each_prop, "_to_dict"):
# append properties to extracted_params
extracted_params["properties"].append(each_prop._to_dict())

extracted_params["properties"] = json.dumps(extracted_params["properties"])
return extracted_params


def extract_metadata(metadata):
# Extraction response Query metadata
extracted_metadata = {
Expand Down Expand Up @@ -126,7 +142,7 @@ def traced_method(wrapped, instance, args, kwargs):
"db.system": "weaviate",
"db.operation": api["OPERATION"],
"db.collection.name": collection_name,
"db.query": json.dumps(extract_input_params(args, kwargs)),
"db.query": json.dumps(extract_inputs(args, kwargs)),
**(extra_attributes if extra_attributes is not None else {}),
}

Expand All @@ -143,7 +159,6 @@ def traced_method(wrapped, instance, args, kwargs):
try:
# Attempt to call the original method
result = wrapped(*args, **kwargs)
print(result)
if api["OPERATION"] in ["query", "generate"]:
span.add_event(
name="db.response",
Expand Down
2 changes: 1 addition & 1 deletion src/langtrace_python_sdk/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "2.2.24"
__version__ = "2.2.25"