Skip to content

Commit 5b6d249

Browse files
committed
2 parents 2f8a570 + a0b02aa commit 5b6d249

File tree

15 files changed

+230
-150
lines changed

15 files changed

+230
-150
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ jobs:
109109
--ignore=tests/test_tau_bench_airline_smoke.py \
110110
--ignore=tests/pytest/test_svgbench.py \
111111
--ignore=tests/pytest/test_livesvgbench.py \
112+
--ignore=tests/remote_server/test_remote_fireworks.py \
112113
--ignore=tests/remote_server/test_remote_fireworks_propagate_status.py \
113114
--ignore=tests/logging/test_elasticsearch_direct_http_handler.py \
114115
--ignore=eval_protocol/benchmarks/ \

eval_protocol/__init__.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,28 @@
7979
WeaveAdapter = None
8080

8181
try:
82-
from .proxy import create_app, AuthProvider, AccountInfo
82+
from .proxy import create_app, AuthProvider, AccountInfo # pyright: ignore[reportAssignmentType]
8383
except ImportError:
84-
create_app = None
85-
AuthProvider = None
86-
AccountInfo = None
84+
85+
def create_app(*args, **kwargs):
86+
raise ImportError(
87+
"Proxy functionality requires additional dependencies. "
88+
"Please install with: pip install eval-protocol[proxy]"
89+
)
90+
91+
class AuthProvider:
92+
def __init__(self, *args, **kwargs):
93+
raise ImportError(
94+
"Proxy functionality requires additional dependencies. "
95+
"Please install with: pip install eval-protocol[proxy]"
96+
)
97+
98+
class AccountInfo:
99+
def __init__(self, *args, **kwargs):
100+
raise ImportError(
101+
"Proxy functionality requires additional dependencies. "
102+
"Please install with: pip install eval-protocol[proxy]"
103+
)
87104

88105

89106
warnings.filterwarnings("default", category=DeprecationWarning, module="eval_protocol")

eval_protocol/event_bus/__init__.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Global event bus instance - uses SqliteEventBus for cross-process functionality
2+
from typing import Any, Callable
23
from eval_protocol.event_bus.event_bus import EventBus
34

45

@@ -18,8 +19,20 @@ def _get_event_bus(self):
1819
self._event_bus = _get_default_event_bus()
1920
return self._event_bus
2021

21-
def __getattr__(self, name):
22-
return getattr(self._get_event_bus(), name)
22+
def subscribe(self, callback: Callable[[str, Any], None]) -> None:
23+
return self._get_event_bus().subscribe(callback)
24+
25+
def unsubscribe(self, callback: Callable[[str, Any], None]) -> None:
26+
return self._get_event_bus().unsubscribe(callback)
27+
28+
def emit(self, event_type: str, data: Any) -> None:
29+
return self._get_event_bus().emit(event_type, data)
30+
31+
def start_listening(self) -> None:
32+
return self._get_event_bus().start_listening()
33+
34+
def stop_listening(self) -> None:
35+
return self._get_event_bus().stop_listening()
2336

2437

2538
event_bus: EventBus = _LazyEventBus()

pyproject.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ langgraph_tools = [
142142
"langchain-fireworks>=0.3.0",
143143
]
144144

145+
proxy = [
146+
"redis>=5.0.0",
147+
"langfuse>=2.0.0",
148+
"uuid6>=2025.0.0",
149+
]
150+
145151
[project.scripts]
146152
fireworks-reward = "eval_protocol.cli:main"
147153
eval-protocol = "eval_protocol.cli:main"

tests/remote_server/test_remote_fireworks.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ def rows() -> List[EvaluationRow]:
9898
return [row, row, row]
9999

100100

101-
@pytest.mark.skipif(os.environ.get("CI") == "true", reason="Only run this test locally (skipped in CI)")
102101
@pytest.mark.parametrize(
103102
"completion_params",
104103
[{"model": "fireworks_ai/accounts/fireworks/models/gpt-oss-120b", "temperature": 0.5}],

tests/remote_server/test_remote_fireworks_propagate_status.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
from eval_protocol.models import EvaluationRow, Message, Status
2424
from eval_protocol.pytest import evaluation_test
2525
from eval_protocol.pytest.remote_rollout_processor import RemoteRolloutProcessor
26+
from eval_protocol.adapters.fireworks_tracing import FireworksTracingAdapter
27+
from eval_protocol.utils.evaluation_row_utils import filter_longest_conversation
28+
from eval_protocol.types.remote_rollout_processor import DataLoaderConfig
2629

2730

2831
def find_available_port() -> int:
@@ -75,6 +78,18 @@ def setup_remote_server():
7578
process.wait()
7679

7780

81+
def fetch_fireworks_traces(config: DataLoaderConfig) -> List[EvaluationRow]:
82+
base_url = config.model_base_url or "https://tracing.fireworks.ai"
83+
adapter = FireworksTracingAdapter(base_url=base_url)
84+
return adapter.get_evaluation_rows(tags=[f"rollout_id:{config.rollout_id}"], max_retries=7)
85+
86+
87+
def fireworks_output_data_loader(config: DataLoaderConfig) -> DynamicDataLoader:
88+
return DynamicDataLoader(
89+
generators=[lambda: fetch_fireworks_traces(config)], preprocess_fn=filter_longest_conversation
90+
)
91+
92+
7893
def rows() -> List[EvaluationRow]:
7994
row = EvaluationRow(messages=[Message(role="user", content="What is the capital of France?")])
8095
return [row]
@@ -88,6 +103,7 @@ def rows() -> List[EvaluationRow]:
88103
rollout_processor=RemoteRolloutProcessor(
89104
remote_base_url=f"http://127.0.0.1:{SERVER_PORT}",
90105
timeout_seconds=120,
106+
output_data_loader=fireworks_output_data_loader,
91107
),
92108
)
93109
async def test_remote_rollout_and_fetch_fireworks_propagate_status(row: EvaluationRow) -> EvaluationRow:

uv.lock

Lines changed: 30 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vite-app/dist/assets/index-BGlGI2LH.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vite-app/dist/assets/index-BnDJont9.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)