langtrace-python-sdk 3.3.4__py3-none-any.whl → 3.3.6__py3-none-any.whl

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.
@@ -0,0 +1,106 @@
1
+ from pymilvus import MilvusClient, model
2
+ from typing import List
3
+ from langtrace_python_sdk import langtrace, with_langtrace_root_span
4
+ from dotenv import load_dotenv
5
+
6
+ load_dotenv()
7
+ langtrace.init()
8
+
9
+ client = MilvusClient("milvus_demo.db")
10
+
11
+ COLLECTION_NAME = "demo_collection"
12
+ embedding_fn = model.DefaultEmbeddingFunction()
13
+
14
+
15
+ def create_collection(collection_name: str = COLLECTION_NAME):
16
+ if client.has_collection(collection_name=collection_name):
17
+ client.drop_collection(collection_name=collection_name)
18
+
19
+ client.create_collection(
20
+ collection_name=collection_name,
21
+ dimension=768, # The vectors we will use in this demo has 768 dimensions
22
+ )
23
+
24
+
25
+ def create_embedding(docs: List[str] = [], subject: str = "history"):
26
+ """
27
+ Create embeddings for the given documents.
28
+ """
29
+
30
+ vectors = embedding_fn.encode_documents(docs)
31
+ # Each entity has id, vector representation, raw text, and a subject label that we use
32
+ # to demo metadata filtering later.
33
+ data = [
34
+ {"id": i, "vector": vectors[i], "text": docs[i], "subject": subject}
35
+ for i in range(len(vectors))
36
+ ]
37
+ # print("Data has", len(data), "entities, each with fields: ", data[0].keys())
38
+ # print("Vector dim:", len(data[0]["vector"]))
39
+ return data
40
+
41
+
42
+ def insert_data(collection_name: str = COLLECTION_NAME, data: List[dict] = []):
43
+ client.insert(
44
+ collection_name=collection_name,
45
+ data=data,
46
+ )
47
+
48
+
49
+ def vector_search(collection_name: str = COLLECTION_NAME, queries: List[str] = []):
50
+ query_vectors = embedding_fn.encode_queries(queries)
51
+ # If you don't have the embedding function you can use a fake vector to finish the demo:
52
+ # query_vectors = [ [ random.uniform(-1, 1) for _ in range(768) ] ]
53
+
54
+ res = client.search(
55
+ collection_name="demo_collection", # target collection
56
+ data=query_vectors, # query vectors
57
+ limit=2, # number of returned entities
58
+ output_fields=["text", "subject"], # specifies fields to be returned
59
+ timeout=10,
60
+ partition_names=["history"],
61
+ anns_field="vector",
62
+ search_params={"nprobe": 10},
63
+ )
64
+
65
+
66
+ def query(collection_name: str = COLLECTION_NAME, query: str = ""):
67
+ res = client.query(
68
+ collection_name=collection_name,
69
+ filter=query,
70
+ # output_fields=["text", "subject"],
71
+ )
72
+
73
+ # print(res)
74
+
75
+
76
+ @with_langtrace_root_span("milvus_example")
77
+ def main():
78
+ create_collection()
79
+ # insert Alan Turing's history
80
+ turing_data = create_embedding(
81
+ docs=[
82
+ "Artificial intelligence was founded as an academic discipline in 1956.",
83
+ "Alan Turing was the first person to conduct substantial research in AI.",
84
+ "Born in Maida Vale, London, Turing was raised in southern England.",
85
+ ]
86
+ )
87
+ insert_data(data=turing_data)
88
+
89
+ # insert AI Drug Discovery
90
+ drug_data = create_embedding(
91
+ docs=[
92
+ "Machine learning has been used for drug design.",
93
+ "Computational synthesis with AI algorithms predicts molecular properties.",
94
+ "DDR1 is involved in cancers and fibrosis.",
95
+ ],
96
+ subject="biology",
97
+ )
98
+ insert_data(data=drug_data)
99
+
100
+ vector_search(queries=["Who is Alan Turing?"])
101
+ query(query="subject == 'history'")
102
+ query(query="subject == 'biology'")
103
+
104
+
105
+ if __name__ == "__main__":
106
+ main()
@@ -37,6 +37,7 @@ SERVICE_PROVIDERS = {
37
37
  "MONGODB": "MongoDB",
38
38
  "AWS_BEDROCK": "AWS Bedrock",
39
39
  "CEREBRAS": "Cerebras",
40
+ "MILVUS": "Milvus",
40
41
  }
