Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

feat: Enhance Observability with ArizePhoenixTracer Integration #5058

Merged
merged 8 commits into from
Dec 5, 2024

Conversation

ialisaleh
Copy link
Contributor

This PR introduces the ArizePhoenixTracer to enhance LangFlow's observability by integrating with Arize and Phoenix tracing solutions. The tracer captures spans, logs, and metadata for workflows, providing detailed insights into execution. It supports gRPC and HTTP-based span processing, flow-specific tracing with attributes like flow_id, and error handling to ensure smooth operation even if tracing setup fails. The tracer is compatible with LangChain's Instrumentor and serializes inputs, outputs, and logs for seamless integration. This enhancement helps users monitor and debug workflows effectively while maintaining compatibility with existing LangFlow infrastructure.

Environment Variables
To enable tracing, users need to configure the following environment variables for Arize and Phoenix:

ARIZE_PHOENIX_PROJECT (optional): Specifies the project name for Arize/Phoenix integration.
ARIZE_PHOENIX_BATCH (optional): Enables batch processing for span submission.

Arize Configuration
ARIZE_API_KEY: API Key for Arize integration.
ARIZE_SPACE_ID: Space ID for Arize project.
ARIZE_COLLECTOR_ENDPOINT (optional): Defaults to https://otlp.arize.com.

Phoenix Configuration
PHOENIX_API_KEY: API Key for Phoenix integration.
PHOENIX_COLLECTOR_ENDPOINT (optional): Defaults to https://app.phoenix.arize.com.

@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. enhancement New feature or request labels Dec 4, 2024
@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Dec 4, 2024
Copy link

codspeed-hq bot commented Dec 4, 2024

CodSpeed Performance Report

Merging #5058 will degrade performances by 24.66%

Comparing ialisaleh:feat/arize-phoenix-tracer (9d926f0) with main (c1bd7c8)

Summary

⚡ 1 improvements
❌ 1 regressions
✅ 13 untouched benchmarks

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark main ialisaleh:feat/arize-phoenix-tracer Change
test_get_and_cache_all_types_dict 1,015.4 µs 903.5 µs +12.38%
test_successful_run_with_output_type_any 249.3 ms 331 ms -24.66%

@ogabrielluiz
Copy link
Contributor

This is awesome, @ialisaleh

Thank you. I'm so happy that we'll finally have an integration with Arize

@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Dec 4, 2024
@NadirJ NadirJ requested a review from italojohnny December 4, 2024 18:40
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Dec 5, 2024
@italojohnny italojohnny enabled auto-merge (squash) December 5, 2024 02:43
@italojohnny italojohnny disabled auto-merge December 5, 2024 13:37
@anovazzi1 anovazzi1 enabled auto-merge (squash) December 5, 2024 16:02
@anovazzi1 anovazzi1 merged commit 7c01b5a into langflow-ai:main Dec 5, 2024
25 checks passed
lucaseduoli pushed a commit that referenced this pull request Dec 5, 2024
* Added ArizePhoenixTracer

* [autofix.ci] apply automated fixes

* Fixed Ruff Style Check Errors

* add Arize icon

* Fixed Mypy Errors

* Refactor ArizeIcon component to use arrow function syntax

Co-authored-by: Jeff Carpenter <jeffrey.carpenter@datastax.com>
Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
lucaseduoli added a commit that referenced this pull request Dec 5, 2024
* Changed Advanced Settings to Controls and implemented DisplayName on shortcuts

