langtrace-python-sdk 2.2.28__py3-none-any.whl → 2.2.31__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.
@@ -28,5 +28,5 @@ class PoetryAgents:
28
28
  goal="""Create a poem that captures the essence of a given theme or emotion""",
29
29
  allow_delegation=False,
30
30
  verbose=True,
31
- llm=self.ollama,
31
+ llm=self.open_ai,
32
32
  )
@@ -1,14 +1,11 @@
1
1
  from crewai import Crew
2
- from textwrap import dedent
3
2
  from .agents import PoetryAgents
4
3
  from .tasks import PoetryTasks
5
4
  from langtrace_python_sdk import langtrace
6
5
  from dotenv import load_dotenv
7
- import agentops
8
6
 
9
7
  load_dotenv()
10
- agentops.init()
11
- langtrace.init(write_spans_to_console=False, batch=False)
8
+ langtrace.init()
12
9
 
13
10
 
14
11
  class PoetryCrew:
@@ -29,18 +26,11 @@ class PoetryCrew:
29
26
 
30
27
 
31
28
  # This is the main function that you will use to run your custom crew.
29
+ # You can run this file using `python -m src.examples.crewai_example.simple_agent.main`
32
30
  if __name__ == "__main__":
33
31
  print("## Welcome to Poetry Crew")
34
32
  print("-------------------------------")
35
- topic = input(
36
- dedent(
37
- """
38
- What topic do you want to write a poem on?
39
- """
40
- )
41
- )
42
-
43
- poetry_crew = PoetryCrew(topic=topic)
33
+ poetry_crew = PoetryCrew(topic="cold")
44
34
  result = poetry_crew.run()
45
35
  print("\n\n########################")
46
36
  print("## Here is you poem")
@@ -18,4 +18,5 @@ class PoetryTasks:
18
18
  ),
19
19
  expected_output="A creative and expressive poem that captures the essence of the given topic.",
20
20
  agent=agent,
21
+ output_file="poem.txt",
21
22
  )
@@ -1,5 +1,4 @@
1
1
  from crewai import Crew
2
- from textwrap import dedent
3
2
  from .agents import TravelAgents
4
3
  from .tasks import TravelTasks
5
4
  from langtrace_python_sdk import langtrace
@@ -59,36 +58,8 @@ class TripCrew:
59
58
  if __name__ == "__main__":
60
59
  print("## Welcome to Trip Planner Crew")
61
60
  print("-------------------------------")
62
- origin = input(
63
- dedent(
64
- """
65
- From where will you be traveling from?
66
- """
67
- )
68
- )
69
- cities = input(
70
- dedent(
71
- """
72
- What are the cities options you are interested in visiting?
73
- """
74
- )
75
- )
76
- date_range = input(
77
- dedent(
78
- """
79
- What is the date range you are interested in traveling?
80
- """
81
- )
82
- )
83
- interests = input(
84
- dedent(
85
- """
86
- What are some of your high level interests and hobbies?
87
- """
88
- )
89
- )
90
61
 
91
- trip_crew = TripCrew(origin, cities, date_range, interests)
62
+ trip_crew = TripCrew("cairo", "marsa alam", "sep", "scuba diving")
92
63
  result = trip_crew.run()
93
64
  print("\n\n########################")
94
65
  print("## Here is you Trip Plan")
@@ -123,4 +123,4 @@ class LangTraceExporter(SpanExporter):
123
123
  return SpanExportResult.FAILURE
124
124
 
125
125
  def shutdown(self) -> None:
126
- pass
126
+ print(Fore.WHITE + "⭐ Leave our github a star to stay on top of our updates - https://github.com/Scale3-Labs/langtrace" + Fore.RESET)
@@ -46,7 +46,7 @@ class CrewAIInstrumentation(BaseInstrumentor):
46
46
  )
47
47
  _W(
48
48
  "crewai.task",
49
- "Task.execute",
49
+ "Task.execute_sync",
50
50
  patch_crew("Task.execute", version, tracer),
51
51
  )
52
52
  except Exception as e:
@@ -2,15 +2,14 @@ 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 get_span_name
6
- from langtrace_python_sdk.utils.silently_fail import silently_fail
5
+ from langtrace_python_sdk.utils.llm import get_span_name, set_span_attributes
7
6
  from langtrace_python_sdk.constants.instrumentation.common import (
8
7
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
9
8
  SERVICE_PROVIDERS,
10
9
  )
