agent_os_kernel 3.1.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.
- agent_control_plane/__init__.py +662 -0
- agent_control_plane/a2a_adapter.py +543 -0
- agent_control_plane/adapter.py +417 -0
- agent_control_plane/agent_hibernation.py +394 -0
- agent_control_plane/agent_kernel.py +470 -0
- agent_control_plane/compliance.py +720 -0
- agent_control_plane/constraint_graphs.py +478 -0
- agent_control_plane/control_plane.py +854 -0
- agent_control_plane/example_executors.py +195 -0
- agent_control_plane/execution_engine.py +231 -0
- agent_control_plane/flight_recorder.py +846 -0
- agent_control_plane/governance_layer.py +435 -0
- agent_control_plane/hf_utils.py +563 -0
- agent_control_plane/interfaces/__init__.py +55 -0
- agent_control_plane/interfaces/kernel_interface.py +361 -0
- agent_control_plane/interfaces/plugin_interface.py +497 -0
- agent_control_plane/interfaces/protocol_interfaces.py +387 -0
- agent_control_plane/kernel_space.py +1009 -0
- agent_control_plane/langchain_adapter.py +424 -0
- agent_control_plane/lifecycle.py +3113 -0
- agent_control_plane/mcp_adapter.py +653 -0
- agent_control_plane/ml_safety.py +563 -0
- agent_control_plane/multimodal.py +727 -0
- agent_control_plane/mute_agent.py +422 -0
- agent_control_plane/observability.py +787 -0
- agent_control_plane/orchestrator.py +482 -0
- agent_control_plane/plugin_registry.py +750 -0
- agent_control_plane/policy_engine.py +954 -0
- agent_control_plane/process_isolation.py +777 -0
- agent_control_plane/shadow_mode.py +310 -0
- agent_control_plane/signals.py +493 -0
- agent_control_plane/supervisor_agents.py +430 -0
- agent_control_plane/time_travel_debugger.py +557 -0
- agent_control_plane/tool_registry.py +452 -0
- agent_control_plane/vfs.py +697 -0
- agent_kernel/__init__.py +69 -0
- agent_kernel/analyzer.py +435 -0
- agent_kernel/auditor.py +36 -0
- agent_kernel/completeness_auditor.py +237 -0
- agent_kernel/detector.py +203 -0
- agent_kernel/kernel.py +744 -0
- agent_kernel/memory_manager.py +85 -0
- agent_kernel/models.py +374 -0
- agent_kernel/nudge_mechanism.py +263 -0
- agent_kernel/outcome_analyzer.py +338 -0
- agent_kernel/patcher.py +582 -0
- agent_kernel/semantic_analyzer.py +316 -0
- agent_kernel/semantic_purge.py +349 -0
- agent_kernel/simulator.py +449 -0
- agent_kernel/teacher.py +85 -0
- agent_kernel/triage.py +152 -0
- agent_os/__init__.py +409 -0
- agent_os/_adversarial_impl.py +200 -0
- agent_os/_circuit_breaker_impl.py +232 -0
- agent_os/_mcp_metrics.py +193 -0
- agent_os/adversarial.py +20 -0
- agent_os/agents_compat.py +490 -0
- agent_os/audit_logger.py +135 -0
- agent_os/base_agent.py +651 -0
- agent_os/circuit_breaker.py +34 -0
- agent_os/cli/__init__.py +659 -0
- agent_os/cli/cmd_audit.py +128 -0
- agent_os/cli/cmd_init.py +152 -0
- agent_os/cli/cmd_policy.py +41 -0
- agent_os/cli/cmd_policy_gen.py +180 -0
- agent_os/cli/cmd_validate.py +258 -0
- agent_os/cli/mcp_scan.py +265 -0
- agent_os/cli/output.py +192 -0
- agent_os/cli/policy_checker.py +330 -0
- agent_os/compat.py +74 -0
- agent_os/constraint_graph.py +234 -0
- agent_os/content_governance.py +140 -0
- agent_os/context_budget.py +305 -0
- agent_os/credential_redactor.py +224 -0
- agent_os/diff_policy.py +89 -0
- agent_os/egress_policy.py +159 -0
- agent_os/escalation.py +276 -0
- agent_os/event_bus.py +124 -0
- agent_os/exceptions.py +180 -0
- agent_os/execution_context_policy.py +141 -0
- agent_os/github_enterprise.py +96 -0
- agent_os/health.py +20 -0
- agent_os/integrations/__init__.py +279 -0
- agent_os/integrations/a2a_adapter.py +279 -0
- agent_os/integrations/agent_lightning/__init__.py +30 -0
- agent_os/integrations/anthropic_adapter.py +420 -0
- agent_os/integrations/autogen_adapter.py +620 -0
- agent_os/integrations/base.py +1137 -0
- agent_os/integrations/compat.py +229 -0
- agent_os/integrations/config.py +98 -0
- agent_os/integrations/conversation_guardian.py +957 -0
- agent_os/integrations/crewai_adapter.py +467 -0
- agent_os/integrations/drift_detector.py +425 -0
- agent_os/integrations/dry_run.py +124 -0
- agent_os/integrations/escalation.py +582 -0
- agent_os/integrations/gemini_adapter.py +364 -0
- agent_os/integrations/google_adk_adapter.py +633 -0
- agent_os/integrations/guardrails_adapter.py +394 -0
- agent_os/integrations/health.py +197 -0
- agent_os/integrations/langchain_adapter.py +654 -0
- agent_os/integrations/llamafirewall.py +343 -0
- agent_os/integrations/llamaindex_adapter.py +188 -0
- agent_os/integrations/logging.py +191 -0
- agent_os/integrations/maf_adapter.py +631 -0
- agent_os/integrations/mistral_adapter.py +365 -0
- agent_os/integrations/openai_adapter.py +816 -0
- agent_os/integrations/openai_agents_sdk.py +406 -0
- agent_os/integrations/policy_compose.py +171 -0
- agent_os/integrations/profiling.py +144 -0
- agent_os/integrations/pydantic_ai_adapter.py +420 -0
- agent_os/integrations/rate_limiter.py +130 -0
- agent_os/integrations/rbac.py +143 -0
- agent_os/integrations/registry.py +113 -0
- agent_os/integrations/scope_guard.py +303 -0
- agent_os/integrations/semantic_kernel_adapter.py +769 -0
- agent_os/integrations/smolagents_adapter.py +629 -0
- agent_os/integrations/templates.py +178 -0
- agent_os/integrations/token_budget.py +134 -0
- agent_os/integrations/tool_aliases.py +190 -0
- agent_os/integrations/webhooks.py +177 -0
- agent_os/lite.py +208 -0
- agent_os/mcp_gateway.py +385 -0
- agent_os/mcp_message_signer.py +273 -0
- agent_os/mcp_protocols.py +161 -0
- agent_os/mcp_response_scanner.py +232 -0
- agent_os/mcp_security.py +924 -0
- agent_os/mcp_session_auth.py +231 -0
- agent_os/mcp_sliding_rate_limiter.py +184 -0
- agent_os/memory_guard.py +409 -0
- agent_os/metrics.py +134 -0
- agent_os/mute.py +428 -0
- agent_os/mute_agent.py +209 -0
- agent_os/policies/__init__.py +77 -0
- agent_os/policies/async_evaluator.py +275 -0
- agent_os/policies/backends.py +670 -0
- agent_os/policies/bridge.py +169 -0
- agent_os/policies/budget.py +85 -0
- agent_os/policies/cli.py +294 -0
- agent_os/policies/conflict_resolution.py +270 -0
- agent_os/policies/data_classification.py +252 -0
- agent_os/policies/evaluator.py +239 -0
- agent_os/policies/policy_schema.json +228 -0
- agent_os/policies/rate_limiting.py +145 -0
- agent_os/policies/schema.py +115 -0
- agent_os/policies/shared.py +331 -0
- agent_os/prompt_injection.py +694 -0
- agent_os/providers.py +182 -0
- agent_os/py.typed +0 -0
- agent_os/retry.py +81 -0
- agent_os/reversibility.py +251 -0
- agent_os/sandbox.py +432 -0
- agent_os/sandbox_provider.py +140 -0
- agent_os/secure_codegen.py +525 -0
- agent_os/security_skills.py +538 -0
- agent_os/semantic_policy.py +422 -0
- agent_os/server/__init__.py +15 -0
- agent_os/server/__main__.py +25 -0
- agent_os/server/app.py +277 -0
- agent_os/server/models.py +104 -0
- agent_os/shift_left_metrics.py +130 -0
- agent_os/stateless.py +742 -0
- agent_os/supervisor.py +148 -0
- agent_os/task_outcome.py +148 -0
- agent_os/transparency.py +181 -0
- agent_os/trust_root.py +128 -0
- agent_os_kernel-3.1.0.dist-info/METADATA +1269 -0
- agent_os_kernel-3.1.0.dist-info/RECORD +337 -0
- agent_os_kernel-3.1.0.dist-info/WHEEL +4 -0
- agent_os_kernel-3.1.0.dist-info/entry_points.txt +2 -0
- agent_os_kernel-3.1.0.dist-info/licenses/LICENSE +21 -0
- agent_os_observability/__init__.py +27 -0
- agent_os_observability/dashboards.py +898 -0
- agent_os_observability/metrics.py +398 -0
- agent_os_observability/server.py +223 -0
- agent_os_observability/tracer.py +232 -0
- agent_primitives/__init__.py +24 -0
- agent_primitives/failures.py +84 -0
- agent_primitives/py.typed +0 -0
- amb_core/__init__.py +177 -0
- amb_core/adapters/__init__.py +57 -0
- amb_core/adapters/aws_sqs_broker.py +376 -0
- amb_core/adapters/azure_servicebus_broker.py +340 -0
- amb_core/adapters/kafka_broker.py +260 -0
- amb_core/adapters/nats_broker.py +285 -0
- amb_core/adapters/rabbitmq_broker.py +235 -0
- amb_core/adapters/redis_broker.py +262 -0
- amb_core/broker.py +145 -0
- amb_core/bus.py +481 -0
- amb_core/cloudevents.py +509 -0
- amb_core/dlq.py +345 -0
- amb_core/hf_utils.py +536 -0
- amb_core/memory_broker.py +410 -0
- amb_core/models.py +141 -0
- amb_core/persistence.py +529 -0
- amb_core/schema.py +294 -0
- amb_core/tracing.py +358 -0
- atr/__init__.py +640 -0
- atr/access.py +348 -0
- atr/composition.py +645 -0
- atr/decorator.py +357 -0
- atr/executor.py +384 -0
- atr/health.py +557 -0
- atr/hf_utils.py +449 -0
- atr/injection.py +422 -0
- atr/metrics.py +440 -0
- atr/policies.py +403 -0
- atr/py.typed +2 -0
- atr/registry.py +452 -0
- atr/schema.py +480 -0
- atr/tools/safe/__init__.py +75 -0
- atr/tools/safe/calculator.py +467 -0
- atr/tools/safe/datetime_tool.py +443 -0
- atr/tools/safe/file_reader.py +402 -0
- atr/tools/safe/http_client.py +316 -0
- atr/tools/safe/json_parser.py +374 -0
- atr/tools/safe/text_tool.py +537 -0
- atr/tools/safe/toolkit.py +175 -0
- caas/__init__.py +162 -0
- caas/api/__init__.py +7 -0
- caas/api/server.py +1328 -0
- caas/caching.py +834 -0
- caas/cli.py +210 -0
- caas/conversation.py +223 -0
- caas/decay.py +72 -0
- caas/detection/__init__.py +9 -0
- caas/detection/detector.py +238 -0
- caas/enrichment.py +130 -0
- caas/gateway/__init__.py +27 -0
- caas/gateway/trust_gateway.py +474 -0
- caas/hf_utils.py +479 -0
- caas/ingestion/__init__.py +23 -0
- caas/ingestion/processors.py +253 -0
- caas/ingestion/structure_parser.py +188 -0
- caas/models.py +356 -0
- caas/pragmatic_truth.py +444 -0
- caas/routing/__init__.py +10 -0
- caas/routing/heuristic_router.py +58 -0
- caas/storage/__init__.py +9 -0
- caas/storage/store.py +389 -0
- caas/triad.py +213 -0
- caas/tuning/__init__.py +9 -0
- caas/tuning/tuner.py +329 -0
- caas/vfs/__init__.py +14 -0
- caas/vfs/filesystem.py +452 -0
- cmvk/__init__.py +218 -0
- cmvk/audit.py +402 -0
- cmvk/benchmarks.py +478 -0
- cmvk/constitutional.py +904 -0
- cmvk/hf_utils.py +301 -0
- cmvk/metrics.py +473 -0
- cmvk/profiles.py +300 -0
- cmvk/py.typed +0 -0
- cmvk/types.py +12 -0
- cmvk/verification.py +956 -0
- emk/__init__.py +89 -0
- emk/causal.py +352 -0
- emk/hf_utils.py +421 -0
- emk/indexer.py +83 -0
- emk/py.typed +0 -0
- emk/schema.py +204 -0
- emk/sleep_cycle.py +347 -0
- emk/store.py +281 -0
- iatp/__init__.py +166 -0
- iatp/attestation.py +461 -0
- iatp/cli.py +317 -0
- iatp/hf_utils.py +472 -0
- iatp/ipc_pipes.py +580 -0
- iatp/main.py +412 -0
- iatp/models/__init__.py +447 -0
- iatp/policy_engine.py +337 -0
- iatp/py.typed +2 -0
- iatp/recovery.py +321 -0
- iatp/security/__init__.py +270 -0
- iatp/sidecar/__init__.py +519 -0
- iatp/telemetry/__init__.py +164 -0
- iatp/tests/__init__.py +1 -0
- iatp/tests/test_attestation.py +370 -0
- iatp/tests/test_cli.py +131 -0
- iatp/tests/test_ed25519_attestation.py +211 -0
- iatp/tests/test_models.py +130 -0
- iatp/tests/test_policy_engine.py +347 -0
- iatp/tests/test_recovery.py +281 -0
- iatp/tests/test_security.py +222 -0
- iatp/tests/test_sidecar.py +167 -0
- iatp/tests/test_telemetry.py +175 -0
- mcp_kernel_server/__init__.py +28 -0
- mcp_kernel_server/cli.py +274 -0
- mcp_kernel_server/resources.py +217 -0
- mcp_kernel_server/server.py +564 -0
- mcp_kernel_server/tools.py +1174 -0
- mute_agent/__init__.py +68 -0
- mute_agent/core/__init__.py +1 -0
- mute_agent/core/execution_agent.py +166 -0
- mute_agent/core/handshake_protocol.py +201 -0
- mute_agent/core/reasoning_agent.py +238 -0
- mute_agent/knowledge_graph/__init__.py +1 -0
- mute_agent/knowledge_graph/graph_elements.py +65 -0
- mute_agent/knowledge_graph/multidimensional_graph.py +170 -0
- mute_agent/knowledge_graph/subgraph.py +224 -0
- mute_agent/listener/__init__.py +43 -0
- mute_agent/listener/adapters/__init__.py +31 -0
- mute_agent/listener/adapters/base_adapter.py +189 -0
- mute_agent/listener/adapters/caas_adapter.py +344 -0
- mute_agent/listener/adapters/control_plane_adapter.py +436 -0
- mute_agent/listener/adapters/iatp_adapter.py +332 -0
- mute_agent/listener/adapters/scak_adapter.py +251 -0
- mute_agent/listener/listener.py +610 -0
- mute_agent/listener/state_observer.py +436 -0
- mute_agent/listener/threshold_config.py +313 -0
- mute_agent/super_system/__init__.py +1 -0
- mute_agent/super_system/router.py +204 -0
- mute_agent/visualization/__init__.py +10 -0
- mute_agent/visualization/graph_debugger.py +502 -0
- nexus/README.md +60 -0
- nexus/__init__.py +51 -0
- nexus/arbiter.py +359 -0
- nexus/client.py +466 -0
- nexus/dmz.py +444 -0
- nexus/escrow.py +430 -0
- nexus/exceptions.py +286 -0
- nexus/pyproject.toml +36 -0
- nexus/registry.py +393 -0
- nexus/reputation.py +425 -0
- nexus/schemas/__init__.py +51 -0
- nexus/schemas/compliance.py +276 -0
- nexus/schemas/escrow.py +251 -0
- nexus/schemas/manifest.py +225 -0
- nexus/schemas/receipt.py +208 -0
- nexus/tests/__init__.py +0 -0
- nexus/tests/conftest.py +146 -0
- nexus/tests/test_arbiter.py +192 -0
- nexus/tests/test_dmz.py +194 -0
- nexus/tests/test_escrow.py +276 -0
- nexus/tests/test_exceptions.py +225 -0
- nexus/tests/test_registry.py +232 -0
- nexus/tests/test_reputation.py +328 -0
- nexus/tests/test_schemas.py +295 -0
cmvk/hf_utils.py
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
"""
|
|
4
|
+
Hugging Face Hub Utilities for CMVK
|
|
5
|
+
|
|
6
|
+
Lightweight utilities for pushing/pulling datasets and experiment results
|
|
7
|
+
to the Hugging Face Hub. Designed for research reproducibility.
|
|
8
|
+
|
|
9
|
+
Usage:
|
|
10
|
+
from cmvk.hf_utils import upload_experiment_logs, download_dataset
|
|
11
|
+
|
|
12
|
+
# Upload experiment results
|
|
13
|
+
upload_experiment_logs(
|
|
14
|
+
results_path="experiments/results.json",
|
|
15
|
+
repo_id="microsoft/cmvk-benchmark-data"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# Download shared datasets
|
|
19
|
+
download_dataset(
|
|
20
|
+
repo_id="microsoft/cmvk-benchmark-data",
|
|
21
|
+
filename="datasets/humaneval_50.json",
|
|
22
|
+
local_path="experiments/datasets/"
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
Requirements:
|
|
26
|
+
pip install huggingface_hub
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from __future__ import annotations
|
|
30
|
+
|
|
31
|
+
import json
|
|
32
|
+
import logging
|
|
33
|
+
from pathlib import Path
|
|
34
|
+
from typing import TYPE_CHECKING, Any
|
|
35
|
+
|
|
36
|
+
if TYPE_CHECKING:
|
|
37
|
+
from huggingface_hub import HfApi
|
|
38
|
+
|
|
39
|
+
logger = logging.getLogger(__name__)
|
|
40
|
+
|
|
41
|
+
# Default repository configuration
|
|
42
|
+
DEFAULT_REPO_ID = "microsoft/cmvk-benchmark-data"
|
|
43
|
+
DEFAULT_REPO_TYPE = "dataset"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class HuggingFaceHubError(Exception):
|
|
47
|
+
"""Raised when Hugging Face Hub operations fail."""
|
|
48
|
+
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _get_api() -> HfApi:
|
|
53
|
+
"""Get HfApi instance, raising helpful error if not installed."""
|
|
54
|
+
try:
|
|
55
|
+
from huggingface_hub import HfApi
|
|
56
|
+
|
|
57
|
+
return HfApi()
|
|
58
|
+
except ImportError as e:
|
|
59
|
+
raise HuggingFaceHubError(
|
|
60
|
+
"huggingface_hub is required for HF integration. "
|
|
61
|
+
"Install with: pip install huggingface_hub"
|
|
62
|
+
) from e
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def check_auth() -> bool:
|
|
66
|
+
"""
|
|
67
|
+
Check if Hugging Face authentication is configured.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
True if authenticated, False otherwise.
|
|
71
|
+
|
|
72
|
+
Example:
|
|
73
|
+
>>> if check_auth():
|
|
74
|
+
... upload_experiment_logs("results.json")
|
|
75
|
+
"""
|
|
76
|
+
try:
|
|
77
|
+
api = _get_api()
|
|
78
|
+
api.whoami()
|
|
79
|
+
return True
|
|
80
|
+
except Exception:
|
|
81
|
+
return False
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def upload_experiment_logs(
|
|
85
|
+
results_path: str | Path,
|
|
86
|
+
repo_id: str = DEFAULT_REPO_ID,
|
|
87
|
+
path_in_repo: str | None = None,
|
|
88
|
+
commit_message: str | None = None,
|
|
89
|
+
private: bool = False,
|
|
90
|
+
) -> str:
|
|
91
|
+
"""
|
|
92
|
+
Upload experiment results/logs to Hugging Face Hub.
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
results_path: Path to local results file (JSON, CSV, etc.)
|
|
96
|
+
repo_id: Hugging Face repository ID (e.g., "username/repo-name")
|
|
97
|
+
path_in_repo: Path within the repository. If None, uses filename.
|
|
98
|
+
commit_message: Custom commit message. Auto-generated if None.
|
|
99
|
+
private: Whether to make the repository private.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
URL of the uploaded file.
|
|
103
|
+
|
|
104
|
+
Raises:
|
|
105
|
+
HuggingFaceHubError: If upload fails or file not found.
|
|
106
|
+
FileNotFoundError: If results_path doesn't exist.
|
|
107
|
+
|
|
108
|
+
Example:
|
|
109
|
+
>>> url = upload_experiment_logs(
|
|
110
|
+
... "experiments/results.json",
|
|
111
|
+
... repo_id="microsoft/cmvk-benchmark-data"
|
|
112
|
+
... )
|
|
113
|
+
>>> print(f"Uploaded to: {url}")
|
|
114
|
+
"""
|
|
115
|
+
from huggingface_hub import create_repo
|
|
116
|
+
|
|
117
|
+
results_path = Path(results_path)
|
|
118
|
+
if not results_path.exists():
|
|
119
|
+
raise FileNotFoundError(f"Results file not found: {results_path}")
|
|
120
|
+
|
|
121
|
+
api = _get_api()
|
|
122
|
+
|
|
123
|
+
# Create repo if needed
|
|
124
|
+
try:
|
|
125
|
+
create_repo(
|
|
126
|
+
repo_id,
|
|
127
|
+
repo_type=DEFAULT_REPO_TYPE,
|
|
128
|
+
private=private,
|
|
129
|
+
exist_ok=True,
|
|
130
|
+
)
|
|
131
|
+
except Exception as e:
|
|
132
|
+
logger.debug(f"Repository creation skipped: {e}")
|
|
133
|
+
|
|
134
|
+
# Determine path in repo
|
|
135
|
+
if path_in_repo is None:
|
|
136
|
+
path_in_repo = f"results/{results_path.name}"
|
|
137
|
+
|
|
138
|
+
# Auto-generate commit message
|
|
139
|
+
if commit_message is None:
|
|
140
|
+
commit_message = f"Upload experiment results: {results_path.name}"
|
|
141
|
+
|
|
142
|
+
try:
|
|
143
|
+
url: str = api.upload_file(
|
|
144
|
+
path_or_fileobj=str(results_path),
|
|
145
|
+
path_in_repo=path_in_repo,
|
|
146
|
+
repo_id=repo_id,
|
|
147
|
+
repo_type=DEFAULT_REPO_TYPE,
|
|
148
|
+
commit_message=commit_message,
|
|
149
|
+
)
|
|
150
|
+
logger.info(f"Uploaded {results_path.name} to {url}")
|
|
151
|
+
return url
|
|
152
|
+
except Exception as e:
|
|
153
|
+
raise HuggingFaceHubError(f"Failed to upload {results_path}: {e}") from e
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def upload_traces(
|
|
157
|
+
trace_dir: str | Path,
|
|
158
|
+
repo_id: str = DEFAULT_REPO_ID,
|
|
159
|
+
max_files: int = 100,
|
|
160
|
+
) -> list[str]:
|
|
161
|
+
"""
|
|
162
|
+
Upload execution traces directory to Hugging Face Hub.
|
|
163
|
+
|
|
164
|
+
Args:
|
|
165
|
+
trace_dir: Directory containing trace JSON files.
|
|
166
|
+
repo_id: Hugging Face repository ID.
|
|
167
|
+
max_files: Maximum number of files to upload.
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
List of uploaded file URLs.
|
|
171
|
+
|
|
172
|
+
Example:
|
|
173
|
+
>>> urls = upload_traces("logs/traces/")
|
|
174
|
+
>>> print(f"Uploaded {len(urls)} trace files")
|
|
175
|
+
"""
|
|
176
|
+
trace_path = Path(trace_dir)
|
|
177
|
+
if not trace_path.exists():
|
|
178
|
+
raise FileNotFoundError(f"Trace directory not found: {trace_path}")
|
|
179
|
+
|
|
180
|
+
api = _get_api()
|
|
181
|
+
trace_files = sorted(trace_path.glob("*.json"))[:max_files]
|
|
182
|
+
|
|
183
|
+
urls = []
|
|
184
|
+
for trace_file in trace_files:
|
|
185
|
+
try:
|
|
186
|
+
url = api.upload_file(
|
|
187
|
+
path_or_fileobj=str(trace_file),
|
|
188
|
+
path_in_repo=f"traces/{trace_file.name}",
|
|
189
|
+
repo_id=repo_id,
|
|
190
|
+
repo_type=DEFAULT_REPO_TYPE,
|
|
191
|
+
commit_message=f"Upload trace: {trace_file.name}",
|
|
192
|
+
)
|
|
193
|
+
urls.append(url)
|
|
194
|
+
except Exception as e:
|
|
195
|
+
logger.warning(f"Failed to upload {trace_file.name}: {e}")
|
|
196
|
+
|
|
197
|
+
logger.info(f"Uploaded {len(urls)}/{len(trace_files)} trace files")
|
|
198
|
+
return urls
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def download_dataset(
|
|
202
|
+
repo_id: str = DEFAULT_REPO_ID,
|
|
203
|
+
filename: str = "datasets/humaneval_50.json",
|
|
204
|
+
local_path: str | Path = "experiments/datasets/",
|
|
205
|
+
revision: str = "main",
|
|
206
|
+
) -> Path:
|
|
207
|
+
"""
|
|
208
|
+
Download a dataset file from Hugging Face Hub.
|
|
209
|
+
|
|
210
|
+
Args:
|
|
211
|
+
repo_id: Hugging Face repository ID.
|
|
212
|
+
filename: Path to file within the repository.
|
|
213
|
+
local_path: Local directory to save the file.
|
|
214
|
+
revision: Git revision (branch, tag, or commit).
|
|
215
|
+
|
|
216
|
+
Returns:
|
|
217
|
+
Path to the downloaded file.
|
|
218
|
+
|
|
219
|
+
Example:
|
|
220
|
+
>>> path = download_dataset(
|
|
221
|
+
... filename="datasets/humaneval_50.json",
|
|
222
|
+
... local_path="experiments/datasets/"
|
|
223
|
+
... )
|
|
224
|
+
>>> with open(path) as f:
|
|
225
|
+
... data = json.load(f)
|
|
226
|
+
"""
|
|
227
|
+
from huggingface_hub import hf_hub_download
|
|
228
|
+
|
|
229
|
+
local_path = Path(local_path)
|
|
230
|
+
local_path.mkdir(parents=True, exist_ok=True)
|
|
231
|
+
|
|
232
|
+
try:
|
|
233
|
+
downloaded = hf_hub_download(
|
|
234
|
+
repo_id=repo_id,
|
|
235
|
+
filename=filename,
|
|
236
|
+
repo_type=DEFAULT_REPO_TYPE,
|
|
237
|
+
revision=revision,
|
|
238
|
+
local_dir=str(local_path),
|
|
239
|
+
)
|
|
240
|
+
result_path = Path(downloaded)
|
|
241
|
+
logger.info(f"Downloaded {filename} to {result_path}")
|
|
242
|
+
return result_path
|
|
243
|
+
except Exception as e:
|
|
244
|
+
raise HuggingFaceHubError(f"Failed to download {filename}: {e}") from e
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def upload_verification_dataset(
|
|
248
|
+
data: list[dict[str, Any]],
|
|
249
|
+
dataset_name: str,
|
|
250
|
+
repo_id: str = DEFAULT_REPO_ID,
|
|
251
|
+
description: str | None = None,
|
|
252
|
+
) -> str:
|
|
253
|
+
"""
|
|
254
|
+
Upload a verification dataset (list of problems/results) to HF Hub.
|
|
255
|
+
|
|
256
|
+
Args:
|
|
257
|
+
data: List of problem dictionaries with verification results.
|
|
258
|
+
dataset_name: Name for the dataset file.
|
|
259
|
+
repo_id: Hugging Face repository ID.
|
|
260
|
+
description: Optional description to include in metadata.
|
|
261
|
+
|
|
262
|
+
Returns:
|
|
263
|
+
URL of the uploaded dataset.
|
|
264
|
+
|
|
265
|
+
Example:
|
|
266
|
+
>>> results = [
|
|
267
|
+
... {"task_id": "HE/1", "success": True, "drift_score": 0.15},
|
|
268
|
+
... {"task_id": "HE/2", "success": False, "drift_score": 0.89},
|
|
269
|
+
... ]
|
|
270
|
+
>>> upload_verification_dataset(results, "humaneval_run_001")
|
|
271
|
+
"""
|
|
272
|
+
import tempfile
|
|
273
|
+
from datetime import datetime
|
|
274
|
+
|
|
275
|
+
# Create metadata wrapper
|
|
276
|
+
dataset = {
|
|
277
|
+
"name": dataset_name,
|
|
278
|
+
"created_at": datetime.now().isoformat(),
|
|
279
|
+
"description": description or f"CMVK verification dataset: {dataset_name}",
|
|
280
|
+
"count": len(data),
|
|
281
|
+
"data": data,
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
# Write to temp file and upload
|
|
285
|
+
with tempfile.NamedTemporaryFile(
|
|
286
|
+
mode="w",
|
|
287
|
+
suffix=".json",
|
|
288
|
+
delete=False,
|
|
289
|
+
) as f:
|
|
290
|
+
json.dump(dataset, f, indent=2)
|
|
291
|
+
temp_path = Path(f.name)
|
|
292
|
+
|
|
293
|
+
try:
|
|
294
|
+
return upload_experiment_logs(
|
|
295
|
+
temp_path,
|
|
296
|
+
repo_id=repo_id,
|
|
297
|
+
path_in_repo=f"datasets/{dataset_name}.json",
|
|
298
|
+
commit_message=f"Upload verification dataset: {dataset_name}",
|
|
299
|
+
)
|
|
300
|
+
finally:
|
|
301
|
+
temp_path.unlink(missing_ok=True)
|