<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article XSOAR with Generative AI and Retrieval Augmented Generation in Cortex XSOAR Articles</title>
    <link>https://live.paloaltonetworks.com/t5/cortex-xsoar-articles/xsoar-with-generative-ai-and-retrieval-augmented-generation/ta-p/1219466</link>
    <description>&lt;P class="lia-align-center" data-pm-slice="1 1 []"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT size="6" color="#FF6600"&gt;Randy Uhrlaub, Cortex XSOAR Customer Success Architect&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;P class="c19 c33 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT size="6" color="#FF6600"&gt;&lt;SPAN class="c37 c25 c58"&gt;Table Of Content&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;LI-TOC indent="10" liststyle="square" maxheadinglevel="4"&gt;&lt;/LI-TOC&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="h.91264avay42h" class="c33 c42"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c11 c25 c41"&gt;Introduction&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Use of Generative AI (GenAI) and Retrieval Augmented Generation (RAG) with XSOAR is provided by the Anything LLM marketplace content pack. Anything LLM can be cloud-based or to address privacy, compliance, and&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;cost requirements; it can be installed on customer infrastructure.&lt;/SPAN&gt;&lt;SPAN class="c2"&gt;&amp;nbsp; A large selection of LLM models and vector databases are available in Anything LLM and custom LLM models can be imported. &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Use of GenAI in RAG with XSOAR allows a customer to incorporate their data:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_7f0xgvg04fmk-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Private, customer data not used in training a commercial LLM model.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Public data published after the LLM model training date.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Dynamic data from XSOAR (incident, indicator, investigation, content, and documentation).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Avoids expensive re-training and fine tuning of an LLM model.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;RAG and context centered conversations are more accurate and not prone to hallucinations.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Below are some examples of uses cases in XSOAR where GenAI and RAG can facilitate:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_prxvsqz1z26u-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;XSOAR Integration Help&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;XSOAR Script Help&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;XSOAR Help&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;XSOAR Natural Language Command Interface&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;XSOAR Natural Language Search&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;XSOAR Investigation Summaries&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Policy and Procedure Guidance&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Threat Intel Blog Summaries&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Security Advisory Summaries&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;CVE summaries&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.mp4v0yjb773y" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c11 c52"&gt;Retrieval Augmented Generation&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Retrieval Augment Generation incorporates external data and improves reliability of the generated responses and reduces or eliminates hallucinations by the LLM. &amp;nbsp;External data is encoded and embedded as real number vectors in a vector database. &amp;nbsp;An LLM prompt is first sent to the vector database and any similar results returned and added to the prompt’s conversation context before being sent to the LLM. &amp;nbsp;This conversation context provides the primary information for the LLM to generate a response, versus relying on its training that may return statistically probable results which are not consistently accurate.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;In Anything LLM, the default RAG configuration with the LanceDB vector database uses the following approach when embedding documents:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_pwqmjpsuhisi-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Documents are split into up to 1,000 character chunks.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Each chunk is converted into an array of 384 real numbers.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Real number vectors for the document are added to the vector database.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Similarity search returns the top N (4 -12) vectors based on cosine similarity of the embedded prompt to vectors in the database.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Returned chunks of text are added to the prompt and conversation’s context and sent to the LLM.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;The LLM returns the response to the prompt.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.y25g6g304rl2" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;STRONG&gt;&lt;SPAN class="c29 c11"&gt;Text Search Augmented Generation&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;While vector database similarity search provides a few, most similar results to the prompt, text search augments the prompt when a broader set of information is needed exceeding the results from similarity search of a vector database. &amp;nbsp;For example, adding a list of Mitre ATT&amp;amp;CK Tactics and Techniques or search results of XSOAR incidents and indicators into the conversation for a response from the LLM.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 id="h.kkp5hmcfijk" class="c18"&gt;&amp;nbsp;&lt;/H2&gt;
