>$dDA0o%3$t>Qzag^(Dx%5eYTKpY!S2BRjGeKtk)meXHQP
zlQyCTIIeSI+ezDtdid%iz4{>JoU`a4D~ZsYOrkS~Ds|e>yGxnmyWAUuJZOjbZ@a#z
z9|kY-k=A+&lHt|?p&~D=vqIe=6PvDd>@u7H?SR%FNBtmDT(QXXwjKEkmJMwdJ&rKEg`LeBy%2n=DY@eK1x)nVF83$iVGI4z2pZ0p6Me5W{uNvmr4#vs~
z&K0r`OWPpUgMSPVj@$wP*<}2Btc`dH5J7YdQnhW*2^mq8YTbkgXd_`80iDpPG>_K
zd<;B>Z^S}qTmgAMwNVgDm)(XWx*h@Aim-@tt_@d96Ymf&i?-!@(4Rd&g@T^#eY*QnIX{5Y(*Gs=MsWWoVyI-mx+v5ZC?iz&I-9h;<
zOB0&K9cd&?tzQ3=RWb)vx?v2PY8YlQg8etE_8$MstI=rN6HG&dyX=+P{;gSzn5f^$
zuwG8XfR@b*Fhm_$z)QbSIkYfip1>};pLKcv!OqT7Id`rdkoehzdkXVcQ=T`V3!$6F
z)hVB_ELw5e{YMhT7YdZll1cDe9)%``cMWnWcrHJ>v#%Cf%yIO}fD}<5jq#~3a5kdp>Q$ovDO!oV*s|vSI%X?$>GV*#f|2Mig#YK_#bX{
zwlxG(>ZyapwuhGA5{omQx~e&;_S4?=1QC16v)0;1S9)v%8J?#xXJ5PR6JluhAZ@%6
z!LxC*I6O(apyeFgt?D&knWOB6(|wp})^f2E-RjNvAOajeAeb0mR7m-ZSZk6!Z%S!W
z%jk*R_d4*Wjm83q1M7L_gLju%)J<31RZeKKZNs=JjyZSEe{xq7VTXVt5h@Orj=vms
zdnrlU4kijbyy7R(oQNqlrgPPa!X*L|KJf*bLJo`{6~QPez#h^ZoZ>m;HS1T6DSM
z!eECO1v3m?)PG|dk^KYa
amB5EVaWF%TU$Z$pfEea{EPm-jz`p=ggQzF~
diff --git a/examples/CreateSimpleOllamaChatBot.md b/examples/CreateSimpleOllamaChatBot.md
new file mode 100644
index 0000000..35a8ed8
--- /dev/null
+++ b/examples/CreateSimpleOllamaChatBot.md
@@ -0,0 +1,238 @@
+
+# Create Simple ChatBot
+
+To run the code shown on this page, open the MLX file in MATLAB: [mlx-scripts/CreateSimpleOllamaChatBot.mlx](mlx-scripts/CreateSimpleOllamaChatBot.mlx)
+
+This example shows how to create a simple chatbot using the `ollamaChat` and `messageHistory` functions.
+
+
+When you run this example, an interactive AI chat starts in the MATLAB® Command Window. To leave the chat, type "end" or press **Ctrl+C**.
+
+- This example includes three steps:
+- Define model parameters, such as the maximum word count, and a stop word.
+- Create an ollamaChat object and set up a meta prompt.
+- Set up the chat loop.
+
+To run this example, you need a running Ollama™ installation. To run it unchanged, you need to have Mistral® pulled into that Ollama server.
+
+```matlab
+loadenv(".env")
+addpath('../..')
+```
+# Setup Model
+
+Set the maximum allowable number of words per chat session and define the keyword that, when entered by the user, ends the chat session.
+
+```matlab
+wordLimit = 2000;
+stopWord = "end";
+```
+
+Create an instance of `ollamaChat` to perform the chat and `messageHistory` to store the conversation history`.`
+
+```matlab
+chat = ollamaChat("mistral");
+messages = messageHistory;
+```
+# Chat loop
+
+Start the chat and keep it going until it sees the word in `stopWord`.
+
+```matlab
+totalWords = 0;
+messagesSizes = [];
+```
+
+The main loop continues indefinitely until you input the stop word or press **Ctrl+C.**
+
+```matlab
+while true
+ query = input("User: ", "s");
+ query = string(query);
+ dispWrapped("User", query)
+```
+
+If the you input the stop word, display a farewell message and exit the loop.
+
+```matlab
+ if query == stopWord
+ disp("AI: Closing the chat. Have a great day!")
+ break;
+ end
+
+ numWordsQuery = countNumWords(query);
+```
+
+If the query exceeds the word limit, display an error message and halt execution.
+
+```matlab
+ if numWordsQuery>wordLimit
+ error("Your query should have fewer than " + wordLimit + " words. You query had " + numWordsQuery + " words.")
+ end
+```
+
+Keep track of the size of each message and the total number of words used so far.
+
+```matlab
+ messagesSizes = [messagesSizes; numWordsQuery]; %#ok
+ totalWords = totalWords + numWordsQuery;
+```
+
+If the total word count exceeds the limit, remove messages from the start of the session until it no longer does.
+
+```matlab
+ while totalWords > wordLimit
+ totalWords = totalWords - messagesSizes(1);
+ messages = removeMessage(messages, 1);
+ messagesSizes(1) = [];
+ end
+```
+
+Add the new message to the session and generate a new response.
+
+```matlab
+ messages = addUserMessage(messages, query);
+ [text, response] = generate(chat, messages);
+
+ dispWrapped("AI", text)
+```
+
+Count the number of words in the response and update the total word count.
+
+```matlab
+ numWordsResponse = countNumWords(text);
+ messagesSizes = [messagesSizes; numWordsResponse]; %#ok
+ totalWords = totalWords + numWordsResponse;
+```
+
+Add the response to the session.
+
+```matlab
+ messages = addResponseMessage(messages, response);
+end
+```
+
+```matlabTextOutput
+User: Please help me with creating a Butterworth bandpass filter in MATLAB.
+AI: Sure, I can help you create a Butterworth bandpass filter in MATLAB.
+ Here's an example of how you can do it:
+
+1. First, we need to define the low-pass and high-pass cutoff
+ frequencies for our bandpass filter. Let's say we want a bandpass
+ filter with a lower cutoff frequency of 0.5 Hz and an upper cutoff
+ frequency of 2 Hz.
+
+ ```matlab
+ lowcut = 0.5; % Lower cutoff frequency (in Hertz)
+ highcut = 2; % Upper cutoff frequency (in Hertz)
+ ```
+
+ 2. Next, we define the order of the filter. The order determines how
+ steep the transition between pass and stop bands will be. A higher
+ order means a steeper roll-off but may also introduce more phase
+ distortion. For this example, let's use an order of 5.
+
+ ```matlab
+ order = 5; % Order of the filter
+ ```
+
+ 3. Now we can create the bandpass Butterworth filter using the
+ `butter()` function in MATLAB. This function takes three arguments:
+ the normalized frequencies (in rad/sec), an 's' vector for the
+ low-pass and high-pass filters, and the order of the filter.
+
+ ```matlab
+ [num, den] = butter(order, [lowcut/samplingFrequency, 1 -
+ lowcut/highcut, highcut/samplingFrequency]);
+ ```
+
+ In this line, `samplingFrequency` should be replaced with the
+ sampling frequency of your data. For example, if you are working with
+ data sampled at 100 Hz, you would set `samplingFrequency = 100;`.
+
+ 4. Finally, you can apply the filter to a signal using the `filter()`
+ function in MATLAB.
+
+ ```matlab
+ filteredSignal = filter(num, den, inputSignal);
+ ```
+
+ Replace `inputSignal` with your actual input data.
+
+ This should give you a bandpass-filtered version of your signal. You
+ can adjust the cutoff frequencies and the order of the filter to best
+ suit your specific needs.
+User: I would like the frequency range to be 144-146 MHz, assuming a sample
+ rate of 2MS/s.
+AI: In that case, here is how you could define the cutoff frequencies:
+
+ ```matlab
+ lowcut = (144e6)/(2e6); % Lower cutoff frequency (in rad/sec)
+ highcut = (146e6)/(2e6); % Upper cutoff frequency (in rad/sec)
+ ```
+
+ Now you can proceed with the filter creation as described in my
+ previous response. Make sure to replace `samplingFrequency` with the
+ actual sample rate of your data, which in this case is 2e6 Hz.
+
+ ```matlab
+ [num, den] = butter(order, [lowcut, 1 - lowcut/(highcut), highcut]);
+ ```
+User: How do I export the parameters to use in GNU Radio?
+AI: To export the Butterworth filter coefficients from MATLAB and use
+ them in GNU Radio, you can save the numerator and denominator
+ coefficients as separate text files. Here's how:
+
+1. Save the numerator coefficients:
+
+ ```matlab
+ filename_num = 'numerator_coefficients.txt';
+ fid_num = fopen(filename_num, 'w');
+ for i = 1 : length(num)
+ fprintf(fid_num, '%g\n', num(i));
+ end
+ fclose(fid_num);
+ ```
+
+ 2. Save the denominator coefficients:
+
+ ```matlab
+ filename_den = 'denominator_coefficients.txt';
+ fid_den = fopen(filename_den, 'w');
+ for i = 1 : length(den)
+ fprintf(fid_den, '%g\n', den(i));
+ end
+ fclose(fid_den);
+ ```
+
+ Now you have two text files with the numerator and denominator
+ coefficients. You can import these coefficient lists in GNU Radio
+ using Polyphase FIR Filter blocks or any other filter blocks that
+ allow specifying taps directly. In the GNU Radio GUI, you'll need to
+ set the number of taps based on the length of the coefficient lists
+ loaded from the text files.
+User: end
+AI: Closing the chat. Have a great day!
+```
+# `Helper Functions`
+
+Function to count the number of words in a text string
+
+```matlab
+function numWords = countNumWords(text)
+ numWords = doclength(tokenizedDocument(text));
+end
+```
+
+Function to display wrapped text, with hanging indentation from a prefix
+
+```matlab
+function dispWrapped(prefix, text)
+ indent = [newline, repmat(' ',1,strlength(prefix)+2)];
+ text = strtrim(text);
+ disp(prefix + ": " + join(textwrap(text, 70),indent))
+end
+```
+
+*Copyright 2023\-2024 The MathWorks, Inc.*
+
diff --git a/examples/CreateSimpleOllamaChatBot.mlx b/examples/CreateSimpleOllamaChatBot.mlx
deleted file mode 100644
index b87d21b4b5a46bd703b74cae8d70a0d2ff35581e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6140
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
diff --git a/examples/DescribeImagesUsingChatGPT.md b/examples/DescribeImagesUsingChatGPT.md
new file mode 100644
index 0000000..34e8043
--- /dev/null
+++ b/examples/DescribeImagesUsingChatGPT.md
@@ -0,0 +1,66 @@
+
+# Describe Images Using ChatGPT™
+
+To run the code shown on this page, open the MLX file in MATLAB: [mlx-scripts/DescribeImagesUsingChatGPT.mlx](mlx-scripts/DescribeImagesUsingChatGPT.mlx)
+
+This example shows how to generate image descriptions using the addUserMessageWithImages function. To run this example, you need a valid API key from a paid OpenAI™ API account, and a history of successful payment.
+
+```matlab
+loadenv(".env")
+addpath('../..')
+```
+# Load and Display Image Data
+
+Load the sample image from Wikipedia. Use the `imread` function to read images from URLs or filenames.
+
+```matlab
+image_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg';
+im = imread(image_url);
+imshow(im)
+```
+
+![figure_0.png](DescribeImagesUsingChatGPT_media/figure_0.png)
+# Generate Image Descriptions
+
+Ask questions about the image with the URL.
+
+```matlab
+chat = openAIChat("You are an AI assistant.");
+```
+
+Create a message and pass the image URL along with the prompt.
+
+```matlab
+messages = messageHistory;
+messages = addUserMessageWithImages(messages,"What is in the image?", string(image_url));
+```
+
+Generate a response. By default, the model returns a very short response. To override it, set `MaxNumTokens` to 4096.
+
+```matlab
+[txt,~,response] = generate(chat,messages,MaxNumTokens=4096);
+if response.StatusCode == "OK"
+ wrappedText = wrapText(txt)
+else
+ response.Body.Data.error
+end
+```
+
+```matlabTextOutput
+wrappedText =
+ "The image depicts a serene landscape featuring a wooden pathway that runs
+ through a lush, green marsh or meadow. The path is bordered by tall grass and
+ some shrubs, with a clear blue sky overhead dotted with clouds. The scene
+ evokes a sense of tranquility and natural beauty."
+
+```
+# Helper function
+```matlab
+function wrappedText = wrapText(text)
+ s = textwrap(text,80);
+ wrappedText = string(join(s,newline));
+end
+```
+
+*Copyright 2024 The MathWorks, Inc.*
+
diff --git a/examples/DescribeImagesUsingChatGPT_media/figure_0.png b/examples/DescribeImagesUsingChatGPT_media/figure_0.png
new file mode 100644
index 0000000000000000000000000000000000000000..7178d082a2325055cc070b565f818b092f7f9735
GIT binary patch
literal 550540
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