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.
- examples/crewai_example/simple_agent/agents.py +1 -1
- examples/crewai_example/simple_agent/main.py +3 -13
- examples/crewai_example/simple_agent/tasks.py +1 -0
- examples/crewai_example/trip_planner/main.py +1 -30
- langtrace_python_sdk/extensions/langtrace_exporter.py +1 -1
- langtrace_python_sdk/instrumentation/crewai/instrumentation.py +1 -1
- langtrace_python_sdk/instrumentation/crewai/patch.py +108 -50
- langtrace_python_sdk/instrumentation/langchain_community/patch.py +11 -0
- langtrace_python_sdk/instrumentation/langchain_core/patch.py +16 -0
- langtrace_python_sdk/instrumentation/openai/patch.py +1 -1
- langtrace_python_sdk/langtrace.py +1 -0
- langtrace_python_sdk/types/__init__.py +30 -1
- langtrace_python_sdk/utils/__init__.py +1 -1
- langtrace_python_sdk/utils/llm.py +1 -1
- langtrace_python_sdk/version.py +1 -1
- {langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/METADATA +2 -1
- {langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/RECORD +20 -20
- {langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/WHEEL +0 -0
- {langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/entry_points.txt +0 -0
- {langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/licenses/LICENSE +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
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")
|
|
@@ -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(
|
|
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")
|
|
@@ -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": "
|
|
37
|
-
"output_log_file": "
|
|
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
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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):
|
|
@@ -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()
|
|
@@ -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
|
|
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
|
|
langtrace_python_sdk/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "2.2.
|
|
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.
|
|
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=
|
|
16
|
-
examples/crewai_example/simple_agent/main.py,sha256=
|
|
17
|
-
examples/crewai_example/simple_agent/tasks.py,sha256=
|
|
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=
|
|
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=
|
|
82
|
-
langtrace_python_sdk/version.py,sha256=
|
|
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=
|
|
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=
|
|
114
|
-
langtrace_python_sdk/instrumentation/crewai/patch.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
161
|
-
langtrace_python_sdk/utils/__init__.py,sha256=
|
|
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=
|
|
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.
|
|
213
|
-
langtrace_python_sdk-2.2.
|
|
214
|
-
langtrace_python_sdk-2.2.
|
|
215
|
-
langtrace_python_sdk-2.2.
|
|
216
|
-
langtrace_python_sdk-2.2.
|
|
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,,
|
|
File without changes
|
{langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{langtrace_python_sdk-2.2.28.dist-info → langtrace_python_sdk-2.2.31.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|