Releases are organized in <major>.<minor>.<patch> style. A release is made
about every week around tuesday-thursday. Releases increment the minor version
number. Occasionally bug-fix releases occur after a weekly release. Those
increment only the patch number. No releases have yet made a major version
increment. Those are expected to be major releases that introduce a large number
of breaking changes.
Changes to the public API are governed by a deprecation process in three stages. In the warning period of no less than 6 weeks, the use of a deprecated package, module, or value will produce a warning but otherwise operate as expected. In the subsequent deprecated period of no less than 6 weeks, the use of that component will produce an error after the deprecation message. After these two periods, the deprecated capability will be completely removed.
!!! Info "Deprecation Process"
- 0-6 weeks: Deprecation warning
- 6-12 weeks: Deprecation message __and error__
- 12+ weeks: Removal
Changes that result in non-backwards compatible functionality are also reflected in the version numbering. In such cases, the appropriate level version change will occur at the introduction of the warning period.
The legacy stack-based instrumentation system is deprecated in favor of OpenTelemetry (OTEL). This includes:
_RecordingContextclass → Use OTEL-basedOtelRecordingContextInstrumentclass-based method wrapping → Use@instrumentdecorator fromtrulens.core.otel.instrument- Custom thread/async context tracking (
TP,ThreadPoolExecutor,tru_new_event_loop) → OTEL handles context propagation automatically
Some newer features like App.run(), App.input(), and
App.instrumented_invoke_main_method() only work with OTEL instrumentation.
| Deprecated | Replacement |
|---|---|
Tru() |
TruSession() |
TruCustomApp |
TruApp |
from trulens.apps.custom import instrument |
from trulens.apps.app import instrument |
Custom app_id parameter |
Use app_name and app_version |
TruSession.update_record() |
connector.db.insert_record() |
Use TruSession.App() instead of these deprecated methods:
TruSession.Basic()TruSession.Custom()TruSession.Virtual()TruSession.Chain()TruSession.Llama()TruSession.Rails()
| Deprecated | Replacement |
|---|---|
TruSession.run_dashboard() |
trulens.dashboard.run.run_dashboard() |
TruSession.start_dashboard() |
trulens.dashboard.run.run_dashboard() |
TruSession.stop_dashboard() |
trulens.dashboard.run.stop_dashboard() |
TruSession.find_unused_port() |
trulens.dashboard.run.find_unused_port() |
| Deprecated | Replacement |
|---|---|
model_agreement() |
GroundTruthAgreement(ground_truth, provider) |
qs_relevance() |
relevance() |
qs_relevance_with_cot_reasons() |
relevance_with_cot_reasons() |
summarization_with_cot_reasons() |
comprehensiveness_with_cot_reasons() |
Default provider in GroundTruthAgreement |
Specify provider explicitly |
validate_rating() |
Use try/catch with re_0_10_rating |
Select.context() |
- |
| Deprecated | Replacement |
|---|---|
Endpoint.run_me() |
Endpoint.run_in_pace() |
| Deprecated | Replacement |
|---|---|
TruChain.call_with_record() |
- |
TruChain.acall_with_record() |
- |
-
trulens_eval(removed): As of TruLens 1.0, thetrulens_evalpackage was deprecated in favor oftrulensand its modular packages. Thetrulens_evalpackage is no longer maintained. See trulens_eval migration for migration details. -
QS_RELEVANCE_*prompts (removed): UseANSWER_RELEVANCEorCONTEXT_RELEVANCEinstead.
Major new features may be introduced to TruLens first in the form of
experimental previews. Such features are indicated by the prefix experimental_
on parameters or the TruSession.experimental_{enable,disable}_feature method:
from trulens.core.session import TruSession
from trulens.core.experimental import Feature
session = TruSession()
session.experimental_enable_feature(Feature.SOME_FEATURE)While in development, experimental features may change in significant ways. Eventually experimental features get adopted or removed.
For removal, experimental features do not have a deprecation period and will produce "deprecated" errors instead of warnings.
For adoption, the feature will be integrated somewhere in the API without the
experimental_ prefix and use of that prefix/flag will instead raise an error
indicating where in the stable API that feature relocated.