mantisdk 0.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.
Potentially problematic release.
This version of mantisdk might be problematic. Click here for more details.
- mantisdk/__init__.py +22 -0
- mantisdk/adapter/__init__.py +15 -0
- mantisdk/adapter/base.py +94 -0
- mantisdk/adapter/messages.py +270 -0
- mantisdk/adapter/triplet.py +1028 -0
- mantisdk/algorithm/__init__.py +39 -0
- mantisdk/algorithm/apo/__init__.py +5 -0
- mantisdk/algorithm/apo/apo.py +889 -0
- mantisdk/algorithm/apo/prompts/apply_edit_variant01.poml +22 -0
- mantisdk/algorithm/apo/prompts/apply_edit_variant02.poml +18 -0
- mantisdk/algorithm/apo/prompts/text_gradient_variant01.poml +18 -0
- mantisdk/algorithm/apo/prompts/text_gradient_variant02.poml +16 -0
- mantisdk/algorithm/apo/prompts/text_gradient_variant03.poml +107 -0
- mantisdk/algorithm/base.py +162 -0
- mantisdk/algorithm/decorator.py +264 -0
- mantisdk/algorithm/fast.py +250 -0
- mantisdk/algorithm/gepa/__init__.py +59 -0
- mantisdk/algorithm/gepa/adapter.py +459 -0
- mantisdk/algorithm/gepa/gepa.py +364 -0
- mantisdk/algorithm/gepa/lib/__init__.py +18 -0
- mantisdk/algorithm/gepa/lib/adapters/README.md +12 -0
- mantisdk/algorithm/gepa/lib/adapters/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/adapters/anymaths_adapter/README.md +341 -0
- mantisdk/algorithm/gepa/lib/adapters/anymaths_adapter/__init__.py +1 -0
- mantisdk/algorithm/gepa/lib/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
- mantisdk/algorithm/gepa/lib/adapters/anymaths_adapter/requirements.txt +1 -0
- mantisdk/algorithm/gepa/lib/adapters/default_adapter/README.md +0 -0
- mantisdk/algorithm/gepa/lib/adapters/default_adapter/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/adapters/default_adapter/default_adapter.py +209 -0
- mantisdk/algorithm/gepa/lib/adapters/dspy_adapter/README.md +7 -0
- mantisdk/algorithm/gepa/lib/adapters/dspy_adapter/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/adapters/dspy_adapter/dspy_adapter.py +307 -0
- mantisdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/README.md +99 -0
- mantisdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
- mantisdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/full_program_adapter.py +266 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/GEPA_RAG.md +621 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/__init__.py +56 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
- mantisdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
- mantisdk/algorithm/gepa/lib/adapters/mcp_adapter/README.md +552 -0
- mantisdk/algorithm/gepa/lib/adapters/mcp_adapter/__init__.py +37 -0
- mantisdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_adapter.py +705 -0
- mantisdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_client.py +364 -0
- mantisdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/README.md +9 -0
- mantisdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
- mantisdk/algorithm/gepa/lib/api.py +375 -0
- mantisdk/algorithm/gepa/lib/core/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/core/adapter.py +180 -0
- mantisdk/algorithm/gepa/lib/core/data_loader.py +74 -0
- mantisdk/algorithm/gepa/lib/core/engine.py +356 -0
- mantisdk/algorithm/gepa/lib/core/result.py +233 -0
- mantisdk/algorithm/gepa/lib/core/state.py +636 -0
- mantisdk/algorithm/gepa/lib/examples/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/examples/aime.py +24 -0
- mantisdk/algorithm/gepa/lib/examples/anymaths-bench/eval_default.py +111 -0
- mantisdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/instruction_prompt.txt +9 -0
- mantisdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/optimal_prompt.txt +24 -0
- mantisdk/algorithm/gepa/lib/examples/anymaths-bench/train_anymaths.py +177 -0
- mantisdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/arc_agi.ipynb +25705 -0
- mantisdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/example.ipynb +348 -0
- mantisdk/algorithm/gepa/lib/examples/mcp_adapter/__init__.py +4 -0
- mantisdk/algorithm/gepa/lib/examples/mcp_adapter/mcp_optimization_example.py +455 -0
- mantisdk/algorithm/gepa/lib/examples/rag_adapter/RAG_GUIDE.md +613 -0
- mantisdk/algorithm/gepa/lib/examples/rag_adapter/__init__.py +9 -0
- mantisdk/algorithm/gepa/lib/examples/rag_adapter/rag_optimization.py +824 -0
- mantisdk/algorithm/gepa/lib/examples/rag_adapter/requirements-rag.txt +29 -0
- mantisdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/instruction_prompt.txt +16 -0
- mantisdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/terminus.txt +9 -0
- mantisdk/algorithm/gepa/lib/examples/terminal-bench/train_terminus.py +161 -0
- mantisdk/algorithm/gepa/lib/gepa_utils.py +117 -0
- mantisdk/algorithm/gepa/lib/logging/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/logging/experiment_tracker.py +187 -0
- mantisdk/algorithm/gepa/lib/logging/logger.py +75 -0
- mantisdk/algorithm/gepa/lib/logging/utils.py +103 -0
- mantisdk/algorithm/gepa/lib/proposer/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/proposer/base.py +31 -0
- mantisdk/algorithm/gepa/lib/proposer/merge.py +357 -0
- mantisdk/algorithm/gepa/lib/proposer/reflective_mutation/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/proposer/reflective_mutation/base.py +49 -0
- mantisdk/algorithm/gepa/lib/proposer/reflective_mutation/reflective_mutation.py +176 -0
- mantisdk/algorithm/gepa/lib/py.typed +0 -0
- mantisdk/algorithm/gepa/lib/strategies/__init__.py +0 -0
- mantisdk/algorithm/gepa/lib/strategies/batch_sampler.py +77 -0
- mantisdk/algorithm/gepa/lib/strategies/candidate_selector.py +50 -0
- mantisdk/algorithm/gepa/lib/strategies/component_selector.py +36 -0
- mantisdk/algorithm/gepa/lib/strategies/eval_policy.py +64 -0
- mantisdk/algorithm/gepa/lib/strategies/instruction_proposal.py +127 -0
- mantisdk/algorithm/gepa/lib/utils/__init__.py +10 -0
- mantisdk/algorithm/gepa/lib/utils/stop_condition.py +196 -0
- mantisdk/algorithm/gepa/tracing.py +105 -0
- mantisdk/algorithm/utils.py +177 -0
- mantisdk/algorithm/verl/__init__.py +5 -0
- mantisdk/algorithm/verl/interface.py +202 -0
- mantisdk/cli/__init__.py +56 -0
- mantisdk/cli/prometheus.py +115 -0
- mantisdk/cli/store.py +131 -0
- mantisdk/cli/vllm.py +29 -0
- mantisdk/client.py +408 -0
- mantisdk/config.py +348 -0
- mantisdk/emitter/__init__.py +43 -0
- mantisdk/emitter/annotation.py +370 -0
- mantisdk/emitter/exception.py +54 -0
- mantisdk/emitter/message.py +61 -0
- mantisdk/emitter/object.py +117 -0
- mantisdk/emitter/reward.py +320 -0
- mantisdk/env_var.py +156 -0
- mantisdk/execution/__init__.py +15 -0
- mantisdk/execution/base.py +64 -0
- mantisdk/execution/client_server.py +443 -0
- mantisdk/execution/events.py +69 -0
- mantisdk/execution/inter_process.py +16 -0
- mantisdk/execution/shared_memory.py +282 -0
- mantisdk/instrumentation/__init__.py +119 -0
- mantisdk/instrumentation/agentops.py +314 -0
- mantisdk/instrumentation/agentops_langchain.py +45 -0
- mantisdk/instrumentation/litellm.py +83 -0
- mantisdk/instrumentation/vllm.py +81 -0
- mantisdk/instrumentation/weave.py +500 -0
- mantisdk/litagent/__init__.py +11 -0
- mantisdk/litagent/decorator.py +536 -0
- mantisdk/litagent/litagent.py +252 -0
- mantisdk/llm_proxy.py +1890 -0
- mantisdk/logging.py +370 -0
- mantisdk/reward.py +7 -0
- mantisdk/runner/__init__.py +11 -0
- mantisdk/runner/agent.py +845 -0
- mantisdk/runner/base.py +182 -0
- mantisdk/runner/legacy.py +309 -0
- mantisdk/semconv.py +170 -0
- mantisdk/server.py +401 -0
- mantisdk/store/__init__.py +23 -0
- mantisdk/store/base.py +897 -0
- mantisdk/store/client_server.py +2092 -0
- mantisdk/store/collection/__init__.py +30 -0
- mantisdk/store/collection/base.py +587 -0
- mantisdk/store/collection/memory.py +970 -0
- mantisdk/store/collection/mongo.py +1412 -0
- mantisdk/store/collection_based.py +1823 -0
- mantisdk/store/insight.py +648 -0
- mantisdk/store/listener.py +58 -0
- mantisdk/store/memory.py +396 -0
- mantisdk/store/mongo.py +165 -0
- mantisdk/store/sqlite.py +3 -0
- mantisdk/store/threading.py +357 -0
- mantisdk/store/utils.py +142 -0
- mantisdk/tracer/__init__.py +16 -0
- mantisdk/tracer/agentops.py +242 -0
- mantisdk/tracer/base.py +287 -0
- mantisdk/tracer/dummy.py +106 -0
- mantisdk/tracer/otel.py +555 -0
- mantisdk/tracer/weave.py +677 -0
- mantisdk/trainer/__init__.py +6 -0
- mantisdk/trainer/init_utils.py +263 -0
- mantisdk/trainer/legacy.py +367 -0
- mantisdk/trainer/registry.py +12 -0
- mantisdk/trainer/trainer.py +618 -0
- mantisdk/types/__init__.py +6 -0
- mantisdk/types/core.py +553 -0
- mantisdk/types/resources.py +204 -0
- mantisdk/types/tracer.py +515 -0
- mantisdk/types/tracing.py +218 -0
- mantisdk/utils/__init__.py +1 -0
- mantisdk/utils/id.py +18 -0
- mantisdk/utils/metrics.py +1025 -0
- mantisdk/utils/otel.py +578 -0
- mantisdk/utils/otlp.py +536 -0
- mantisdk/utils/server_launcher.py +1045 -0
- mantisdk/utils/system_snapshot.py +81 -0
- mantisdk/verl/__init__.py +8 -0
- mantisdk/verl/__main__.py +6 -0
- mantisdk/verl/async_server.py +46 -0
- mantisdk/verl/config.yaml +27 -0
- mantisdk/verl/daemon.py +1154 -0
- mantisdk/verl/dataset.py +44 -0
- mantisdk/verl/entrypoint.py +248 -0
- mantisdk/verl/trainer.py +549 -0
- mantisdk-0.1.0.dist-info/METADATA +119 -0
- mantisdk-0.1.0.dist-info/RECORD +190 -0
- mantisdk-0.1.0.dist-info/WHEEL +4 -0
- mantisdk-0.1.0.dist-info/entry_points.txt +2 -0
- mantisdk-0.1.0.dist-info/licenses/LICENSE +19 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import platform
|
|
6
|
+
import socket
|
|
7
|
+
from contextlib import suppress
|
|
8
|
+
from datetime import datetime
|
|
9
|
+
from typing import Any, Dict, List, cast
|
|
10
|
+
|
|
11
|
+
import psutil
|
|
12
|
+
from gpustat import GPUStat, GPUStatCollection
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def system_snapshot(include_gpu: bool = False) -> Dict[str, Any]:
|
|
16
|
+
"""Capture a snapshot of the system's hardware and software information.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
include_gpu: Whether to include GPU information.
|
|
20
|
+
|
|
21
|
+
Returns:
|
|
22
|
+
A dictionary containing the system's hardware and software information.
|
|
23
|
+
"""
|
|
24
|
+
# CPU
|
|
25
|
+
cpu = {
|
|
26
|
+
"cpu_name": platform.processor(),
|
|
27
|
+
"cpu_cores": psutil.cpu_count(logical=False),
|
|
28
|
+
"cpu_threads": psutil.cpu_count(logical=True),
|
|
29
|
+
"cpu_usage_pct": psutil.cpu_percent(0.0),
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
# Memory
|
|
33
|
+
vm = psutil.virtual_memory()
|
|
34
|
+
mem = {
|
|
35
|
+
"mem_used_gb": round(vm.used / (2**30), 2),
|
|
36
|
+
"mem_total_gb": round(vm.total / (2**30), 2),
|
|
37
|
+
"mem_pct": vm.percent,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# Disk
|
|
41
|
+
du = psutil.disk_usage("/")
|
|
42
|
+
disk = {
|
|
43
|
+
"disk_used_gb": round(du.used / (2**30), 2),
|
|
44
|
+
"disk_total_gb": round(du.total / (2**30), 2),
|
|
45
|
+
"disk_pct": du.percent,
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
# GPU (only query if explicitly requested)
|
|
49
|
+
gpus: List[Dict[str, Any]] = []
|
|
50
|
+
if include_gpu:
|
|
51
|
+
with suppress(Exception):
|
|
52
|
+
for g in GPUStatCollection.new_query().gpus: # type: ignore
|
|
53
|
+
g = cast(GPUStat, g)
|
|
54
|
+
gpus.append(
|
|
55
|
+
{
|
|
56
|
+
"gpu": g.name, # type: ignore
|
|
57
|
+
"util_pct": g.utilization,
|
|
58
|
+
"mem_used_mb": g.memory_used,
|
|
59
|
+
"mem_total_mb": g.memory_total,
|
|
60
|
+
"temp_c": g.temperature,
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Network
|
|
65
|
+
net = psutil.net_io_counters()
|
|
66
|
+
netinfo = {
|
|
67
|
+
"bytes_sent_mb": round(net.bytes_sent / (2**20), 2),
|
|
68
|
+
"bytes_recv_mb": round(net.bytes_recv / (2**20), 2),
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# OS / meta
|
|
72
|
+
return {
|
|
73
|
+
"timestamp": datetime.now().isoformat(timespec="seconds"),
|
|
74
|
+
"host": socket.gethostname(),
|
|
75
|
+
"os": platform.platform(),
|
|
76
|
+
**cpu,
|
|
77
|
+
**mem,
|
|
78
|
+
**disk,
|
|
79
|
+
**netinfo,
|
|
80
|
+
**({"gpus": gpus} if include_gpu else {}),
|
|
81
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
# type: ignore
|
|
4
|
+
|
|
5
|
+
from copy import deepcopy
|
|
6
|
+
|
|
7
|
+
import ray
|
|
8
|
+
from starlette.requests import Request
|
|
9
|
+
from starlette.responses import JSONResponse, StreamingResponse
|
|
10
|
+
from verl.workers.rollout.vllm_rollout.vllm_async_server import AsyncvLLMServer
|
|
11
|
+
from vllm.entrypoints.openai.protocol import ChatCompletionRequest, ErrorResponse
|
|
12
|
+
|
|
13
|
+
from mantisdk.instrumentation.vllm import ChatCompletionResponsePatched, instrument_vllm
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _unwrap_ray_remote(cls):
|
|
17
|
+
if hasattr(cls, "__ray_actor_class__"):
|
|
18
|
+
cls = cls.__ray_actor_class__
|
|
19
|
+
return cls
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@ray.remote(num_cpus=1)
|
|
23
|
+
class PatchedvLLMServer(_unwrap_ray_remote(AsyncvLLMServer)):
|
|
24
|
+
|
|
25
|
+
def __init__(self, *args, **kwargs):
|
|
26
|
+
instrument_vllm()
|
|
27
|
+
super().__init__(*args, **kwargs)
|
|
28
|
+
|
|
29
|
+
self.config = deepcopy(self.config)
|
|
30
|
+
self.config.rollout.multi_turn.tool_config_path = "/dev/null"
|
|
31
|
+
|
|
32
|
+
async def chat_completion(self, raw_request: Request):
|
|
33
|
+
"""OpenAI-compatible HTTP endpoint.
|
|
34
|
+
|
|
35
|
+
API reference: [OpenAI-compatible server documentation](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html)
|
|
36
|
+
"""
|
|
37
|
+
request_json = await raw_request.json()
|
|
38
|
+
request = ChatCompletionRequest(**request_json)
|
|
39
|
+
generator = await self.openai_serving_chat.create_chat_completion(request, raw_request)
|
|
40
|
+
|
|
41
|
+
if isinstance(generator, ErrorResponse):
|
|
42
|
+
return JSONResponse(content=generator.model_dump(), status_code=generator.code)
|
|
43
|
+
if request.stream:
|
|
44
|
+
return StreamingResponse(content=generator, media_type="text/event-stream")
|
|
45
|
+
else:
|
|
46
|
+
return JSONResponse(content=generator.model_dump())
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
hydra:
|
|
2
|
+
searchpath:
|
|
3
|
+
- pkg://verl/trainer/config
|
|
4
|
+
|
|
5
|
+
defaults:
|
|
6
|
+
- ppo_trainer
|
|
7
|
+
- _self_
|
|
8
|
+
|
|
9
|
+
mantisdk:
|
|
10
|
+
port: 9999
|
|
11
|
+
trace_aggregator:
|
|
12
|
+
level: transition # transition or trajectory, docs refer to https://mantisdk.github.io/posts/trajectory_level_aggregation/
|
|
13
|
+
trajectory_max_prompt_length: 2048 # supported in trajectory level aggregation, suggest to set as maximum length for the prompt in first turn
|
|
14
|
+
trajectory_max_response_length: 8192 # supported in trajectory level aggregation, suggest to set as maximum length for the cumulative agent responses in the full trajectory, i.e., n_turns * (max_response_length + max_prompt_length)
|
|
15
|
+
debug: False # supported in trajectory level aggregation, enable to diagnose trace merging failures
|
|
16
|
+
mismatch_log_dir: ./mismatch_cases # supported in trajectory level aggregation with debug=True, directory to store logs of mismatch cases
|
|
17
|
+
|
|
18
|
+
data:
|
|
19
|
+
filter_overlong_prompts: false
|
|
20
|
+
|
|
21
|
+
actor_rollout_ref:
|
|
22
|
+
rollout:
|
|
23
|
+
mode: async
|
|
24
|
+
agent:
|
|
25
|
+
custom_async_server:
|
|
26
|
+
path: pkg://mantisdk.verl.async_server
|
|
27
|
+
name: PatchedvLLMServer
|