Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Examples Update + Code Refactor #25

Merged
merged 4 commits into from
Aug 27, 2024
Merged

Examples Update + Code Refactor #25

merged 4 commits into from
Aug 27, 2024

Conversation

cyrus2281
Copy link

What is the purpose of this change?

Refactoring the code base to ensure all examples work as expected + adding more examples

How is this accomplished?

Refactoring in some areas of code including storage manager, langchain_vector_store_embedding_base, and example files.

Anything reviews should focus on/be aware of?

Check summary for list of changes

PR Summary

@cyrus2281 cyrus2281 requested review from efunneko and a team August 27, 2024 15:55
Copy link

gitstream-cm bot commented Aug 27, 2024

Please mark whether you used Copilot to assist coding in this PR

  • Copilot Assisted

@cyrus2281 cyrus2281 force-pushed the cyrus/examples-update branch from 1665494 to bd036a9 Compare August 27, 2024 16:01
Copy link

Copy link
Collaborator

@efunneko efunneko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Thanks for this cleanup - it has needed it for a while

# - SOLACE_BROKER_VPN
# - AWS_BEDROCK_ANTHROPIC_CLAUDE_MODEL_ID


Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like these additional comments!

- aws_credentials: &aws_credentials
invoke:
object:
invoke:
module: boto3
function: Session
params:
keyword:
profile_name: default # The profile to choose from .aws/credentials
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this was the secret sauce to get this working again

Copy link
Author

@cyrus2281 cyrus2281 Aug 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, the main issues were from AWS configurations side, this just allows for a more fine-tuned configurations, I thought it would be good to show case that in the example

@@ -118,6 +118,7 @@ def import_module(name, base_path=None, component_package=None):
".components.general",
".components.general.for_testing",
".components.general.langchain",
".components.general.openai",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did it take you a long time to find this? Sorry - somehow it was missed in my commit for the openai component

Copy link
Author

@cyrus2281 cyrus2281 Aug 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the error said it couldn't find/load the module, so I just looked where langchain was added, and duplicated that process

@efunneko
Copy link
Collaborator

You can do the merge. Later I will kick off a release for it.