11
10
  from opentelemetry import baggage
12
11
  from langtrace.trace_attributes import FrameworkSpanAttributes
13
- from opentelemetry.trace import SpanKind
12
+ from opentelemetry.trace import SpanKind, Span, Tracer
14
13
  from opentelemetry.trace.status import Status, StatusCode
15
14
 
16
15
 
@@ -33,8 +32,8 @@ crew_properties = {
33
32
  "share_crew": "bool",
34
33
  "step_callback": "object",
35
34
  "task_callback": "object",
36
- "prompt_file": "object",
37
- "output_log_file": "object",
35
+ "prompt_file": "str",
36
+ "output_log_file": "bool",
38
37
  }
39
38
 
40
39
  task_properties = {
@@ -90,9 +89,8 @@ agent_properties = {
90
89
  }
91
90
 
92
91
 
93
- def patch_crew(operation_name, version, tracer):
92
+ def patch_crew(operation_name, version, tracer: Tracer):
94
93
  def traced_method(wrapped, instance, args, kwargs):
95
-
96
94
  service_provider = SERVICE_PROVIDERS["CREWAI"]
97
95
  extra_attributes = baggage.get_baggage(LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY)
98
96
  span_attributes = {
@@ -104,52 +102,15 @@ def patch_crew(operation_name, version, tracer):
104
102
  **(extra_attributes if extra_attributes is not None else {}),
105
103
  }
106
104
 
107
- crew_config = {}
108
- for key, value in instance.__dict__.items():
109
- if instance.__class__.__name__ == "Crew":
110
- if key in crew_properties and value is not None:
111
- if crew_properties[key] == "json":
112
- crew_config[key] = json.dumps(value)
113
- elif crew_properties[key] == "object":
114
- crew_config[key] = str(value)
115
- else:
116
- crew_config[key] = value
117
- elif instance.__class__.__name__ == "Agent":
118
- if key in agent_properties and value is not None:
119
- if agent_properties[key] == "json":
120
- crew_config[key] = json.dumps(value)
121
- elif agent_properties[key] == "object":
122
- crew_config[key] = str(value)
123
- else:
124
- crew_config[key] = value
125
- elif instance.__class__.__name__ == "Task":
126
- if key in task_properties and value is not None:
127
- if task_properties[key] == "json":
128
- crew_config[key] = json.dumps(value)
129
- elif task_properties[key] == "object":
130
- crew_config[key] = str(value)
131
- else:
132
- crew_config[key] = value
133
- if crew_config:
134
- if instance.__class__.__name__ == "Crew":
135
- if "inputs" in kwargs and kwargs["inputs"]:
136
- crew_config["inputs"] = json.dumps(kwargs["inputs"])
137
- span_attributes["crewai.crew.config"] = json.dumps(crew_config)
138
- elif instance.__class__.__name__ == "Agent":
139
- if "context" in kwargs and kwargs["context"]:
140
- crew_config["context"] = json.dumps(kwargs["context"])
141
- span_attributes["crewai.agent.config"] = json.dumps(crew_config)
142
- elif instance.__class__.__name__ == "Task":
143
- span_attributes["crewai.task.config"] = json.dumps(crew_config)
144
-
145
105
  attributes = FrameworkSpanAttributes(**span_attributes)
146
106
 
147
107
  with tracer.start_as_current_span(
148
108
  get_span_name(operation_name), kind=SpanKind.CLIENT
149
109
  ) as span:
150
- _set_input_attributes(span, kwargs, attributes)
151
110
 
152
111
  try:
112
+ set_span_attributes(span, attributes)
113
+ CrewAISpanAttributes(span=span, instance=instance)
153
114
  result = wrapped(*args, **kwargs)
154
115
  if result:
155
116
  span.set_status(Status(StatusCode.OK))
@@ -158,6 +119,7 @@ def patch_crew(operation_name, version, tracer):
158
119
  return result
159
120
 
160
121
  except Exception as err:
122
+ print("Error", err)
161
123
  # Record the exception in the span
162
124
  span.record_exception(err)
163
125
 
@@ -170,7 +132,103 @@ def patch_crew(operation_name, version, tracer):
170
132
  return traced_method
171
133
 
172
134
 
173
- @silently_fail
174
- def _set_input_attributes(span, kwargs, attributes):
175
- for field, value in attributes.model_dump(by_alias=True).items():
176
- set_span_attribute(span, field, value)
135
+ class CrewAISpanAttributes:
136
+ span: Span
137
+ crew: dict
138
+
139
+ def __init__(self, span: Span, instance) -> None:
140
+ self.span = span
141
+ self.instance = instance
142
+ self.crew = {
143
+ "tasks": [],
144
+ "agents": [],
145
+ }
146
+
147
+ self.run()
148
+
149
+ def run(self):
150
+ instance_name = self.instance.__class__.__name__
151
+ if instance_name == "Crew":
152
+ self.set_crew_attributes()
153
+ set_span_attribute(self.span, "crewai.crew.config", json.dumps(self.crew))
154
+
155
+ elif instance_name == "Agent":
156
+ agent = self.set_agent_attributes()
157
+ # for key, value in agent.items():
158
+ # set_span_attribute(self.span, key, value)
159
+ set_span_attribute(self.span, "crewai.agent.config", json.dumps(agent))
160
+ elif instance_name == "Task":
161
+ task = self.set_task_attributes()
162
+ # uncomment if you want to spread attributes for the UI instead of dumping the whole object
163
+ # for key, value in task.items():
164
+ # set_span_attribute(self.span, key, value)
165
+ set_span_attribute(self.span, "crewai.task.config", json.dumps(task))
166
+
167
+ def set_crew_attributes(self):
168
+ for key, value in self.instance.__dict__.items():
169
+ if key == "tasks":
170
+ self._parse_tasks(value)
171
+
172
+ elif key == "agents":
173
+ self._parse_agents(value)
174
+ else:
175
+ self.crew[key] = str(value)
176
+
177
+ def set_agent_attributes(self):
178
+ agent = {}
179
+ for key, value in self.instance.__dict__.items():
180
+ if value is None:
181
+ continue
182
+ agent[key] = str(value)
183
+
184
+ return agent
185
+
186
+ def set_task_attributes(self):
187
+ task = {}
188
+ for key, value in self.instance.__dict__.items():
189
+ if value is None:
190
+ continue
191
+
192
+ if key == "agent":
193
+ task[key] = value.role
194
+ else:
195
+ task[key] = str(value)
196
+ return task
197
+
198
+ def _parse_agents(self, agents):
199
+ for agent in agents:
200
+ model = None
201
+ if agent.llm is not None:
202
+ if hasattr(agent.llm, "model"):
203
+ model = agent.llm.model
204
+ elif hasattr(agent.llm, "model_name"):
205
+ model = agent.llm.model_name
206
+ self.crew["agents"].append(
207
+ {
208
+ "id": str(agent.id),
209
+ "role": agent.role,
210
+ "goal": agent.goal,
211
+ "backstory": agent.backstory,
212
+ "cache": agent.cache,
213
+ "config": agent.config,
214
+ "verbose": agent.verbose,
215
+ "allow_delegation": agent.allow_delegation,
216
+ "tools": agent.tools,
217
+ "max_iter": agent.max_iter,
218
+ "llm": str(model if model is not None else ""),
219
+ }
220
+ )
221
+
222
+ def _parse_tasks(self, tasks):
223
+ for task in tasks:
224
+ self.crew["tasks"].append(
225
+ {
226
+ "agent": task.agent.role,
227
+ "description": task.description,
228
+ "async_execution": task.async_execution,
229
+ "expected_output": task.expected_output,
230
+ "human_input": task.human_input,
231
+ "tools": task.tools,
232
+ "output_file": task.output_file,
233
+ }
234
+ )
@@ -23,6 +23,7 @@ from opentelemetry.trace.propagation import set_span_in_context
23
23
 
24
24
  from opentelemetry.trace import SpanKind
25
25
  from opentelemetry.trace.status import Status, StatusCode
26
+ from langtrace.trace_attributes import SpanAttributes
26
27
 
27
28
  from langtrace_python_sdk.constants.instrumentation.common import (
28
29
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
@@ -71,6 +72,16 @@ def generic_patch(
71
72
  if trace_output:
72
73
  span.set_attribute("langchain.outputs", to_json_string(result))
73
74
 
75
+ prompt_tokens = instance.get_num_tokens(args[0])
76
+ completion_tokens = instance.get_num_tokens(result)
77
+ if hasattr(result, 'usage'):
78
+ prompt_tokens = result.usage.prompt_tokens
79
+ completion_tokens = result.usage.completion_tokens
80
+
81
+ span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, prompt_tokens)
82
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, completion_tokens)
83
+
84
+
74
85
  span.set_status(StatusCode.OK)
75
86
  return result
76
87
  except Exception as err:
@@ -30,6 +30,7 @@ from langtrace_python_sdk.constants.instrumentation.common import (
30
30
  from importlib_metadata import version as v
31
31
 
32
32
  from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
33
+ from langtrace.trace_attributes import SpanAttributes
33
34
 
34
35
 
35
36
  def generic_patch(
@@ -78,8 +79,22 @@ def generic_patch(
78
79
  try:
79
80
  # Attempt to call the original method
80
81
  result = wrapped(*args, **kwargs)
82
+
81
83
  if trace_output:
82
84
  span.set_attribute("langchain.outputs", to_json_string(result))
85
+ if hasattr(result, 'usage'):
86
+ prompt_tokens = result.usage.prompt_tokens
87
+ completion_tokens = result.usage.completion_tokens
88
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, prompt_tokens)
89
+ span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, completion_tokens)
90
+
91
+ elif result.generations[0][0].text:
92
+ span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, instance.get_num_tokens(result.generations[0][0].text))
93
+ elif isinstance(args[0][0], str):
94
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0][0]))
95
+
96
+ else:
97
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0][0].text))
83
98
 
