Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
# Backport This will backport the following commits from `main` to `8.x`: - [[Security solution] Fix gemini streaming (#201299)](#201299) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Steph Milovic","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-11-22T12:52:40Z","message":"[Security solution] Fix gemini streaming (#201299)\n\n## Summary\r\n\r\nFixes streaming for Gemini in Security Assistant. \r\n\r\nContent can appear in the `finishReason` block. I'm not sure when this\r\nstarted happening. Updates our streaming logic to support content being\r\nin the `finishReason` block.\r\n\r\nExample of `finishReason` block with content:\r\n\r\n```\r\n`data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" are 170 critical and 20 high open alerts.\"}]},\"finishReason\": \"STOP\",\"safetyRatings\": [{\"category\": \"HARM_CATEGORY_HATE_SPEECH\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.060086742,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.17106095},{\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.16776322,\"severity\": \"HARM_SEVERITY_LOW\",\"severityScore\": 0.37113687},{\"category\": \"HARM_CATEGORY_HARASSMENT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.124212936,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.17441037},{\"category\": \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.05419875,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.03461887}]}],\"usageMetadata\": {\"promptTokenCount\": 1062,\"candidatesTokenCount\": 15,\"totalTokenCount\": 1077},\"modelVersion\": \"gemini-1.5-pro-002\"}`\r\n```\r\n\r\n## To test\r\n\r\n1. Have alerts\r\n2. Have a Gemini connector (`gemini-1.5-pro-002`) \r\n3. Have streaming on in the assistant with the Gemini connector selected\r\n4. Ask the assistant: \"How many open alerts do I have?\"\r\n\r\n### Previously\r\nA response begin to streams and then the response gets cut off.\r\n<img width=\"963\" alt=\"Screenshot 2024-11-21 at 4 18 06 PM\"\r\nsrc=\"https://github.com/user-attachments/assets/3f25b682-64ea-4878-83de-17180886eb84\">\r\n\r\n\r\n### Now \r\nThe response streams in full as expected.\r\n<img width=\"965\" alt=\"Screenshot 2024-11-21 at 4 25 13 PM\"\r\nsrc=\"https://github.com/user-attachments/assets/162a6ccc-08c5-4108-bb1e-5df2b37ce554\">\r\n\r\n---------\r\n\r\nCo-authored-by: Elastic Machine <[email protected]>","sha":"855e03e0b61bf6d1a340dd35dd43f05f8c5709b3","branchLabelMapping":{"^v9.0.0$":"main","^v8.18.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","Team: SecuritySolution","backport:prev-major","Team:Security Generative AI"],"title":"[Security solution] Fix gemini streaming","number":201299,"url":"https://github.com/elastic/kibana/pull/201299","mergeCommit":{"message":"[Security solution] Fix gemini streaming (#201299)\n\n## Summary\r\n\r\nFixes streaming for Gemini in Security Assistant. \r\n\r\nContent can appear in the `finishReason` block. I'm not sure when this\r\nstarted happening. Updates our streaming logic to support content being\r\nin the `finishReason` block.\r\n\r\nExample of `finishReason` block with content:\r\n\r\n```\r\n`data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" are 170 critical and 20 high open alerts.\"}]},\"finishReason\": \"STOP\",\"safetyRatings\": [{\"category\": \"HARM_CATEGORY_HATE_SPEECH\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.060086742,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.17106095},{\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.16776322,\"severity\": \"HARM_SEVERITY_LOW\",\"severityScore\": 0.37113687},{\"category\": \"HARM_CATEGORY_HARASSMENT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.124212936,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.17441037},{\"category\": \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.05419875,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.03461887}]}],\"usageMetadata\": {\"promptTokenCount\": 1062,\"candidatesTokenCount\": 15,\"totalTokenCount\": 1077},\"modelVersion\": \"gemini-1.5-pro-002\"}`\r\n```\r\n\r\n## To test\r\n\r\n1. Have alerts\r\n2. Have a Gemini connector (`gemini-1.5-pro-002`) \r\n3. Have streaming on in the assistant with the Gemini connector selected\r\n4. Ask the assistant: \"How many open alerts do I have?\"\r\n\r\n### Previously\r\nA response begin to streams and then the response gets cut off.\r\n<img width=\"963\" alt=\"Screenshot 2024-11-21 at 4 18 06 PM\"\r\nsrc=\"https://github.com/user-attachments/assets/3f25b682-64ea-4878-83de-17180886eb84\">\r\n\r\n\r\n### Now \r\nThe response streams in full as expected.\r\n<img width=\"965\" alt=\"Screenshot 2024-11-21 at 4 25 13 PM\"\r\nsrc=\"https://github.com/user-attachments/assets/162a6ccc-08c5-4108-bb1e-5df2b37ce554\">\r\n\r\n---------\r\n\r\nCo-authored-by: Elastic Machine <[email protected]>","sha":"855e03e0b61bf6d1a340dd35dd43f05f8c5709b3"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/201299","number":201299,"mergeCommit":{"message":"[Security solution] Fix gemini streaming (#201299)\n\n## Summary\r\n\r\nFixes streaming for Gemini in Security Assistant. \r\n\r\nContent can appear in the `finishReason` block. I'm not sure when this\r\nstarted happening. Updates our streaming logic to support content being\r\nin the `finishReason` block.\r\n\r\nExample of `finishReason` block with content:\r\n\r\n```\r\n`data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" are 170 critical and 20 high open alerts.\"}]},\"finishReason\": \"STOP\",\"safetyRatings\": [{\"category\": \"HARM_CATEGORY_HATE_SPEECH\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.060086742,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.17106095},{\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.16776322,\"severity\": \"HARM_SEVERITY_LOW\",\"severityScore\": 0.37113687},{\"category\": \"HARM_CATEGORY_HARASSMENT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.124212936,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.17441037},{\"category\": \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\"probability\": \"NEGLIGIBLE\",\"probabilityScore\": 0.05419875,\"severity\": \"HARM_SEVERITY_NEGLIGIBLE\",\"severityScore\": 0.03461887}]}],\"usageMetadata\": {\"promptTokenCount\": 1062,\"candidatesTokenCount\": 15,\"totalTokenCount\": 1077},\"modelVersion\": \"gemini-1.5-pro-002\"}`\r\n```\r\n\r\n## To test\r\n\r\n1. Have alerts\r\n2. Have a Gemini connector (`gemini-1.5-pro-002`) \r\n3. Have streaming on in the assistant with the Gemini connector selected\r\n4. Ask the assistant: \"How many open alerts do I have?\"\r\n\r\n### Previously\r\nA response begin to streams and then the response gets cut off.\r\n<img width=\"963\" alt=\"Screenshot 2024-11-21 at 4 18 06 PM\"\r\nsrc=\"https://github.com/user-attachments/assets/3f25b682-64ea-4878-83de-17180886eb84\">\r\n\r\n\r\n### Now \r\nThe response streams in full as expected.\r\n<img width=\"965\" alt=\"Screenshot 2024-11-21 at 4 25 13 PM\"\r\nsrc=\"https://github.com/user-attachments/assets/162a6ccc-08c5-4108-bb1e-5df2b37ce554\">\r\n\r\n---------\r\n\r\nCo-authored-by: Elastic Machine <[email protected]>","sha":"855e03e0b61bf6d1a340dd35dd43f05f8c5709b3"}}]}] BACKPORT--> Co-authored-by: Steph Milovic <[email protected]>
- Loading branch information