OpenTelemetry-based Python SDK for AI agent observability and control
Project description
Value Python SDK
OpenTelemetry-based Python SDK for AI agent observability and control.
Installation
Basic Installation
Install the core SDK without auto-instrumentation dependencies:
pip install value-python
With Google GenAI Auto-Instrumentation
Install with Google Generative AI (Gemini) auto-instrumentation support:
pip install value-python[genai]
With LangChain Auto-Instrumentation
Install with LangChain auto-instrumentation support:
pip install value-python[langchain]
With All Auto-Instrumentation Libraries
Install with all supported auto-instrumentation libraries:
pip install value-python[all]
Multiple Extras
You can also install multiple extras:
pip install value-python[genai,langchain]
Supported Platforms
- Python: 3.9, 3.10, 3.11, 3.12, 3.13
- Operating Systems: Linux, macOS, Windows
Quick Start
Basic Usage
import asyncio
from value import initialize_async
async def main():
client = await initialize_async()
async def process_data(data: str) -> str:
print(f"Processing data: {data}")
await asyncio.sleep(0.5)
result = data.upper()
with client.action_context(user_id="user123", anonymous_id="anon456") as ctx:
ctx.send(
action_name="transform_data",
**{"value.action.description": f"Transformed data from {len(data)} to {len(result)} characters"}
)
return result
result = await process_data("hello async world")
print(f"Result: {result}")
asyncio.run(main())
Synchronous Usage
from value import initialize_sync
client = initialize_sync()
with client.action_context(user_id="user123") as ctx:
# Your code here
ctx.send(action_name="my_action", **{"custom.attribute": "value"})
Auto-Instrumentation
Enable automatic tracing for supported AI libraries:
from value import initialize_sync, auto_instrument
# Initialize the client
client = initialize_sync()
# Auto-instrument specific libraries
auto_instrument(["gemini", "langchain"])
# Or auto-instrument all available libraries
auto_instrument()
Google GenAI Example
from value import initialize_sync, auto_instrument
from google import genai
# Initialize Value client and auto-instrument
client = initialize_sync()
auto_instrument(["gemini"])
# Use Gemini as usual - traces are automatically captured
gemini_client = genai.Client(api_key="your-api-key")
response = gemini_client.models.generate_content(
model="gemini-2.5-flash",
contents=["Write a poem about tracing"]
)
print(response.text)
Configuration
Configure the SDK using environment variables:
| Variable | Description | Default |
|---|---|---|
VALUE_AGENT_SECRET |
Agent authentication secret | Required |
VALUE_OTEL_ENDPOINT |
OpenTelemetry collector endpoint | http://localhost:4317 |
VALUE_BACKEND_URL |
Value Control Plane backend URL | Required |
VALUE_SERVICE_NAME |
Service name for OpenTelemetry resource | value-control-agent |
VALUE_CONSOLE_EXPORT |
Enable console span exporter for debugging | false |
Supported Auto-Instrumentation Libraries
| Library | Extra | Instrumentor |
|---|---|---|
| Google Generative AI (Gemini) | genai |
opentelemetry-instrumentation-google-generativeai |
| LangChain | langchain |
opentelemetry-instrumentation-langchain |
API Reference
Core Functions
initialize_sync()- Initialize a synchronous Value clientinitialize_async()- Initialize an asynchronous Value clientauto_instrument(libraries=None)- Enable auto-instrumentation for specified librariesuninstrument(libraries=None)- Disable auto-instrumentationget_supported_libraries()- Get list of supported library namesis_library_available(library)- Check if a library's instrumentation is installed
Client Methods
action_context(user_id=None, anonymous_id=None)- Create a context for sending actionsctx.send(action_name, **attributes)- Send an action with custom attributes
Development
Setup
# Clone the repository
git clone https://github.com/ValmiIO/value-python.git
cd value-python
# Install dependencies
poetry install
# Install with all extras for development
poetry install --extras all
Running Tests
# Run tests
poetry run pytest
# Run tests with coverage
poetry run pytest --cov=value --cov-report=html
# Run specific test file
poetry run pytest tests/test_client.py
Code Quality
# Format code
poetry run black src/ tests/
# Lint code
poetry run ruff check src/ tests/
# Type check
poetry run mypy src/
Publishing
The package is automatically published to PyPI when a new release is created on GitHub.
Manual Publishing
# Build the package
poetry build
# Publish to TestPyPI (for testing)
poetry publish -r testpypi
# Publish to PyPI
poetry publish
License
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please read our Contributing Guide for details.
Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file value_python-0.1.0.tar.gz.
File metadata
- Download URL: value_python-0.1.0.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.10.17 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99aeb5a5394474f3fe5bc9c0b0a0e858f503b4753e806bb0d781548575ee2d89
|
|
| MD5 |
ec4d00116ce3368721a5e64237dbdd63
|
|
| BLAKE2b-256 |
d2db40f4f703c04dd1f4050ffb0e77a0e69781904bca4ac2c4856deaee3c4768
|
File details
Details for the file value_python-0.1.0-py3-none-any.whl.
File metadata
- Download URL: value_python-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.10.17 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2501623800f4484d54734576848c95d56d4ddd31d8b2f1325c15e6712df2e55b
|
|
| MD5 |
21b6c913339783dc495b78d6ee96d466
|
|
| BLAKE2b-256 |
be732d3d46b2e1c7695da6db0c934517edf5ea86c1a04cd383207c6b61c43eff
|