opentelemetry-instrumentation-crewai 0.43.1__py3-none-any.whl → 0.44.1__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.
- opentelemetry/instrumentation/crewai/crewai_span_attributes.py +34 -21
- {opentelemetry_instrumentation_crewai-0.43.1.dist-info → opentelemetry_instrumentation_crewai-0.44.1.dist-info}/METADATA +1 -1
- {opentelemetry_instrumentation_crewai-0.43.1.dist-info → opentelemetry_instrumentation_crewai-0.44.1.dist-info}/RECORD +5 -5
- {opentelemetry_instrumentation_crewai-0.43.1.dist-info → opentelemetry_instrumentation_crewai-0.44.1.dist-info}/WHEEL +0 -0
- {opentelemetry_instrumentation_crewai-0.43.1.dist-info → opentelemetry_instrumentation_crewai-0.44.1.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
from opentelemetry.trace import Span
|
2
|
+
from opentelemetry.semconv_ai import SpanAttributes
|
2
3
|
import json
|
3
4
|
|
4
5
|
|
@@ -13,7 +14,7 @@ class CrewAISpanAttributes:
|
|
13
14
|
def __init__(self, span: Span, instance) -> None:
|
14
15
|
self.span = span
|
15
16
|
self.instance = instance
|
16
|
-
self.crew = {"tasks": [], "agents": []
|
17
|
+
self.crew = {"tasks": [], "agents": []}
|
17
18
|
self.process_instance()
|
18
19
|
|
19
20
|
def process_instance(self):
|
@@ -44,9 +45,37 @@ class CrewAISpanAttributes:
|
|
44
45
|
self._set_attribute(f"crewai.task.{key}", value)
|
45
46
|
|
46
47
|
def _process_llm(self):
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
fields = [
|
49
|
+
"model",
|
50
|
+
"temperature",
|
51
|
+
"top_p",
|
52
|
+
"n",
|
53
|
+
"stop",
|
54
|
+
"max_completion_tokens",
|
55
|
+
"max_tokens",
|
56
|
+
"presence_penalty",
|
57
|
+
"frequency_penalty",
|
58
|
+
"seed"
|
59
|
+
]
|
60
|
+
|
61
|
+
for field in fields:
|
62
|
+
value = getattr(self.instance, field, None)
|
63
|
+
if value is None:
|
64
|
+
continue
|
65
|
+
if field == "model":
|
66
|
+
self._set_attribute(SpanAttributes.LLM_REQUEST_MODEL, value)
|
67
|
+
elif field == "temperature":
|
68
|
+
self._set_attribute(SpanAttributes.LLM_REQUEST_TEMPERATURE, value)
|
69
|
+
elif field == "top_p":
|
70
|
+
self._set_attribute(SpanAttributes.LLM_REQUEST_TOP_P, value)
|
71
|
+
elif field == "max_tokens":
|
72
|
+
self._set_attribute(SpanAttributes.LLM_REQUEST_MAX_TOKENS, value)
|
73
|
+
elif field == "presence_penalty":
|
74
|
+
self._set_attribute(SpanAttributes.LLM_PRESENCE_PENALTY, value)
|
75
|
+
elif field == "frequency_penalty":
|
76
|
+
self._set_attribute(SpanAttributes.LLM_FREQUENCY_PENALTY, value)
|
77
|
+
else:
|
78
|
+
self._set_attribute(f"llm.{field}", value)
|
50
79
|
|
51
80
|
def _populate_crew_attributes(self):
|
52
81
|
for key, value in self.instance.__dict__.items():
|
@@ -56,8 +85,6 @@ class CrewAISpanAttributes:
|
|
56
85
|
self._parse_tasks(value)
|
57
86
|
elif key == "agents":
|
58
87
|
self._parse_agents(value)
|
59
|
-
elif key == "llms":
|
60
|
-
self._parse_llms(value)
|
61
88
|
else:
|
62
89
|
self.crew[key] = str(value)
|
63
90
|
|
@@ -92,20 +119,6 @@ class CrewAISpanAttributes:
|
|
92
119
|
for task in tasks
|
93
120
|
]
|
94
121
|
|
95
|
-
def _parse_llms(self, llms):
|
96
|
-
self.crew["tasks"] = [
|
97
|
-
{
|
98
|
-
"temperature": llm.temperature,
|
99
|
-
"max_tokens": llm.max_tokens,
|
100
|
-
"max_completion_tokens": llm.max_completion_tokens,
|
101
|
-
"top_p": llm.top_p,
|
102
|
-
"n": llm.n,
|
103
|
-
"seed": llm.seed,
|
104
|
-
"base_url": llm.base_url,
|
105
|
-
"api_version": llm.api_version, }
|
106
|
-
for llm in llms
|
107
|
-
]
|
108
|
-
|
109
122
|
def _extract_agent_data(self, agent):
|
110
123
|
model = (
|
111
124
|
getattr(agent.llm, "model", None)
|
@@ -146,5 +159,5 @@ class CrewAISpanAttributes:
|
|
146
159
|
)
|
147
160
|
|
148
161
|
def _set_attribute(self, key, value):
|
149
|
-
if value:
|
162
|
+
if value is not None:
|
150
163
|
set_span_attribute(self.span, key, str(value) if isinstance(value, list) else value)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
opentelemetry/instrumentation/crewai/__init__.py,sha256=zdNyWV62d5IaueXR9clUD_c9F32MF39AIchZf66XI2c,245
|
2
|
-
opentelemetry/instrumentation/crewai/crewai_span_attributes.py,sha256=
|
2
|
+
opentelemetry/instrumentation/crewai/crewai_span_attributes.py,sha256=9pLK-fFbbq4PQiHcj58wlh1h0PQ0zruOxccewEaPKno,5523
|
3
3
|
opentelemetry/instrumentation/crewai/instrumentation.py,sha256=AhQpPgpgtx9DKdnRDcrCKXn4AIuErdfznxfLlfs9OTc,7913
|
4
4
|
opentelemetry/instrumentation/crewai/version.py,sha256=ITH8IVCEQOekRajZpPo6sKNlMBNDRQRnzipIN0dqXoc,23
|
5
|
-
opentelemetry_instrumentation_crewai-0.
|
6
|
-
opentelemetry_instrumentation_crewai-0.
|
7
|
-
opentelemetry_instrumentation_crewai-0.
|
8
|
-
opentelemetry_instrumentation_crewai-0.
|
5
|
+
opentelemetry_instrumentation_crewai-0.44.1.dist-info/METADATA,sha256=DZ-I9BUBC5aduf13yvageQ88Z3iq36M7zeK-lBSOJag,2095
|
6
|
+
opentelemetry_instrumentation_crewai-0.44.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
7
|
+
opentelemetry_instrumentation_crewai-0.44.1.dist-info/entry_points.txt,sha256=4Zs98MjB2HIaX8fk8evs41x1J1xBNfztvPN428bf_b8,93
|
8
|
+
opentelemetry_instrumentation_crewai-0.44.1.dist-info/RECORD,,
|
File without changes
|