-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[Obs AI Assistant] Pass function responses when copying conversation #195635
Merged
viduni94
merged 4 commits into
elastic:main
from
viduni94:pass-function-responses-when-copying-conversation
Oct 16, 2024
Merged
[Obs AI Assistant] Pass function responses when copying conversation #195635
viduni94
merged 4 commits into
elastic:main
from
viduni94:pass-function-responses-when-copying-conversation
Oct 16, 2024
Conversation
This file contains 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
botelastic
bot
added
ci:project-deploy-observability
Create an Observability project
Team:Obs AI Assistant
Observability AI Assistant
labels
Oct 9, 2024
Pinging @elastic/obs-ai-assistant (Team:Obs AI Assistant) |
viduni94
added
v9.0.0
backport:prev-minor
Backport to (8.x) the previous minor version (i.e. one version back from main)
release_note:enhancement
labels
Oct 9, 2024
viduni94
force-pushed
the
pass-function-responses-when-copying-conversation
branch
2 times, most recently
from
October 13, 2024 13:57
c8c43de
to
1c3ac56
Compare
efegurkan
reviewed
Oct 15, 2024
viduni94
force-pushed
the
pass-function-responses-when-copying-conversation
branch
from
October 15, 2024 12:00
1c3ac56
to
154e00f
Compare
sphilipse
reviewed
Oct 15, 2024
sphilipse
approved these changes
Oct 15, 2024
viduni94
changed the title
Pass function responses when copying conversation
[Obs AI Assistant] Pass function responses when copying conversation
Oct 15, 2024
viduni94
force-pushed
the
pass-function-responses-when-copying-conversation
branch
from
October 15, 2024 16:28
dcbb869
to
e409dbf
Compare
dgieselaar
approved these changes
Oct 15, 2024
viduni94
force-pushed
the
pass-function-responses-when-copying-conversation
branch
from
October 15, 2024 17:25
e409dbf
to
40a6ae1
Compare
…opying conversation (elastic#181216)
viduni94
force-pushed
the
pass-function-responses-when-copying-conversation
branch
from
October 15, 2024 20:03
40a6ae1
to
64afd53
Compare
💛 Build succeeded, but was flaky
Failed CI StepsTest Failures
Metrics [docs]Module Count
Async chunks
History
cc @viduni94 |
Starting backport for target branches: 8.x |
kibanamachine
pushed a commit
to kibanamachine/kibana
that referenced
this pull request
Oct 16, 2024
…lastic#195635) Closes elastic#181216 ## Summary ### Problem Function call arguments and responses are serialized separately. Therefore, when a conversation is copied, arguments and responses (`content` and `data`) appear as strings instead of JSON objects. This makes it harder to debug. ### Solution Deserialize the arguments and responses and include it in the copied conversation object. Example of original copied conversation: <details> <summary>Click to expand JSON</summary> ```json { "title": "", "messages": [ { "@timestamp": "2024-10-09T13:58:41.723Z", "message": { "role": "system", "content": "You are a helpful assistant for Elastic Observability...." } }, { "@timestamp": "2024-10-09T13:58:26.881Z", "message": { "role": "user", "content": "Give me examples of questions I can ask here." } }, { "@timestamp": "2024-10-09T13:58:26.965Z", "message": { "role": "assistant", "function_call": { "name": "context", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:27.063Z", "message": { "role": "user", "data": "{\"scores\":[],\"suggestions\":[]}", "name": "context", "content": "{\"screen_description\":\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\"learnings\":[]}" } }, { "@timestamp": "2024-10-09T13:58:35.140Z", "message": { "role": "assistant", "function_call": { "name": "", "arguments": "", "trigger": "assistant" }, "content": "Sure, here are some examples of questions you can ask:\n\n1. \"What is the average response time for my services?\"\n2. \"Show me the error rate for my services.\"\n3. \"Are there any anomalies in my system?\"\n4. \"What are the top 5 services by transaction volume?\"\n5. \"Show me the logs for a specific service.\"\n6. \"Are there any alerts in my system?\"\n7. \"What is the CPU usage of my hosts?\"\n8. \"Show me the network traffic in my system.\"\n9. \"What is the disk usage of my hosts?\"\n10. \"Show me the memory usage of my containers.\"\n\nPlease note that the actual questions you can ask depend on the data you have in your system." } }, { "@timestamp": "2024-10-09T13:58:41.651Z", "message": { "role": "user", "content": "What are the top 5 services by transaction volume" } }, { "@timestamp": "2024-10-09T13:58:41.723Z", "message": { "role": "assistant", "function_call": { "name": "context", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:41.784Z", "message": { "role": "user", "data": "{\"scores\":[],\"suggestions\":[]}", "name": "context", "content": "{\"screen_description\":\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\"learnings\":[]}" } }, { "@timestamp": "2024-10-09T13:58:43.370Z", "message": { "role": "assistant", "function_call": { "name": "get_dataset_info", "arguments": "{\n \"index\": \"traces-apm*,apm-*,traces-*.otel-*\"\n}", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:43.379Z", "message": { "role": "user", "name": "get_dataset_info", "content": "{\"indices\":[],\"fields\":[]}" } }, { "@timestamp": "2024-10-09T13:58:43.998Z", "message": { "role": "assistant", "function_call": { "name": "query", "arguments": "{}", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:47.572Z", "message": { "role": "user", "data": "{\"keywords\":[\"STATS\",\"SORT\",\"LIMIT\",\"COUNT\"],\"requestedDocumentation\":{\"STATS\":\"# STATS ... BY\\n\\nThe `STATS ... BY` command groups rows based on a common value and calculates one or more aggregated values over these grouped rows.\\n\\n## Syntax\\n\\n```esql\\nSTATS [column1 =] expression1[, ..., [columnN =] expressionN] [BY grouping_expression1[, ..., grouping_expressionN]]\\n```\\n\\n### Parameters\\n\\n#### columnX\\n\\nThe name for the aggregated value in the output. If not provided...."}}", "name": "query", "content": "{}" } }, { "@timestamp": "2024-10-09T13:58:51.481Z", "message": { "role": "assistant", "function_call": { "name": "execute_query", "arguments": "{\"query\":\"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\"}", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:51.619Z", "message": { "role": "user", "name": "execute_query", "content": "{\"message\":\"The query failed to execute\",\"error\":{\"name\":\"ResponseError\",\"message\":\"verification_exception\\n\\tRoot causes:\\n\\t\\tverification_exception: Found 1 problem\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\"}}" } }, { "@timestamp": "2024-10-09T13:58:56.600Z", "message": { "role": "assistant", "function_call": { "name": "", "arguments": "", "trigger": "assistant" }, "content": "I'm sorry, but it seems like there are no indices matching the pattern \"traces-apm*,apm-*,traces-*.otel-*\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch." } } ] } ``` </details> <br/> Copied conversation after deserializing: <details> <summary>Click to expand JSON</summary> ```json { "title": "", "messages": [ { "@timestamp": "2024-10-09T13:58:41.723Z", "message": { "role": "system", "content": "You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems..." } }, { "@timestamp": "2024-10-09T13:58:26.881Z", "message": { "role": "user", "content": "Give me examples of questions I can ask here." } }, { "@timestamp": "2024-10-09T13:58:26.965Z", "message": { "role": "assistant", "function_call": { "name": "context", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:27.063Z", "message": { "role": "user", "data": { "scores": [], "suggestions": [] }, "name": "context", "content": { "screen_description": "The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\n\nThe user is viewing the Overview page which shows a summary of the following apps: {\"universal_profiling\":{\"hasData\":false,\"status\":\"success\"},\"uptime\":{\"hasData\":false,\"indices\":\"heartbeat-*\",\"status\":\"success\"},\"infra_metrics\":{\"hasData\":false,\"indices\":\"metrics-*,metricbeat-*\",\"status\":\"success\"},\"alert\":{\"hasData\":false,\"status\":\"success\"},\"apm\":{\"hasData\":false,\"indices\":{\"transaction\":\"traces-apm*,apm-*,traces-*.otel-*\",\"span\":\"traces-apm*,apm-*,traces-*.otel-*\",\"error\":\"logs-apm*,apm-*,logs-*.otel-*\",\"metric\":\"metrics-apm*,apm-*,metrics-*.otel-*\",\"onboarding\":\"apm-*\",\"sourcemap\":\"apm-*\"},\"status\":\"success\"},\"ux\":{\"hasData\":false,\"indices\":\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\",\"status\":\"success\"},\"infra_logs\":{\"hasData\":false,\"indices\":\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\",\"status\":\"success\"}}", "learnings": [] } } }, { "@timestamp": "2024-10-09T13:58:35.140Z", "message": { "role": "assistant", "function_call": { "name": "", "arguments": "", "trigger": "assistant" }, "content": "Sure, here are some examples of questions..." } }, { "@timestamp": "2024-10-09T13:58:41.651Z", "message": { "role": "user", "content": "What are the top 5 services by transaction volume" } }, { "@timestamp": "2024-10-09T13:58:41.723Z", "message": { "role": "assistant", "function_call": { "name": "context", "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:41.784Z", "message": { "role": "user", "data": { "scores": [], "suggestions": [] }, "name": "context", "content": { "screen_description": "The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\n\nThe user is viewing the Overview page which shows a summary of the following apps: {\"universal_profiling\":{\"hasData\":false,\"status\":\"success\"},\"uptime\":{\"hasData\":false,\"indices\":\"heartbeat-*\",\"status\":\"success\"},\"infra_metrics\":{\"hasData\":false,\"indices\":\"metrics-*,metricbeat-*\",\"status\":\"success\"},\"alert\":{\"hasData\":false,\"status\":\"success\"},\"apm\":{\"hasData\":false,\"indices\":{\"transaction\":\"traces-apm*,apm-*,traces-*.otel-*\",\"span\":\"traces-apm*,apm-*,traces-*.otel-*\",\"error\":\"logs-apm*,apm-*,logs-*.otel-*\",\"metric\":\"metrics-apm*,apm-*,metrics-*.otel-*\",\"onboarding\":\"apm-*\",\"sourcemap\":\"apm-*\"},\"status\":\"success\"},\"ux\":{\"hasData\":false,\"indices\":\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\",\"status\":\"success\"},\"infra_logs\":{\"hasData\":false,\"indices\":\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\",\"status\":\"success\"}}", "learnings": [] } } }, { "@timestamp": "2024-10-09T13:58:43.370Z", "message": { "role": "assistant", "function_call": { "name": "get_dataset_info", "arguments": { "index": "traces-apm*,apm-*,traces-*.otel-*" }, "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:43.379Z", "message": { "role": "user", "name": "get_dataset_info", "content": { "indices": [], "fields": [] } } }, { "@timestamp": "2024-10-09T13:58:43.998Z", "message": { "role": "assistant", "function_call": { "name": "query", "arguments": {}, "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:47.572Z", "message": { "role": "user", "data": { "keywords": ["STATS", "SORT", "LIMIT", "COUNT"], "requestedDocumentation": { "STATS": "# STATS ... BY\n\nThe `STATS ... BY`...", "SORT": "# SORT\n\nThe SORT command...", "LIMIT": "# LIMIT\n\nThe LIMIT command...", "COUNT": "# COUNT\n\n....", "SYNTAX": "# ES|QL Syntax Guide....", "OVERVIEW": "## ES|QL Overview\n\n### ES|QL....", "OPERATORS": "# ES|QL Operators\n\nThis document...." } }, "name": "query", "content": {} } }, { "@timestamp": "2024-10-09T13:58:51.481Z", "message": { "role": "assistant", "function_call": { "name": "execute_query", "arguments": { "query": "FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5" }, "trigger": "assistant" }, "content": "" } }, { "@timestamp": "2024-10-09T13:58:51.619Z", "message": { "role": "user", "name": "execute_query", "content": { "message": "The query failed to execute", "error": { "name": "ResponseError", "message": "verification_exception\n\tRoot causes:\n\t\tverification_exception: Found 1 problem\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]" } } } }, { "@timestamp": "2024-10-09T13:58:56.600Z", "message": { "role": "assistant", "function_call": { "name": "", "arguments": "", "trigger": "assistant" }, "content": "I'm sorry, but it seems like there are no indices matching the pattern \"traces-apm*,apm-*,traces-*.otel-*\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch." } } ] } ``` </details> (cherry picked from commit e34876a)
💚 All backports created successfully
Note: Successful backport PRs will be merged automatically after passing CI. Questions ?Please refer to the Backport tool documentation |
kibanamachine
added a commit
that referenced
this pull request
Oct 16, 2024
…ation (#195635) (#196558) # Backport This will backport the following commits from `main` to `8.x`: - [[Obs AI Assistant] Pass function responses when copying conversation (#195635)](https://github.com/elastic/kibana/pull/195635) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Viduni Wickramarachchi","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-10-16T14:42:09Z","message":"[Obs AI Assistant] Pass function responses when copying conversation (#195635)\n\nCloses https://github.com/elastic/kibana/issues/181216\r\n\r\n## Summary\r\n\r\n### Problem\r\nFunction call arguments and responses are serialized separately.\r\nTherefore, when a conversation is copied, arguments and responses\r\n(`content` and `data`) appear as strings instead of JSON objects. This\r\nmakes it harder to debug.\r\n\r\n### Solution\r\nDeserialize the arguments and responses and include it in the copied\r\nconversation object.\r\n\r\nExample of original copied conversation:\r\n<details>\r\n <summary>Click to expand JSON</summary>\r\n\r\n```json\r\n{\r\n \"title\": \"\",\r\n \"messages\": [\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": {\r\n \"role\": \"system\",\r\n \"content\": \"You are a helpful assistant for Elastic Observability....\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.881Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"Give me examples of questions I can ask here.\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.965Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:27.063Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"scores\\\":[],\\\"suggestions\\\":[]}\",\r\n \"name\": \"context\",\r\n \"content\": \"{\\\"screen_description\\\":\\\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\\\n\\\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\\\\\"universal_profiling\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"uptime\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"heartbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_metrics\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"metrics-*,metricbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"alert\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"apm\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":{\\\\\\\"transaction\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"span\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"error\\\\\\\":\\\\\\\"logs-apm*,apm-*,logs-*.otel-*\\\\\\\",\\\\\\\"metric\\\\\\\":\\\\\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"onboarding\\\\\\\":\\\\\\\"apm-*\\\\\\\",\\\\\\\"sourcemap\\\\\\\":\\\\\\\"apm-*\\\\\\\"},\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"ux\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_logs\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"}}\\\",\\\"learnings\\\":[]}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:35.140Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"Sure, here are some examples of questions you can ask:\\n\\n1. \\\"What is the average response time for my services?\\\"\\n2. \\\"Show me the error rate for my services.\\\"\\n3. \\\"Are there any anomalies in my system?\\\"\\n4. \\\"What are the top 5 services by transaction volume?\\\"\\n5. \\\"Show me the logs for a specific service.\\\"\\n6. \\\"Are there any alerts in my system?\\\"\\n7. \\\"What is the CPU usage of my hosts?\\\"\\n8. \\\"Show me the network traffic in my system.\\\"\\n9. \\\"What is the disk usage of my hosts?\\\"\\n10. \\\"Show me the memory usage of my containers.\\\"\\n\\nPlease note that the actual questions you can ask depend on the data you have in your system.\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.651Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"What are the top 5 services by transaction volume\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.784Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"scores\\\":[],\\\"suggestions\\\":[]}\",\r\n \"name\": \"context\",\r\n \"content\": \"{\\\"screen_description\\\":\\\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\\\n\\\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\\\\\"universal_profiling\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"uptime\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"heartbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_metrics\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"metrics-*,metricbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"alert\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"apm\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":{\\\\\\\"transaction\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"span\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"error\\\\\\\":\\\\\\\"logs-apm*,apm-*,logs-*.otel-*\\\\\\\",\\\\\\\"metric\\\\\\\":\\\\\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"onboarding\\\\\\\":\\\\\\\"apm-*\\\\\\\",\\\\\\\"sourcemap\\\\\\\":\\\\\\\"apm-*\\\\\\\"},\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"ux\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_logs\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"}}\\\",\\\"learnings\\\":[]}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.370Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"get_dataset_info\",\r\n \"arguments\": \"{\\n \\\"index\\\": \\\"traces-apm*,apm-*,traces-*.otel-*\\\"\\n}\",\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.379Z\",\r\n \"message\": { \"role\": \"user\", \"name\": \"get_dataset_info\", \"content\": \"{\\\"indices\\\":[],\\\"fields\\\":[]}\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.998Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"query\", \"arguments\": \"{}\", \"trigger\": \"assistant\" },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:47.572Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"keywords\\\":[\\\"STATS\\\",\\\"SORT\\\",\\\"LIMIT\\\",\\\"COUNT\\\"],\\\"requestedDocumentation\\\":{\\\"STATS\\\":\\\"# STATS ... BY\\\\n\\\\nThe `STATS ... BY` command groups rows based on a common value and calculates one or more aggregated values over these grouped rows.\\\\n\\\\n## Syntax\\\\n\\\\n```esql\\\\nSTATS [column1 =] expression1[, ..., [columnN =] expressionN] [BY grouping_expression1[, ..., grouping_expressionN]]\\\\n```\\\\n\\\\n### Parameters\\\\n\\\\n#### columnX\\\\n\\\\nThe name for the aggregated value in the output. If not provided....\"}}\",\r\n \"name\": \"query\",\r\n \"content\": \"{}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.481Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"execute_query\",\r\n \"arguments\": \"{\\\"query\\\":\\\"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\\\"}\",\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.619Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"name\": \"execute_query\",\r\n \"content\": \"{\\\"message\\\":\\\"The query failed to execute\\\",\\\"error\\\":{\\\"name\\\":\\\"ResponseError\\\",\\\"message\\\":\\\"verification_exception\\\\n\\\\tRoot causes:\\\\n\\\\t\\\\tverification_exception: Found 1 problem\\\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\\\"}}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:56.600Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"I'm sorry, but it seems like there are no indices matching the pattern \\\"traces-apm*,apm-*,traces-*.otel-*\\\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch.\"\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n</details>\r\n<br/>\r\nCopied conversation after deserializing:\r\n<details>\r\n <summary>Click to expand JSON</summary>\r\n\r\n```json\r\n{\r\n \"title\": \"\",\r\n \"messages\": [\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": {\r\n \"role\": \"system\",\r\n \"content\": \"You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems...\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.881Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"Give me examples of questions I can ask here.\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.965Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:27.063Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": { \"scores\": [], \"suggestions\": [] },\r\n \"name\": \"context\",\r\n \"content\": {\r\n \"screen_description\": \"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\r\n \"learnings\": []\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:35.140Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"Sure, here are some examples of questions...\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.651Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"What are the top 5 services by transaction volume\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.784Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": { \"scores\": [], \"suggestions\": [] },\r\n \"name\": \"context\",\r\n \"content\": {\r\n \"screen_description\": \"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\r\n \"learnings\": []\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.370Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"get_dataset_info\",\r\n \"arguments\": { \"index\": \"traces-apm*,apm-*,traces-*.otel-*\" },\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.379Z\",\r\n \"message\": { \"role\": \"user\", \"name\": \"get_dataset_info\", \"content\": { \"indices\": [], \"fields\": [] } }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.998Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"query\", \"arguments\": {}, \"trigger\": \"assistant\" },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:47.572Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": {\r\n \"keywords\": [\"STATS\", \"SORT\", \"LIMIT\", \"COUNT\"],\r\n \"requestedDocumentation\": {\r\n \"STATS\": \"# STATS ... BY\\n\\nThe `STATS ... BY`...\",\r\n \"SORT\": \"# SORT\\n\\nThe SORT command...\",\r\n \"LIMIT\": \"# LIMIT\\n\\nThe LIMIT command...\",\r\n \"COUNT\": \"# COUNT\\n\\n....\",\r\n \"SYNTAX\": \"# ES|QL Syntax Guide....\",\r\n \"OVERVIEW\": \"## ES|QL Overview\\n\\n### ES|QL....\",\r\n \"OPERATORS\": \"# ES|QL Operators\\n\\nThis document....\"\r\n }\r\n },\r\n \"name\": \"query\",\r\n \"content\": {}\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.481Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"execute_query\",\r\n \"arguments\": {\r\n \"query\": \"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\"\r\n },\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.619Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"name\": \"execute_query\",\r\n \"content\": {\r\n \"message\": \"The query failed to execute\",\r\n \"error\": {\r\n \"name\": \"ResponseError\",\r\n \"message\": \"verification_exception\\n\\tRoot causes:\\n\\t\\tverification_exception: Found 1 problem\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\"\r\n }\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:56.600Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"I'm sorry, but it seems like there are no indices matching the pattern \\\"traces-apm*,apm-*,traces-*.otel-*\\\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch.\"\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n</details>","sha":"e34876aa6809a5ea79a836ce61e94192a4769d59","branchLabelMapping":{"^v9.0.0$":"main","^v8.16.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:enhancement","v9.0.0","backport:prev-minor","Team:Obs AI Assistant","ci:project-deploy-observability"],"title":"[Obs AI Assistant] Pass function responses when copying conversation","number":195635,"url":"https://github.com/elastic/kibana/pull/195635","mergeCommit":{"message":"[Obs AI Assistant] Pass function responses when copying conversation (#195635)\n\nCloses https://github.com/elastic/kibana/issues/181216\r\n\r\n## Summary\r\n\r\n### Problem\r\nFunction call arguments and responses are serialized separately.\r\nTherefore, when a conversation is copied, arguments and responses\r\n(`content` and `data`) appear as strings instead of JSON objects. This\r\nmakes it harder to debug.\r\n\r\n### Solution\r\nDeserialize the arguments and responses and include it in the copied\r\nconversation object.\r\n\r\nExample of original copied conversation:\r\n<details>\r\n <summary>Click to expand JSON</summary>\r\n\r\n```json\r\n{\r\n \"title\": \"\",\r\n \"messages\": [\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": {\r\n \"role\": \"system\",\r\n \"content\": \"You are a helpful assistant for Elastic Observability....\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.881Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"Give me examples of questions I can ask here.\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.965Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:27.063Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"scores\\\":[],\\\"suggestions\\\":[]}\",\r\n \"name\": \"context\",\r\n \"content\": \"{\\\"screen_description\\\":\\\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\\\n\\\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\\\\\"universal_profiling\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"uptime\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"heartbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_metrics\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"metrics-*,metricbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"alert\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"apm\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":{\\\\\\\"transaction\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"span\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"error\\\\\\\":\\\\\\\"logs-apm*,apm-*,logs-*.otel-*\\\\\\\",\\\\\\\"metric\\\\\\\":\\\\\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"onboarding\\\\\\\":\\\\\\\"apm-*\\\\\\\",\\\\\\\"sourcemap\\\\\\\":\\\\\\\"apm-*\\\\\\\"},\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"ux\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_logs\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"}}\\\",\\\"learnings\\\":[]}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:35.140Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"Sure, here are some examples of questions you can ask:\\n\\n1. \\\"What is the average response time for my services?\\\"\\n2. \\\"Show me the error rate for my services.\\\"\\n3. \\\"Are there any anomalies in my system?\\\"\\n4. \\\"What are the top 5 services by transaction volume?\\\"\\n5. \\\"Show me the logs for a specific service.\\\"\\n6. \\\"Are there any alerts in my system?\\\"\\n7. \\\"What is the CPU usage of my hosts?\\\"\\n8. \\\"Show me the network traffic in my system.\\\"\\n9. \\\"What is the disk usage of my hosts?\\\"\\n10. \\\"Show me the memory usage of my containers.\\\"\\n\\nPlease note that the actual questions you can ask depend on the data you have in your system.\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.651Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"What are the top 5 services by transaction volume\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.784Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"scores\\\":[],\\\"suggestions\\\":[]}\",\r\n \"name\": \"context\",\r\n \"content\": \"{\\\"screen_description\\\":\\\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\\\n\\\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\\\\\"universal_profiling\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"uptime\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"heartbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_metrics\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"metrics-*,metricbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"alert\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"apm\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":{\\\\\\\"transaction\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"span\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"error\\\\\\\":\\\\\\\"logs-apm*,apm-*,logs-*.otel-*\\\\\\\",\\\\\\\"metric\\\\\\\":\\\\\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"onboarding\\\\\\\":\\\\\\\"apm-*\\\\\\\",\\\\\\\"sourcemap\\\\\\\":\\\\\\\"apm-*\\\\\\\"},\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"ux\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_logs\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"}}\\\",\\\"learnings\\\":[]}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.370Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"get_dataset_info\",\r\n \"arguments\": \"{\\n \\\"index\\\": \\\"traces-apm*,apm-*,traces-*.otel-*\\\"\\n}\",\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.379Z\",\r\n \"message\": { \"role\": \"user\", \"name\": \"get_dataset_info\", \"content\": \"{\\\"indices\\\":[],\\\"fields\\\":[]}\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.998Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"query\", \"arguments\": \"{}\", \"trigger\": \"assistant\" },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:47.572Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"keywords\\\":[\\\"STATS\\\",\\\"SORT\\\",\\\"LIMIT\\\",\\\"COUNT\\\"],\\\"requestedDocumentation\\\":{\\\"STATS\\\":\\\"# STATS ... BY\\\\n\\\\nThe `STATS ... BY` command groups rows based on a common value and calculates one or more aggregated values over these grouped rows.\\\\n\\\\n## Syntax\\\\n\\\\n```esql\\\\nSTATS [column1 =] expression1[, ..., [columnN =] expressionN] [BY grouping_expression1[, ..., grouping_expressionN]]\\\\n```\\\\n\\\\n### Parameters\\\\n\\\\n#### columnX\\\\n\\\\nThe name for the aggregated value in the output. If not provided....\"}}\",\r\n \"name\": \"query\",\r\n \"content\": \"{}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.481Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"execute_query\",\r\n \"arguments\": \"{\\\"query\\\":\\\"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\\\"}\",\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.619Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"name\": \"execute_query\",\r\n \"content\": \"{\\\"message\\\":\\\"The query failed to execute\\\",\\\"error\\\":{\\\"name\\\":\\\"ResponseError\\\",\\\"message\\\":\\\"verification_exception\\\\n\\\\tRoot causes:\\\\n\\\\t\\\\tverification_exception: Found 1 problem\\\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\\\"}}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:56.600Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"I'm sorry, but it seems like there are no indices matching the pattern \\\"traces-apm*,apm-*,traces-*.otel-*\\\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch.\"\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n</details>\r\n<br/>\r\nCopied conversation after deserializing:\r\n<details>\r\n <summary>Click to expand JSON</summary>\r\n\r\n```json\r\n{\r\n \"title\": \"\",\r\n \"messages\": [\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": {\r\n \"role\": \"system\",\r\n \"content\": \"You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems...\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.881Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"Give me examples of questions I can ask here.\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.965Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:27.063Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": { \"scores\": [], \"suggestions\": [] },\r\n \"name\": \"context\",\r\n \"content\": {\r\n \"screen_description\": \"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\r\n \"learnings\": []\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:35.140Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"Sure, here are some examples of questions...\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.651Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"What are the top 5 services by transaction volume\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.784Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": { \"scores\": [], \"suggestions\": [] },\r\n \"name\": \"context\",\r\n \"content\": {\r\n \"screen_description\": \"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\r\n \"learnings\": []\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.370Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"get_dataset_info\",\r\n \"arguments\": { \"index\": \"traces-apm*,apm-*,traces-*.otel-*\" },\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.379Z\",\r\n \"message\": { \"role\": \"user\", \"name\": \"get_dataset_info\", \"content\": { \"indices\": [], \"fields\": [] } }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.998Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"query\", \"arguments\": {}, \"trigger\": \"assistant\" },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:47.572Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": {\r\n \"keywords\": [\"STATS\", \"SORT\", \"LIMIT\", \"COUNT\"],\r\n \"requestedDocumentation\": {\r\n \"STATS\": \"# STATS ... BY\\n\\nThe `STATS ... BY`...\",\r\n \"SORT\": \"# SORT\\n\\nThe SORT command...\",\r\n \"LIMIT\": \"# LIMIT\\n\\nThe LIMIT command...\",\r\n \"COUNT\": \"# COUNT\\n\\n....\",\r\n \"SYNTAX\": \"# ES|QL Syntax Guide....\",\r\n \"OVERVIEW\": \"## ES|QL Overview\\n\\n### ES|QL....\",\r\n \"OPERATORS\": \"# ES|QL Operators\\n\\nThis document....\"\r\n }\r\n },\r\n \"name\": \"query\",\r\n \"content\": {}\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.481Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"execute_query\",\r\n \"arguments\": {\r\n \"query\": \"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\"\r\n },\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.619Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"name\": \"execute_query\",\r\n \"content\": {\r\n \"message\": \"The query failed to execute\",\r\n \"error\": {\r\n \"name\": \"ResponseError\",\r\n \"message\": \"verification_exception\\n\\tRoot causes:\\n\\t\\tverification_exception: Found 1 problem\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\"\r\n }\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:56.600Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"I'm sorry, but it seems like there are no indices matching the pattern \\\"traces-apm*,apm-*,traces-*.otel-*\\\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch.\"\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n</details>","sha":"e34876aa6809a5ea79a836ce61e94192a4769d59"}},"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/195635","number":195635,"mergeCommit":{"message":"[Obs AI Assistant] Pass function responses when copying conversation (#195635)\n\nCloses https://github.com/elastic/kibana/issues/181216\r\n\r\n## Summary\r\n\r\n### Problem\r\nFunction call arguments and responses are serialized separately.\r\nTherefore, when a conversation is copied, arguments and responses\r\n(`content` and `data`) appear as strings instead of JSON objects. This\r\nmakes it harder to debug.\r\n\r\n### Solution\r\nDeserialize the arguments and responses and include it in the copied\r\nconversation object.\r\n\r\nExample of original copied conversation:\r\n<details>\r\n <summary>Click to expand JSON</summary>\r\n\r\n```json\r\n{\r\n \"title\": \"\",\r\n \"messages\": [\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": {\r\n \"role\": \"system\",\r\n \"content\": \"You are a helpful assistant for Elastic Observability....\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.881Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"Give me examples of questions I can ask here.\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.965Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:27.063Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"scores\\\":[],\\\"suggestions\\\":[]}\",\r\n \"name\": \"context\",\r\n \"content\": \"{\\\"screen_description\\\":\\\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\\\n\\\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\\\\\"universal_profiling\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"uptime\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"heartbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_metrics\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"metrics-*,metricbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"alert\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"apm\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":{\\\\\\\"transaction\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"span\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"error\\\\\\\":\\\\\\\"logs-apm*,apm-*,logs-*.otel-*\\\\\\\",\\\\\\\"metric\\\\\\\":\\\\\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"onboarding\\\\\\\":\\\\\\\"apm-*\\\\\\\",\\\\\\\"sourcemap\\\\\\\":\\\\\\\"apm-*\\\\\\\"},\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"ux\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_logs\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"}}\\\",\\\"learnings\\\":[]}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:35.140Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"Sure, here are some examples of questions you can ask:\\n\\n1. \\\"What is the average response time for my services?\\\"\\n2. \\\"Show me the error rate for my services.\\\"\\n3. \\\"Are there any anomalies in my system?\\\"\\n4. \\\"What are the top 5 services by transaction volume?\\\"\\n5. \\\"Show me the logs for a specific service.\\\"\\n6. \\\"Are there any alerts in my system?\\\"\\n7. \\\"What is the CPU usage of my hosts?\\\"\\n8. \\\"Show me the network traffic in my system.\\\"\\n9. \\\"What is the disk usage of my hosts?\\\"\\n10. \\\"Show me the memory usage of my containers.\\\"\\n\\nPlease note that the actual questions you can ask depend on the data you have in your system.\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.651Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"What are the top 5 services by transaction volume\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.784Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"scores\\\":[],\\\"suggestions\\\":[]}\",\r\n \"name\": \"context\",\r\n \"content\": \"{\\\"screen_description\\\":\\\"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\\\n\\\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\\\\\"universal_profiling\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"uptime\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"heartbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_metrics\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"metrics-*,metricbeat-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"alert\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"apm\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":{\\\\\\\"transaction\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"span\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*\\\\\\\",\\\\\\\"error\\\\\\\":\\\\\\\"logs-apm*,apm-*,logs-*.otel-*\\\\\\\",\\\\\\\"metric\\\\\\\":\\\\\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"onboarding\\\\\\\":\\\\\\\"apm-*\\\\\\\",\\\\\\\"sourcemap\\\\\\\":\\\\\\\"apm-*\\\\\\\"},\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"ux\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"},\\\\\\\"infra_logs\\\\\\\":{\\\\\\\"hasData\\\\\\\":false,\\\\\\\"indices\\\\\\\":\\\\\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"success\\\\\\\"}}\\\",\\\"learnings\\\":[]}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.370Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"get_dataset_info\",\r\n \"arguments\": \"{\\n \\\"index\\\": \\\"traces-apm*,apm-*,traces-*.otel-*\\\"\\n}\",\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.379Z\",\r\n \"message\": { \"role\": \"user\", \"name\": \"get_dataset_info\", \"content\": \"{\\\"indices\\\":[],\\\"fields\\\":[]}\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.998Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"query\", \"arguments\": \"{}\", \"trigger\": \"assistant\" },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:47.572Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": \"{\\\"keywords\\\":[\\\"STATS\\\",\\\"SORT\\\",\\\"LIMIT\\\",\\\"COUNT\\\"],\\\"requestedDocumentation\\\":{\\\"STATS\\\":\\\"# STATS ... BY\\\\n\\\\nThe `STATS ... BY` command groups rows based on a common value and calculates one or more aggregated values over these grouped rows.\\\\n\\\\n## Syntax\\\\n\\\\n```esql\\\\nSTATS [column1 =] expression1[, ..., [columnN =] expressionN] [BY grouping_expression1[, ..., grouping_expressionN]]\\\\n```\\\\n\\\\n### Parameters\\\\n\\\\n#### columnX\\\\n\\\\nThe name for the aggregated value in the output. If not provided....\"}}\",\r\n \"name\": \"query\",\r\n \"content\": \"{}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.481Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"execute_query\",\r\n \"arguments\": \"{\\\"query\\\":\\\"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\\\"}\",\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.619Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"name\": \"execute_query\",\r\n \"content\": \"{\\\"message\\\":\\\"The query failed to execute\\\",\\\"error\\\":{\\\"name\\\":\\\"ResponseError\\\",\\\"message\\\":\\\"verification_exception\\\\n\\\\tRoot causes:\\\\n\\\\t\\\\tverification_exception: Found 1 problem\\\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\\\"}}\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:56.600Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"I'm sorry, but it seems like there are no indices matching the pattern \\\"traces-apm*,apm-*,traces-*.otel-*\\\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch.\"\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n</details>\r\n<br/>\r\nCopied conversation after deserializing:\r\n<details>\r\n <summary>Click to expand JSON</summary>\r\n\r\n```json\r\n{\r\n \"title\": \"\",\r\n \"messages\": [\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": {\r\n \"role\": \"system\",\r\n \"content\": \"You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems...\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.881Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"Give me examples of questions I can ask here.\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:26.965Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:27.063Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": { \"scores\": [], \"suggestions\": [] },\r\n \"name\": \"context\",\r\n \"content\": {\r\n \"screen_description\": \"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\r\n \"learnings\": []\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:35.140Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"Sure, here are some examples of questions...\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.651Z\",\r\n \"message\": { \"role\": \"user\", \"content\": \"What are the top 5 services by transaction volume\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.723Z\",\r\n \"message\": { \"role\": \"assistant\", \"function_call\": { \"name\": \"context\", \"trigger\": \"assistant\" }, \"content\": \"\" }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:41.784Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": { \"scores\": [], \"suggestions\": [] },\r\n \"name\": \"context\",\r\n \"content\": {\r\n \"screen_description\": \"The user is looking at http://localhost:5601/kyq/app/observability/overview?rangeFrom=now-15m&rangeTo=now. The current time range is 2024-10-09T13:40:00.288Z - 2024-10-09T13:55:00.288Z.\\n\\nThe user is viewing the Overview page which shows a summary of the following apps: {\\\"universal_profiling\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"uptime\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"heartbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_metrics\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"metrics-*,metricbeat-*\\\",\\\"status\\\":\\\"success\\\"},\\\"alert\\\":{\\\"hasData\\\":false,\\\"status\\\":\\\"success\\\"},\\\"apm\\\":{\\\"hasData\\\":false,\\\"indices\\\":{\\\"transaction\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"span\\\":\\\"traces-apm*,apm-*,traces-*.otel-*\\\",\\\"error\\\":\\\"logs-apm*,apm-*,logs-*.otel-*\\\",\\\"metric\\\":\\\"metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"onboarding\\\":\\\"apm-*\\\",\\\"sourcemap\\\":\\\"apm-*\\\"},\\\"status\\\":\\\"success\\\"},\\\"ux\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"traces-apm*,apm-*,traces-*.otel-*,logs-apm*,apm-*,logs-*.otel-*,metrics-apm*,apm-*,metrics-*.otel-*\\\",\\\"status\\\":\\\"success\\\"},\\\"infra_logs\\\":{\\\"hasData\\\":false,\\\"indices\\\":\\\"logs-*-*,logs-*,filebeat-*,kibana_sample_data_logs*\\\",\\\"status\\\":\\\"success\\\"}}\",\r\n \"learnings\": []\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.370Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"get_dataset_info\",\r\n \"arguments\": { \"index\": \"traces-apm*,apm-*,traces-*.otel-*\" },\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.379Z\",\r\n \"message\": { \"role\": \"user\", \"name\": \"get_dataset_info\", \"content\": { \"indices\": [], \"fields\": [] } }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:43.998Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"query\", \"arguments\": {}, \"trigger\": \"assistant\" },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:47.572Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"data\": {\r\n \"keywords\": [\"STATS\", \"SORT\", \"LIMIT\", \"COUNT\"],\r\n \"requestedDocumentation\": {\r\n \"STATS\": \"# STATS ... BY\\n\\nThe `STATS ... BY`...\",\r\n \"SORT\": \"# SORT\\n\\nThe SORT command...\",\r\n \"LIMIT\": \"# LIMIT\\n\\nThe LIMIT command...\",\r\n \"COUNT\": \"# COUNT\\n\\n....\",\r\n \"SYNTAX\": \"# ES|QL Syntax Guide....\",\r\n \"OVERVIEW\": \"## ES|QL Overview\\n\\n### ES|QL....\",\r\n \"OPERATORS\": \"# ES|QL Operators\\n\\nThis document....\"\r\n }\r\n },\r\n \"name\": \"query\",\r\n \"content\": {}\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.481Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": {\r\n \"name\": \"execute_query\",\r\n \"arguments\": {\r\n \"query\": \"FROM traces-apm*,apm-*,traces-*.otel-* | STATS COUNT(*) BY service.name | SORT COUNT(*) DESC | LIMIT 5\"\r\n },\r\n \"trigger\": \"assistant\"\r\n },\r\n \"content\": \"\"\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:51.619Z\",\r\n \"message\": {\r\n \"role\": \"user\",\r\n \"name\": \"execute_query\",\r\n \"content\": {\r\n \"message\": \"The query failed to execute\",\r\n \"error\": {\r\n \"name\": \"ResponseError\",\r\n \"message\": \"verification_exception\\n\\tRoot causes:\\n\\t\\tverification_exception: Found 1 problem\\nline 1:1: Unknown index [traces-apm*,apm-*,traces-*.otel-*]\"\r\n }\r\n }\r\n }\r\n },\r\n {\r\n \"@timestamp\": \"2024-10-09T13:58:56.600Z\",\r\n \"message\": {\r\n \"role\": \"assistant\",\r\n \"function_call\": { \"name\": \"\", \"arguments\": \"\", \"trigger\": \"assistant\" },\r\n \"content\": \"I'm sorry, but it seems like there are no indices matching the pattern \\\"traces-apm*,apm-*,traces-*.otel-*\\\" in your system. Therefore, I'm unable to retrieve the top 5 services by transaction volume. Please ensure that your APM data is being ingested correctly into Elasticsearch.\"\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n</details>","sha":"e34876aa6809a5ea79a836ce61e94192a4769d59"}}]}] BACKPORT--> Co-authored-by: Viduni Wickramarachchi <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
backport:prev-minor
Backport to (8.x) the previous minor version (i.e. one version back from main)
ci:project-deploy-observability
Create an Observability project
release_note:enhancement
Team:Obs AI Assistant
Observability AI Assistant
v8.16.0
v9.0.0
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.
Closes #181216
Summary
Problem
Function call arguments and responses are serialized separately. Therefore, when a conversation is copied, arguments and responses (
content
anddata
) appear as strings instead of JSON objects. This makes it harder to debug.Solution
Deserialize the arguments and responses and include it in the copied conversation object.
Example of original copied conversation:
Click to expand JSON
Copied conversation after deserializing:
Click to expand JSON