langtrace-python-sdk 2.3.18__py3-none-any.whl → 2.3.20__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,20 @@
1
+ import dspy
2
+ from langtrace_python_sdk import langtrace
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ langtrace.init(disable_instrumentations={"all_except": ["dspy", "anthropic"]})
8
+
9
+ # configure the language model to be used by dspy
10
+
11
+ llm = dspy.Claude()
12
+ dspy.settings.configure(lm=llm)
13
+
14
+ # create a prompt format that says that the llm will take a question and give back an answer
15
+ predict = dspy.Predict("question -> answer")
16
+ prediction = predict(
17
+ question="who scored the final goal in football world cup finals in 2014?"
18
+ )
19
+
20
+ print(prediction.answer)
@@ -0,0 +1,28 @@
1
+ import dspy
2
+ from langtrace_python_sdk import langtrace
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ langtrace.init(disable_instrumentations={"all_except": ["dspy", "anthropic"]})
8
+
9
+ # configure the language model to be used by dspy
10
+ llm = dspy.Claude()
11
+ dspy.settings.configure(lm=llm)
12
+
13
+
14
+ # create a signature for basic question answering
15
+ class BasicQA(dspy.Signature):
16
+ """Given a question, generate the answer."""
17
+
18
+ question = dspy.InputField(desc="User's question")
19
+ answer = dspy.OutputField(desc="often between 1 and 5 words")
20
+
21
+
22
+ # create a prompt format that says that the llm will take a question and give back an answer
23
+ predict = dspy.ChainOfThought(BasicQA)
24
+ prediction = predict(
25
+ question="Who provided the assist for the final goal in the 2014 FIFA World Cup final?"
26
+ )
27
+
28
+ print(prediction.answer)
@@ -0,0 +1,30 @@
1
+ import dspy
2
+ from langtrace_python_sdk import langtrace
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ langtrace.init(disable_instrumentations={"all_except": ["dspy", "anthropic"]})
8
+
9
+ # configure the language model to be used by dspy
10
+ llm = dspy.Claude()
11
+ dspy.settings.configure(lm=llm)
12
+
13
+
14
+ # create a signature for basic question answering
15
+ class BasicQA(dspy.Signature):
16
+ """Answer questions with short factoid answers."""
17
+
18
+ question = dspy.InputField(
19
+ desc="A question that can be answered with a short factoid answer"
20
+ )
21
+ answer = dspy.OutputField(desc="often between 1 and 5 words")
22
+
23
+
24
+ # create a prompt format that says that the llm will take a question and give back an answer
25
+ predict = dspy.Predict(BasicQA)
26
+ prediction = predict(
27
+ question="Sarah has 5 apples. She buys 7 more apples from the store. How many apples does Sarah have now?"
28
+ )
29
+
30
+ print(prediction.answer)
@@ -0,0 +1,41 @@
1
+ import dspy
2
+ from langtrace_python_sdk import langtrace, with_langtrace_root_span
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ langtrace.init(disable_instrumentations={"all_except": ["dspy", "anthropic"]})
8
+
9
+ # configure the language model to be used by dspy
10
+ llm = dspy.Claude()
11
+ dspy.settings.configure(lm=llm)
12
+
13
+
14
+ # create a signature for basic question answering
15
+ class BasicQA(dspy.Signature):
16
+ """Given a question, generate the answer."""
17
+
18
+ question = dspy.InputField(desc="User's question")
19
+ answer = dspy.OutputField(desc="often between 1 and 5 words")
20
+
21
+
22
+ class DoubleChainOfThought(dspy.Module):
23
+ def __init__(self):
24
+ self.cot1 = dspy.ChainOfThought("question -> step_by_step_thought")
25
+ self.cot2 = dspy.ChainOfThought("question, thought -> one_word_answer")
26
+
27
+ def forward(self, question):
28
+ thought = self.cot1(question=question).step_by_step_thought
29
+ answer = self.cot2(question=question, thought=thought).one_word_answer
30
+ return dspy.Prediction(thought=thought, answer=answer)
31
+
32
+
33
+ @with_langtrace_root_span(name="Double Chain Of thought")
34
+ def main():
35
+ multi_step_question = "what is the capital of the birth state of the person who provided the assist for the Mario Gotze's in football world cup in 2014?"
36
+ double_cot = DoubleChainOfThought()
37
+ result = double_cot(question=multi_step_question)
38
+ print(result)
39
+
40
+
41
+ main()
@@ -124,7 +124,7 @@ class LangTraceExporter(SpanExporter):
124
124
  url=f"{self.api_host}",
