|
6 | 6 | import threading |
7 | 7 | import uuid |
8 | 8 | from datetime import UTC, datetime |
9 | | -from typing import Any, cast |
| 9 | +from typing import Any |
10 | 10 |
|
11 | 11 | from netopsbench.agents._trace_utils import jsonable as _jsonable |
12 | 12 |
|
@@ -34,26 +34,6 @@ def disabled(cls) -> AgentTraceRecorder: |
34 | 34 |
|
35 | 35 | return cls(enabled=False) |
36 | 36 |
|
37 | | - def llm_client( |
38 | | - self, |
39 | | - provider: str = "openai", |
40 | | - *, |
41 | | - model: str, |
42 | | - api_key: str | None = None, |
43 | | - base_url: str | None = None, |
44 | | - **client_kwargs: Any, |
45 | | - ) -> TraceAwareLLMClient: |
46 | | - """Return an OpenAI-compatible chat client that records visible messages.""" |
47 | | - |
48 | | - return TraceAwareLLMClient( |
49 | | - recorder=self, |
50 | | - provider=provider, |
51 | | - model=model, |
52 | | - api_key=api_key, |
53 | | - base_url=base_url, |
54 | | - client_kwargs=client_kwargs, |
55 | | - ) |
56 | | - |
57 | 37 | def langchain_callback(self) -> Any | None: |
58 | 38 | """Return a LangChain callback handler that writes into this recorder.""" |
59 | 39 |
|
@@ -371,57 +351,6 @@ def _accumulate_usage(self, usage: dict[str, int]) -> None: |
371 | 351 | self._metrics["total_tokens"] += usage["total_tokens"] |
372 | 352 | self._metrics["llm_call_count"] += usage["has_usage"] or 1 |
373 | 353 |
|
374 | | - |
375 | | -class TraceAwareLLMClient: |
376 | | - """Small OpenAI-compatible chat client wrapper that records requests and responses.""" |
377 | | - |
378 | | - def __init__( |
379 | | - self, |
380 | | - *, |
381 | | - recorder: AgentTraceRecorder, |
382 | | - provider: str, |
383 | | - model: str, |
384 | | - api_key: str | None, |
385 | | - base_url: str | None, |
386 | | - client_kwargs: dict[str, Any], |
387 | | - ): |
388 | | - self.recorder = recorder |
389 | | - self.provider = provider |
390 | | - self.model = model |
391 | | - self.api_key = api_key |
392 | | - self.base_url = base_url |
393 | | - self.client_kwargs = dict(client_kwargs) |
394 | | - |
395 | | - async def chat(self, messages: list[dict[str, Any]], **kwargs: Any) -> Any: |
396 | | - try: |
397 | | - from openai import AsyncOpenAI |
398 | | - except Exception as exc: # pragma: no cover - depends on optional agent deps |
399 | | - raise RuntimeError("openai is required for context.trace.llm_client().chat()") from exc |
400 | | - |
401 | | - run_id = self.recorder.record_llm_request( |
402 | | - messages, |
403 | | - model=self.model, |
404 | | - provider=self.provider, |
405 | | - ) |
406 | | - client = AsyncOpenAI(api_key=self.api_key, base_url=self.base_url, **self.client_kwargs) |
407 | | - try: |
408 | | - response = await client.chat.completions.create( |
409 | | - model=self.model, |
410 | | - messages=cast(Any, messages), |
411 | | - **kwargs, |
412 | | - ) |
413 | | - except Exception as exc: |
414 | | - self.recorder.record_error(stage="llm", error=exc, run_id=run_id) |
415 | | - raise |
416 | | - self.recorder.record_llm_response( |
417 | | - response, |
418 | | - run_id=run_id, |
419 | | - model=self.model, |
420 | | - provider=self.provider, |
421 | | - ) |
422 | | - return response |
423 | | - |
424 | | - |
425 | 354 | def _message_payload(message: Any, *, index: int) -> dict[str, Any]: |
426 | 355 | payload: dict[str, Any] = { |
427 | 356 | "index": index, |
|
0 commit comments