Metadata-Version: 2.1
Name: xpuls-mlmonitor
Version: 0.0.7
Summary: Automated telemetry and monitoring for ML & LLM Frameworks
Home-page: https://github.com/xpuls-labs/xpuls-mlmonitor-python
Author: Sai Sharan Tangeda
Author-email: saisarantangeda@gmail.com
License: Apache License 2.0
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: opentelemetry-instrumentation-requests
Requires-Dist: opentelemetry-api
Requires-Dist: opentelemetry-sdk
Requires-Dist: prometheus-client
Requires-Dist: pydantic
Requires-Dist: langchain
Provides-Extra: all
Requires-Dist: opentelemetry-instrumentation-requests ; extra == 'all'
Requires-Dist: opentelemetry-api ; extra == 'all'
Requires-Dist: opentelemetry-sdk ; extra == 'all'
Requires-Dist: prometheus-client ; extra == 'all'
Requires-Dist: pydantic ; extra == 'all'
Requires-Dist: langchain ; extra == 'all'
Provides-Extra: langchain
Requires-Dist: opentelemetry-instrumentation-requests ; extra == 'langchain'
Requires-Dist: opentelemetry-api ; extra == 'langchain'
Requires-Dist: opentelemetry-sdk ; extra == 'langchain'
Requires-Dist: prometheus-client ; extra == 'langchain'
Requires-Dist: pydantic ; extra == 'langchain'
Requires-Dist: langchain ; extra == 'langchain'

# MLMonitor - Automatic Instrumentation for ML Frameworks


## Roadmap

- Prometheus Support for major ML & LLM frameworks
  - Langchain - Done
  - LLamaIndex - Coming Soon
  - SKLearn - Coming Soon
  - transformers - Coming Soon
  - pytorch - Coming Soon

## Installation

1. Install from PyPI
```shell
pip install xpuls-mlmonitor
```

## Usage Example
```python
from xpuls.mlmonitor.langchain.instrument import LangchainTelemetry

# Add default labels that will be added to all captured metrics
default_labels = {"service": "ml-project-service", "k8s_cluster": "app0", "namespace": "dev", "agent_name": "fallback_value"}

# Enable the auto-telemetry
LangchainTelemetry(default_labels=default_labels).auto_instrument()

## [Optional] Override labels for scope of decorator [Useful if you have multiple scopes where you need to override the default label values]
@TelemetryOverrideLabels(agent_name="chat_agent_alpha")
def get_response_using_agent_alpha(prompt, query):
    agent = initialize_agent(llm=chat_model,
                             verbose=True,
                             agent=CONVERSATIONAL_REACT_DESCRIPTION,
                             memory=memory)

    res = agent.run(f"{prompt}. \n Query: {query}")
```

## Complete Usage Guides

- [Langchain Framework](./docs/langchain.md) + [Grafana Template](./dashboards/grafana_langchain.json)

## License

This project is licensed under the Apache License 2.0. See the LICENSE file for more details.


## Contributing

We welcome contributions to MLMonitor! If you're interested in contributing.

If you encounter any issues or have feature requests, please file an issue on our GitHub repository.
