Merged
Conversation
Contributor
|
i had no idea this folder was there still. 👍 I'd set it to exclude in my IDE, so it hadn't showed up in forever.. jenkins, test this |
e40pud
added a commit
to e40pud/kibana
that referenced
this pull request
Aug 19, 2025
e40pud
added a commit
to e40pud/kibana
that referenced
this pull request
Aug 20, 2025
e40pud
added a commit
to e40pud/kibana
that referenced
this pull request
Aug 20, 2025
e40pud
added a commit
that referenced
this pull request
Aug 27, 2025
… and interface (#13657) (#232288) ## Summary Epic: elastic/security-team#12768 Meta: elastic/security-team#13657 RFC: [internal link](https://docs.google.com/document/d/13jAJ5Q3_At_zAuwKjvpYehnM5uzKJSwZIZ1aJJNAf5k) With these changes we update the conversation summary schema to accommodate new fields to allow conversation summarization and past conversation search. Also, as part of these changes, the OLD (unused) summary fields are removed from the APIs. ### Mapping changes The conversations index mapping already has a `summary` field which is an object that looks like: <details> <summary><b>OLD</b> summary schema</summary> ```json "summary": { "properties": { "@timestamp": { "type": "date" }, "confidence": { "type": "keyword" }, "content": { "type": "text" }, "public": { "type": "boolean" } } } ``` </details> To be able to summarize conversations and semantically search through existing summaries, the new fields (`semantic_content` and `summarized_message_ids`) are added into the mapping: <details> <summary><b>Updated</b> summary schema</summary> ```json "summary": { "properties": { "@timestamp": { "type": "date" }, "confidence": { "type": "keyword" }, "content": { "type": "text" }, "public": { "type": "boolean" }, "semantic_content": { "type": "semantic_text", "inference_id": ".elser-2-elasticsearch" }, "summarized_message_ids": { "type": "keyword", "array": true } } } ``` </details> ### New fields description `semantic_content` field will be used to store conversation summary and allows semantical search through the ELSER v2 or E5 models. `summarized_message_ids` field will contain a list of all messages that are summarized and part of the summary stored within the `semantic_content` field. ### Legacy fields and API interface changes There are bunch of fields that were never used and won't be supported or used in future - `summary.confidence`, `summary.content` and `summary.public`. After discussion with @YulNaumenko and @elastic/security-generative-ai, this fields will be marked as legacy on the mappings level for compatibility with the installed indices and will be removed on the API level. Previously, we allowed to update `summary.confidence`, `summary.content` and `summary.public` fields via API calls and never used in kibana UI. **NOTE**: Thanks @spong to pointing to [this cluster](https://overview.elastic-cloud.com/app/dashboards#/view/serverless-api-services-http-requests-overview?_g=h@6558260) to see the API usage in production. It shows that within last 90 days, the update conversation API (the only way for users to update conversations and potentially add a summary to it) was used only 41 times which looks low and I believe negligible. <img width="1144" height="423" alt="Screenshot 2025-08-20 at 10 50 35" src="https://github.com/user-attachments/assets/6cb8e1a2-4d9d-44d2-8e66-2de6d8ac74e2" /> From now on, the conversation will have next summary fields on the **API level**: ```typescript interface ConversationSummary { /** * The timestamp summary was updated. */ timestamp: string; /** * Summary text of the conversation over time. */ semanticContent?: string; /** * The list of summarized messages. */ summarizedMessageIds?: string[]; } ``` ### Testing To test, you can use next API calls: <details> <summary><b>Fetch</b> all existing conversations</summary> This call will fetch all existing conversation. Good for overview of existing conversations and verifying expected summary values. ```curl curl --location 'http://localhost:5601/sbb/api/security_ai_assistant/current_user/conversations/_find' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 2023-10-31' ``` </details> <details> <summary><b>Update</b> a conversation</summary> This call will update a conversation and add/update a summary. ```curl curl --location --request PUT 'http://localhost:5601/sbb/api/security_ai_assistant/current_user/conversations/{{CONVERSATION_ID}}' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 2023-10-31' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --data '{ "id": "a565baa8-5566-47b2-ab69-807248b2fc46", "summary": { "semanticContent": "Very nice demo semantic content." } }' ``` </details> <details> <summary><b>Bulk Update</b> existing conversation(s)</summary> This call will update a conversation and add/update a summary. ```curl curl --location 'http://localhost:5601/sbb/internal/elastic_assistant/current_user/conversations/_bulk_action' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 1' \ --header 'x-elastic-internal-origin: Kibana' \ --header 'kbn-version: 9.2.0' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --data '{ "update": [ { "id": "{{CONVERSATION_ID}}", "summary": { "semanticContent": "Very nice demo semantic content." } } ] }' ``` </details> Some test cases: 1. Check that if not updated, a new conversation does not have a summary 2. Check that `summary` contains expected value after it has been updated via one of the above APIs 3. Check that we do not return legacy fields (`summary.confidence`, `summary.content` and `summary.public`) even if you add a document with those fields set. You can set legacy fields, either via DevTools or via update APIs from above in previous kibana version. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
e40pud
added a commit
that referenced
this pull request
Aug 28, 2025
…ce (#13657) (#232394) ## Summary Epic: elastic/security-team#12768 Meta: elastic/security-team#13657 RFC: [internal link](https://docs.google.com/document/d/13jAJ5Q3_At_zAuwKjvpYehnM5uzKJSwZIZ1aJJNAf5k) With these changes we update the conversation `Message` schema by adding a new field `id`. This will allow us to easily refer messages that are summarized. ### New messages All new messages will be added with the `id` field set. ### Existing messages The `id` field for all existing messages will be `undefined` and will be updated whenever a user updates the conversation: - appends new messages - regenerates a last assistant respond In those case above, all messages within the ongoing conversation will be updated and will have a `id` field set. ### Testing scenarios 1. **Existing messages without `id`** - Create conversation with messages in "pre this PR" code (e.g. main branch) - Checkout code from this PR - Check via Dev Tools that messages within the conversations index do not have `id` field set - Add a new message to one of the conversations - Check that all messages within that conversation are updated and `id` field set for all of them 2. **New messages** - Checkout code from this PR - Create a new chat and add new messages - Check via Dev Tools that all messages within the new conversation have `id` field set --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
kowalczyk-krzysztof
pushed a commit
to kowalczyk-krzysztof/kibana
that referenced
this pull request
Aug 30, 2025
… and interface (elastic#13657) (elastic#232288) ## Summary Epic: elastic/security-team#12768 Meta: elastic/security-team#13657 RFC: [internal link](https://docs.google.com/document/d/13jAJ5Q3_At_zAuwKjvpYehnM5uzKJSwZIZ1aJJNAf5k) With these changes we update the conversation summary schema to accommodate new fields to allow conversation summarization and past conversation search. Also, as part of these changes, the OLD (unused) summary fields are removed from the APIs. ### Mapping changes The conversations index mapping already has a `summary` field which is an object that looks like: <details> <summary><b>OLD</b> summary schema</summary> ```json "summary": { "properties": { "@timestamp": { "type": "date" }, "confidence": { "type": "keyword" }, "content": { "type": "text" }, "public": { "type": "boolean" } } } ``` </details> To be able to summarize conversations and semantically search through existing summaries, the new fields (`semantic_content` and `summarized_message_ids`) are added into the mapping: <details> <summary><b>Updated</b> summary schema</summary> ```json "summary": { "properties": { "@timestamp": { "type": "date" }, "confidence": { "type": "keyword" }, "content": { "type": "text" }, "public": { "type": "boolean" }, "semantic_content": { "type": "semantic_text", "inference_id": ".elser-2-elasticsearch" }, "summarized_message_ids": { "type": "keyword", "array": true } } } ``` </details> ### New fields description `semantic_content` field will be used to store conversation summary and allows semantical search through the ELSER v2 or E5 models. `summarized_message_ids` field will contain a list of all messages that are summarized and part of the summary stored within the `semantic_content` field. ### Legacy fields and API interface changes There are bunch of fields that were never used and won't be supported or used in future - `summary.confidence`, `summary.content` and `summary.public`. After discussion with @YulNaumenko and @elastic/security-generative-ai, this fields will be marked as legacy on the mappings level for compatibility with the installed indices and will be removed on the API level. Previously, we allowed to update `summary.confidence`, `summary.content` and `summary.public` fields via API calls and never used in kibana UI. **NOTE**: Thanks @spong to pointing to [this cluster](https://overview.elastic-cloud.com/app/dashboards#/view/serverless-api-services-http-requests-overview?_g=h@6558260) to see the API usage in production. It shows that within last 90 days, the update conversation API (the only way for users to update conversations and potentially add a summary to it) was used only 41 times which looks low and I believe negligible. <img width="1144" height="423" alt="Screenshot 2025-08-20 at 10 50 35" src="https://github.com/user-attachments/assets/6cb8e1a2-4d9d-44d2-8e66-2de6d8ac74e2" /> From now on, the conversation will have next summary fields on the **API level**: ```typescript interface ConversationSummary { /** * The timestamp summary was updated. */ timestamp: string; /** * Summary text of the conversation over time. */ semanticContent?: string; /** * The list of summarized messages. */ summarizedMessageIds?: string[]; } ``` ### Testing To test, you can use next API calls: <details> <summary><b>Fetch</b> all existing conversations</summary> This call will fetch all existing conversation. Good for overview of existing conversations and verifying expected summary values. ```curl curl --location 'http://localhost:5601/sbb/api/security_ai_assistant/current_user/conversations/_find' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 2023-10-31' ``` </details> <details> <summary><b>Update</b> a conversation</summary> This call will update a conversation and add/update a summary. ```curl curl --location --request PUT 'http://localhost:5601/sbb/api/security_ai_assistant/current_user/conversations/{{CONVERSATION_ID}}' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 2023-10-31' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --data '{ "id": "a565baa8-5566-47b2-ab69-807248b2fc46", "summary": { "semanticContent": "Very nice demo semantic content." } }' ``` </details> <details> <summary><b>Bulk Update</b> existing conversation(s)</summary> This call will update a conversation and add/update a summary. ```curl curl --location 'http://localhost:5601/sbb/internal/elastic_assistant/current_user/conversations/_bulk_action' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 1' \ --header 'x-elastic-internal-origin: Kibana' \ --header 'kbn-version: 9.2.0' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --data '{ "update": [ { "id": "{{CONVERSATION_ID}}", "summary": { "semanticContent": "Very nice demo semantic content." } } ] }' ``` </details> Some test cases: 1. Check that if not updated, a new conversation does not have a summary 2. Check that `summary` contains expected value after it has been updated via one of the above APIs 3. Check that we do not return legacy fields (`summary.confidence`, `summary.content` and `summary.public`) even if you add a document with those fields set. You can set legacy fields, either via DevTools or via update APIs from above in previous kibana version. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
qn895
pushed a commit
to qn895/kibana
that referenced
this pull request
Sep 2, 2025
… and interface (elastic#13657) (elastic#232288) ## Summary Epic: elastic/security-team#12768 Meta: elastic/security-team#13657 RFC: [internal link](https://docs.google.com/document/d/13jAJ5Q3_At_zAuwKjvpYehnM5uzKJSwZIZ1aJJNAf5k) With these changes we update the conversation summary schema to accommodate new fields to allow conversation summarization and past conversation search. Also, as part of these changes, the OLD (unused) summary fields are removed from the APIs. ### Mapping changes The conversations index mapping already has a `summary` field which is an object that looks like: <details> <summary><b>OLD</b> summary schema</summary> ```json "summary": { "properties": { "@timestamp": { "type": "date" }, "confidence": { "type": "keyword" }, "content": { "type": "text" }, "public": { "type": "boolean" } } } ``` </details> To be able to summarize conversations and semantically search through existing summaries, the new fields (`semantic_content` and `summarized_message_ids`) are added into the mapping: <details> <summary><b>Updated</b> summary schema</summary> ```json "summary": { "properties": { "@timestamp": { "type": "date" }, "confidence": { "type": "keyword" }, "content": { "type": "text" }, "public": { "type": "boolean" }, "semantic_content": { "type": "semantic_text", "inference_id": ".elser-2-elasticsearch" }, "summarized_message_ids": { "type": "keyword", "array": true } } } ``` </details> ### New fields description `semantic_content` field will be used to store conversation summary and allows semantical search through the ELSER v2 or E5 models. `summarized_message_ids` field will contain a list of all messages that are summarized and part of the summary stored within the `semantic_content` field. ### Legacy fields and API interface changes There are bunch of fields that were never used and won't be supported or used in future - `summary.confidence`, `summary.content` and `summary.public`. After discussion with @YulNaumenko and @elastic/security-generative-ai, this fields will be marked as legacy on the mappings level for compatibility with the installed indices and will be removed on the API level. Previously, we allowed to update `summary.confidence`, `summary.content` and `summary.public` fields via API calls and never used in kibana UI. **NOTE**: Thanks @spong to pointing to [this cluster](https://overview.elastic-cloud.com/app/dashboards#/view/serverless-api-services-http-requests-overview?_g=h@6558260) to see the API usage in production. It shows that within last 90 days, the update conversation API (the only way for users to update conversations and potentially add a summary to it) was used only 41 times which looks low and I believe negligible. <img width="1144" height="423" alt="Screenshot 2025-08-20 at 10 50 35" src="https://github.com/user-attachments/assets/6cb8e1a2-4d9d-44d2-8e66-2de6d8ac74e2" /> From now on, the conversation will have next summary fields on the **API level**: ```typescript interface ConversationSummary { /** * The timestamp summary was updated. */ timestamp: string; /** * Summary text of the conversation over time. */ semanticContent?: string; /** * The list of summarized messages. */ summarizedMessageIds?: string[]; } ``` ### Testing To test, you can use next API calls: <details> <summary><b>Fetch</b> all existing conversations</summary> This call will fetch all existing conversation. Good for overview of existing conversations and verifying expected summary values. ```curl curl --location 'http://localhost:5601/sbb/api/security_ai_assistant/current_user/conversations/_find' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 2023-10-31' ``` </details> <details> <summary><b>Update</b> a conversation</summary> This call will update a conversation and add/update a summary. ```curl curl --location --request PUT 'http://localhost:5601/sbb/api/security_ai_assistant/current_user/conversations/{{CONVERSATION_ID}}' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 2023-10-31' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --data '{ "id": "a565baa8-5566-47b2-ab69-807248b2fc46", "summary": { "semanticContent": "Very nice demo semantic content." } }' ``` </details> <details> <summary><b>Bulk Update</b> existing conversation(s)</summary> This call will update a conversation and add/update a summary. ```curl curl --location 'http://localhost:5601/sbb/internal/elastic_assistant/current_user/conversations/_bulk_action' \ --header 'kbn-xsrf: true' \ --header 'elastic-api-version: 1' \ --header 'x-elastic-internal-origin: Kibana' \ --header 'kbn-version: 9.2.0' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ --data '{ "update": [ { "id": "{{CONVERSATION_ID}}", "summary": { "semanticContent": "Very nice demo semantic content." } } ] }' ``` </details> Some test cases: 1. Check that if not updated, a new conversation does not have a summary 2. Check that `summary` contains expected value after it has been updated via one of the above APIs 3. Check that we do not return legacy fields (`summary.confidence`, `summary.content` and `summary.public`) even if you add a document with those fields set. You can set legacy fields, either via DevTools or via update APIs from above in previous kibana version. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
qn895
pushed a commit
to qn895/kibana
that referenced
this pull request
Sep 2, 2025
…ce (elastic#13657) (elastic#232394) ## Summary Epic: elastic/security-team#12768 Meta: elastic/security-team#13657 RFC: [internal link](https://docs.google.com/document/d/13jAJ5Q3_At_zAuwKjvpYehnM5uzKJSwZIZ1aJJNAf5k) With these changes we update the conversation `Message` schema by adding a new field `id`. This will allow us to easily refer messages that are summarized. ### New messages All new messages will be added with the `id` field set. ### Existing messages The `id` field for all existing messages will be `undefined` and will be updated whenever a user updates the conversation: - appends new messages - regenerates a last assistant respond In those case above, all messages within the ongoing conversation will be updated and will have a `id` field set. ### Testing scenarios 1. **Existing messages without `id`** - Create conversation with messages in "pre this PR" code (e.g. main branch) - Checkout code from this PR - Check via Dev Tools that messages within the conversations index do not have `id` field set - Add a new message to one of the conversations - Check that all messages within that conversation are updated and `id` field set for all of them 2. **New messages** - Checkout code from this PR - Create a new chat and add new messages - Check via Dev Tools that all messages within the new conversation have `id` field set --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is no longer relevant since we have updated the tile service to use Kartotherian.