84
99
  span.set_status(StatusCode.OK)
85
100
  return result
@@ -156,6 +171,7 @@ def runnable_patch(
156
171
  try:
157
172
  # Attempt to call the original method
158
173
  result = wrapped(*args, **kwargs)
174
+
159
175
  if trace_output:
160
176
  outputs = {}
161
177
  if isinstance(result, dict):
@@ -44,7 +44,7 @@ from langtrace_python_sdk.utils.llm import (
44
44
  StreamWrapper,
45
45
  set_span_attributes,
46
46
  )
47
- from openai._types import NOT_GIVEN
47
+ from langtrace_python_sdk.types import NOT_GIVEN
48
48
 
49
49
 
50
50
  def images_generate(original_method, version, tracer):
@@ -83,6 +83,7 @@ def init(
83
83
  )
84
84
  check_if_sdk_is_outdated()
85
85
  print(Fore.GREEN + "Initializing Langtrace SDK.." + Fore.RESET)
86
+ print(Fore.WHITE + "⭐ Leave our github a star to stay on top of our updates - https://github.com/Scale3-Labs/langtrace" + Fore.RESET)
86
87
  sampler = LangtraceSampler(disabled_methods=disable_tracing_for_functions)
87
88
  resource = Resource.create(
88
89
  attributes={
@@ -1,4 +1,4 @@
1
- from typing import List, Literal, TypedDict
1
+ from typing import List, Literal, TypeVar, TypedDict, Union
2
2
  from enum import Enum
3
3
 
4
4
 
@@ -111,3 +111,32 @@ class InstrumentationMethods(TypedDict):
111
111
  anthropic: List[VendorMethods.AnthropicMethods]
112
112
  cohere: List[VendorMethods.CohereMethods]
113
113
  weaviate: List[str]
114
+
115
+ _T = TypeVar("_T")
116
+ class NotGiven:
117
+ """
118
+ A sentinel singleton class used to distinguish omitted keyword arguments
119
+ from those passed in with the value None (which may have different behavior).
120
+
121
+ For example:
122
+
123
+ ```py
124
+ def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
125
+ ...
126
+
127
+
128
+ get(timeout=1) # 1s timeout
129
+ get(timeout=None) # No timeout
130
+ get() # Default timeout behavior, which may not be statically known at the method definition.
131
+ ```
132
+ """
133
+
134
+ def __bool__(self) -> Literal[False]:
135
+ return False
136
+
137
+ def __repr__(self) -> str:
138
+ return "NOT_GIVEN"
139
+
140
+
141
+ NotGivenOr = Union[_T, NotGiven]
142
+ NOT_GIVEN = NotGiven()
@@ -1,4 +1,4 @@
1
- from openai import NOT_GIVEN
1
+ from langtrace_python_sdk.types import NOT_GIVEN
2
2
  from .sdk_version_checker import SDKVersionChecker
3
3
  from opentelemetry.trace import Span
4
4
  from langtrace.trace_attributes import SpanAttributes
@@ -16,7 +16,7 @@ limitations under the License.
16
16
 
17
17
  from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
18
18
  from langtrace_python_sdk.utils import set_span_attribute
19
- from openai import NOT_GIVEN
19
+ from langtrace_python_sdk.types import NOT_GIVEN
20
20
  from tiktoken import get_encoding
21
21
  from tiktoken import get_encoding, list_encoding_names
22
22
 
@@ -1 +1 @@
1
- __version__ = "2.2.28"
1
+ __version__ = "2.2.31"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 2.2.28
3
+ Version: 2.2.31
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>
@@ -21,6 +21,7 @@ Requires-Dist: opentelemetry-sdk>=1.25.0
21
21
  Requires-Dist: sqlalchemy
22
22
  Requires-Dist: tiktoken>=0.1.1
23
23
  Requires-Dist: trace-attributes==7.0.4
24
+ Requires-Dist: transformers>=4.11.3
24
25
  Provides-Extra: dev
25
26
  Requires-Dist: anthropic; extra == 'dev'
26
27
  Requires-Dist: chromadb; extra == 'dev'
@@ -12,12 +12,12 @@ examples/cohere_example/tools.py,sha256=a5uvS058tcwU6PJbF9EDO6LPVmPj2LoW4Vn8Web3
12
12
  examples/crewai_example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  examples/crewai_example/basic.py,sha256=PBu4f8yQfZO1L_22UDm_ReU9lnEcycjZcGuy5UpgDJM,1948
14
14
  examples/crewai_example/simple_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- examples/crewai_example/simple_agent/agents.py,sha256=Lq_5zeftH7TV-dsDRxfxi6sfE3t2mpQ4WulFh1FAFfs,1329
16
- examples/crewai_example/simple_agent/main.py,sha256=MJq3Xd24RIUHaSDAUpQtZb5ht5YUu5xPwgYxEY4moJk,1223
17
- examples/crewai_example/simple_agent/tasks.py,sha256=bfx_vP59akrrjNRUbVT7GDzdZlEqTQXAtGcCOCk_UFY,796
15
+ examples/crewai_example/simple_agent/agents.py,sha256=QU5kxiwja4_i508RpC8ZHHpc642ESY-NY6CW6FNgmlc,1330
16
+ examples/crewai_example/simple_agent/main.py,sha256=pL9VyZEFvu-ofBGuEQefPK07TlmCDzt9lYSigE6bZSk,1086
17
+ examples/crewai_example/simple_agent/tasks.py,sha256=JG5kPc9uBkZIDJCp0j3eporf6gnrKG3GZR5edHoeoxw,832
18
18
  examples/crewai_example/trip_planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  examples/crewai_example/trip_planner/agents.py,sha256=bSmtD83qcB3PF21zjqdvAYe0vVvl0nhGVXX5oPeSGY8,2371
20
- examples/crewai_example/trip_planner/main.py,sha256=Ju001KRksiH1Svu6p83CfTybAPq9hruJVH9p3BmtG_c,2623
20
+ examples/crewai_example/trip_planner/main.py,sha256=dwEh60RABqaBodhkPr3lB7KS83f74WqaBjRB8YEO_jM,2056
21
21
  examples/crewai_example/trip_planner/tasks.py,sha256=ZGRaTAgkA66IN7q9EYbJqM8xWhUTxcF4ynnqTyBcSL4,5667
22
22
  examples/crewai_example/trip_planner/tools/calculator.py,sha256=bMfxJDAwbn6D26pe880S4BB3rcFeyvEyb15QR00T8kI,522
23
23
  examples/crewai_example/trip_planner/tools/search_tools.py,sha256=p8qZe_bi45OjBwiwwrH0lhTaQI_ZiLThSTEEN5dWxF0,2700
@@ -78,8 +78,8 @@ examples/vertexai_example/main.py,sha256=gndId5X5ksD-ycxnAWMdEqIDbLc3kz5Vt8vm4YP
78
78
  examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56snk-Bbg2Kw,618
79
79
  examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
80
80
  langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
81
- langtrace_python_sdk/langtrace.py,sha256=kcSZal0BVw2FWhndpQZ3o8xJSnRHdW7aqG5f1X78zHo,8068
82
- langtrace_python_sdk/version.py,sha256=YwImNSNzEWVl7jTeDskU9CMEa5v0unSCyONgNH-ERw8,23
81
+ langtrace_python_sdk/langtrace.py,sha256=NOS2ws7P1Voc-zYSdO_mVb-Kea9_nD5Jq1dXY2CS97k,8208
82
+ langtrace_python_sdk/version.py,sha256=6OfMjX7CY3n2HJIxlcUwMMv6YFBAG7XhzkGCDFPOXkE,23
83
83
  langtrace_python_sdk/constants/__init__.py,sha256=P8QvYwt5czUNDZsKS64vxm9Dc41ptGbuF1TFtAF6nv4,44
84
84
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=5MNjnAOg-4am78J3gVMH6FSwq5N8TOj72ugkhsw4vi0,46
85
85
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -97,7 +97,7 @@ langtrace_python_sdk/constants/instrumentation/qdrant.py,sha256=yL7BopNQTXW7L7Z-
97
97
  langtrace_python_sdk/constants/instrumentation/vertexai.py,sha256=0s2vX3Y0iwjOPkUg5lAKi-7o3LaNivDSBBbF-o695Ok,1266
98
98
  langtrace_python_sdk/constants/instrumentation/weaviate.py,sha256=gtv-JBxvNGClEMxClmRKzjJ1khgOonsli4D_k9IagSE,2601
99
99
  langtrace_python_sdk/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=_GIH4zP9lpk8UO81zBJ_9HklNszg1bsndqqXwcVe2rY,4569
100
+ langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=2ausFBC9JIitnpu1yECPCL0SXg_IvJTQL0MMsuidTo4,4700
101
101
  langtrace_python_sdk/extensions/langtrace_filesystem.py,sha256=34fZutG28EJ66l67OvTGsydAH3ZpXgikdE7hVLqBpG4,7863
102
102
  langtrace_python_sdk/instrumentation/__init__.py,sha256=BgY4bXGiVEHgpiRq5_OF4w-wqZCC46SBrEBbNO2EzWs,1465
103
103
  langtrace_python_sdk/instrumentation/anthropic/__init__.py,sha256=donrurJAGYlxrSRA3BIf76jGeUcAx9Tq8CVpah68S0Y,101
@@ -110,8 +110,8 @@ langtrace_python_sdk/instrumentation/cohere/__init__.py,sha256=sGUSLdTUyYf36Tm6L
110
110
  langtrace_python_sdk/instrumentation/cohere/instrumentation.py,sha256=YQFHZIBd7SSPD4b6Va-ZR0thf_AuBCqj5yzHLHJVWnM,2121
111
111
  langtrace_python_sdk/instrumentation/cohere/patch.py,sha256=Yb0OwxO4gG-WBfGhTFrwUUJEgpnRlyWI_FZveA4T1QU,20972
112
112
  langtrace_python_sdk/instrumentation/crewai/__init__.py,sha256=_UBKfvQv7l0g2_wnmA5F6CdSAFH0atNOVPd49zsN3aM,88
113
- langtrace_python_sdk/instrumentation/crewai/instrumentation.py,sha256=q07x6nnig9JPxDT6ZylyIShfXWjNafKBetnNcA1UdEU,1836
114
- langtrace_python_sdk/instrumentation/crewai/patch.py,sha256=4W7jEIJX4SJNViPlFTBJdSkvvPVJoI76Bb5DX673Ql8,6203
113
+ langtrace_python_sdk/instrumentation/crewai/instrumentation.py,sha256=tMzynrc1TGBM1Yq2psyOmRlJQdOKyJkl3WxFlUNF54E,1841
114
+ langtrace_python_sdk/instrumentation/crewai/patch.py,sha256=QY-RdbwQ9bRf-klacJH1f7EPmcssH_ABqK3HXI-XNHo,7503
115
115
  langtrace_python_sdk/instrumentation/dspy/__init__.py,sha256=tM1srfi_QgyCzrde4izojMrRq2Wm7Dj5QUvVQXIJzkk,84
116
116
  langtrace_python_sdk/instrumentation/dspy/instrumentation.py,sha256=o8URiDvCbZ8LL0I-4xKHkn_Ms2sETBRpn-gOliv3xzQ,2929
117
117
  langtrace_python_sdk/instrumentation/dspy/patch.py,sha256=E2P3MJBQ71or4M6BsvZOwYFtJK1UdTsYkdxVj9fSWPs,9869
@@ -126,10 +126,10 @@ langtrace_python_sdk/instrumentation/langchain/instrumentation.py,sha256=_Z4AeNb
126
126
  langtrace_python_sdk/instrumentation/langchain/patch.py,sha256=BmVBKPpI4P9AX6Y8e67WYSz0a0rxZK7cJkI75ure2f4,4166
127
127
  langtrace_python_sdk/instrumentation/langchain_community/__init__.py,sha256=mj5RR_cfkjMql7W9OyyhmviT2GZ-4Pv9XJfGwJufp_E,119
128
128
  langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py,sha256=TmMRXcaiMR99Qg7r7pT1XunCr_GOQl_Csr6leSKYyTQ,5350
129
- langtrace_python_sdk/instrumentation/langchain_community/patch.py,sha256=ssNM9NyRtWiGgqaOZ9zK3R-VDYx_VwNmPq1RAZ-4Wzg,5232
129
+ langtrace_python_sdk/instrumentation/langchain_community/patch.py,sha256=fn-FBbu56ko7XSer0dDdQtIaXcsdZ7L_il_YjnAdL8I,5817
130
130
  langtrace_python_sdk/instrumentation/langchain_core/__init__.py,sha256=kumE_reeqgM-ZvEZ6-XxyT-F-HAdKq_v_PKvsLb4EZQ,110
131
131
  langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py,sha256=uiRGS3RLZGe442kzEyW2b9xJitb0EmZ8zs6Sj-cyol4,6295
132
- langtrace_python_sdk/instrumentation/langchain_core/patch.py,sha256=SvYTuYaVtKzoqmIz-_FIZbTCT00CItZOwjWvEOCwfDA,9552
132
+ langtrace_python_sdk/instrumentation/langchain_core/patch.py,sha256=fNoGSM9Ui1O--5hv6T6Tw1fuWw7IfFVC_7kQL0qERec,10529
133
133
  langtrace_python_sdk/instrumentation/langgraph/__init__.py,sha256=eitlHloY-aZ4ZuIEJx61AadEA3G7siyecP-V-lziAr8,101
134
134
  langtrace_python_sdk/instrumentation/langgraph/instrumentation.py,sha256=SUZZhWSIbcfsF1S5NtEqW8QzkRM_pKAuXB7pwk5tsOU,2526
135
135
  langtrace_python_sdk/instrumentation/langgraph/patch.py,sha256=PGe1ZywXctB_yYqnp8AtD8Xqj7EZ087-S5_2vLRYhEQ,4987
@@ -144,7 +144,7 @@ langtrace_python_sdk/instrumentation/ollama/instrumentation.py,sha256=jdsvkqUJAA
144
144
  langtrace_python_sdk/instrumentation/ollama/patch.py,sha256=7ETx0tQic5h_kH1f-IeptFwgNTBb4hSkTkWsB18Avm0,5375
145
145
  langtrace_python_sdk/instrumentation/openai/__init__.py,sha256=VPHRNCQEdkizIVP2d0Uw_a7t8XOTSTprEIB8oboJFbs,95
146
146
  langtrace_python_sdk/instrumentation/openai/instrumentation.py,sha256=A0BJHRLcZ74TNVg6I0I9M5YWvSpAtXwMmME6N5CEQ_M,2945
147
- langtrace_python_sdk/instrumentation/openai/patch.py,sha256=4GCYJzZdUBopEDinpTwRBFf-Enb0hdNO16LiiMKqqvY,24226
147
+ langtrace_python_sdk/instrumentation/openai/patch.py,sha256=Zf7Q5f7FgmmYloJqUSQDOAAZpq3ctxlWRDKFU8QnkFQ,24239
148
148
  langtrace_python_sdk/instrumentation/pinecone/__init__.py,sha256=DzXyGh9_MGWveJvXULkFwdkf7PbG2s3bAWtT1Dmz7Ok,99
149
149
  langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=HDXkRITrVPwdQEoOYJOfMzZE_2-vDDvuqHTlD8W1lQw,1845
150
150
  langtrace_python_sdk/instrumentation/pinecone/patch.py,sha256=MIbUcEsVzl4W_pfq81LP9QFVhwPB8rHF0Aod9pq_j-o,5249
@@ -157,10 +157,10 @@ langtrace_python_sdk/instrumentation/vertexai/patch.py,sha256=mfd3LiKYGMW3jLf9OE
157
157
  langtrace_python_sdk/instrumentation/weaviate/__init__.py,sha256=Mc-Je6evPo-kKQzerTG7bd1XO5JOh4YGTE3wBxaUBwg,99
158
158
  langtrace_python_sdk/instrumentation/weaviate/instrumentation.py,sha256=bzPwtoQD0X6beLYXe6ZL7XRkyRkqdiqKiGc4gOlCQdU,2295
159
159
  langtrace_python_sdk/instrumentation/weaviate/patch.py,sha256=nr7USyY6overK3GQCo4Si0x3eoEl9ptoMRXuQUP4Ox8,6671
160
- langtrace_python_sdk/types/__init__.py,sha256=M-_6eLNR8GhjFZH3iMay4s3j7EcsT-hRAM5IWluS58A,3403
161
- langtrace_python_sdk/utils/__init__.py,sha256=SwYYPIh2AzEpI3zbwowQU2zJlwRwoVdWOCcrAKnkI9g,873
160
+ langtrace_python_sdk/types/__init__.py,sha256=MeGkmoy2OY3V21GErDIdlf_N8Aj7HDld5Tpbvq2PwTY,4104
161
+ langtrace_python_sdk/utils/__init__.py,sha256=giTHkvDOQdqFqXU4PoGP7DhA9tAteZN-KxX3mEUg6QQ,893
162
162
  langtrace_python_sdk/utils/langtrace_sampler.py,sha256=BupNndHbU9IL_wGleKetz8FdcveqHMBVz1bfKTTW80w,1753
163
- langtrace_python_sdk/utils/llm.py,sha256=k-xrIfwTZdWjKJHlCFsKUjQVNabN8X_VwH0g3ta5JwQ,14570
163
+ langtrace_python_sdk/utils/llm.py,sha256=7-b3r7NM2WeiVycIy0nmSer9aaVs9x3mIvTGyL7dWps,14590
164
164
  langtrace_python_sdk/utils/misc.py,sha256=CD9NWRLxLpFd0YwlHJqzlpFNedXVWtAKGOjQWnDCo8k,838
165
165
  langtrace_python_sdk/utils/prompt_registry.py,sha256=n5dQMVLBw8aJZY8Utvf67bncc25ELf6AH9BYw8_hSzo,2619
166
166
  langtrace_python_sdk/utils/sdk_version_checker.py,sha256=FzjIWZjn53cX0LEVPdipQd1fO9lG8iGVUEVUs9Hyk6M,1713
@@ -209,8 +209,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
209
209
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
210
210
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
211
211
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
212
- langtrace_python_sdk-2.2.28.dist-info/METADATA,sha256=5QFKRpvLLhzxYSp8zRIOA7bBQeQOH8nPhNc6kWvCU3I,14844
213
- langtrace_python_sdk-2.2.28.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
214
- langtrace_python_sdk-2.2.28.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
215
- langtrace_python_sdk-2.2.28.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
216
- langtrace_python_sdk-2.2.28.dist-info/RECORD,,
212
+ langtrace_python_sdk-2.2.31.dist-info/METADATA,sha256=TQNe1qMwc9TZw93UFcz6SL41taah8t4pemCrQFbQPLk,14880
213
+ langtrace_python_sdk-2.2.31.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
214
+ langtrace_python_sdk-2.2.31.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
215
+ langtrace_python_sdk-2.2.31.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
216
+ langtrace_python_sdk-2.2.31.dist-info/RECORD,,