@cyrus2281 cyrus2281 merged commit 67e01f9 into main Aug 27, 2024
4 checks passed
@cyrus2281 cyrus2281 deleted the cyrus/examples-update branch August 27, 2024 18:04
artyom-morozov pushed a commit that referenced this pull request Sep 6, 2024
…UUID Invoke Function, Added assembly component (#36)

* Examples Update + Code Refactor (#25)

* Removed StorageManager

* Added examples for OpenAI, Bedrock, Anthropic, and VertexAI

* Updating old examples (1/2)

* Updating old examples (2/2)

* Added support for temporary queue + UUID queue name (#26)

* Add assembly component and auto-generated documents (#27)

* Added the assembly component

* Auto-generated documents

* Added type check

* Update the cache service expiry logic + Update the assembly component to use cache expiry for timeout

* Moved assembly to the correct place

* Added MoA Example + UUID Invoke Function (#28)

* MoA example: Broadcast to multiple agents

* Added MoA event manager, added uuid invoke_function + test, updated auto-generated docs

* Added assembly layer to MoA example

* Update documentation for new users + Refactored component_input & source_expression (#29)

* Refactored component_input to input_selection

* Updated, added, and enhanced the documentation with new users in mind

* Refactored source_expression function to evaluate_expression (backward compatible)

* Added tips and tricks section + info and examples on custom modules

* tiny format update

* tiny update

* Fixed solace disconnection issues on shutting down (#30)

* Add RAG example for AI connector + delete action for vector index (#31)

* Added a RAG example for AI connector

* Added delete option to vectordb

* Changed id to ids

* chore: Refactor make_history_start_with_user_message method (#32)

Fix the method to not trim the first entry if it is a "system" role

---------

Co-authored-by: Edward Funnekotter <[email protected]>
artyom-morozov added a commit that referenced this pull request Dec 4, 2024
…ved docs and examples and better testing (#39)

* Examples Update + Code Refactor (#25)

* Removed StorageManager

* Added examples for OpenAI, Bedrock, Anthropic, and VertexAI

* Updating old examples (1/2)

* Updating old examples (2/2)

* Added support for temporary queue + UUID queue name (#26)

* Add assembly component and auto-generated documents (#27)

* Added the assembly component

* Auto-generated documents

* Added type check

* Update the cache service expiry logic + Update the assembly component to use cache expiry for timeout

* Moved assembly to the correct place

* Added MoA Example + UUID Invoke Function (#28)

* MoA example: Broadcast to multiple agents

* Added MoA event manager, added uuid invoke_function + test, updated auto-generated docs

* Added assembly layer to MoA example

* Update documentation for new users + Refactored component_input & source_expression (#29)

* Refactored component_input to input_selection

* Updated, added, and enhanced the documentation with new users in mind

* Refactored source_expression function to evaluate_expression (backward compatible)

* Added tips and tricks section + info and examples on custom modules

* tiny format update

* tiny update

* Fixed solace disconnection issues on shutting down (#30)

* Add RAG example for AI connector + delete action for vector index (#31)

* Added a RAG example for AI connector

* Added delete option to vectordb

* Changed id to ids

* chore: Refactor make_history_start_with_user_message method (#32)

Fix the method to not trim the first entry if it is a "system" role

* Keep history depth needs to be a positive integer and test refactor (#33)

* chore: Refactor clear_history_but_keep_depth method to handle negative depth values

* chore: small change to how this is solved

* chore: one more try

* refactor: move utils_for_test_files.py to solace_ai_connector module

* refactor: removed the orginal utils_for_test_files.py

* refactor: update import statements in test files

* refactor: add sys.path.append("src") to test files

* refactor: standardize import order and sys.path.append in test files

* refactor: a bit more test infrastructure changes

* feat: allow component_module to accept module objects directly

* feat: add types module import to utils.py

* test: add static import and object config test

* refactor: update test_static_import_and_object_config to use create_test_flows

* refactor: Improve test structure and remove duplicate test case

* fix: remove duplicate import of yaml module

* refactor: Modify test config to use dict instead of YAML string

* refactor: convert config_yaml from string to dictionary

* refactor: update static import test to use pass_through component

* test: Add delay component message passing test

* feat: add test for delay component message processing

* feat: Added a new test function (test_one_component) to make it very easy to just run some quick tests on a single input -> expected output tests on a single component

* feat: added input_transforms to the test_one_component so that input transforms can be tested with it

* chore: a bit of cleanup and new tests for test_one_component

* chore: rename test_one_component because it was being picked up as a test by the pytest scanner

* fix: fixed a typo

* Fix for anthropic example (#35)

* Updating version dependency (#37)

* Fixed url and file name in getting started (#38)

* Add guide for RAG (#39)

* Added guide for RAG

* update wording

* Added link to other docs from RAG guide (#40)

* chore: added a timeout setting for running component tests so that you can test situations where you don't expect any output (#34)

* AI-124: Add a feature to provide simple blocking broker request/response ability for components (#42)

* feat: add request_response_controller.py

* feat: implement RequestResponseFlowManager and RequestResponseController classes

* style: format code with black and improve readability

* feat: implement RequestResponseController for flow-based request-response handling

* feat: implement RequestResponseController for handling request-response patterns

* fix: import SolaceAiConnector for type checking

* refactor: restructure Flow class and improve code organization

* feat: implement multiple named RequestResponseControllers per component

* refactor: initialize request-response controllers in ComponentBase

* test: add request_response_controller functionality tests

* feat: finished implementation and added some tests

* refactor: rename RequestResponseController to RequestResponseFlowController

* refactor: rename RequestResponseController to RequestResponseFlowController

* refactor: some name changes

* fix: update test function names for RequestResponseFlowController

* refactor: more name changes

* Ed/req_resp_examples_and_fixes (#41)

* feat: Added a request_response_flow example and fixed a few issues along the way

* feat: Reworked the broker_request_response built-in ability of components to be simpler. Instead of having to have a defined flow and then name that flow, it will automatically create a flow with a single broker_request_response component in it. Now there is a straightforward interating function call to allow components to issue a request and get streaming or non-streaming responses from that flow.

* chore: fix the request_response example and remove the old one

* docs: add broker request-response configuration

* docs: added advanced_component_features.md

* docs: add broker request-response configuration details

* docs: add payload encoding and format to broker config

* docs: add cache service and timer manager to advanced_component_features.md

* docs: add configuration requirement for broker request-response

* docs: update broker request-response section with configuration info

* docs: a bit more detail about do_broker_request_response

* docs: add link to advanced features page in table of contents

* docs: add link to advanced features page

* docs: reorder table of contents in index.md

* docs: add custom components documentation

* docs: Remove advanced component features from table of contents

* docs: clean up a double inclusion of the same section

* docs: small example change

* chore: remove dead code

* chore: add some extra comments to explain some test code

* docs: Update description of STDIN input component

Update the description of the STDIN input component to clarify that it waits for its output message to be acknowledged before prompting for the next input. This change is made in the `stdin_input.py` file.

* chore: add is_broker_request_response_enabled method

* chore: Some changes after review

* feat: AI-129: add ability to specify a default value for a an environment variable in a .yaml config file (#43)

* DATAGO-85484 Bump min python version

---------

Co-authored-by: Cyrus Mobini <[email protected]>
Co-authored-by: Art Morozov <[email protected]>
Co-authored-by: Art Morozov <[email protected]>
artyom-morozov added a commit that referenced this pull request Dec 4, 2024
…ved docs and examples and better testing (#39)

* Examples Update + Code Refactor (#25)

* Removed StorageManager

* Added examples for OpenAI, Bedrock, Anthropic, and VertexAI

* Updating old examples (1/2)

* Updating old examples (2/2)

* Added support for temporary queue + UUID queue name (#26)

* Add assembly component and auto-generated documents (#27)

* Added the assembly component

* Auto-generated documents

* Added type check

* Update the cache service expiry logic + Update the assembly component to use cache expiry for timeout

* Moved assembly to the correct place

* Added MoA Example + UUID Invoke Function (#28)

* MoA example: Broadcast to multiple agents

* Added MoA event manager, added uuid invoke_function + test, updated auto-generated docs

* Added assembly layer to MoA example

* Update documentation for new users + Refactored component_input & source_expression (#29)

* Refactored component_input to input_selection

* Updated, added, and enhanced the documentation with new users in mind

* Refactored source_expression function to evaluate_expression (backward compatible)

* Added tips and tricks section + info and examples on custom modules

* tiny format update

* tiny update

* Fixed solace disconnection issues on shutting down (#30)

* Add RAG example for AI connector + delete action for vector index (#31)

* Added a RAG example for AI connector

* Added delete option to vectordb

* Changed id to ids

* chore: Refactor make_history_start_with_user_message method (#32)

Fix the method to not trim the first entry if it is a "system" role

* Keep history depth needs to be a positive integer and test refactor (#33)

* chore: Refactor clear_history_but_keep_depth method to handle negative depth values

* chore: small change to how this is solved

* chore: one more try

* refactor: move utils_for_test_files.py to solace_ai_connector module

* refactor: removed the orginal utils_for_test_files.py

* refactor: update import statements in test files

* refactor: add sys.path.append("src") to test files

* refactor: standardize import order and sys.path.append in test files

* refactor: a bit more test infrastructure changes

* feat: allow component_module to accept module objects directly

* feat: add types module import to utils.py

* test: add static import and object config test

* refactor: update test_static_import_and_object_config to use create_test_flows

* refactor: Improve test structure and remove duplicate test case

* fix: remove duplicate import of yaml module

* refactor: Modify test config to use dict instead of YAML string

* refactor: convert config_yaml from string to dictionary

* refactor: update static import test to use pass_through component

* test: Add delay component message passing test

* feat: add test for delay component message processing

* feat: Added a new test function (test_one_component) to make it very easy to just run some quick tests on a single input -> expected output tests on a single component

* feat: added input_transforms to the test_one_component so that input transforms can be tested with it

* chore: a bit of cleanup and new tests for test_one_component

* chore: rename test_one_component because it was being picked up as a test by the pytest scanner

* fix: fixed a typo

* Fix for anthropic example (#35)

* Updating version dependency (#37)

* Fixed url and file name in getting started (#38)

* Add guide for RAG (#39)

* Added guide for RAG

* update wording

* Added link to other docs from RAG guide (#40)

* chore: added a timeout setting for running component tests so that you can test situations where you don't expect any output (#34)

* AI-124: Add a feature to provide simple blocking broker request/response ability for components (#42)

* feat: add request_response_controller.py

* feat: implement RequestResponseFlowManager and RequestResponseController classes

* style: format code with black and improve readability

* feat: implement RequestResponseController for flow-based request-response handling

* feat: implement RequestResponseController for handling request-response patterns

* fix: import SolaceAiConnector for type checking

* refactor: restructure Flow class and improve code organization

* feat: implement multiple named RequestResponseControllers per component

* refactor: initialize request-response controllers in ComponentBase

* test: add request_response_controller functionality tests

* feat: finished implementation and added some tests

* refactor: rename RequestResponseController to RequestResponseFlowController

* refactor: rename RequestResponseController to RequestResponseFlowController

* refactor: some name changes

* fix: update test function names for RequestResponseFlowController

* refactor: more name changes

* Ed/req_resp_examples_and_fixes (#41)

* feat: Added a request_response_flow example and fixed a few issues along the way

* feat: Reworked the broker_request_response built-in ability of components to be simpler. Instead of having to have a defined flow and then name that flow, it will automatically create a flow with a single broker_request_response component in it. Now there is a straightforward interating function call to allow components to issue a request and get streaming or non-streaming responses from that flow.

* chore: fix the request_response example and remove the old one

* docs: add broker request-response configuration

* docs: added advanced_component_features.md

* docs: add broker request-response configuration details

* docs: add payload encoding and format to broker config

* docs: add cache service and timer manager to advanced_component_features.md

* docs: add configuration requirement for broker request-response

* docs: update broker request-response section with configuration info

* docs: a bit more detail about do_broker_request_response

* docs: add link to advanced features page in table of contents

* docs: add link to advanced features page

* docs: reorder table of contents in index.md

* docs: add custom components documentation

* docs: Remove advanced component features from table of contents

* docs: clean up a double inclusion of the same section

* docs: small example change

* chore: remove dead code

* chore: add some extra comments to explain some test code

* docs: Update description of STDIN input component

Update the description of the STDIN input component to clarify that it waits for its output message to be acknowledged before prompting for the next input. This change is made in the `stdin_input.py` file.

* chore: add is_broker_request_response_enabled method

* chore: Some changes after review

* feat: AI-129: add ability to specify a default value for a an environment variable in a .yaml config file (#43)

* DATAGO-85484 Bump min python version

---------

Co-authored-by: Cyrus Mobini <[email protected]>
Co-authored-by: Art Morozov <[email protected]>
Co-authored-by: Art Morozov <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants