hivetrace 1.3.15__py3-none-any.whl → 1.4.0__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.
- hivetrace/adapters/base_adapter.py +8 -2
- hivetrace/adapters/crewai/adapter.py +7 -7
- hivetrace/adapters/crewai/decorators.py +3 -0
- hivetrace/adapters/crewai/monitored_agent.py +2 -2
- hivetrace/adapters/crewai/tool_wrapper.py +4 -3
- hivetrace/adapters/openai_agents/adapter.py +37 -11
- hivetrace/adapters/openai_agents/tracing.py +13 -10
- hivetrace/client/async_client.py +17 -54
- hivetrace/client/base.py +28 -48
- hivetrace/client/sync_client.py +16 -57
- hivetrace/errors/api.py +2 -2
- hivetrace/errors/validation.py +1 -1
- hivetrace/handlers/response_builder.py +14 -67
- hivetrace/models/requests.py +21 -28
- hivetrace/models/responses.py +26 -21
- hivetrace/utils/error_helpers.py +25 -3
- {hivetrace-1.3.15.dist-info → hivetrace-1.4.0.dist-info}/METADATA +188 -203
- {hivetrace-1.3.15.dist-info → hivetrace-1.4.0.dist-info}/RECORD +21 -21
- {hivetrace-1.3.15.dist-info → hivetrace-1.4.0.dist-info}/WHEEL +0 -0
- {hivetrace-1.3.15.dist-info → hivetrace-1.4.0.dist-info}/licenses/LICENSE +0 -0
- {hivetrace-1.3.15.dist-info → hivetrace-1.4.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hivetrace
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Hivetrace SDK for monitoring LLM applications
|
|
5
5
|
Home-page: http://hivetrace.ai
|
|
6
6
|
Author: Raft
|
|
@@ -53,7 +53,14 @@ Dynamic: summary
|
|
|
53
53
|
|
|
54
54
|
## Overview
|
|
55
55
|
|
|
56
|
-
The Hivetrace SDK
|
|
56
|
+
The Hivetrace SDK integrates your application with Hivetrace to inspect and monitor both user prompts (input) and LLM responses (output).
|
|
57
|
+
|
|
58
|
+
Typical use cases:
|
|
59
|
+
|
|
60
|
+
- **Observability**: trace prompts/responses with consistent metadata (session, user, agent, etc.)
|
|
61
|
+
- **Policy enforcement**: detect unsafe or disallowed content and decide what to do next
|
|
62
|
+
- **Sanitization**: optionally use cleaned text when data cleaning is enabled
|
|
63
|
+
- **Attachments (optional)**: attach files for analysis when needed (you can omit files entirely)
|
|
57
64
|
|
|
58
65
|
---
|
|
59
66
|
|
|
@@ -67,12 +74,90 @@ pip install hivetrace[base]
|
|
|
67
74
|
|
|
68
75
|
---
|
|
69
76
|
|
|
77
|
+
## Configuration
|
|
78
|
+
|
|
79
|
+
By default, the SDK reads its connection settings from environment variables:
|
|
80
|
+
|
|
81
|
+
- `HIVETRACE_URL` — Base URL of your Hivetrace instance (must start with `http://` or `https://`)
|
|
82
|
+
- `HIVETRACE_ACCESS_TOKEN` — API token used for authentication (created in the UI)
|
|
83
|
+
|
|
84
|
+
`HIVETRACE_APP_ID` is optional and is used by some integrations/examples as a convenient place to store your application ID. You can always pass `application_id` explicitly per call.
|
|
85
|
+
|
|
86
|
+
### Recommended: `.env` file
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
HIVETRACE_URL=https://your-hivetrace-instance.com
|
|
90
|
+
HIVETRACE_ACCESS_TOKEN=your-access-token
|
|
91
|
+
HIVETRACE_APP_ID=your-application-id
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Alternative: pass config explicitly
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
from hivetrace import SyncHivetraceSDK
|
|
98
|
+
|
|
99
|
+
client = SyncHivetraceSDK(
|
|
100
|
+
config={
|
|
101
|
+
"HIVETRACE_URL": "https://your-hivetrace-instance.com",
|
|
102
|
+
"HIVETRACE_ACCESS_TOKEN": "your-access-token",
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
70
109
|
## Quick Start
|
|
71
110
|
|
|
72
111
|
```python
|
|
73
|
-
from hivetrace import SyncHivetraceSDK
|
|
112
|
+
from hivetrace import SyncHivetraceSDK
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Create an application in the Hivetrace UI and copy its `application_id`.
|
|
116
|
+
|
|
117
|
+
### Sync: use Hivetrace before/after your LLM
|
|
118
|
+
|
|
119
|
+
In synchronous mode you can use Hivetrace results to decide:
|
|
120
|
+
|
|
121
|
+
- **Whether to call your LLM at all** (when the user input is not allowed)
|
|
122
|
+
- **What to return to the end user** (when the LLM output is not allowed)
|
|
123
|
+
|
|
124
|
+
This lets you return a safe, prepared response instead of sending a violating prompt to the LLM or returning a potentially unsafe LLM answer.
|
|
125
|
+
|
|
126
|
+
**Recommended flow (best practice):**
|
|
127
|
+
|
|
128
|
+
- **Step 1 — inspect input**: call `client.input(...)` for the user message.
|
|
129
|
+
- If the result indicates a violation (guardrails/custom policy), **stop** and return a **prepared safe reply** (e.g. “Sorry, I can’t help with that.”). Do not call your LLM.
|
|
130
|
+
- If the result includes sanitized text (e.g. `dataclean.cleaned_text`), you may choose to send the sanitized version to your LLM instead of the raw user text.
|
|
131
|
+
- **Step 2 — call your LLM**: only if the input is acceptable.
|
|
132
|
+
- **Step 3 — inspect output**: call `client.output(...)` for the LLM answer.
|
|
133
|
+
- If the output violates your policies, return a **prepared safe reply** instead of the LLM answer.
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from hivetrace import SyncHivetraceSDK
|
|
137
|
+
|
|
138
|
+
APP_ID = "your-application-id" # created in the Hivetrace UI
|
|
139
|
+
|
|
140
|
+
client = SyncHivetraceSDK()
|
|
141
|
+
|
|
142
|
+
user_message = "My name is John"
|
|
143
|
+
|
|
144
|
+
# 1) Inspect the user prompt (input)
|
|
145
|
+
input_result = client.input(application_id=APP_ID, message=user_message)
|
|
146
|
+
|
|
147
|
+
# If available, you can prefer sanitized text (data cleaning) for your LLM call.
|
|
148
|
+
prompt_for_llm = input_result.get("dataclean", {}).get("cleaned_text", user_message)
|
|
149
|
+
|
|
150
|
+
# 2) Call your LLM (your code)
|
|
151
|
+
assistant_message = call_your_llm(prompt_for_llm)
|
|
152
|
+
|
|
153
|
+
# 3) Inspect the LLM response (output)
|
|
154
|
+
output_result = client.output(application_id=APP_ID, message=assistant_message)
|
|
74
155
|
```
|
|
75
156
|
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Clients
|
|
160
|
+
|
|
76
161
|
You can use either the synchronous client (`SyncHivetraceSDK`) or the asynchronous client (`AsyncHivetraceSDK`). Choose the one that fits your runtime.
|
|
77
162
|
|
|
78
163
|
---
|
|
@@ -86,42 +171,26 @@ You can use either the synchronous client (`SyncHivetraceSDK`) or the asynchrono
|
|
|
86
171
|
client = SyncHivetraceSDK()
|
|
87
172
|
```
|
|
88
173
|
|
|
89
|
-
###
|
|
174
|
+
### Resource management (Sync)
|
|
90
175
|
|
|
91
176
|
```python
|
|
92
|
-
|
|
93
|
-
application_id="your-application-id", # Obtained after registering the application in the UI
|
|
94
|
-
message="User prompt here",
|
|
95
|
-
)
|
|
177
|
+
from hivetrace import SyncHivetraceSDK
|
|
96
178
|
|
|
97
|
-
#
|
|
98
|
-
files = [
|
|
99
|
-
("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
|
|
100
|
-
]
|
|
101
|
-
response_with_files = client.input(
|
|
102
|
-
application_id="your-application-id",
|
|
103
|
-
message="User prompt with files",
|
|
104
|
-
files=files,
|
|
105
|
-
)
|
|
106
|
-
```
|
|
179
|
+
APP_ID = "your-application-id" # created in the Hivetrace UI
|
|
107
180
|
|
|
108
|
-
|
|
181
|
+
def main():
|
|
182
|
+
# option 1: context manager
|
|
183
|
+
with SyncHivetraceSDK() as client:
|
|
184
|
+
client.input(application_id=APP_ID, message="User prompt here")
|
|
109
185
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
186
|
+
# option 2: manual close
|
|
187
|
+
client = SyncHivetraceSDK()
|
|
188
|
+
try:
|
|
189
|
+
client.input(application_id=APP_ID, message="User prompt here")
|
|
190
|
+
finally:
|
|
191
|
+
client.close()
|
|
115
192
|
|
|
116
|
-
|
|
117
|
-
files = [
|
|
118
|
-
("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
|
|
119
|
-
]
|
|
120
|
-
response_with_files = client.output(
|
|
121
|
-
application_id="your-application-id",
|
|
122
|
-
message="LLM response with files",
|
|
123
|
-
files=files,
|
|
124
|
-
)
|
|
193
|
+
main()
|
|
125
194
|
```
|
|
126
195
|
|
|
127
196
|
---
|
|
@@ -131,73 +200,74 @@ response_with_files = client.output(
|
|
|
131
200
|
### Initialize (Async)
|
|
132
201
|
|
|
133
202
|
```python
|
|
134
|
-
|
|
203
|
+
from hivetrace import AsyncHivetraceSDK
|
|
204
|
+
|
|
205
|
+
# The async client reads configuration from environment variables or accepts an explicit config
|
|
135
206
|
client = AsyncHivetraceSDK()
|
|
136
207
|
```
|
|
137
208
|
|
|
138
|
-
###
|
|
209
|
+
### Resource management (Async)
|
|
139
210
|
|
|
140
211
|
```python
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
message="User prompt here",
|
|
144
|
-
)
|
|
212
|
+
import asyncio
|
|
213
|
+
from hivetrace import AsyncHivetraceSDK
|
|
145
214
|
|
|
146
|
-
#
|
|
147
|
-
files = [
|
|
148
|
-
("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
|
|
149
|
-
]
|
|
150
|
-
response_with_files = await client.input(
|
|
151
|
-
application_id="your-application-id",
|
|
152
|
-
message="User prompt with files",
|
|
153
|
-
files=files,
|
|
154
|
-
)
|
|
155
|
-
```
|
|
215
|
+
APP_ID = "your-application-id" # created in the Hivetrace UI
|
|
156
216
|
|
|
157
|
-
|
|
217
|
+
async def main():
|
|
218
|
+
# option 1: context manager
|
|
219
|
+
async with AsyncHivetraceSDK() as client:
|
|
220
|
+
await client.input(application_id=APP_ID, message="User prompt here")
|
|
158
221
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
222
|
+
# option 2: manual close
|
|
223
|
+
client = AsyncHivetraceSDK()
|
|
224
|
+
try:
|
|
225
|
+
await client.input(application_id=APP_ID, message="User prompt here")
|
|
226
|
+
finally:
|
|
227
|
+
await client.close()
|
|
164
228
|
|
|
165
|
-
|
|
166
|
-
files = [
|
|
167
|
-
("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
|
|
168
|
-
]
|
|
169
|
-
response_with_files = await client.output(
|
|
170
|
-
application_id="your-application-id",
|
|
171
|
-
message="LLM response with files",
|
|
172
|
-
files=files,
|
|
173
|
-
)
|
|
229
|
+
asyncio.run(main())
|
|
174
230
|
```
|
|
175
231
|
|
|
176
232
|
---
|
|
177
233
|
|
|
178
|
-
##
|
|
234
|
+
## Optional context (`additional_parameters`) and files (`files`)
|
|
235
|
+
|
|
236
|
+
Both `input()` and `output()` accept:
|
|
237
|
+
|
|
238
|
+
- **`additional_parameters` (optional)**: any JSON-serializable metadata you want to attach (session id, user id, agent info, etc.)
|
|
239
|
+
|
|
240
|
+
File attachments (`files`) are **optional** and are currently supported for **user prompts only** (`input()`).
|
|
179
241
|
|
|
180
242
|
```python
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
243
|
+
from pathlib import Path
|
|
244
|
+
from hivetrace import SyncHivetraceSDK
|
|
245
|
+
|
|
246
|
+
APP_ID = "your-application-id" # created in the Hivetrace UI
|
|
247
|
+
client = SyncHivetraceSDK()
|
|
248
|
+
|
|
249
|
+
files = [
|
|
250
|
+
("doc1.txt", Path("doc1.txt").read_bytes(), "text/plain"),
|
|
251
|
+
]
|
|
252
|
+
|
|
253
|
+
result = client.input(
|
|
254
|
+
application_id=APP_ID,
|
|
255
|
+
message="My name is John",
|
|
256
|
+
additional_parameters={ # optional
|
|
185
257
|
"session_id": "your-session-id",
|
|
186
258
|
"user_id": "your-user-id",
|
|
187
259
|
"agents": {
|
|
188
260
|
"agent-1-id": {"name": "Agent 1", "description": "Agent description"},
|
|
189
261
|
"agent-2-id": {"name": "Agent 2"},
|
|
190
|
-
"agent-3-id": {}
|
|
191
262
|
},
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
263
|
+
},
|
|
264
|
+
files=files, # optional (input only)
|
|
195
265
|
)
|
|
196
266
|
```
|
|
197
267
|
|
|
198
268
|
---
|
|
199
269
|
|
|
200
|
-
## API
|
|
270
|
+
## API Reference
|
|
201
271
|
|
|
202
272
|
### `input`
|
|
203
273
|
|
|
@@ -224,22 +294,35 @@ Sends a **user prompt** to Hivetrace.
|
|
|
224
294
|
* `application_id` — Application identifier (must be a valid UUID, created in the UI)
|
|
225
295
|
* `message` — The user prompt
|
|
226
296
|
* `additional_parameters` — Optional dictionary with extra context (session, user, agents, etc.)
|
|
227
|
-
|
|
228
|
-
* `files` — Optional list of tuples `(filename: str, content: bytes, mime_type: str)`; files are attached to the created analysis record
|
|
229
|
-
|
|
230
|
-
Response contains a `blocked` flag that indicates role restrictions.
|
|
297
|
+
* `files` — Optional list of tuples `(filename: str, content: bytes, mime_type: str)`
|
|
231
298
|
|
|
232
299
|
**Response example:**
|
|
233
300
|
|
|
234
301
|
```json
|
|
235
302
|
{
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
"
|
|
242
|
-
"
|
|
303
|
+
"request_id": "62c51dcf-f7bb-44d3-8c3a-6007b2a44d7d",
|
|
304
|
+
"schema_version": "2.0.0",
|
|
305
|
+
"status": "success",
|
|
306
|
+
"errors": [],
|
|
307
|
+
"tokens": {
|
|
308
|
+
"count": 8,
|
|
309
|
+
"usage_severity": null
|
|
310
|
+
},
|
|
311
|
+
"guardrails": {
|
|
312
|
+
"flagged": false
|
|
313
|
+
},
|
|
314
|
+
"custom_policy": {
|
|
315
|
+
"flagged": false
|
|
316
|
+
},
|
|
317
|
+
"dataclean": {
|
|
318
|
+
"flagged": true,
|
|
319
|
+
"cleaned_text": "My name is XXXX",
|
|
320
|
+
"types": [
|
|
321
|
+
{
|
|
322
|
+
"type": "NAME",
|
|
323
|
+
"count": 1
|
|
324
|
+
}
|
|
325
|
+
]
|
|
243
326
|
}
|
|
244
327
|
}
|
|
245
328
|
```
|
|
@@ -254,7 +337,6 @@ def output(
|
|
|
254
337
|
application_id: str,
|
|
255
338
|
message: str,
|
|
256
339
|
additional_parameters: dict | None = None,
|
|
257
|
-
files: list[tuple[str, bytes, str]] | None = None,
|
|
258
340
|
) -> dict: ...
|
|
259
341
|
|
|
260
342
|
# Async
|
|
@@ -262,7 +344,6 @@ async def output(
|
|
|
262
344
|
application_id: str,
|
|
263
345
|
message: str,
|
|
264
346
|
additional_parameters: dict | None = None,
|
|
265
|
-
files: list[tuple[str, bytes, str]] | None = None,
|
|
266
347
|
) -> dict: ...
|
|
267
348
|
```
|
|
268
349
|
|
|
@@ -271,133 +352,37 @@ Sends an **LLM response** to Hivetrace.
|
|
|
271
352
|
* `application_id` — Application identifier (must be a valid UUID, created in the UI)
|
|
272
353
|
* `message` — The LLM response
|
|
273
354
|
* `additional_parameters` — Optional dictionary with extra context (session, user, agents, etc.)
|
|
274
|
-
* `files` — Optional list of tuples `(filename: str, content: bytes, mime_type: str)`
|
|
275
|
-
|
|
276
|
-
> Files are uploaded after the main request completes and an analysis ID is available.
|
|
277
|
-
|
|
278
|
-
Response contains a `blocked` flag that indicates role restrictions.
|
|
279
355
|
|
|
280
356
|
**Response example:**
|
|
281
357
|
|
|
282
358
|
```json
|
|
283
359
|
{
|
|
284
|
-
"
|
|
285
|
-
"
|
|
286
|
-
"
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
"
|
|
290
|
-
"
|
|
360
|
+
"request_id": "f1e45e80-8f95-449b-9ac4-977b8616ed99",
|
|
361
|
+
"schema_version": "2.0.0",
|
|
362
|
+
"status": "success",
|
|
363
|
+
"errors": [],
|
|
364
|
+
"tokens": {
|
|
365
|
+
"count": 5,
|
|
366
|
+
"usage_severity": null
|
|
367
|
+
},
|
|
368
|
+
"guardrails": {
|
|
369
|
+
"flagged": false
|
|
370
|
+
},
|
|
371
|
+
"dataclean": {
|
|
372
|
+
"flagged": true,
|
|
373
|
+
"cleaned_text": "My name is XXXX",
|
|
374
|
+
"types": [
|
|
375
|
+
{
|
|
376
|
+
"type": "NAME",
|
|
377
|
+
"count": 1
|
|
378
|
+
}
|
|
379
|
+
]
|
|
291
380
|
}
|
|
292
381
|
}
|
|
293
382
|
```
|
|
294
383
|
|
|
295
384
|
---
|
|
296
385
|
|
|
297
|
-
## Sending Requests in Sync Mode
|
|
298
|
-
|
|
299
|
-
```python
|
|
300
|
-
def main():
|
|
301
|
-
# option 1: context manager
|
|
302
|
-
with SyncHivetraceSDK() as client:
|
|
303
|
-
response = client.input(
|
|
304
|
-
application_id="your-application-id",
|
|
305
|
-
message="User prompt here",
|
|
306
|
-
)
|
|
307
|
-
|
|
308
|
-
# option 2: manual close
|
|
309
|
-
client = SyncHivetraceSDK()
|
|
310
|
-
try:
|
|
311
|
-
response = client.input(
|
|
312
|
-
application_id="your-application-id",
|
|
313
|
-
message="User prompt here",
|
|
314
|
-
)
|
|
315
|
-
finally:
|
|
316
|
-
client.close()
|
|
317
|
-
|
|
318
|
-
main()
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
## Sending Requests in Async Mode
|
|
324
|
-
|
|
325
|
-
```python
|
|
326
|
-
import asyncio
|
|
327
|
-
|
|
328
|
-
async def main():
|
|
329
|
-
# option 1: context manager
|
|
330
|
-
async with AsyncHivetraceSDK() as client:
|
|
331
|
-
response = await client.input(
|
|
332
|
-
application_id="your-application-id",
|
|
333
|
-
message="User prompt here",
|
|
334
|
-
)
|
|
335
|
-
|
|
336
|
-
# option 2: manual close
|
|
337
|
-
client = AsyncHivetraceSDK()
|
|
338
|
-
try:
|
|
339
|
-
response = await client.input(
|
|
340
|
-
application_id="your-application-id",
|
|
341
|
-
message="User prompt here",
|
|
342
|
-
)
|
|
343
|
-
finally:
|
|
344
|
-
await client.close()
|
|
345
|
-
|
|
346
|
-
asyncio.run(main())
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### Closing the Async Client
|
|
350
|
-
|
|
351
|
-
```python
|
|
352
|
-
await client.close()
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
---
|
|
356
|
-
|
|
357
|
-
## Configuration
|
|
358
|
-
|
|
359
|
-
The SDK reads configuration from environment variables:
|
|
360
|
-
|
|
361
|
-
* `HIVETRACE_URL` — Base URL allowed to call.
|
|
362
|
-
* `HIVETRACE_ACCESS_TOKEN` — API token used for authentication.
|
|
363
|
-
|
|
364
|
-
These are loaded automatically when you create a client.
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
### Configuration Sources
|
|
368
|
-
|
|
369
|
-
Hivetrace SDK can retrieve configuration from the following sources:
|
|
370
|
-
|
|
371
|
-
**.env File:**
|
|
372
|
-
|
|
373
|
-
```bash
|
|
374
|
-
HIVETRACE_URL=https://your-hivetrace-instance.com
|
|
375
|
-
HIVETRACE_ACCESS_TOKEN=your-access-token # obtained in the UI (API Tokens page)
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
The SDK will automatically load these settings.
|
|
379
|
-
|
|
380
|
-
You can also pass a config dict explicitly when creating a client instance.
|
|
381
|
-
```bash
|
|
382
|
-
client = SyncHivetraceSDK(
|
|
383
|
-
config={
|
|
384
|
-
"HIVETRACE_URL": HIVETRACE_URL,
|
|
385
|
-
"HIVETRACE_ACCESS_TOKEN": HIVETRACE_ACCESS_TOKEN,
|
|
386
|
-
},
|
|
387
|
-
)
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
## Environment Variables
|
|
391
|
-
|
|
392
|
-
Set up your environment variables for easier configuration:
|
|
393
|
-
|
|
394
|
-
```bash
|
|
395
|
-
# .env file
|
|
396
|
-
HIVETRACE_URL=https://your-hivetrace-instance.com
|
|
397
|
-
HIVETRACE_ACCESS_TOKEN=your-access-token
|
|
398
|
-
HIVETRACE_APP_ID=your-application-id
|
|
399
|
-
```
|
|
400
|
-
|
|
401
386
|
# CrewAI Integration
|
|
402
387
|
|
|
403
388
|
**Demo repository**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
hivetrace/__init__.py,sha256=4pzKgIwuoemA_gzK0af8_XEOFFRYcPhxCjE-ElhuPYU,3252
|
|
2
2
|
hivetrace/adapters/__init__.py,sha256=lWWh3KWDghlAz8H9U8TOGaoRv76QQyKg46zvkuVWG7Y,1033
|
|
3
|
-
hivetrace/adapters/base_adapter.py,sha256=
|
|
3
|
+
hivetrace/adapters/base_adapter.py,sha256=W4ZvxrrKnS4f9PLDMVwcTEflvaI-oxLPPJvZ0PG_iNQ,7245
|
|
4
4
|
hivetrace/adapters/crewai/__init__.py,sha256=cHxroLbjZAH5HX763SEc4cRZrfJGQ6XjETJRx6LFjWY,239
|
|
5
|
-
hivetrace/adapters/crewai/adapter.py,sha256=
|
|
6
|
-
hivetrace/adapters/crewai/decorators.py,sha256=
|
|
7
|
-
hivetrace/adapters/crewai/monitored_agent.py,sha256=
|
|
5
|
+
hivetrace/adapters/crewai/adapter.py,sha256=k0c57tuwv8OjfPnTJAFuoGIXxrefP9vVlE1pb5M7QE8,16078
|
|
6
|
+
hivetrace/adapters/crewai/decorators.py,sha256=KFv___yzY_OoLg4KyXQanfal7hSpQiHiyNrLdNEfi1Q,1749
|
|
7
|
+
hivetrace/adapters/crewai/monitored_agent.py,sha256=AgPpViRiuksDjAqNDykrRRqL5XsP_7EDo34aEnu40EU,3163
|
|
8
8
|
hivetrace/adapters/crewai/monitored_crew.py,sha256=9Bv3s4sxhyCfM0lri9PIJH8f7lgvI9tL-ZGkDWch75s,5041
|
|
9
|
-
hivetrace/adapters/crewai/tool_wrapper.py,sha256=
|
|
9
|
+
hivetrace/adapters/crewai/tool_wrapper.py,sha256=qOH7F8dinZIdC03x_V0Fl7_kC8X6fCVmCwX7MSzU-c0,2064
|
|
10
10
|
hivetrace/adapters/langchain/__init__.py,sha256=yqQxJffaLa6VX9FK-RUJ4I9GupomMVEZcasvOnvMoVk,552
|
|
11
11
|
hivetrace/adapters/langchain/adapter.py,sha256=zvnDP_Yg1GDGHRUecN3Xo-AElYlUwdp9HeDD2BCYoOo,12777
|
|
12
12
|
hivetrace/adapters/langchain/api.py,sha256=LeY6f1rI3j6hAzhe1QeaAt7UM7Aii-WHEJ_wiEsKJs4,8968
|
|
@@ -15,31 +15,31 @@ hivetrace/adapters/langchain/callback.py,sha256=LJXzJDwAECOQIlZqkVvSCn1KzBjUVSQp
|
|
|
15
15
|
hivetrace/adapters/langchain/decorators.py,sha256=yocDjsDup8omiMYFX2Dx8mws45bTKsMGhF6-nuDwmfk,3193
|
|
16
16
|
hivetrace/adapters/langchain/models.py,sha256=Pk4cQRrdSu9q8Mp49dU6oeUIesw1f1gG5rt1R9HjLMo,1435
|
|
17
17
|
hivetrace/adapters/openai_agents/__init__.py,sha256=T-SEEfPEYQpWljoK6D5g3UPFJXBPs8wSQYITrh-32jQ,128
|
|
18
|
-
hivetrace/adapters/openai_agents/adapter.py,sha256=
|
|
18
|
+
hivetrace/adapters/openai_agents/adapter.py,sha256=UZhEZXyu_khuf4jC571HJ9DZK_6msBWyiaQFP2xVRIA,6012
|
|
19
19
|
hivetrace/adapters/openai_agents/models.py,sha256=THbpcD-J6BnMVZ4vYzymzmr-iezAV2crCr-Sd8wdWzw,1379
|
|
20
|
-
hivetrace/adapters/openai_agents/tracing.py,sha256=
|
|
20
|
+
hivetrace/adapters/openai_agents/tracing.py,sha256=QSkD_-o6mSSI5DCjrNGWPtegBVxieYT5KhUCGfytp3o,5380
|
|
21
21
|
hivetrace/adapters/utils/__init__.py,sha256=AkdJzecQlhT3hHFOIO5zWbAIEXvbgH_5vmzlPViedt0,142
|
|
22
22
|
hivetrace/adapters/utils/logging.py,sha256=UxCMFvlpP6vJfzRwMYhhJIi7RTWdgVK2sWtCeEB67_w,1126
|
|
23
23
|
hivetrace/client/__init__.py,sha256=Daz_KxOMzGSBKUpv48tTooGZrmzk0wzDq8QUTHuBZBU,313
|
|
24
|
-
hivetrace/client/async_client.py,sha256=
|
|
25
|
-
hivetrace/client/base.py,sha256=
|
|
26
|
-
hivetrace/client/sync_client.py,sha256=
|
|
24
|
+
hivetrace/client/async_client.py,sha256=_XjwSIo6cjVLUkq_1uxszun6L6mlifdxKHfEjMkpiek,5209
|
|
25
|
+
hivetrace/client/base.py,sha256=eL_VpXElmPJogaIAeB-4oZQZC8Z3-wDu1OTN2cl3HrY,7639
|
|
26
|
+
hivetrace/client/sync_client.py,sha256=_r3rXcr7VzNX9j9lsLFFNE1FgAMyEejHIaaHICVe3BA,5034
|
|
27
27
|
hivetrace/errors/__init__.py,sha256=3Sqr2Pz4NwE_u8CgTzVbzoNj-B52cwzdsHINnpWO3Yg,1006
|
|
28
|
-
hivetrace/errors/api.py,sha256=
|
|
28
|
+
hivetrace/errors/api.py,sha256=r7nmeprgdXMqh8l382zphWnaBeQFG2rMOFmO3gdLqOs,1043
|
|
29
29
|
hivetrace/errors/base.py,sha256=_2o8TbvlPzJEzKGl4T3u1XbTAJgP5fO19T6XQSfH3pI,686
|
|
30
30
|
hivetrace/errors/network.py,sha256=4GlFpUU9BV5Q1yoizadRQjDPLlIn7lh4Nyn8e7ZAQQg,697
|
|
31
|
-
hivetrace/errors/validation.py,sha256=
|
|
31
|
+
hivetrace/errors/validation.py,sha256=I_W5ZUcbs1kqvXcE7z4RzZzy1zka5J0W7W0zh-xaBfc,1027
|
|
32
32
|
hivetrace/handlers/__init__.py,sha256=9edrtdJyvx8UkANmrjjVhg9f0kWMxfXVrmURTUrW6mg,435
|
|
33
33
|
hivetrace/handlers/error_handler.py,sha256=aWLL--HKBm4h8AO4oQSpsFObq2TjHXntYXBDXWp-Q30,3774
|
|
34
|
-
hivetrace/handlers/response_builder.py,sha256=
|
|
34
|
+
hivetrace/handlers/response_builder.py,sha256=JDsjWYhcg_jrrGgqvSDbW-Ywo5t0evpqpSCdQ7506Hw,1103
|
|
35
35
|
hivetrace/models/__init__.py,sha256=qQvtDkI0Awlch6c_kedH5Jq8aWn3XhDXbxbch5nf-RI,1020
|
|
36
|
-
hivetrace/models/requests.py,sha256=
|
|
37
|
-
hivetrace/models/responses.py,sha256=
|
|
36
|
+
hivetrace/models/requests.py,sha256=cwfwlbvV_Q-pEhr9VGkV1gz0Lm-Hj00HXnlyE3EXcUk,2502
|
|
37
|
+
hivetrace/models/responses.py,sha256=ENkUiHsO10pkiAVpthNjSk3QUZpEx58HJB1EVt_-YBg,3803
|
|
38
38
|
hivetrace/utils/__init__.py,sha256=BNYbeSuUbrZL7RradjE_OFAxam3L6eexbL2IMfjImv0,747
|
|
39
|
-
hivetrace/utils/error_helpers.py,sha256=
|
|
39
|
+
hivetrace/utils/error_helpers.py,sha256=axFTKiYwdLI4Ezoq4ggx2bSlTBTyhNshc9m7XBCvlc4,3359
|
|
40
40
|
hivetrace/utils/uuid_generator.py,sha256=W4i2tUSyClNKNgm4O-bk_Qkkmw3cWIuf29DjwXftx0c,344
|
|
41
|
-
hivetrace-1.
|
|
42
|
-
hivetrace-1.
|
|
43
|
-
hivetrace-1.
|
|
44
|
-
hivetrace-1.
|
|
45
|
-
hivetrace-1.
|
|
41
|
+
hivetrace-1.4.0.dist-info/licenses/LICENSE,sha256=8d3g3prbWPDLQ5AV0dtyWfYTj5QPl8MJ_wlr2l8pjEU,11333
|
|
42
|
+
hivetrace-1.4.0.dist-info/METADATA,sha256=SX8JMrQoRw8BrR-_fKIn0VQnPnXCX5ummvotckAp67E,28714
|
|
43
|
+
hivetrace-1.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
44
|
+
hivetrace-1.4.0.dist-info/top_level.txt,sha256=F6mZCzZ5CSftMc-M0NeOYWbwyTzjybR72P4qSBMyZZM,10
|
|
45
|
+
hivetrace-1.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|