From 1e160f2d05c41114b07969093fe9e40e822884c9 Mon Sep 17 00:00:00 2001 From: Shawn Hurley Date: Thu, 20 Feb 2025 00:18:16 -0500 Subject: [PATCH] :book: Adding demo mode documentation. (#667) * Adding demo mode documentation. * Adding the reason for using demo mode * The parts that are needed for demo mode * How to configure them * Warning around ordering of solving incidents to make sure cache hits still happen Signed-off-by: Shawn Hurley * Update docs/demo_mode.md Co-authored-by: Jonah Sussman <42743659+JonahSussman@users.noreply.github.com> Signed-off-by: Shawn Hurley --------- Signed-off-by: Shawn Hurley Co-authored-by: Jonah Sussman <42743659+JonahSussman@users.noreply.github.com> --- docs/demo_mode.md | 53 ++++++++++++++++++ .../demo_mode/cache_dir_json_settings.png | Bin 0 -> 4537 bytes .../images/demo_mode/kai_demo_mode_search.png | Bin 0 -> 8079 bytes .../demo_mode/searched_kai_cache_dir.png | Bin 0 -> 14911 bytes docs/images/demo_mode/select_demo_mode_on.png | Bin 0 -> 7356 bytes 5 files changed, 53 insertions(+) create mode 100644 docs/demo_mode.md create mode 100644 docs/images/demo_mode/cache_dir_json_settings.png create mode 100644 docs/images/demo_mode/kai_demo_mode_search.png create mode 100644 docs/images/demo_mode/searched_kai_cache_dir.png create mode 100644 docs/images/demo_mode/select_demo_mode_on.png diff --git a/docs/demo_mode.md b/docs/demo_mode.md new file mode 100644 index 00000000..af24a78c --- /dev/null +++ b/docs/demo_mode.md @@ -0,0 +1,53 @@ +# Demo Mode + +There may be times when you have to give a demo of Kai in a restricted network setting. This could be because you don't have access to LLMs, the network will be too slow to contact them, or you don't want to wait for the LLM while showcasing what Kai can do for you! + +If this situation sounds familiar, we will walk through how to set up demo mode, which will allow you to cache the LLM responses and replay them as you go through the workflow to solve issues in a code base. + +## Enabling Demo Mode + +Demo Mode consists of two parts. The first part is the cache, where we store all the LLM calls. We use a hash of input data to determine when to re-use a particular LLM call. This cache can be stored anywhere on your filesystem for later use. + +> [!NOTE] +> This uses the model you have selected to segregate the cached responses. If you change the model configuration, you cannot use the cache generated for a different model. + +The second part is the Demo Mode setting you will need to enable. This will tell Kai to look at the cache for a matching LLM call and use what is there. + +You will need both configured to use demo mode to use the cache responses from the LLM. + +### Configure Cache Directory + +To configure the cache directory, you will need to open up the settings panel. + +![image](images/open_settings.png) + +Once here, search for `kai.cached` and find and click the `Edit in settings.json` link. + +![image](images/demo_mode/kai_demo_mode_search.png) + +Now, you will need to add the path you would like to use for the cache to the JSON dictionary. + +![image](images/demo_mode/cache_dir_json_settings.png) + +The key to use is `conveyor.kai.cacheDir`, and the value is an absolute path to a location on your hard drive. In the example, I am putting the cache to `/Users/shurley/repos/kai/cache,` but you can change this to wherever you would like to store it. + +### Configure Demo Mode + +To configure demo mode, you must open the settings panel again. + +![image](images/open_settings.png) + +Now, you will search for `kai.demo` and find the setting for demo mode. + +![image](images/demo_mode/searched_kai_cache_dir.png) + +Select the checkbox if it is not already selected, and you should be all set! + +![image](images/demo_mode/select_demo_mode_on.png) + +## Seeding Demo Mode + +Now that you have configured demo mode, you can use Kai to generate the fixes you want to show in your demo! + +> [!WARNING] +> Once you have done this, solve the same incidents and issues in the same file in order. If you fix incidents in the same file in a different order, the hash of the input will be different, and you will not find the call in the cache. diff --git a/docs/images/demo_mode/cache_dir_json_settings.png b/docs/images/demo_mode/cache_dir_json_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6733f58cf4a512686898d91b81d2c474b9174228 GIT binary patch literal 4537 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 XV%jXQ^z+?W00000NkvXXu0mjf&?L4yZ(4est= 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 literal 0 HcmV?d00001 diff --git a/docs/images/demo_mode/searched_kai_cache_dir.png b/docs/images/demo_mode/searched_kai_cache_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..7c375892e393a30f58857b02f5ba3d41c915c99d GIT binary patch literal 14911 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 literal 0 HcmV?d00001 diff --git a/docs/images/demo_mode/select_demo_mode_on.png b/docs/images/demo_mode/select_demo_mode_on.png new file mode 100644 index 0000000000000000000000000000000000000000..834afcefe5e68a252bf4f9905f6f3ce0ef4c8043 GIT binary patch literal 7356 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