* fix: validate 'streaming' vertex connections in graph (#5067)

* feat: Table Input for tools metadata (tool name and description) in component as tools  (#4961)

* ✨ (endpoints.py): Add support for tool_mode field in custom component update
🔧 (schemas.py): Add tool_mode field to UpdateCustomComponentRequest schema
♻️ (component.py): Refactor run_and_validate_update_outputs method to handle tool_mode field
🔧 (index.tsx): Add tool_mode property to NodeInputField component
🔧 (index.tsx): Refactor hasToolMode logic to use checkHasToolMode utility function
🔧 (mutate-template.ts): Add callback parameter to mutateTemplate function
🔧 (use-handle-new-value.tsx): Add tool_mode property to useHandleOnNewValue hook
🔧 (popover/index.tsx): Add console.log for placeholder, value, and id
🔧 (inputGlobalComponent/index.tsx): Add tool_mode property to InputGlobalComponent
🔧 (refreshParameterComponent/index.tsx): Add tool_mode property to RefreshParameterComponent
🔧 (use-post-template-value.ts): Add tool_mode parameter to usePostTemplateValue function
🔧 (nodeToolbarComponent/index.tsx): Add support for tool_mode functionality in NodeToolbarComponent
🔧 (reactflowUtils.ts): Add checkHasToolMode utility function to check for tool_mode field in template

* fix: Set default value for tool_mode in UpdateCustomComponentRequest schema

* adding table input in tool mode

adding table input

* Update component.py

update real-time refresh

* added dynamic tool description input

added dynamic tool description input

* [autofix.ci] apply automated fixes

* Update component.py

simplifying the tool mode logic

* Update component_tool.py

updated logic to be more readable

* Update component.py

* adding tool table schema as constant

---------

Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: update drag and drop test (#5048)

* refactor: Improve wait time for modal in drag and drop test

* ✨ (dragAndDrop.spec.ts): update file path to read collection.json from the correct location
🐛 (dragAndDrop.spec.ts): increase timeout for waiting for "uploaded successfully" text to prevent test failures

* ✨ (dragAndDrop.spec.ts): Add tests for drag and drop functionality to ensure users can drag and drop collections and flows without crashing the application
📝 (simulate-drag-and-drop.ts): Add utility function to simulate drag and drop events in tests for improved test coverage and functionality

* add debouncing time on file upload

* [autofix.ci] apply automated fixes

---------

Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: add hover state on folder button when moving flow to it (#4999)

* ✨ (index.tsx): Refactor SideBarFoldersButtonsComponent to improve code readability and maintainability. Add new functionalities such as drag and drop, folder hovering effects, and folder actions like upload, download, add, update, and delete. Update folder state management and handle loading states for various folder operations.

* ✨ (add-folder-button.tsx): Add a new component for adding folders to the sidebar
✨ (folder-select-item.tsx): Add a new component for displaying folder select items in the sidebar
✨ (header-buttons.tsx): Add a new component for displaying header buttons in the sidebar
✨ (input-edit-folder-name.tsx): Add a new component for editing folder names in the sidebar
✨ (select-options.tsx): Add a new component for displaying select options in the sidebar
✨ (upload-folder-button.tsx): Add a new component for uploading folders to the sidebar
✨ (handle-select-change.ts): Add a new helper function for handling select changes in the sidebar
🔧 (index.tsx): Refactor sidebar folder buttons component to use new components and helpers for better organization and functionality

* ✨ (use-on-file-drop.tsx): add support for fetching and using flows specific to the current folder in the file drop functionality
📝 (use-get-folder.ts): update the get folder query to set and use flows specific to the current folder
📝 (foldersStore.tsx): add state management for storing and setting flows specific to the current folder in the store
📝 (index.ts): add FlowType import for flows specific to the current folder in the store types

* ✨ (flows.py): Add description field to the returned flow object in read_flows function for better data representation
♻️ (use-on-file-drop.tsx): Refactor code to use new centralized store for flows instead of accessing flowsFromCurrentFolder directly
🔧 (use-get-folder.ts): Remove setFlowsFromCurrentFolder function and directly update flows in the store within getFolderFn
🔧 (foldersStore.tsx): Remove flowsFromCurrentFolder state and setFlowsFromCurrentFolder function from the store as they are no longer needed

* fix: Fix test_get_and_cache_all_types_dict (#5054)

* fix: add condition to not block component from building when input is filled by tool mode (#5039)

Fixed frontend blocking build when component is disabled because of tool mode

* feat: Enhance Observability with ArizePhoenixTracer Integration (#5058)

* Added ArizePhoenixTracer

* [autofix.ci] apply automated fixes

* Fixed Ruff Style Check Errors

* add Arize icon

* Fixed Mypy Errors

* Refactor ArizeIcon component to use arrow function syntax

Co-authored-by: Jeff Carpenter <jeffrey.carpenter@datastax.com>
Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>

* refactor: Remove footer from TableModal component (#5036)

* Refactor: update curlApiGeneration test (#5046)

refactor: Update wait time for modal to appear in curlApiGeneration.spec.ts

* Refactor: Remove unnecessary value rendering in EmptyParameterComponent (#4955)

* feat: Persist locked state for flows (#4459)

* persist locked state for flows

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* 📝 (popover.tsx): Remove duplicate declaration of PopoverAnchor in popover.tsx
✨ (lock-flow.spec.ts): Add test for locking and unlocking a flow in the application to ensure proper functionality and saving of the flow.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>

* Refactor actionsMainPage-shard-0.spec.ts (#5043)

* refactor: Add missing import and update assertions in actionsMainPage-shard-0.spec.ts

* refactor: Adjust chat view layout for responsiveness (#5061)

* refactor: Adjust chat view layout for responsiveness

The code changes in this commit adjust the layout of the chat view component to improve responsiveness. Specifically, the CSS classes for the chat container and input container have been modified to make them responsive on different screen sizes. This ensures that the chat view is displayed properly on both desktop and mobile devices.

Refactoring the layout in this way enhances the user experience by making the chat view more accessible and user-friendly across different devices.

* fix: Fix: improve error in InputFileComponent when displaying invalid file types (#5064)

* fix: Fix error in InputFileComponent when displaying invalid file types

The code changes in this commit fix an issue in the InputFileComponent where an error was not being displayed correctly when the file type was not allowed. The commit adds a fix to properly display the error message with the list of invalid file types.

* refactor: Improve wait times and visibility checks in auto-save-off tests (#5044)

* refactor: Improve wait times and visibility checks in auto-save-off tests

* Refactor: refactor wait times and selectors in filterEdge-shard-1.spec.ts (#5049)

* refactor: Update wait times and selectors in filterEdge-shard-1.spec.ts

* Refactor: update autoLogin.spec.ts to use waitForSelector (#5045)

refactor: Update autoLogin.spec.ts to use waitForSelector instead of waitForTimeout

* feat: improve whitespace handling in NodeDescription component (#5096)

* 📝 (NodeDescription/index.tsx): update CSS classes to improve text formatting and readability in NodeDescription component

* ♻️ (NodeDescription/index.tsx): refactor NodeDescription component styles to improve readability and remove redundant classnames

* refactor: use Inspector for column checks in locked state migration (#5097)

🐛 (add_persistent_locked_state.py): fix migration script to correctly check for existing 'locked' column before adding or dropping it

* fix: changed parameter name of agent component (#4992)

* Changed Add tool Current Date to only Current Date

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: re-activated playground page and made it full screen (#5066)

* Re-activated playground page

* Added full-screen to show entire content instead of modal

* Added full screen page on new Modal

* Made app wrapper page be full width and height

* fix: apply variables to fields automatically, remove password truncation from variable fields (#5031)

* Change default type to be Credential on Global Variabel Modal

* Removed clipping on input password

* Updated StrRenderComponent to receive display_name

* Updated InputGlobal and StrRender to receive display_name

* Update InputGlobalComponent to handle fields already applied

* Passed display name from strRender to inputglobal

* Update updateGroupRecursion to not need updateGlobalVariables since it's already dealt with by the InputGlobalComponent

* fix: clear chat input when sending from play button (#5071)

Fix newChatView to clear chat input if the component runs before

---------

Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
Co-authored-by: Ali Saleh <saleh.a@turing.com>
Co-authored-by: Jeff Carpenter <jeffrey.carpenter@datastax.com>
Co-authored-by: Mike Fortman <michael.fortman@datastax.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
enhancement New feature or request lgtm This PR has been approved by a maintainer size:L This PR changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants