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

Add CreateAnomalyDetectorTool #348

Merged
merged 5 commits into from
Jul 16, 2024

Conversation

gaobinlong
Copy link
Contributor

@gaobinlong gaobinlong commented Jul 10, 2024

Description

Implement a new tool named CreateAnomalyDetectorTool which can be used to help creating anomaly detector, the only one input parameter is the index name, this tool will get the mappings of the index in flight and let LLM give the suggested category field, aggregation field and correspond aggregation method which are required for the create anomaly detector API, the output of this tool is like:

{
     "index": "opensearch_dashboards_sample_data_ecommerce",
     "categoryField": "geoip.country_iso_code",
     "aggregationField": "total_quantity,total_unique_products,taxful_total_price",
     "aggregationMethod": "sum,count,sum",
     "dateFields": "customer_birth_date,order_date,products.created_on"
}

Related Issues

#337

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@zane-neo
Copy link
Collaborator

@gaobinlong please fix the conflict

Signed-off-by: gaobinlong <[email protected]>
@gaobinlong
Copy link
Contributor Author

@gaobinlong please fix the conflict

Done it, thanks!

@xinyual
Copy link
Collaborator

xinyual commented Jul 12, 2024

This tool will not actually create AD but only return suggested parameters, right?

Signed-off-by: gaobinlong <[email protected]>
@gaobinlong
Copy link
Contributor Author

This tool will not actually create AD but only return suggested parameters, right?

Yes. @zane-neo @xinyual I've made some changes following your suggestions, please help to take a look, thank you!

Signed-off-by: gaobinlong <[email protected]>
Signed-off-by: gaobinlong <[email protected]>
@zane-neo zane-neo merged commit 63be179 into opensearch-project:main Jul 16, 2024
8 checks passed
@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.x failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/skills/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/skills/backport-2.x
# Create a new branch
git switch --create backport/backport-348-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 63be17914b76a686978e9147eb3995f4968ef9d8
# Push it to GitHub
git push --set-upstream origin backport/backport-348-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/skills/backport-2.x

Then, create a pull request where the base branch is 2.x and the compare/head branch is backport/backport-348-to-2.x.

gaobinlong added a commit to gaobinlong/skills that referenced this pull request Jul 17, 2024
* Add CreateAnomalyDetectorTool

Signed-off-by: gaobinlong <[email protected]>

* Optimize some code

Signed-off-by: gaobinlong <[email protected]>

* Fix test failure

Signed-off-by: gaobinlong <[email protected]>

* Optimize exception

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>
(cherry picked from commit 63be179)
zane-neo pushed a commit that referenced this pull request Jul 18, 2024
* Add CreateAnomalyDetectorTool (#348)

* Add CreateAnomalyDetectorTool

Signed-off-by: gaobinlong <[email protected]>

* Optimize some code

Signed-off-by: gaobinlong <[email protected]>

* Fix test failure

Signed-off-by: gaobinlong <[email protected]>

* Optimize exception

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>
(cherry picked from commit 63be179)

* Fix test failure

Signed-off-by: gaobinlong <[email protected]>

* Fix warning

Signed-off-by: gaobinlong <[email protected]>

* Fix comment format

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>
qianheng-aws pushed a commit to qianheng-aws/skills that referenced this pull request Jul 25, 2024
* Add CreateAnomalyDetectorTool

Signed-off-by: gaobinlong <[email protected]>

* Optimize some code

Signed-off-by: gaobinlong <[email protected]>

* Fix test failure

Signed-off-by: gaobinlong <[email protected]>

* Optimize exception

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>
if (vMap.containsKey("properties")) {
extractFieldNamesTypes((Map<String, Object>) vMap.get("properties"), fieldsToType, prefix + n);
}
if (vMap.containsKey("fields")) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This method extractFieldNamesTypes leverages most of the code of the original method in the PPLTool class, but I made some change because the following cases should be taken into account:

"a": {
      "type": "object",
      "properties": {
        "b": {
          "type":"keyword"
        }
      }
    }

and

"c": {
      "type": "text",
      "fields": {
        "d": {
          "type":"keyword"
        }
      }
    }

, @zane-neo and @xinyual, please help to check if this change has a bad impact on the PPLTool, thank you!

Copy link
Collaborator

Choose a reason for hiding this comment

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

It seems after this change, the recursion will go one layer deeper when type is text, which results in changing the result from text to keyword, @xinyual please check from your end if this have impact on PPLTool.

gaobinlong added a commit to gaobinlong/skills that referenced this pull request Sep 3, 2024
* Add CreateAnomalyDetectorTool

Signed-off-by: gaobinlong <[email protected]>

* Optimize some code

Signed-off-by: gaobinlong <[email protected]>

* Fix test failure

Signed-off-by: gaobinlong <[email protected]>

* Optimize exception

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>

Fix warning and format issue for CreateAnomalyDetectorTool (opensearch-project#358)

Signed-off-by: gaobinlong <[email protected]>

Add includeFields parameter to the method extractFieldNamesTypes (opensearch-project#376)

* Add includeFields parameter to the method extractFieldNamesTypes

Signed-off-by: gaobinlong <[email protected]>

* Remove empty line

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>

Optimize the prompt for create anomaly detector tool

Signed-off-by: gaobinlong <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants