feat: Add Openlayer Integration by viniciusdsmello · Pull Request #10699 · langflow-ai/langflow (original) (raw)

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

Walkthrough

This PR introduces OpenLayer integration to LangFlow's tracing system. Changes include a new OpenlayerTracer class handling trace creation and hierarchy construction, integration into the tracing service, dependency addition, documentation, and test updates.

Changes

Cohort / File(s) Summary
Documentation docs/docs/Develop/integrations-openlayer.mdx New documentation page describing OpenLayer integration prerequisites, environment variable configuration, flow tracing details, advanced configuration options (flow-specific pipelines, JSON mapping), configuration priority, disable instructions, and features.
Dependencies pyproject.toml Added openlayer>=0.8.1,<1.0.0 dependency.
Tracer Implementation src/backend/base/langflow/services/tracing/openlayer.py New OpenlayerTracer class providing initialization with flow-specific env var resolution, lazy SDK setup, trace creation via add_trace with LangFlow-to-OpenLayer type mapping, trace finalization via end_trace, hierarchy construction, LangChain callback integration, and data conversion utilities.
Service Integration src/backend/base/langflow/services/tracing/service.py Added `_get_openlayer_tracer()` helper and `_initialize_openlayer_tracer()` method; integrated OpenlayerTracer initialization into `start_tracers()` lifecycle.
Tests src/backend/tests/unit/services/tracing/test_tracing_service.py Patched `_get_openlayer_tracer` to return MockTracer; updated `test_start_end_tracers` to assert "openlayer" presence in trace_context.tracers.

Sequence Diagram(s)

sequenceDiagram participant Flow as LangFlow Flow participant Svc as Tracing Service participant OT as OpenlayerTracer participant SDK as OpenLayer SDK

Flow->>Svc: start_tracers(trace_context)
Svc->>OT: __init__(trace_name, trace_id, ...)
OT->>OT: _get_config() resolves api_key & pipeline_id

Note over OT: Configuration resolved,<br/>SDK setup deferred

Flow->>OT: add_trace(trace_id, inputs, vertex, ...)
OT->>OT: Convert LangFlow types to OpenLayer StepTypes
OT->>OT: Build step hierarchy from vertex
OT->>OT: Store in _openlayer_steps & traces

Flow->>OT: end_trace(trace_id, outputs, error, ...)
OT->>OT: Finalize step (timing, outputs, errors, logs)
OT->>OT: Clear context

Flow->>OT: end(inputs, outputs, error, ...)
OT->>OT: setup_openlayer() initializes SDK
OT->>OT: Build final trace hierarchy
OT->>SDK: Stream trace to inference pipeline
Note over SDK: Async processing
OT->>OT: Cleanup on success/error

Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

Pre-merge checks and finishing touches

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 3 warnings)

Check name Status Explanation Resolution
Test Coverage For New Implementations ❌ Error The PR introduces 400+ lines of OpenlayerTracer implementation with no dedicated unit tests and zero openlayer-specific tests in modified test files. Add comprehensive unit tests in test_openlayer.py covering initialization, trace creation, SDK context cleanup, type conversions, and error handling scenarios.
Docstring Coverage ⚠️ Warning Docstring coverage is 38.10% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Test Quality And Coverage ⚠️ Warning OpenlayerTracer implementation lacks comprehensive unit tests for initialization, configuration resolution, trace conversion, and error handling. Add comprehensive unit tests covering initialization, configuration tiers, add_trace/end_trace methods, SDK context cleanup, type mapping, and error handling.
Test File Naming And Structure ⚠️ Warning Pull request lacks dedicated test file for OpenlayerTracer class; existing tests only verify initialization in service, not the class methods, configuration logic, or error handling. Create test_openlayer.py with comprehensive coverage of OpenlayerTracer initialization, configuration resolution, public methods, SDK context cleanup, edge cases, and LangChain callback integration.

✅ Passed checks (3 passed)

Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding Openlayer integration to LangFlow. It is specific, directly related to the primary objective of the PR, and follows conventional commit style.
Excessive Mock Usage Warning ✅ Passed The pull request demonstrates appropriate use of mocks in its test suite with real state tracking logic rather than empty pass statements.

✨ Finishing Touches 🧪 Generate unit tests (beta)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.