41
42
 
42
43
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY = "langtrace_additional_attributes"
@@ -0,0 +1,38 @@
1
+ APIS = {
2
+ "INSERT": {
3
+ "MODULE": "pymilvus",
4
+ "METHOD": "MilvusClient.insert",
5
+ "OPERATION": "insert",
6
+ "SPAN_NAME": "Milvus Insert",
7
+ },
8
+ "QUERY": {
9
+ "MODULE": "pymilvus",
10
+ "METHOD": "MilvusClient.query",
11
+ "OPERATION": "query",
12
+ "SPAN_NAME": "Milvus Query",
13
+ },
14
+ "SEARCH": {
15
+ "MODULE": "pymilvus",
16
+ "METHOD": "MilvusClient.search",
17
+ "OPERATION": "search",
18
+ "SPAN_NAME": "Milvus Search",
19
+ },
20
+ "DELETE": {
21
+ "MODULE": "pymilvus",
22
+ "METHOD": "MilvusClient.delete",
23
+ "OPERATION": "delete",
24
+ "SPAN_NAME": "Milvus Delete",
25
+ },
26
+ "CREATE_COLLECTION": {
27
+ "MODULE": "pymilvus",
28
+ "METHOD": "MilvusClient.create_collection",
29
+ "OPERATION": "create_collection",
30
+ "SPAN_NAME": "Milvus Create Collection",
31
+ },
32
+ "UPSERT": {
33
+ "MODULE": "pymilvus",
34
+ "METHOD": "MilvusClient.upsert",
35
+ "OPERATION": "upsert",
36
+ "SPAN_NAME": "Milvus Upsert",
37
+ },
38
+ }
@@ -23,6 +23,7 @@ from .embedchain import EmbedchainInstrumentation
23
23
  from .litellm import LiteLLMInstrumentation
24
24
  from .pymongo import PyMongoInstrumentation
25
25
  from .cerebras import CerebrasInstrumentation
26
+ from .milvus import MilvusInstrumentation
26
27
 
27
28
  __all__ = [
28
29
  "AnthropicInstrumentation",
@@ -50,4 +51,5 @@ __all__ = [
50
51
  "PyMongoInstrumentation",
51
52
  "AWSBedrockInstrumentation",
52
53
  "CerebrasInstrumentation",
54
+ "MilvusInstrumentation",
53
55
  ]
@@ -71,16 +71,26 @@ def generic_patch(
71
71
  result = wrapped(*args, **kwargs)
72
72
  if trace_output:
73
73
  span.set_attribute("langchain.outputs", to_json_string(result))
74
-
75
- prompt_tokens = instance.get_num_tokens(args[0])
76
- completion_tokens = instance.get_num_tokens(result)
77
- if hasattr(result, 'usage'):
74
+ prompt_tokens = (
75
+ instance.get_num_tokens(args[0])
76
+ if hasattr(instance, "get_num_tokens")
77
+ else None
78
+ )
79
+ completion_tokens = (
80
+ instance.get_num_tokens(result)
81
+ if hasattr(instance, "get_num_tokens")
82
+ else None
83
+ )
84
+ if hasattr(result, "usage"):
78
85
  prompt_tokens = result.usage.prompt_tokens
79
86
  completion_tokens = result.usage.completion_tokens
80
87
 
81
- span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, prompt_tokens)
82
- span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, completion_tokens)
83
-
88
+ span.set_attribute(
89
+ SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, prompt_tokens
90
+ )
91
+ span.set_attribute(
92
+ SpanAttributes.LLM_USAGE_PROMPT_TOKENS, completion_tokens
93
+ )
84
94
 
85
95
  span.set_status(StatusCode.OK)
86
96
  return result
@@ -102,9 +112,17 @@ def clean_empty(d):
102
112
  if not isinstance(d, (dict, list, tuple)):
103
113
  return d
104
114
  if isinstance(d, tuple):
105
- return tuple(val for val in (clean_empty(val) for val in d) if val != () and val is not None)
115
+ return tuple(
116
+ val
117
+ for val in (clean_empty(val) for val in d)
118
+ if val != () and val is not None
119
+ )
106
120
  if isinstance(d, list):