125
125
  data=json.dumps(data),
126
126
  headers=headers,
127
- timeout=20,
127
+ timeout=40,
128
128
  )
129
129
 
130
130
  if not response.ok:
@@ -14,10 +14,8 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  """
16
16
 
17
- from typing import Any, Callable, Dict, List, Optional, Iterator, TypedDict, Union
18
- from langtrace.trace_attributes import Event, SpanAttributes, LLMSpanAttributes
19
- from langtrace_python_sdk.utils import set_span_attribute
20
- from langtrace_python_sdk.utils.silently_fail import silently_fail
17
+ from typing import Any, Callable, List, Iterator, Union
18
+ from langtrace.trace_attributes import SpanAttributes, LLMSpanAttributes
21
19
  import json
22
20
 
23
21
  from langtrace_python_sdk.utils.llm import (
@@ -28,6 +26,7 @@ from langtrace_python_sdk.utils.llm import (
28
26
  get_llm_url,
29
27
  get_span_name,
30
28
  set_event_completion,
29
+ set_span_attributes,
31
30
  set_usage_attributes,
32
31
  set_span_attribute,
33
32
  )
@@ -39,8 +38,6 @@ from langtrace_python_sdk.instrumentation.anthropic.types import (
39
38
  StreamingResult,
40
39
  ResultType,
41
40
  MessagesCreateKwargs,
42
- ContentItem,
43
- Usage,
44
41
  )
45
42
 
46
43
 
@@ -62,13 +59,12 @@ def messages_create(version: str, tracer: Tracer) -> Callable[..., Any]:
62
59
  prompts = [{"role": "system", "content": system}] + kwargs.get(
63
60
  "messages", []
64
61
  )
65
- extraAttributes = get_extra_attributes()
66
62
  span_attributes = {
67
63
  **get_langtrace_attributes(version, service_provider),
68
64
  **get_llm_request_attributes(kwargs, prompts=prompts),
69
65
  **get_llm_url(instance),
70
66
  SpanAttributes.LLM_PATH: APIS["MESSAGES_CREATE"]["ENDPOINT"],
71
- **extraAttributes, # type: ignore
67
+ **get_extra_attributes(),
72
68
  }
73
69
 
74
70
  attributes = LLMSpanAttributes(**span_attributes)
@@ -76,8 +72,7 @@ def messages_create(version: str, tracer: Tracer) -> Callable[..., Any]:
76
72
  span = tracer.start_span(
77
73
  name=get_span_name(APIS["MESSAGES_CREATE"]["METHOD"]), kind=SpanKind.CLIENT
78
74
  )
79
- for field, value in attributes.model_dump(by_alias=True).items():
80
- set_span_attribute(span, field, value)
75
+ set_span_attributes(span, attributes)
81
76
  try:
82
77
  # Attempt to call the original method
83
78
  result = wrapped(*args, **kwargs)
@@ -10,15 +10,9 @@ class AutogenInstrumentation(BaseInstrumentor):
10
10
  return ["autogen >= 0.1.0"]
11
11
 
12
12
  def _instrument(self, **kwargs):
13
- print("Instrumneting autogen")
14
13
  tracer_provider = kwargs.get("tracer_provider")
15
14
  tracer = get_tracer(__name__, "", tracer_provider)
16
15
  version = v("autogen")
17
- # conversable_agent.intiate_chat
18
- # conversable_agent.register_function
19
- # agent.Agent
20
- # AgentCreation
21
- # Tools --> Register_for_llm, register_for_execution, register_for_function
22
16
  try:
23
17
  _W(
24
18
  module="autogen.agentchat.conversable_agent",
@@ -2,6 +2,12 @@ import json
2
2
  from importlib_metadata import version as v
3
3
  from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
4
4
  from langtrace_python_sdk.utils import set_span_attribute
5
+ from langtrace_python_sdk.utils.llm import (
6
+ get_extra_attributes,
7
+ get_langtrace_attributes,
8
+ get_span_name,
9
+ set_span_attributes,
10
+ )
5
11
  from langtrace_python_sdk.utils.silently_fail import silently_fail
6
12
  from langtrace_python_sdk.constants.instrumentation.common import (
7
13
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
@@ -39,25 +45,29 @@ def patch_bootstrapfewshot_optimizer(operation_name, version, tracer):
39
45
  ),
40
46
  }
41
47
  span_attributes["dspy.optimizer.module.prog"] = json.dumps(prog)
42
- if hasattr(instance, 'metric'):
43
- span_attributes["dspy.optimizer.metric"] = getattr(instance, 'metric').__name__
48
+ if hasattr(instance, "metric"):
49
+ span_attributes["dspy.optimizer.metric"] = getattr(
50
+ instance, "metric"
51
+ ).__name__
44
52
  if kwargs.get("trainset") and len(kwargs.get("trainset")) > 0:
45
53
  span_attributes["dspy.optimizer.trainset"] = str(kwargs.get("trainset"))
46
54
  config = {}
47
- if hasattr(instance, 'metric_threshold'):
48
- config["metric_threshold"] = getattr(instance, 'metric_threshold')
49
- if hasattr(instance, 'teacher_settings'):
50
- config["teacher_settings"] = getattr(instance, 'teacher_settings')
51
- if hasattr(instance, 'max_bootstrapped_demos'):
52
- config["max_bootstrapped_demos"] = getattr(instance, 'max_bootstrapped_demos')
53
- if hasattr(instance, 'max_labeled_demos'):
54
- config["max_labeled_demos"] = getattr(instance, 'max_labeled_demos')
55
- if hasattr(instance, 'max_rounds'):
56
- config["max_rounds"] = getattr(instance, 'max_rounds')
57
- if hasattr(instance, 'max_steps'):
58
- config["max_errors"] = getattr(instance, 'max_errors')
59
- if hasattr(instance, 'error_count'):
60
- config["error_count"] = getattr(instance, 'error_count')
55
+ if hasattr(instance, "metric_threshold"):
56
+ config["metric_threshold"] = getattr(instance, "metric_threshold")
57
+ if hasattr(instance, "teacher_settings"):
58
+ config["teacher_settings"] = getattr(instance, "teacher_settings")
59
+ if hasattr(instance, "max_bootstrapped_demos"):
60
+ config["max_bootstrapped_demos"] = getattr(
61
+ instance, "max_bootstrapped_demos"
62
+ )
63
+ if hasattr(instance, "max_labeled_demos"):
64
+ config["max_labeled_demos"] = getattr(instance, "max_labeled_demos")
65
+ if hasattr(instance, "max_rounds"):
66
+ config["max_rounds"] = getattr(instance, "max_rounds")
67
+ if hasattr(instance, "max_steps"):
68
+ config["max_errors"] = getattr(instance, "max_errors")
69
+ if hasattr(instance, "error_count"):
70
+ config["error_count"] = getattr(instance, "error_count")
61
71
  if config and len(config) > 0:
62
72
  span_attributes["dspy.optimizer.config"] = json.dumps(config)
63
73
 
@@ -96,37 +106,36 @@ def patch_signature(operation_name, version, tracer):
96
106
  def traced_method(wrapped, instance, args, kwargs):
97
107
 
98
108
  service_provider = SERVICE_PROVIDERS["DSPY"]
99
- extra_attributes = baggage.get_baggage(LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY)
100
109
  span_attributes = {
101
- "langtrace.sdk.name": "langtrace-python-sdk",
102
- "langtrace.service.name": service_provider,
103
- "langtrace.service.type": "framework",
104
- "langtrace.service.version": version,
105
- "langtrace.version": v(LANGTRACE_SDK_NAME),
106
- **(extra_attributes if extra_attributes is not None else {}),
110
+ **get_langtrace_attributes(
111
+ service_provider=service_provider,
112
+ version=version,
113
+ vendor_type="framework",
114
+ ),
115
+ **get_extra_attributes(),
107
116
  }
108
117
 
109
- # passed operation name
110
- opname = operation_name
111
- if extra_attributes is not None and "langtrace.span.name" in extra_attributes:
112
- # append the operation name to the span name
113
- opname = f"{operation_name}-{extra_attributes['langtrace.span.name']}"
114
-
115
118
  if instance.__class__.__name__:
116
119
  span_attributes["dspy.signature.name"] = instance.__class__.__name__
117
- span_attributes["dspy.signature"] = str(instance)
120
+ span_attributes["dspy.signature"] = str(instance.signature)
118
121
 
119
122
  if kwargs and len(kwargs) > 0:
120
123
  span_attributes["dspy.signature.args"] = str(kwargs)
121
124
 
122
125
  attributes = FrameworkSpanAttributes(**span_attributes)
123
- with tracer.start_as_current_span(opname, kind=SpanKind.CLIENT) as span:
124
- _set_input_attributes(span, kwargs, attributes)
126
+ with tracer.start_as_current_span(
127
+ get_span_name(operation_name=operation_name), kind=SpanKind.CLIENT
128
+ ) as span:
129
+ set_span_attributes(span, attributes)
125
130
 
126
131
  try:
127
132
  result = wrapped(*args, **kwargs)
128
133
  if result:
129
- set_span_attribute(span, "dspy.signature.result", str(result))
134
+ set_span_attribute(
135
+ span,
136
+ "dspy.signature.result",
137
+ json.dumps(result.toDict()),
138
+ )
130
139
  span.set_status(Status(StatusCode.OK))
131
140
 
132
141
  span.end()
@@ -168,27 +177,41 @@ def patch_evaluate(operation_name, version, tracer):
168
177
  if hasattr(instance, "devset"):
169
178
  span_attributes["dspy.evaluate.devset"] = str(getattr(instance, "devset"))
170
179
  if hasattr(instance, "trainset"):
171
- span_attributes["dspy.evaluate.display"] = str(getattr(instance, "trainset"))
180
+ span_attributes["dspy.evaluate.display"] = str(
181
+ getattr(instance, "trainset")
182
+ )
172
183
  if hasattr(instance, "num_threads"):
173
- span_attributes["dspy.evaluate.num_threads"] = str(getattr(instance, "num_threads"))
184
+ span_attributes["dspy.evaluate.num_threads"] = str(
185
+ getattr(instance, "num_threads")
186
+ )
174
187
  if hasattr(instance, "return_outputs"):
175
188
  span_attributes["dspy.evaluate.return_outputs"] = str(
176
189
  getattr(instance, "return_outputs")
177
190
  )
178
191
  if hasattr(instance, "display_table"):
179
- span_attributes["dspy.evaluate.display_table"] = str(getattr(instance, "display_table"))
192
+ span_attributes["dspy.evaluate.display_table"] = str(
193
+ getattr(instance, "display_table")
194
+ )
180
195
  if hasattr(instance, "display_progress"):
181
196
  span_attributes["dspy.evaluate.display_progress"] = str(
182
197
  getattr(instance, "display_progress")
183
198
  )
184
199
  if hasattr(instance, "metric"):
185
- span_attributes["dspy.evaluate.metric"] = getattr(instance, "metric").__name__
200
+ span_attributes["dspy.evaluate.metric"] = getattr(
201
+ instance, "metric"
202
+ ).__name__
186
203
  if hasattr(instance, "error_count"):
187
- span_attributes["dspy.evaluate.error_count"] = str(getattr(instance, "error_count"))
204
+ span_attributes["dspy.evaluate.error_count"] = str(
205
+ getattr(instance, "error_count")
206
+ )
188
207
  if hasattr(instance, "error_lock"):
189
- span_attributes["dspy.evaluate.error_lock"] = str(getattr(instance, "error_lock"))
208
+ span_attributes["dspy.evaluate.error_lock"] = str(
209
+ getattr(instance, "error_lock")
210
+ )
190
211
  if hasattr(instance, "max_errors"):
191
- span_attributes["dspy.evaluate.max_errors"] = str(getattr(instance, "max_errors"))
212
+ span_attributes["dspy.evaluate.max_errors"] = str(
213
+ getattr(instance, "max_errors")
214
+ )
192
215
  if args and len(args) > 0:
193
216
  span_attributes["dspy.evaluate.args"] = str(args)
194
217
 
@@ -69,6 +69,7 @@ from langtrace_python_sdk.utils import (
69
69
  )
70
70
  from langtrace_python_sdk.utils.langtrace_sampler import LangtraceSampler
71
71
  import sentry_sdk
72
+ from sentry_sdk.types import Event, Hint
72
73
 
73
74
 
74
75
  def init(
@@ -177,6 +178,7 @@ def init(
177
178
  dsn=SENTRY_DSN,
178
179
  traces_sample_rate=1.0,
179
180
  profiles_sample_rate=1.0,
181
+ before_send=before_send,
180
182
  )
181
183
  sdk_options = {
182
184
  "service_name": os.environ.get("OTEL_SERVICE_NAME")
@@ -195,6 +197,22 @@ def init(
195
197
  sentry_sdk.set_context("sdk_init_options", sdk_options)
196
198
 
197
199
 
200
+ def before_send(event: Event, hint: Hint):
201
+ # Check if there's an exception and stacktrace in the event
202
+ if "exception" in event:
203
+ exception = event["exception"]["values"][0]
204
+ stacktrace = exception.get("stacktrace", {})
205
+ frames = stacktrace.get("frames", [])
206
+ if frames:
207
+ last_frame = frames[-1]
208
+ absolute_path = last_frame.get("abs_path") # Absolute path
209
+ # Check if the error is from the SDK
210
+ if "langtrace-python-sdk" in absolute_path:
211
+ return event
212
+
213
+ return None
214
+
215
+
198
216
  def init_instrumentations(
199
217
  disable_instrumentations: Optional[DisableInstrumentations],
200
218
  all_instrumentations: dict,
@@ -18,7 +18,6 @@ from typing import Any, Dict, Union
18
18
  from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
19
19
  from langtrace_python_sdk.utils import set_span_attribute
20
20
  from langtrace_python_sdk.types import NOT_GIVEN
21
- from tiktoken import get_encoding
22
21
  from tiktoken import get_encoding, list_encoding_names
23
22
 
24
23
  from langtrace_python_sdk.constants.instrumentation.common import (
@@ -26,7 +25,7 @@ from langtrace_python_sdk.constants.instrumentation.common import (
26
25
  TIKTOKEN_MODEL_MAPPING,
27
26
  )
28
27
  from langtrace_python_sdk.constants.instrumentation.openai import OPENAI_COST_TABLE
29
- from langtrace.trace_attributes import SpanAttributes, Event
28
+ from langtrace.trace_attributes import SpanAttributes
30
29
  from importlib_metadata import version as v
31
30
  import json
32
31
  from opentelemetry import baggage
@@ -142,7 +141,9 @@ def get_llm_request_attributes(kwargs, prompts=None, model=None, operation_name=
142
141
  SpanAttributes.LLM_FREQUENCY_PENALTY: kwargs.get("frequency_penalty"),
143
142
  SpanAttributes.LLM_REQUEST_SEED: kwargs.get("seed"),
144
143
  SpanAttributes.LLM_TOOLS: json.dumps(tools) if tools else None,
145
- SpanAttributes.LLM_TOOL_CHOICE: json.dumps(tool_choice) if tool_choice else None,
144
+ SpanAttributes.LLM_TOOL_CHOICE: (
145
+ json.dumps(tool_choice) if tool_choice else None
146
+ ),
146
147
  SpanAttributes.LLM_REQUEST_LOGPROPS: kwargs.get("logprobs"),
147
148
  SpanAttributes.LLM_REQUEST_LOGITBIAS: kwargs.get("logit_bias"),
148
149
  SpanAttributes.LLM_REQUEST_TOP_LOGPROPS: kwargs.get("top_logprobs"),
@@ -1 +1 @@
1
- __version__ = "2.3.18"
1
+ __version__ = "2.3.20"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 2.3.18
3
+ Version: 2.3.20
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>
@@ -31,6 +31,10 @@ examples/crewai_example/trip_planner/main.py,sha256=dwEh60RABqaBodhkPr3lB7KS83f7
31
31
  examples/crewai_example/trip_planner/tasks.py,sha256=ZGRaTAgkA66IN7q9EYbJqM8xWhUTxcF4ynnqTyBcSL4,5667
32
32
  examples/crewai_example/trip_planner/tools/calculator.py,sha256=bMfxJDAwbn6D26pe880S4BB3rcFeyvEyb15QR00T8kI,522
33
33
  examples/crewai_example/trip_planner/tools/search_tools.py,sha256=p8qZe_bi45OjBwiwwrH0lhTaQI_ZiLThSTEEN5dWxF0,2700
34
+ examples/dspy_example/QA_basic.py,sha256=8qlHC8FcDAHIxns7Xax8e5tMUNgppbF1RdRbZwxZGAs,553
35
+ examples/dspy_example/QA_basic_with_chain_of_thought.py,sha256=u0yxUSiAWbSe-pXxXU5pKORc7kaTRgBdFUcA6cqTiOk,814
36
+ examples/dspy_example/QA_basic_with_signature.py,sha256=iGVhm-pIutBWLQDbviSmH38etTAxxbz1ouBmT66beW4,890
37
+ examples/dspy_example/QA_multi_step_with_chain_of_thought.py,sha256=mIUiG1Y7tuKi_Y6ZHk_b9WskjyklR-Ar4OUbpqtCNmw,1382
34
38
  examples/dspy_example/math_problems_cot.py,sha256=Z98nB6myt8WJse2dWS6Ap7CFUhC27lBNb37R1Gg80VQ,1282
35
39
  examples/dspy_example/math_problems_cot_parallel.py,sha256=5clw-IIVA0mWm0N0xWNDMQaSY07YVYW8R1mcyCJJ1_8,1764
36
40
  examples/dspy_example/program_of_thought_basic.py,sha256=oEbtJdeKENMUbex25-zyStWwurRWW6OdP0KDs-jUkko,984
@@ -91,8 +95,8 @@ examples/vertexai_example/main.py,sha256=gndId5X5ksD-ycxnAWMdEqIDbLc3kz5Vt8vm4YP
91
95
  examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56snk-Bbg2Kw,618
92
96
  examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
93
97
  langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
94
- langtrace_python_sdk/langtrace.py,sha256=sNCOHq5dBsNAHkNLB9VsR-FgbnrQ_2Tjo7jiyR8svgk,8218
95
- langtrace_python_sdk/version.py,sha256=mD-SDEtLNvyI2ufgzrAVc4SMA1MwfclBcYr9hOIt7Qo,23
98
+ langtrace_python_sdk/langtrace.py,sha256=vfDVtcWIDf8_01qp15zfRB92qbGEBUGu0daF9BlyspY,8863
99
+ langtrace_python_sdk/version.py,sha256=eUJ3ce_kiRyuI8qb6EgXPHH9OvPfioJ6OhVVC41vbHE,23
96
100
  langtrace_python_sdk/constants/__init__.py,sha256=3CNYkWMdd1DrkGqzLUgNZXjdAlM6UFMlf_F-odAToyc,146
97
101
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=5MNjnAOg-4am78J3gVMH6FSwq5N8TOj72ugkhsw4vi0,46
98
102
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -111,15 +115,15 @@ langtrace_python_sdk/constants/instrumentation/qdrant.py,sha256=yL7BopNQTXW7L7Z-
111
115
  langtrace_python_sdk/constants/instrumentation/vertexai.py,sha256=0s2vX3Y0iwjOPkUg5lAKi-7o3LaNivDSBBbF-o695Ok,1266
112
116
  langtrace_python_sdk/constants/instrumentation/weaviate.py,sha256=gtv-JBxvNGClEMxClmRKzjJ1khgOonsli4D_k9IagSE,2601
113
117
  langtrace_python_sdk/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=nbDFxDsDRjpi7otiHHnQ3Z9_LYqLCgxdtP4IWnnOuyI,6307
118
+ langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=UFupNL03zklVd5penpsfXjbWSb5qB39mEv2BY2wczSs,6307
115
119
  langtrace_python_sdk/extensions/langtrace_filesystem.py,sha256=34fZutG28EJ66l67OvTGsydAH3ZpXgikdE7hVLqBpG4,7863
116
120
  langtrace_python_sdk/instrumentation/__init__.py,sha256=2ZSUFvF1Lv15PQvPGk8a_RiukjFKWOM5esDot5ZOkbo,1622
117
121
  langtrace_python_sdk/instrumentation/anthropic/__init__.py,sha256=donrurJAGYlxrSRA3BIf76jGeUcAx9Tq8CVpah68S0Y,101
118
122
  langtrace_python_sdk/instrumentation/anthropic/instrumentation.py,sha256=ndXdruI0BG7n75rsuEpKjfzePxrZxg40gZ39ONmD_v4,1845
119
- langtrace_python_sdk/instrumentation/anthropic/patch.py,sha256=xVfWvULInOx_1dlC0phJsetDpN5cg8Dmma9hVlUHpSY,5234
123
+ langtrace_python_sdk/instrumentation/anthropic/patch.py,sha256=ztPN4VZujoxYOKhTbFnup7Ibms9NAzYCPAJY43NUgKw,4935
120
124
  langtrace_python_sdk/instrumentation/anthropic/types.py,sha256=WdeXe2tkjAisMLK38STKwVe7MJS5SLoETJ_aKhA_-UU,2463
121
125
  langtrace_python_sdk/instrumentation/autogen/__init__.py,sha256=unDhpqWQIdHFw24lRsRu1Mm1NCZxZgyBrPRZrAJL3Lo,90
122
- langtrace_python_sdk/instrumentation/autogen/instrumentation.py,sha256=0aUPPRtFkGBB2C7PYR3Myt8JHgze5vs93iCMqj2QN0E,1518
126
+ langtrace_python_sdk/instrumentation/autogen/instrumentation.py,sha256=MVDUCBi6XzLQYmZd6myAounI0HeM8QWX5leuul5Hj0Q,1262
123
127
  langtrace_python_sdk/instrumentation/autogen/patch.py,sha256=mp6WxHYVqTXvqZOi6CnZNN0MmzoG5v9LPMU2fjkivsY,4650
124
128
  langtrace_python_sdk/instrumentation/chroma/__init__.py,sha256=pNZ5UO8Q-d5VkXSobBf79reB6AmEl_usnnTp5Itv818,95
125
129
  langtrace_python_sdk/instrumentation/chroma/instrumentation.py,sha256=nT6PS6bsrIOO9kLV5GuUeRjMe6THHHAZGvqWBP1dYog,1807
@@ -132,7 +136,7 @@ langtrace_python_sdk/instrumentation/crewai/instrumentation.py,sha256=5Umzq8zjEn
132
136
  langtrace_python_sdk/instrumentation/crewai/patch.py,sha256=C2OKKPC-pzfzZWxPc74kHdYsKTX9yRhOgVY47WY9KN8,9109
133
137
  langtrace_python_sdk/instrumentation/dspy/__init__.py,sha256=tM1srfi_QgyCzrde4izojMrRq2Wm7Dj5QUvVQXIJzkk,84
134
138
  langtrace_python_sdk/instrumentation/dspy/instrumentation.py,sha256=o8URiDvCbZ8LL0I-4xKHkn_Ms2sETBRpn-gOliv3xzQ,2929
135
- langtrace_python_sdk/instrumentation/dspy/patch.py,sha256=eddxKIzJSUzZOcqg5LIwv9P0t66RXjB2NesDYGoJs8c,9898
139
+ langtrace_python_sdk/instrumentation/dspy/patch.py,sha256=8vDa3SAlo4Z0X-BOVO-wYxXPwHtISi4k7NwWwL-LOV4,9978
136
140
  langtrace_python_sdk/instrumentation/embedchain/__init__.py,sha256=5L6n8-brMnRWZ0CMmHEuN1mrhIxrYLNtxRy0Ujc-hOY,103
137
141
  langtrace_python_sdk/instrumentation/embedchain/instrumentation.py,sha256=dShwm0duy25IvL7g9I_v-2oYuyh2fadeiJqXtXBay-8,1987
138
142
  langtrace_python_sdk/instrumentation/embedchain/patch.py,sha256=ovvBrtqUDwGSmSgK_S3pOOrDa4gkPSFG-HvmsxqmJE8,3627
@@ -182,7 +186,7 @@ langtrace_python_sdk/instrumentation/weaviate/patch.py,sha256=aWLDbNGz35V6XQUv4l
182
186
  langtrace_python_sdk/types/__init__.py,sha256=VnfLV5pVHIB9VRIpEwIDQjWSPEAqQKnq6VNbqsm9W3Q,4287
183
187
  langtrace_python_sdk/utils/__init__.py,sha256=O-Ra9IDd1MnxihdQUC8HW_wYFhk7KbTCK2BIl02yacQ,2935
184
188
  langtrace_python_sdk/utils/langtrace_sampler.py,sha256=BupNndHbU9IL_wGleKetz8FdcveqHMBVz1bfKTTW80w,1753
185
- langtrace_python_sdk/utils/llm.py,sha256=Hm3mr1iuk1dC-dGnBymDS6PEdOO5vaoPQzCtTeOqUQs,14970
189
+ langtrace_python_sdk/utils/llm.py,sha256=mA7nEpndjKwPY3LfYV8hv-83xrDlD8MSTW8mItp5tXI,14953
186
190
  langtrace_python_sdk/utils/misc.py,sha256=LaQr5LOmZMiuwVdjYh7aIu6o2C_Xb1wgpQGNOVmRzfE,1918
187
191
  langtrace_python_sdk/utils/prompt_registry.py,sha256=n5dQMVLBw8aJZY8Utvf67bncc25ELf6AH9BYw8_hSzo,2619
188
192
  langtrace_python_sdk/utils/sdk_version_checker.py,sha256=F-VVVH7Fmhr5LcY0IIe-34zIi5RQcx26uuxFpPzZesM,1782
@@ -231,8 +235,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
231
235
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
232
236
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
233
237
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
234
- langtrace_python_sdk-2.3.18.dist-info/METADATA,sha256=VJScOd2S8TQoAooEiqHlsm7o6IMayM3z7f2-dUOEv9E,15380
235
- langtrace_python_sdk-2.3.18.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
236
- langtrace_python_sdk-2.3.18.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
237
- langtrace_python_sdk-2.3.18.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
238
- langtrace_python_sdk-2.3.18.dist-info/RECORD,,
238
+ langtrace_python_sdk-2.3.20.dist-info/METADATA,sha256=DYEDI47hU8LhtFgAzbYr_yV-htk1x2yglLyR1pPHIXc,15380
239
+ langtrace_python_sdk-2.3.20.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
240
+ langtrace_python_sdk-2.3.20.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
241
+ langtrace_python_sdk-2.3.20.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
242
+ langtrace_python_sdk-2.3.20.dist-info/RECORD,,