&lt;H2 id="h.mko9dfk9jw6d" class="c42 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c41 c11 c25"&gt;Anything LLM XSOAR Content Pack&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;The Anything LLM content pack contains an integration, fields, incident type, layout, and scripts. &amp;nbsp;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AI Playground&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;incident type and layout provides an environment to conduct prompt and data engineering for XSOAR use case implementation.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;External documents, search results from XSOAR, and web links can be uploaded and embedded into a vector database. Similar results to the query from the vector database and direct injection of search results into the conversation context are combined with the query and sent to the LLM model to generate a response.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_2" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image3.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65857i42D73E309D701C76/image-size/large?v=v2&amp;amp;px=999" role="button" title="image3.jpg" alt="image3.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 01: XSOARandAnythingLLM_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c19"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="h.gtcp4o1hhuad" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c11"&gt;Customer Infrastructure&lt;/SPAN&gt;&lt;SPAN class="c29 c11"&gt;&amp;nbsp;Hosted&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Anything LLM &amp;nbsp;can be installed on customer infrastructure and supports a range of LLM models and locally installed vector databases. Example LLM models:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_h5uwtvtvdejo-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Llama3&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Codellama&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Mistral&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Gemma&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Orca&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Phi&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Example vector databases:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_iuch07y348ky-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;LanceDB&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Chroma&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Milvus&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.5ggzytms9w3k" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c29 c11"&gt;Cloud Hosted&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Anything LLM is also available as a cloud service and configured to use cloud-based LLM models and vector databases when data privacy is not a requirement. &amp;nbsp;Examples of cloud-based LLM providers:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_x08r6vyoqs8v-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;OpenAI&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Google Gemini&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Anthropic&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Cohere&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Hugging Face&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Perplexity&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Examples of cloud-based vector database providers:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_snxluzp62grr-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Pinecode&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;QDrant&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Weaviate&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.o8s0ol44od6g" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c11"&gt;Customer Infrastructure&lt;/SPAN&gt;&lt;SPAN class="c11 c29"&gt;&amp;nbsp;Setup&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;If a customer infrastructure installation of Anything LLM is preferred over use of the Anything LLM cloud service, install Anything LLM on a host running:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_t39c5jav7uwu-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Linux&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Windows&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Mac&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;For testing and development, a typical desktop or server system with 16GB RAM is able to run the Llama 3.2 11 billion parameter and similar small models in 12-14 GB RAM but is relatively slow at answering questions using only a CPU.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;For production use, a GPU-based system with sufficient VRAM for your LLM model is recommended. &amp;nbsp;For example, the Llama 3.3 70 billion parameter model requires a GPU with 32 - 64 GB of VRAM. &amp;nbsp;Below examples of cloud instances and server hardware that support 70 billion and larger models:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_yzxwiw5yh6m7-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Google GCP:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;A2&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;with NVIDIA A100 GPU with 40 or 80 GB VRAM&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Amazon AWS:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;P4d&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;P4de&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;NVIDIA A100 GPU with 40 or 80 GB VRAM&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;NVIDIA Project DIGITS: Small desktop with GraceBlackwell CPU/GPU with 128 GB Unified RAM/VRAM (supports up to 200 billion parameter models, ~$3,000, available Q2 2024)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.lvsav03al0mp" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;STRONG&gt;&lt;SPAN class="c11"&gt;Anything LLM and XSOAR&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="c29 c11"&gt;Integration Instance Configuration&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Once Anything LLM is available, create an instance of the AnythingLLM integration:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_aw9yy6mm368h-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;In Anything LLM:&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;Generate an API key for the XSOAR integration (&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Developer API&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;menu option).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;Activate selected LLM model (&lt;STRONG&gt;&lt;SPAN class="c10"&gt;LLM&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;menu option).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;Activate selected vector database (&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Vector Database&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;menu option).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_3" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image4.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65858iB29E8138D296F45D/image-size/large?v=v2&amp;amp;px=999" role="button" title="image4.jpg" alt="image4.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 02 AnythingLLMapiKey_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_4" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image7.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65860i73B2EDBA5F8BC59E/image-size/large?v=v2&amp;amp;px=999" role="button" title="image7.jpg" alt="image7.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 03 AnythingLLMproviders_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Below is an example of Ollama installed on customer infrastructure and LLM models downloaded by Ollama. &amp;nbsp;The context window is configured to 32,768 tokens (~64K characters +|-) &amp;nbsp;for the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;llama3.2-vision&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;11 billion parameter model which provides an 8K - 128K token context window size. &amp;nbsp;8K or 128K are the context sizes available when using the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AnythingLLM&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;LLM provider and a llama model provided there. &amp;nbsp;Using the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Ollama&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;LLM provider allows control of the context window size. 8K is typically too small for XSOAR related data.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_5" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image9.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65861i966DD4CCF671E258/image-size/large?v=v2&amp;amp;px=999" role="button" title="image9.jpg" alt="image9.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 04 AnythingLLMwithOllama_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_aw9yy6mm368h-0"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;In XSOAR:&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Configure the XSOAR integration instance with the Anything LLM url and api key.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;If required, Cloudflare access can also be configured.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_6" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image10.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65862i6C5893C846948C1F/image-size/large?v=v2&amp;amp;px=999" role="button" title="image10.jpg" alt="image10.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 05 AnythingLLMconfig_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="h.r7wcfx22qxl2" class="c42 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c41 c11 c25"&gt;Use Case Development&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;The Anything LLM content pack provides an interactive environment for data and prompt engineering for developing the steps needed to automate a use case. &amp;nbsp;Create a new incident of type&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AI Playground&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;. &amp;nbsp;The layout provides two tabs:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Workspace and Document Management&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AI Playground&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;for uploading and embedding documents into a workspace and developing the needed prompts and workspace settings (Mode, Temperature, Similarity, and TopN). &amp;nbsp;Some use cases may just require RAG where a few, similar pieces of text are retrieved from embedded documents while other use cases may require additional text to be added to the context of an LLM conversation using text search capabilities. &amp;nbsp;A sequence of prompts may be required to generate the final response.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;The general use case development process is:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_us9y0ofaycab-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Create an incident with a type of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AI Playground.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Create a workspace and configure its settings (the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;anyllm-workspace-new&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;command creates a workspace).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Upload and embed needed documents in the workspace.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Develop and test prompts with augmented data as required.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;similarity search of embedded documents.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;text search of documents or data in XSOAR.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Once the steps and desired results are achieved.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;build the playbook and any scripts needed to automate the use case.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;For the most accurate results,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;query&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode is recommended for most chats. &amp;nbsp;This preloads the conversation context based on the initial query with similar results from documents embedded in a workspace. &amp;nbsp;In a large document,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;query&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode may not ensure a complete answer depending on the number of times the query topic is mentioned in the embedded documents and limits on the number of returned similar results and text search data is included in the conversation. &amp;nbsp;When all data needed for the response it is injected into the conversation and not dependent on embedded documents,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;chat&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;mode is used.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Text splitting and chunking can be adjusted from the defaults to better support a specific use case. &amp;nbsp;Adjusting the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;similarityThreshold&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;topN&lt;/SPAN&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;settings in a workspace are often beneficial to optimize the workspace for an use case.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.fr8ox5kjsowk" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c29 c11"&gt;Workspace and Document Management&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="h.lrbb1i4y6qmz" class="c1 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c10 c21 c45"&gt;Workspaces&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Workspace and Document Management&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;tab of the incident layout enables management of workspaces and documents. The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Workspaces&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;section lists the available workspaces and allows configuration of their settings and selecting the current workspace by editing the table and using the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Action&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;option&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Current&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;to set the active workspace. &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="h.z2aqf5tiekom" class="c1 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c10 c21"&gt;Workspace Embeddings&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;For the current workspace, the list of embedded documents are displayed in the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;&lt;STRONG&gt;Workspace Embeddings&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;section. The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Action&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;options there are to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Remove&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;the embedded document,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;Pin&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;the embedded document to the workspace adding all the content to the conversation context, and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;Unpin&lt;/SPAN&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;the embedded document from the conversation. Care must be taken to not consume all the context space by pinning a large document.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Similarity search of an embedded document returns only the top chunks based on distance (cosine similarity) from the embedded form of the query - like the distance between two points in 3 dimensional space. &amp;nbsp;In&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;query&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode when using the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;anyllm-workspace-thread-chat&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;command, if 0 results are returned from the similarity search of the vector database, the query is aborted with “no relevant documentation” message. You may still get incorrect results if similarity search returns results and there is related information the model was trained on. &amp;nbsp;Prompt and data engineering addresses this as well as adding text search results to the conversation context to supplement. &amp;nbsp;In&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;chat&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;mode, the prompt may include results from a similarity search but does not require it.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="h.ik9nc0rs8tiy" class="c1 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c10 c21"&gt;Documents&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;Documents&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;section displays all the documents uploaded into Anything LLM available for embedding in a workspace. The available&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Action&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;options are&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Embed&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;to embed the document into the current workspace, or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Delete&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;to delete the document from the catalog.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Documents with a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;Title&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;prefixed by an XSOAR war room file entry ID were made text searchable by first uploading them to the war room and then use of the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Process War Room Text File Entry for Upload&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;button to preprocess the document, followed by the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Upload Processed Information as LLM Document&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;button. &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;XSOAR search results from the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AI Playground&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;can be processed and uploaded using the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Process Search Results for Upload&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;button followed by the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Upload Processed Information as LLM Document&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;button. &amp;nbsp;External text can also be uploaded as a searchable LLM document using the same process with the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Process Text for Upload&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;button. In version 2.0 of the content pack, the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Process Web Link for Upload&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;button uploads the document to the catalog for embedding, but not as a searchable document.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Documents specific to an investigation are added to the investigation's war room and uploaded to the LLM. Documents that apply to multiple investigations, to retain their searchability, a dedicated incident is created and the documents uploaded to that war room. &amp;nbsp;These incidents should be flagged for long term retention since their XSOAR file entry ID is associated with the investigation IDs and stored in Anything LLM as the document’s title. As an example, Mitre ATT&amp;amp;CK documentation is uploaded to an incident dedicated to retaining them as searchable and embeddable documents across many investigations.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_7" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image11.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65863iE5E1EECF4A9EDC66/image-size/large?v=v2&amp;amp;px=999" role="button" title="image11.jpg" alt="image11.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 06 WorkspaceAndDocumentManagement_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3 class="c7"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.oasv1tg2qwp" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c29 c11"&gt;AI Playground&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;AI Playground&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;tab is used to develop prompts against a workspace and its embedded documents with additional text from LLM documents or XSOAR using the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Text Search...&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;buttons. &amp;nbsp;Useful search results are added to the conversation context with the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Add Search Results to Conversation&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;button. &amp;nbsp;A valuable conversation is saved to the war room with the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Save Conversation to the War Room&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;button. &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_8" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image6.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65864iBAD280707AA51B9C/image-size/large?v=v2&amp;amp;px=999" role="button" title="image6.jpg" alt="image6.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 07 AIplayground_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c19"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 id="h.r4nhp6gvjiw8" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c29 c11"&gt;General Tips and Guidance&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_wuq5rysqxhy5-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Clean uploaded documentation from extraneous text (ie: HTML and PDF formatting and page footers/headers etc.) when embedding a document since data is returned in 1,000 character chunks to ensure data being searched for is retrieved. Extraneous text may cause chunks to be returned that do not contain the data needed.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;In a workspace, only embed the documents needed for the use case. &amp;nbsp;It may be advantageous to create a workspace for an investigation, dynamically embed needed documents, then delete the workspace at incident closure.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Depending on the LLM model used, asking three precise questions about A, then B, then C, may give better results than one question about A and B and C. Once the three questions are asked and results in the conversation context, asking the final question with all three intermediate results may be more effective.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Once a partial result is achieved and the full conversation context is no longer needed for subsequent questions, start a new conversation thread with no context. Keeping the context small and focused increases speed and accuracy of responses.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;An incorrect response in the conversation context pollutes subsequent results. Testing and tuning your approach prevents this.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Setting the workspace&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Temperature&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;to the lowest value supported by your LLM model provides the most deterministic results.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;If similarity search is not returning the correct results, review the number of chunks being returned. If too few chunks, increase the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Top N&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;setting or reduce the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;Similarity&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;setting. &amp;nbsp;If too many chunks are returned without the correct data, increase the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;Similarity&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;setting. &amp;nbsp;This is where clean documented supports providing the correct results.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Be aware of the context window size of your LLM model and how it relates to the data you are adding to the conversation context either via similarity search, text search, or pinning an embedded document to a workspace. Filling the context window causes the prompt to fail or rolls data off from the beginning of the conversation.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Context windows are usually specified in tokens and each token may be a character or a part of a word, or a word in size. An 8K context window supports approximately 16K characters, which varies depending on the tokens used.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c2"&gt;Large context windows increases memory requirements and the time it takes to answer a question and may reduce accuracy when large amount of data are in the conversation context.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;When searching structured text like YAML or JSON where you need only a small set of lines, a regex pattern such as &amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;(?s)\d(?&amp;lt;=[\d\[\].])(.*?:TLS)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp; &amp;nbsp;helps minimize text added to the conversation context. This is a simple pattern example to: find all the lines starting with either a defanged IP or domain and finishing with a line containing ":TLS".&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 id="h.bbksabyglfjz" class="c7 c14"&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3 id="h.8f6tkdtr3hx" class="c7"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c29 c11"&gt;Example Scripts Using the Anything LLM Integration&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="h.4pudzww4ls54" class="c1 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c10 c21"&gt;Summarize an Investigation&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Below is an example script to summarize an investigation by looking at the sequential order of completed tasks and summarizing each task executed. &amp;nbsp;It uses&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;chat&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode since all the data is being provided dynamically from XSOAR versus data from an embedded document. &amp;nbsp;In addition to the investigation&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;id&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;workspace&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;name arguments, the following&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;question&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;is passed as an argument:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11 c17"&gt;Summarize the task in the following JSON. Please include name, start, and completed dates, description and script and script arguments for each task. If it is a condition task, only tell me what branch it took&lt;/SPAN&gt;&lt;SPAN class="c11 c39"&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_9" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image5.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65865i3C742E05C550B371/image-size/large?v=v2&amp;amp;px=999" role="button" title="image5.jpg" alt="image5.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 08 SummarizeInvestigation_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;import collections&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;import uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;def main():&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; try:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; incid = demisto.args().get("id", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; workspace = demisto.args().get("workspace", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; question = demisto.args().get("question", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;incid&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;== "" or workspace == "" or question == "":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; resp = execute_command("core-api-get", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;"uri": f"/inv-playbook/{incid}"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tasks = {}&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for k, t in resp['response']['tasks'].items():&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if t['type'].lower() in ["regular", "condition", "playbook"]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;and t['state'].lower() == "completed":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tasks[t['completedDate']] = t&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sortedtasks = collections.OrderedDict(sorted(tasks.items()))&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results = ""&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for k, v in sortedtasks.items():&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thread_uuid = str(uuid.uuid4())&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-new", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c56"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; prompt = f"{question}: {json.dumps(v)}"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results += f"\n{execute_command('anyllm-workspace-thread-chat', {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'message': prompt,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'mode': 'chat',&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; })['textResponse']}\n"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-delete", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; })&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return_results(CommandResults(readable_output=results))&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; except Exception as ex:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if thread_uuid != "":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-delete", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c12"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; demisto.error(traceback.format_exc())&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return_error(f'Failed to execute SummarizeInvestigation. Error: {ex}')&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;if __name__ in ('__main__', '__builtin__', 'builtins'):&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; main()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4 id="h.8t7uej2yivcz" class="c1 c33 c44"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 id="h.pzbktj60at3p" class="c1 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c10 c21"&gt;XSOAR Natural Language Command Interface&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;This script uses a sequence of prompts to the LLM and an embedded implementation of the Anything XSOAR integration code. The first two prompts use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;query&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode to retrieve the appropriate command name and then a JSON template of the command parameters. &amp;nbsp;The final&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c10"&gt;chat&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode prompt uses the parameters template and the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;parameters&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;argument to populate a python dictionary that is passed to&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;execute_command()&lt;/SPAN&gt;&lt;SPAN class="c2"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_10" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image8.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65866i2FB3E0B8C7015F9C/image-size/large?v=v2&amp;amp;px=999" role="button" title="image8.jpg" alt="image8.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 09 NaturalLanguageCommandInterface_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;import collections&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;import uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;def main():&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; try:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; workspace = demisto.args().get("workspace", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;cmddesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;= demisto.args().get("command", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argdesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;= demisto.args().get("parameters", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if workspace == "" or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;cmddesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;== "":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thread_uuid = str(uuid.uuid4())&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-new", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; command = execute_command('anyllm-workspace-thread-chat', {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;'message': f"{&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;cmddesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;}. Return only the command name",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'mode': 'query',&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})['textResponse']&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;arguments = execute_command('anyllm-workspace-thread-chat', {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'message': f"How would I invoke {command} with the python function execute_command(command, parameters)? Return only the the python dictionary for the parameters",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'mode': 'query',&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})['textResponse']&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argjson&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;= execute_command('anyllm-workspace-thread-chat', {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;'message': f"Use the following data: \"{&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argdesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;}\" as values to create a python dictionary using these keys: {arguments}. Return only the python dictionary with the new key values set as a JSON string",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'mode': 'chat',&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})['textResponse']&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; argsdict = json.loads(&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argjson&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; argsdict['workspace'] = workspace&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; argsdict['thread'] = thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results = execute_command(command, argsdict)['textResponse']&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-delete", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return_results(CommandResults(readable_output=results))&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; except Exception as ex:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; demisto.error(traceback.format_exc())&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if thread_uuid != "":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-delete", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace, 'thread': thread_uuid})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return_error(f'Failed to execute IntegrationNLC. Error: {ex}')&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;if __name__ in ('__main__', '__builtin__', 'builtins'):&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; main()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="h.aoxyq3dta8kr" class="c1 c33"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN class="c45 c37 c55"&gt;XSOAR Natural Language Search&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;This script illustrates how to perform natural language search of XSOAR incidents. &amp;nbsp;It uses&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;chat&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;mode LLM queries since it does not require RAG; the parameters to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN class="c10"&gt;getIncidents&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;are included in the script as a python dictionary.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorRPrasadi_11" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FONT face="trebuchet ms,geneva"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image12.jpg" style="width: 999px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/65867iB954E328FD210504/image-size/large?v=v2&amp;amp;px=999" role="button" title="image12.jpg" alt="image12.jpg" /&gt;&lt;/span&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;SPAN class="c2"&gt;Figure 10 NaturalLanguageSearch_PaloAltoNetworks&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;import collections&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;import uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;searchArgs = {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'page': "Filter by the page number",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'size': "Filter by the page size (per fetch)",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'sort': "",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'id': "Filter by the incident IDs",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'name': "Filter by incident names",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'status': "Filter by the status. Pending (0), Active (1), Done (2), Archive (3)",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'notstatus': "Negate status (e.g. get only incidents that do not have the status of active)",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'reason': "Filter by closure reason",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; '&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;fromdate&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;': "Filter by from date (e.g. 2006-01-02T15:04:05+07:00)",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'todate': "Filter by to date (e.g. 2016-01-02T15:04:05+07:00)",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'fromclosedate': "Filter by the incident close date, from",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'toclosedate': "Filter by the incident to close date, to",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'fromduedate': "Filter by SLA due date, from",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'toduedate': "Filter by SLA due date, to",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'level': "Filter by Severity. Unknown (0), Informational (0.5), Low (1), Medium (2), High (3), Critical (4)",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'investigation': "",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'owner': "Filter by incident owners",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'details': "Filter by incident details",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'type': "Filter by incident type",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'query': "Use free form query (use Lucene syntax) as filter. All other filters will be ignored when this filter is used",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'searchInNotIndexed': "Also search for incidents that have not yet been indexed",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; 'populateFields': "A comma-separated list of fields and custom fields in the object to populate"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;def main():&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; try:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; workspace = demisto.args().get("workspace", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argdesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;= demisto.args().get("parameters", "")&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if workspace == "" or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argdesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;== "":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thread_uuid = str(uuid.uuid4())&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-new", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command('anyllm-workspace-thread-chat', {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'message': f"Here are the \"getIncidents\" command's arguments as a python dictionary in JSON: {json.dumps(searchArgs)}. &amp;nbsp;Use this to create a python dictionary for the arguments to \"getIncidents\" ",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'mode': 'chat',&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15 c24"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argjson&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;= execute_command('anyllm-workspace-thread-chat', {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;'message': f"Use the following data: \"{&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argdesc&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;}\" as values to create the python dictionary for the \"getIncidents\" command's arguments. Leave out any missing values. Return only the arguments python dictionary as a JSON string",&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'mode': 'chat',&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c56"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c46"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;})['textResponse']&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; argsdict = json.loads(&lt;/SPAN&gt;&lt;SPAN class="c9"&gt;argjson&lt;/SPAN&gt;&lt;SPAN class="c8"&gt;)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results = execute_command("getIncidents", argsdict)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-delete", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return_results(CommandResults(readable_output=results))&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; except Exception as ex:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; demisto.error(traceback.format_exc())&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if thread_uuid != "":&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execute_command("anyllm-workspace-thread-delete", {&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'workspace': workspace,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c20"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;'thread': thread_uuid&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c24"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;})&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return_error(f'Failed to execute SearchIncidentsNLC. Error: {ex}')&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;if __name__ in ('__main__', '__builtin__', 'builtins'):&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="c1"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c8"&gt;&amp;nbsp; &amp;nbsp; main()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 class="c42 c33"&gt;&amp;nbsp;&lt;/H2&gt;
&lt;H2 id="h.caxs5clltci7" class="c42 c33"&gt;&lt;FONT face="trebuchet ms,geneva" color="#FF6600"&gt;&lt;STRONG&gt;&lt;SPAN class="c41 c11 c25"&gt;References&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL class="c4 lst-kix_9qitoeo0az2-0 start"&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c34 c11"&gt;&lt;A class="c13" href="https://www.google.com/url?q=https://cortex.marketplace.pan.dev/marketplace/details/AnythingLLM/&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1738727259820424&amp;amp;usg=AOvVaw2G8tGUMzEWiG924sC3VDhW" target="_blank" rel="noopener"&gt;Anything LLM | Marketplace&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN class="c2"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c34 c11"&gt;&lt;A class="c13" href="https://www.google.com/url?q=https://www.promptingguide.ai/introduction/settings&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1738727259820638&amp;amp;usg=AOvVaw2G91M6Xzc7SHHEX50aSIJW" target="_blank" rel="noopener"&gt;LLM Settings&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11 c34"&gt;&lt;A class="c13" href="https://www.google.com/url?q=https://www.deeplearning.ai/&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1738727259820760&amp;amp;usg=AOvVaw21zFnYx0xXcZYq3WTSTwNu" target="_blank" rel="noopener"&gt;Deeplearrning.AI&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class="c1 c6 li-bullet-0"&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c34 c11"&gt;&lt;A class="c13" href="https://www.google.com/url?q=https://anythingllm.com/&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1738727259820862&amp;amp;usg=AOvVaw22HkNnVJRzVfUi8sZrtg8g" target="_blank" rel="noopener"&gt;AnythingLLM&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="c1 c15 c30"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;P class="c1 c15 c38"&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Thu, 06 Feb 2025 18:16:38 GMT</pubDate>
    <dc:creator>RPrasadi</dc:creator>
    <dc:date>2025-02-06T18:16:38Z</dc:date>
    <item>
      <title>XSOAR with Generative AI and Retrieval Augmented Generation</title>
      <link>https://live.paloaltonetworks.com/t5/cortex-xsoar-articles/xsoar-with-generative-ai-and-retrieval-augmented-generation/ta-p/1219466</link>
      <description>&lt;P&gt;&lt;FONT face="trebuchet ms,geneva"&gt;&lt;SPAN class="c11"&gt;Use of Generative AI (GenAI) and Retrieval Augmented Generation (RAG) with XSOAR is provided by the Anything LLM marketplace content pack. Anything LLM can be cloud-based or to address privacy, compliance, and&lt;/SPAN&gt;&lt;SPAN class="c11"&gt;&amp;nbsp;cost requirements; it can be installed on customer infrastructure.&lt;/SPAN&gt;&lt;SPAN class="c2"&gt;&amp;nbsp; A large selection of LLM models and vector databases are available in Anything LLM and custom LLM models can be imported. &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 06 Feb 2025 18:16:38 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/cortex-xsoar-articles/xsoar-with-generative-ai-and-retrieval-augmented-generation/ta-p/1219466</guid>
      <dc:creator>RPrasadi</dc:creator>
      <dc:date>2025-02-06T18:16:38Z</dc:date>
    </item>
    <item>
      <title>Re: XSOAR with Generative AI and Retrieval Augmented Generation</title>
      <link>https://live.paloaltonetworks.com/t5/cortex-xsoar-articles/xsoar-with-generative-ai-and-retrieval-augmented-generation/tac-p/1226914#M107</link>
      <description>&lt;P&gt;This is very informative.&lt;/P&gt;&lt;P&gt;Thank you for sharing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 20 Apr 2025 09:26:38 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/cortex-xsoar-articles/xsoar-with-generative-ai-and-retrieval-augmented-generation/tac-p/1226914#M107</guid>
      <dc:creator>RayyanAlboqari</dc:creator>
      <dc:date>2025-04-20T09:26:38Z</dc:date>
    </item>
  </channel>
</rss>