107
- return [val for val in (clean_empty(val) for val in d) if val != [] and val is not None]
121
+ return [
122
+ val
123
+ for val in (clean_empty(val) for val in d)
124
+ if val != [] and val is not None
125
+ ]
108
126
  result = {}
109
127
  for k, val in d.items():
110
128
  if isinstance(val, dict):
@@ -120,7 +138,7 @@ def clean_empty(d):
120
138
  result[k] = val.strip()
121
139
  elif isinstance(val, object):
122
140
  # some langchain objects have a text attribute
123
- val = getattr(val, 'text', None)
141
+ val = getattr(val, "text", None)
124
142
  if val is not None and val.strip() != "":
125
143
  result[k] = val.strip()
126
144
  return result
@@ -0,0 +1,3 @@
1
+ from .instrumentation import MilvusInstrumentation
2
+
3
+ __all__ = ["MilvusInstrumentation"]
@@ -0,0 +1,29 @@
1
+ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
2
+ from opentelemetry.trace import get_tracer
3
+
4
+ from typing import Collection
5
+ from importlib_metadata import version as v
6
+ from wrapt import wrap_function_wrapper as _W
7
+
8
+ from langtrace_python_sdk.constants.instrumentation.milvus import APIS
9
+ from .patch import generic_patch
10
+
11
+
12
+ class MilvusInstrumentation(BaseInstrumentor):
13
+
14
+ def instrumentation_dependencies(self) -> Collection[str]:
15
+ return ["pymilvus >= 2.4.1"]
16
+
17
+ def _instrument(self, **kwargs):
18
+ tracer_provider = kwargs.get("tracer_provider")
19
+ tracer = get_tracer(__name__, "", tracer_provider)
20
+ version = v("pymilvus")
21
+ for api in APIS.values():
22
+ _W(
23
+ module=api["MODULE"],
24
+ name=api["METHOD"],
25
+ wrapper=generic_patch(api, version, tracer),
26
+ )
27
+
28
+ def _uninstrument(self, **kwargs):
29
+ pass
@@ -0,0 +1,125 @@
1
+ from langtrace_python_sdk.utils.silently_fail import silently_fail
2
+ from opentelemetry.trace import Tracer
3
+ from opentelemetry.trace import SpanKind
4
+ from langtrace_python_sdk.utils import handle_span_error, set_span_attribute
5
+ from langtrace_python_sdk.utils.llm import (
6
+ get_extra_attributes,
7
+ set_span_attributes,
8
+ )
9
+ import json
10
+
11
+
12
+ def generic_patch(api, version: str, tracer: Tracer):
13
+ def traced_method(wrapped, instance, args, kwargs):
14
+ span_name = api["SPAN_NAME"]
15
+ operation = api["OPERATION"]
16
+ with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
17
+ try:
18
+ span_attributes = {
19
+ "db.system": "milvus",
20
+ "db.operation": operation,
21
+ "db.name": kwargs.get("collection_name", None),
22
+ **get_extra_attributes(),
23
+ }
24
+
25
+ if operation == "create_collection":
26
+ set_create_collection_attributes(span_attributes, kwargs)
27
+
28
+ elif operation == "insert" or operation == "upsert":
29
+ set_insert_or_upsert_attributes(span_attributes, kwargs)
30
+
31
+ elif operation == "search":
32
+ set_search_attributes(span_attributes, kwargs)
33
+
34
+ elif operation == "query":
35
+ set_query_attributes(span_attributes, kwargs)
36
+
37
+ set_span_attributes(span, span_attributes)
38
+ result = wrapped(*args, **kwargs)
39
+
40
+ if operation == "query":
41
+ set_query_response_attributes(span, result)
42
+
43
+ if operation == "search":
44
+ set_search_response_attributes(span, result)
45
+ return result
46
+ except Exception as err:
47
+ handle_span_error(span, err)
48
+ raise
49
+
50
+ return traced_method
51
+
52
+
53
+ @silently_fail
54
+ def set_create_collection_attributes(span_attributes, kwargs):
55
+ span_attributes["db.dimension"] = kwargs.get("dimension", None)
56
+
57
+
58
+ @silently_fail
59
+ def set_insert_or_upsert_attributes(span_attributes, kwargs):
60
+ data = kwargs.get("data")
61
+ timeout = kwargs.get("timeout")
62
+ partition_name = kwargs.get("partition_name")
63
+
64
+ span_attributes["db.num_entities"] = len(data) if data else None
65
+ span_attributes["db.timeout"] = timeout
66
+ span_attributes["db.partition_name"] = partition_name
67
+
68
+
69
+ @silently_fail
70
+ def set_search_attributes(span_attributes, kwargs):
71
+ data = kwargs.get("data")
72
+ filter = kwargs.get("filter")
73
+ limit = kwargs.get("limit")
74
+ output_fields = kwargs.get("output_fields")
75
+ search_params = kwargs.get("search_params")
76
+ timeout = kwargs.get("timeout")
77
+ partition_names = kwargs.get("partition_names")
78
+ anns_field = kwargs.get("anns_field")
79
+ span_attributes["db.num_queries"] = len(data) if data else None
80
+ span_attributes["db.filter"] = filter
81
+ span_attributes["db.limit"] = limit
82
+ span_attributes["db.output_fields"] = json.dumps(output_fields)
83
+ span_attributes["db.search_params"] = json.dumps(search_params)
84
+ span_attributes["db.partition_names"] = json.dumps(partition_names)
85
+ span_attributes["db.anns_field"] = anns_field
86
+ span_attributes["db.timeout"] = timeout
87
+
88
+
89
+ @silently_fail
90
+ def set_query_attributes(span_attributes, kwargs):
91
+ filter = kwargs.get("filter")
92
+ output_fields = kwargs.get("output_fields")
93
+ timeout = kwargs.get("timeout")
94
+ partition_names = kwargs.get("partition_names")
95
+ ids = kwargs.get("ids")
96
+
97
+ span_attributes["db.filter"] = filter
98
+ span_attributes["db.output_fields"] = output_fields
99
+ span_attributes["db.timeout"] = timeout
100
+ span_attributes["db.partition_names"] = partition_names
101
+ span_attributes["db.ids"] = ids
102
+
103
+
104
+ @silently_fail
105
+ def set_query_response_attributes(span, result):
106
+ set_span_attribute(span, name="db.num_matches", value=len(result))
107
+ for match in result:
108
+ span.add_event(
109
+ "db.query.match",
110
+ attributes=match,
111
+ )
112
+
113
+
114
+ @silently_fail
115
+ def set_search_response_attributes(span, result):
116
+ for res in result:
117
+ for match in res:
118
+ span.add_event(
119
+ "db.search.match",
120
+ attributes={
121
+ "id": match["id"],
122
+ "distance": str(match["distance"]),
123
+ "entity": json.dumps(match["entity"]),
124
+ },
125
+ )
@@ -38,7 +38,6 @@ def generic_patch(name, version, tracer):
38
38
 
39
39
  try:
40
40
  result = wrapped(*args, **kwargs)
41
- print(result)
42
41
  for doc in result:
43
42
  if span.is_recording():
44
43
  span.add_event(
@@ -66,6 +66,7 @@ from langtrace_python_sdk.instrumentation import (
66
66
  WeaviateInstrumentation,
67
67
  PyMongoInstrumentation,
68
68
  CerebrasInstrumentation,
69
+ MilvusInstrumentation,
69
70
  )
70
71
  from opentelemetry.util.re import parse_env_headers
71
72
 
@@ -284,6 +285,7 @@ def init(
284
285
  "autogen": AutogenInstrumentation(),
285
286
  "pymongo": PyMongoInstrumentation(),
286
287
  "cerebras-cloud-sdk": CerebrasInstrumentation(),
288
+ "pymilvus": MilvusInstrumentation(),
287
289
  }
288
290
 
289
291
  init_instrumentations(config.disable_instrumentations, all_instrumentations)
@@ -1 +1 @@
1
- __version__ = "3.3.4"
1
+ __version__ = "3.3.6"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 3.3.4
3
+ Version: 3.3.6
4
4
  Summary: Python SDK for LangTrace
5
5
  Project-URL: Homepage, https://github.com/Scale3-Labs/langtrace-python-sdk
6
6
  Author-email: Scale3 Labs <engineering@scale3labs.com>
@@ -68,6 +68,7 @@ examples/llamaindex_example/__init__.py,sha256=4w8Hz5pfmMzhkHAbBim6jwxHxMicaN4xi
68
68
  examples/llamaindex_example/agent.py,sha256=JNK6xDX17HOFRShBK7a71HPWD05LwzPES9YVyl_azIQ,2767
69
69
  examples/llamaindex_example/basic.py,sha256=aFZngkye95sjUr4wc2Uo_Je0iEexXpNcdlV0BTv_F4g,726
70
70
  examples/llamaindex_example/data/abramov.txt,sha256=Ou-GyWZm5AjHLgxviBoRE9ikNv5MScsF0cd--0vVVhI,32667
71
+ examples/milvus_example/main.py,sha256=zN3dSN-v-qtcbhUIzCR6b26cI-2CFVjUAKNp-gz8cN4,3378
71
72
  examples/mistral_example/__init__.py,sha256=4kMzYY7whzUFkT9LvqPp9wSdwNtk8pq28pmZIhCJBvU,467
72
73
  examples/mistral_example/complete.py,sha256=Ydf5iOCGM2tySSd5vzGvNh3Qz39aTpxcCItBii9b0ig,589
73
74
  examples/mistral_example/complete_async.py,sha256=-SVOLNLNi5JL3o4obBsCXKOt8A6b61j3otbrrYPOOtM,586
@@ -103,8 +104,8 @@ examples/vertexai_example/main.py,sha256=gndId5X5ksD-ycxnAWMdEqIDbLc3kz5Vt8vm4YP
103
104
  examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56snk-Bbg2Kw,618
104
105
  examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
105
106
  langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
106
- langtrace_python_sdk/langtrace.py,sha256=rxd-Vn0hTqqd02E5S6KzwjiTdSMttNfhY63d74Xi_gk,12529
107
- langtrace_python_sdk/version.py,sha256=Smy9HlTNV-SDgnJHDo2272CgsZJYueox7aaoRhK744k,22
107
+ langtrace_python_sdk/langtrace.py,sha256=TtRWuUiWUB0S7JiQpUsF9lZsiyqPG3m9mMDX-QlDgAw,12601
108
+ langtrace_python_sdk/version.py,sha256=GblPlLThspLCrtYLx-68Q7tG3E2pz1nlwTjMxZYJOYo,22
108
109
  langtrace_python_sdk/constants/__init__.py,sha256=3CNYkWMdd1DrkGqzLUgNZXjdAlM6UFMlf_F-odAToyc,146
109
110
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=d-3Qn5C_NTy1NkmdavZvy-6vePwTC5curN6QMy2haHc,50
110
111
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -112,11 +113,12 @@ langtrace_python_sdk/constants/instrumentation/anthropic.py,sha256=YX3llt3zwDY6X
112
113
  langtrace_python_sdk/constants/instrumentation/aws_bedrock.py,sha256=f9eukqoxrPgPeaBJX2gpBUz1uu0dZIPahOpvoudfbH8,310
113
114
  langtrace_python_sdk/constants/instrumentation/chroma.py,sha256=hiPGYdHS0Yj4Kh3eaYBbuCAl_swqIygu80yFqkOgdak,955
114
115
  langtrace_python_sdk/constants/instrumentation/cohere.py,sha256=tf9sDfb5K3qOAHChEE5o8eYWPZ1io58VsOjZDCZPxfw,577
115
- langtrace_python_sdk/constants/instrumentation/common.py,sha256=OJcZBJptWlZGmsdI47n9pqH4q-KkYB9xN0WvtQfeaoo,1151
116
+ langtrace_python_sdk/constants/instrumentation/common.py,sha256=T3s3c6JnSPDkKJWTLTGcdcOeUO2Oqt9cjSkIZwlhYcY,1175
116
117
  langtrace_python_sdk/constants/instrumentation/embedchain.py,sha256=HodCJvaFjILoOG50OwFObxfVxt_8VUaIAIqvgoN3tzo,278
117
118
  langtrace_python_sdk/constants/instrumentation/gemini.py,sha256=UAmfgg9FM7uNeOCdPfWlir6OIH-8BoxFGPRpdBd9ZZs,358
118
119
  langtrace_python_sdk/constants/instrumentation/groq.py,sha256=VFXmIl4aqGY_fS0PAmjPj_Qm7Tibxbx7Ur_e7rQpqXc,134
119
120
  langtrace_python_sdk/constants/instrumentation/litellm.py,sha256=bMAlpY2scFe6Lql0Nl7euGNSO9QEV5Uzne12hnw3mSE,449
121
+ langtrace_python_sdk/constants/instrumentation/milvus.py,sha256=lnl7RtV2Wc66mEmtVMjV5eWalt-caH4-sQEHpN1LmEE,1029
120
122
  langtrace_python_sdk/constants/instrumentation/mistral.py,sha256=9PlmcC5P5_BHJ-zsX1xekht6rSm7arTin58HAfdYvLk,730
121
123
  langtrace_python_sdk/constants/instrumentation/ollama.py,sha256=H_-S0xjqRsi5qSp7mAlK7Y9NlQ3BqOkG6ASogqqgdJY,212
122
124
  langtrace_python_sdk/constants/instrumentation/openai.py,sha256=uEOH5UXapU2DSf2AdgXTRhhJEHGWXUNFkUGD5QafflM,1164
@@ -128,7 +130,7 @@ langtrace_python_sdk/constants/instrumentation/weaviate.py,sha256=gtv-JBxvNGClEM
128
130
  langtrace_python_sdk/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
131
  langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=UFupNL03zklVd5penpsfXjbWSb5qB39mEv2BY2wczSs,6307
130
132
  langtrace_python_sdk/extensions/langtrace_filesystem.py,sha256=34fZutG28EJ66l67OvTGsydAH3ZpXgikdE7hVLqBpG4,7863
131
- langtrace_python_sdk/instrumentation/__init__.py,sha256=sH9bZVQN9oHZHjGnIFLSue3jbkhvHTfb4D6x3nuChCQ,1931
133
+ langtrace_python_sdk/instrumentation/__init__.py,sha256=ftQa0rnss2V-HLZC2KDkhTEsLHhvRzdzabQTVV0omZQ,2002
132
134
  langtrace_python_sdk/instrumentation/anthropic/__init__.py,sha256=donrurJAGYlxrSRA3BIf76jGeUcAx9Tq8CVpah68S0Y,101
133
135
  langtrace_python_sdk/instrumentation/anthropic/instrumentation.py,sha256=ndXdruI0BG7n75rsuEpKjfzePxrZxg40gZ39ONmD_v4,1845
134
136
  langtrace_python_sdk/instrumentation/anthropic/patch.py,sha256=ztPN4VZujoxYOKhTbFnup7Ibms9NAzYCPAJY43NUgKw,4935
@@ -168,7 +170,7 @@ langtrace_python_sdk/instrumentation/langchain/instrumentation.py,sha256=mek9-wl
168
170
  langtrace_python_sdk/instrumentation/langchain/patch.py,sha256=sjmY-Ciu6G-qRV_mHJ2HFWqbEWXnA75GH_WFK_d_p6o,4410
169
171
  langtrace_python_sdk/instrumentation/langchain_community/__init__.py,sha256=mj5RR_cfkjMql7W9OyyhmviT2GZ-4Pv9XJfGwJufp_E,119
170
172
  langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py,sha256=TmMRXcaiMR99Qg7r7pT1XunCr_GOQl_Csr6leSKYyTQ,5350
171
- langtrace_python_sdk/instrumentation/langchain_community/patch.py,sha256=fn-FBbu56ko7XSer0dDdQtIaXcsdZ7L_il_YjnAdL8I,5817
173
+ langtrace_python_sdk/instrumentation/langchain_community/patch.py,sha256=Vh9XxkXo_0eD3etrTTb-6ME6LroNJy5e75VYcfhc44U,6289
172
174
  langtrace_python_sdk/instrumentation/langchain_core/__init__.py,sha256=kumE_reeqgM-ZvEZ6-XxyT-F-HAdKq_v_PKvsLb4EZQ,110
173
175
  langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py,sha256=szTCveG4IP64rlaY4iZATWv2f38k1_DtfbBU60YlfYk,6730
174
176
  langtrace_python_sdk/instrumentation/langchain_core/patch.py,sha256=CXEfbq6E88X_y3JF7CaEEbNCYzSfig5ztNHW-aiiTic,10918
@@ -182,6 +184,9 @@ langtrace_python_sdk/instrumentation/litellm/types.py,sha256=aVkoa7tmAbYfyOhnyMr
182
184
  langtrace_python_sdk/instrumentation/llamaindex/__init__.py,sha256=rHvuqpuQKLj57Ow7vuKRqxAN5jT0b5NBeHwhXbbnRa4,103
183
185
  langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py,sha256=8iAg-Oxwf2W4S60qRfO5mvzORYxublgq7FdGWqUB4q8,2965
184
186
  langtrace_python_sdk/instrumentation/llamaindex/patch.py,sha256=548hzPyT_k-2wmt9AArv4JzTT4j4AGKJq5Ar2bWv7o8,4615
187
+ langtrace_python_sdk/instrumentation/milvus/__init__.py,sha256=gGb0xdMrpX_IEHdTplMt_U5A2IrKRc7lf5VU0WAsgVY,88
188
+ langtrace_python_sdk/instrumentation/milvus/instrumentation.py,sha256=bpf6uRIJ44F1H2ncIgjjrVSwHMs1EiX7kTOy-urMDu0,928
189
+ langtrace_python_sdk/instrumentation/milvus/patch.py,sha256=_sasB17CnBCufxtY3AzeTZFBo3449bn6iHsPmyAire4,4378
185
190
  langtrace_python_sdk/instrumentation/mistral/__init__.py,sha256=mkGALBQvq0jSfwDl6TU09SFwnVs6O4zkUi-yVmd3SNg,90
186
191
  langtrace_python_sdk/instrumentation/mistral/instrumentation.py,sha256=qtCkHCSOaiicUChbmTID4lcK1rbeW8oRSbpda2ogbgM,2328
187
192
  langtrace_python_sdk/instrumentation/mistral/patch.py,sha256=1peU0vqt9BGYn2PFNyKAMKNRVMEujXNyZGzgttPJrTQ,6580
@@ -197,7 +202,7 @@ langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=HDXkRITr
197
202
  langtrace_python_sdk/instrumentation/pinecone/patch.py,sha256=MIbUcEsVzl4W_pfq81LP9QFVhwPB8rHF0Aod9pq_j-o,5249
198
203
  langtrace_python_sdk/instrumentation/pymongo/__init__.py,sha256=Q_ecuvZ0j5TxOCdD69BfZhCPT6rj7w5lHbTuDSpLYD4,97
199
204
  langtrace_python_sdk/instrumentation/pymongo/instrumentation.py,sha256=fG938JR2Be3zy19JUyvKxafYQPavnUV9eMtD7Vn0_fc,1597
200
- langtrace_python_sdk/instrumentation/pymongo/patch.py,sha256=4K-_QWTXoWDzpYEgaWPkf6kvXGnAmHKvp8H2gMmPokA,2330
205
+ langtrace_python_sdk/instrumentation/pymongo/patch.py,sha256=jZeoBLLz-Xdzk9HrHY01t8Lm-y-mgv8XUAL2q9-zsK8,2300
201
206
  langtrace_python_sdk/instrumentation/qdrant/__init__.py,sha256=TaIGSAEPysrL23KJ5FcEL1tfQogrKCtEQ75_u62eqso,95
202
207
  langtrace_python_sdk/instrumentation/qdrant/instrumentation.py,sha256=vl2eKSP55aqDo1JiRlvOUBrr6kddvG9Z5dCYew2OG08,1816
203
208
  langtrace_python_sdk/instrumentation/qdrant/patch.py,sha256=IgdozFyKqB8n72BjKvBDiMhYM4o75DReD0I8_uIQ7KY,5015
@@ -259,8 +264,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
259
264
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
260
265
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
261
266
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
262
- langtrace_python_sdk-3.3.4.dist-info/METADATA,sha256=V3hpMc2mbI4ubOf-0oluHaVAVtUVPGhEBD6HE1u43Pk,16005
263
- langtrace_python_sdk-3.3.4.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
264
- langtrace_python_sdk-3.3.4.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
265
- langtrace_python_sdk-3.3.4.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
266
- langtrace_python_sdk-3.3.4.dist-info/RECORD,,
267
+ langtrace_python_sdk-3.3.6.dist-info/METADATA,sha256=dXfiYaLZTVt9ZFTeAUyGT__kD6njegfpMoiwoC_0Cig,16005
268
+ langtrace_python_sdk-3.3.6.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
269
+ langtrace_python_sdk-3.3.6.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
270
+ langtrace_python_sdk-3.3.6.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
271
+ langtrace_python_sdk-3.3.6.dist-info/RECORD,,