{"id":10923,"date":"2026-05-19T17:00:00","date_gmt":"2026-05-19T17:00:00","guid":{"rendered":"https:\/\/www.aihello.com\/resources\/?p=10923"},"modified":"2026-05-16T16:16:13","modified_gmt":"2026-05-16T16:16:13","slug":"why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing","status":"publish","type":"post","link":"https:\/\/www.aihello.com\/resources\/blog\/why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing\/","title":{"rendered":"Why I Ditched spaCy in Favor of LLMs for Natural Language Processing"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>The goal of <strong>Natural Language Processing<\/strong> (NLP) has always been to close the gap between human language and machine comprehension. Understanding what a user wants from an ambiguous or open-ended query is known as <strong>intent detection<\/strong>, and it is one of the main challenges in this field.<\/p>\n\n\n\n<p>For a long time, libraries like <strong>spaCy <\/strong>have been the go-to tools for pattern matching, dependency parsing, and named entity recognition. But conventional keyword-based solutions may find it difficult to keep up when organizational needs change and inquiries become more intricate.<\/p>\n\n\n\n<p><strong>Enter Large Language Models (LLMs)<\/strong>. Recent breakthroughs in LLMs, from OpenAI o1 to specialized models like Qwen and LLaMA variants, have given us a new toolkit. These models demonstrate an extraordinary capacity for understanding context, ambiguity, and nuance\u200a\u2014\u200akeys to unlocking high-quality intent detection pipelines. For an in-depth exploration of how prompt engineering enhances these capabilities, refer to the dedicated section later in the text.<\/p>\n\n\n\n<p>In this article, I\u2019ll explain how we harnessed LLMs for an advanced AI management system\u2019s intent detection. We\u2019ll talk about the system\u2019s architecture, the shift from spaCy-based approaches to LLM-driven solutions, and the insights gained throughout the process.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project Context: The InSight&nbsp;System<\/h3>\n\n\n\n<p>At <a href=\"https:\/\/www.aihello.com\/\" rel=\"noreferrer noopener\" target=\"_blank\">AIHello<\/a>, I work on <strong>InSight<\/strong>, an advanced AI management system. The long-term vision is ambitious:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An AI manager that records and analyzes employee information.<\/li>\n\n\n\n<li>Reads and interprets transcripts, emails, and internal chats.<\/li>\n\n\n\n<li>Generates actionable analytics reports for organizational leaders.<\/li>\n\n\n\n<li>Even joins weekly video calls with employees to gather updates.<\/li>\n<\/ul>\n\n\n\n<p>Where does intent detection fit into all this? Early on, we realized that any query posed by a human user (like a manager or team lead) might need data from multiple sources\u200a\u2014\u200aemails, meeting transcripts, and internal chats. Initially, I tried using spaCy to map specific terms to an \u201cintent\u201d (such as \u201cemployee attendance\u201d or \u201ccustomer feedback\u201d) and then retrieve the relevant dataset.&nbsp;<\/p>\n\n\n\n<p>However, spaCy\u2019s keyword-based strategy failed when the questions become more complicated (\u201cWhat do customers think about their campaign performance over the last quarter, and how did that correlate with employee interactions?\u201d).<\/p>\n\n\n\n<p><strong>Solution<\/strong>: LLMs gave us the freedom to more dynamically interpret intent. Rather than strictly defining keyword sets, LLMs allow us to make inferences regarding semantic meaning. Following a number of tests, we were able to match queries to their appropriate data sources with an accuracy of over 70% in our first LLM-based prototype. This was a significant improvement over the previous attempts using spaCy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Traditional NLP vs. LLMs: Why the&nbsp;Shift?<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Complexity and Ambiguity: <\/strong>spaCy and similar frameworks are excellent at recognizing syntactic connections, entities, and portions of speech. However, keyword-based criteria quickly break down when it comes to higher-level comprehension, such as determining which data sources (emails, transcripts, and chats) are relevant to a complex, multifaceted query.<\/li>\n\n\n\n<li><strong>Contextual Understanding: <\/strong>LLMs can grasp nuances. Let\u2019s say a user queries, \u201cHow have recent customer complaints (something found in emails) influenced team workload and scheduling (often found in transcripts and chats)?\u201d<br>A rule-based system might recognize \u201ccomplaints\u201d and output \u201cemails\u201d, but miss the second half of the query related to internal management. Conversely, LLMs can consider the entire query and output a combined intent that will include all three information sources.<\/li>\n\n\n\n<li><strong>Quick Iteration: <\/strong>LLM-driven intent detection allows us to iterate rapidly. Prompt engineering and agentic workflows allow us to make adjustments to instructions and observe real-time improvement. This flexibility was essential as the complexity of our project increased.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\">Architecture of the InSight&nbsp;System<\/h3>\n\n\n\n<p><strong>InSight<\/strong>, is served through FastAPI and relies on asynchronous processing via Celery. The LLMs are hosted on our servers through Ollama, and connected through their own API, a solution that simplifies running large models. The pipeline looks something like this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1434\" src=\"https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing.png\" alt=\"A flowchart visually showcasing the information mentioned below.\" class=\"wp-image-10930\" srcset=\"https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing.png 1000w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing-209x300.png 209w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing-714x1024.png 714w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/why-i-ditched-spacy-in-favor-of-llms-for-natural-language-processing-768x1101.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">System Architecture Flowchart<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>API Layer<\/strong>: A FastAPI server that manages WebSocket connections and HTTP endpoints.<\/li>\n\n\n\n<li><strong>Asynchronous Processing<\/strong>: Celery for task management, which makes it possible to handle numerous requests effectively.<\/li>\n\n\n\n<li><strong>Intent Detection Core<\/strong>: A chain of components that determines which data sources to fetch.<\/li>\n\n\n\n<li><strong>Data Fetching<\/strong>: Fetching data from emails, transcripts, and chat logs.<\/li>\n\n\n\n<li><strong>Monitoring &amp; Logging<\/strong>: Prometheus and logging infrastructure to monitor the performance and health of the system.<\/li>\n<\/ul>\n\n\n\n<p><strong>Key Insight:<\/strong> The intent detection module is the linchpin\u200a\u2014\u200awithout accurate source selection, the rest of the pipeline might fetch irrelevant or incomplete data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Intent Detection Workflow<\/h3>\n\n\n\n<p><strong>Intent detection<\/strong> is not done by a single prompt. Instead, we use an <strong>agentic workflow<\/strong>\u200a\u2014\u200abreaking down the logic into multiple steps so we can debug and improve incrementally.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"658\" src=\"https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/1e-surc5vbokd0ydaax_gaw.png\" alt=\"A flowchart diagram showcasing the information written below.\" class=\"wp-image-10928\" srcset=\"https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/1e-surc5vbokd0ydaax_gaw.png 1000w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/1e-surc5vbokd0ydaax_gaw-300x197.png 300w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/1e-surc5vbokd0ydaax_gaw-768x505.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Intent Detection Workflow&nbsp;Diagram<\/figcaption><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>User Query \u2192 Intent Processor<\/strong>: The query is pre-processed, to potentially extract relevant data like timestamps.<\/li>\n\n\n\n<li><strong>Intent Processor \u2192 Intent Detector (LLM)<\/strong>: The LLM classifies which data sources are needed. For instance, the LLM might say: <code>emails|transcripts,0.88<\/code> meaning we need both emails and transcripts, with a confidence of 0.88, meaning it is 88% certain regarding its answer.<\/li>\n\n\n\n<li><strong>Intent Processor \u2192 Intent Handlers<\/strong>: Based on the identified sources from the previous step, we fetch the corresponding raw data.<\/li>\n\n\n\n<li><strong>Data Parsing &amp; Final Response<\/strong>: The raw data is then parsed into an LLM-friendly format through a separate agent, and combined with the user\u2019s query context. The final step returns a coherent answer to the user.<\/li>\n<\/ol>\n\n\n\n<p>One of the critical modules here is our Intent Processor. It is responsible for calling the Intent Detector and Intent Handlers to coordinate the logic.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Example snippet from intent_processor.py\n\ndata_sources, confidence = self.llm_intent_detector.detect_intent(user_query)\n\nif 'unknown' in data_sources or confidence &lt; 0.6:\n    return \"Unable to determine required data sources. Please rephrase.\"\n\nraw_data = self.intent_handlers.fetch_data_sources(data_sources, query_context)\n\n# Parse and return a user-friendly response.<\/code><\/pre>\n\n\n\n<p>The <code>LLMIntentDetector<\/code> uses a carefully crafted prompt, instructing the model to return data sources and a confidence score. This is where LLMs shine: The model reads a structured prompt, interprets the user query, and decides which data sources are relevant\u2014no more brittle keyword mappings. The aforementioned prompt can be found in the corresponding section below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Performance Metrics and&nbsp;Results<\/h3>\n\n\n\n<p>In our earliest tests, switching from spaCy to LLM-based intent detection yielded impressive improvements:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"333\" src=\"https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/15h8w6tpqzkp7fgxk2ohq6q.png\" alt=\"Three confusion matrices for emails, transcripts, and chats detection, titled \u201cConfusion Matrices by Data Source.\u201d Each matrix compares true vs. predicted labels, with strong diagonal values indicating good accuracy. Color intensity represents prediction counts, with darker shades for higher values.\" class=\"wp-image-10929\" srcset=\"https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/15h8w6tpqzkp7fgxk2ohq6q.png 1000w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/15h8w6tpqzkp7fgxk2ohq6q-300x100.png 300w, https:\/\/www.aihello.com\/resources\/wp-content\/uploads\/2024\/12\/15h8w6tpqzkp7fgxk2ohq6q-768x256.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Confusion Matrices<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Accuracy<\/strong>: 71.15% correct retrieval of the right data sources on first prototype tests. This is a game-changer compared to the trial-and-error struggles with spaCy.<\/li>\n\n\n\n<li><strong>Adaptability<\/strong>: While a keyword-based approach may not work or may need significant reconfiguration, LLM intent detection remains effective even when the query changes slightly (for example, from \u201ccustomer satisfaction\u201d to \u201ccustomer sentiment regarding product X\u201d).<\/li>\n\n\n\n<li><strong>Scalability<\/strong>: We can manage several concurrent queries, enhance prompts, or even switch LLM backends without completely redesigning the architecture thanks to the asynchronous nature of Celery tasks and the modular design.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">System Evaluation on Real World&nbsp;Queries<\/h4>\n\n\n\n<p>I evaluate InSight\u2019s intent detection capability by testing it on real-world queries. The evaluation involves testing its natural language interpretation and ability to identify relevant data sources. For this demonstration, I will use a sample dataset of 5 random queries.<\/p>\n\n\n\n<p>Please note that I\u2019ve used queries with typos, improper structure and incorrect grammar as well, to reflect real-world scenarios.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Sample Dataset:<br><br>+---------------------------------------------------------+-------------------+<br>|                          query                          |      sources      |<br>+---------------------------------------------------------+-------------------+<br>| \"show me unhappy customers from last month\"             | emails            |<br>| \"wat was the last thing sarah worked on\"                | transcripts|chats |<br>| \"Who's responsible for handling Mrs. Doe's complaints?\" | emails            |<br>| \"how many tickets did rachel resolve this week?\"        | emails            |<br>| \"show me john's current project status\"                 | transcripts|chats |<br>+---------------------------------------------------------+-------------------+<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>=== Intent Detection Evaluation Report ===<br><br>Exact Match Accuracy: 80.00%<br>Average Confidence: 91.40%<br><br>=== Performance by Data Source ===<br><br>Source: transcripts<br>Precision: 66.67%<br>Recall: 100.00%<br>F1-Score: 80.00%<br><br>Source: chats<br>Precision: 66.67%<br>Recall: 100.00%<br>F1-Score: 80.00%<br><br>Source: emails<br>Precision: 100.00%<br>Recall: 66.67%<br>F1-Score: 80.00%<br><br>=== Average Metrics ===<br>Average Precision: 77.78%<br>Average Recall: 88.89%<br>Average F1-Score: 80.00%<br><br>=== Incorrect Predictions ===<br><br>Number of incorrect predictions: 1<br>+------------------------------------------------+--------------+---------------------+------------+<br>|                     Query                      | True Sources |  Predicted Sources  | Confidence |<br>+------------------------------------------------+--------------+---------------------+------------+<br>| how many tickets did rachel resolve this week? | emails       | chats | transcripts |       0.85 |<br>+------------------------------------------------+--------------+---------------------+------------+<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deep-Dive into Prompt Engineering<\/h3>\n\n\n\n<p>Prompt engineering was a <strong>critical <\/strong>factor in unlocking the <strong>real potential<\/strong> of LLMs within our agentic workflow. By designing precise and modular prompts, we achieved higher accuracy and improved adaptability in our intent detection system. Here\u2019s a detailed breakdown of our approach:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Key Techniques in Prompt Engineering<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Structured Prompts and Formatting<\/strong>: Each prompt followed a well-defined structure, which ensured that the LLM could reason effectively without ambiguities.&nbsp;<br>It is worth noting that I used Markdown to write my prompt, this is because many LLMs have a format that they best understand. You can refer to <a href=\"https:\/\/arxiv.org\/pdf\/2411.10541\" target=\"_blank\" rel=\"noreferrer noopener\">this research paper<\/a>, which talks about this topic in detail. In my case, Markdown yielded the best results.<\/li>\n\n\n\n<li><strong>Iterative Refinement<\/strong>: Each prompt underwent testing and refinement based on performance metrics. When the LLM produced errors or ambiguous outputs, we revisited the prompt design to add clarifications or examples.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">My Intent Detection Prompt<\/h4>\n\n\n\n<p>This is the prompt I provided to the agent (<code>LLMIntentDetector<\/code>) responsible for detecting data sources from user queries. You can analyze how it details very specific instructions for the LLM, to ensure a semblance of deterministic output.<\/p>\n\n\n\n<p>Keep in mind that this prompt is <strong>only <\/strong>for this component of the agentic workflow, and all agents should have comprehensive and well-detailed prompts for the best results.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>You are an intent detection system for an employee data retrieval system. Given a user query, you must:<br>1. Classify which data sources should be fetched to answer the query<br>2. Return the data sources as a comma-separated list with a confidence score<br><br>Available data sources and their contents:<br>- emails: Contains all customer-related communications, including:<br>  * Customer feedback and satisfaction levels<br>  * Customer complaints and issues<br>  * Customer interactions with employees<br>  * Historical customer relationships<br>  * Customer names and their sentiment<br><br>- transcripts: Contains records of formal meetings and calls, including:<br>  * Employee task assignments and updates<br>  * Project discussions<br>  * Performance reviews<br>  * Team meetings<br>  * Client meetings<br>  * Training sessions<br><br>- chats: Contains informal internal communications, including:<br>  * Quick task updates<br>  * Day-to-day employee activities<br>  * Team discussions<br>  * Work schedule discussions<br>  * Break time communications<br>  * Informal status updates<br><br>Guidelines for source selection:<br>1. For ANY customer-related information, ALWAYS include 'emails'<br>2. For employee task tracking, use 'transcripts' for formal tasks, 'chats' for informal updates<br>3. For comprehensive employee activity analysis, include all relevant sources<br>4. For work patterns or attendance, include both 'transcripts' and 'chats'<br>5. For performance analysis, include sources based on context (customer-facing vs internal)<br><br>Your response must be in the format: \"data_source1|data_source2,confidence_score\"<br><br>Examples with explanations:<br>Query: \"What do customers think about our service?\"<br>Response: emails,0.95<br>Explanation: Customer feedback is exclusively in email communications<br><br>Query: \"What tasks did John complete this week?\"<br>Response: transcripts|chats,0.88<br>Explanation: Tasks are recorded in both formal meetings and informal updates<br><br>Query: \"How is Sarah performing in customer support?\"<br>Response: emails|transcripts|chats,0.92<br>Explanation: Comprehensive performance analysis needs all sources<br><br>Query: \"Who was absent last Thursday?\"<br>Response: transcripts|chats,0.85<br>Explanation: Attendance info is found in formal records and team chats<br><br>Query: \"Which customer complained about delivery delays?\"<br>Response: emails,0.98<br>Explanation: Customer complaints are always in email records<br><br>Query: \"What project is Tom working on?\"<br>Response: transcripts|chats,0.90<br>Explanation: Project information spans formal and informal communications<br><br>If you're not confident about the intent, return a low confidence score.<br>If the query doesn't match any need for these data sources, return \"unknown,0.0\"<br><br>User Query: {query}<br>Required Data Sources and Confidence:<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Best Practices for Using LLMs in Intent Detection<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Fine-Grained Prompts: <\/strong>Avoid depending on just one mega-prompt. Divide tasks into several steps, such as query processing, intent detection, data parsing, and the final output. It is simpler to iterate and improve each component independently with this modular approach.<\/li>\n\n\n\n<li><strong>Clear Guidelines in Prompts: <\/strong>The prompt used in <code>LLMIntentDetector<\/code> includes a structured list of data sources, their contents, and step-by-step instructions on how to decide. Being explicit helps the LLM reason more effectively.<\/li>\n\n\n\n<li><strong>Confidence Thresholds: <\/strong>Always return a confidence score. If the model is unsure, prompt the user to clarify. This avoids silent failures or misleading results.<\/li>\n\n\n\n<li><strong>Logging and Monitoring: <\/strong>It is crucial to log each query, response, and execution outcome when LLMs are involved. Our code integrates Prometheus for metrics and uses extensive logging. This data is invaluable for diagnosing issues and improving prompts over time.<\/li>\n\n\n\n<li><strong>Cost and Latency Considerations: <\/strong>LLMs may require a lot of resources. We manage user-facing latency by offloading the model calls to worker processes through the use of Celery and asynchronous processing. Keep an eye on usage and, if necessary, think about optimizing or fine-tuning smaller models to save money.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Potential Limitations of LLM-Based Intent Detection<\/h3>\n\n\n\n<p>While our experience with LLMs has been transformative, it is critical to recognize the inherent obstacles and limitations of this method. Understanding the potential problems allows us to create more robust and realistic AI systems.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Hallucination and Overconfidence:<\/strong> LLMs occasionally produce information that seems real but is entirely false. This could entail making false linkages between different bits of information or boldly recommending inappropriate data sources in our intent detection algorithm. Although it is not a perfect solution, our confidence score mechanism helps to alleviate this.<\/li>\n\n\n\n<li><strong>Contextual Drift and Inconsistency:<\/strong> Depending on the particular model version or minor variations in prompt wording, LLM performance can vary significantly. What functions flawlessly now could need to be significantly re-engineered tomorrow. This introduces a layer of unpredictability that traditional NLP approaches didn\u2019t suffer from to the same extent.<\/li>\n\n\n\n<li><strong>Financial and Computational Overhead:<\/strong> Despite its strength, our LLM-based intent detection has high computational expenses. Compared to lightweight, rule-based systems, each query demands a significant amount of processing power, which results in greater infrastructure costs. This can be a significant obstacle for businesses with limited resources or a huge amount of inquiries.<\/li>\n\n\n\n<li><strong>Interpretability Challenge:<\/strong> LLMs function as \u201cblack boxes,\u201d in contrast to rule-based systems that allow us to analyze the exact reason behind the detection of a particular intent. Even while the results are outstanding, it becomes much harder to understand the precise rationale behind a certain data source pick.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">The Future of LLM-Based Intent Detection<\/h3>\n\n\n\n<p>We can anticipate even greater accuracy, stronger reasoning, and improved domain adaptation as LLMs develop further. Imagine connecting fine-tuned LLMs that deeply understand your company\u2019s internal knowledge base, drastically reducing the gap between a manager\u2019s natural language request and the final aggregated analytics they receive.<\/p>\n\n\n\n<p>For us, this is just the beginning. The same LLM-driven approach that improved intent detection can extend to other aspects of the system: from automatic summarization of transcripts to generating advanced analytics code on-the-fly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>Shifting from spaCy to LLM-based intent detection in the InSight system was a game-changer. Instead of battling with strict keywords and predefined patterns, we now use models that have a comprehensive understanding of the query. The result: a smoother, more accurate, and more scalable approach to intent detection.<\/p>\n\n\n\n<p>It\u2019s also important to acknowledge the existence of solutions like spaCy-LLM, which integrate large language models into structured workflows. While spaCy-LLM offers a quick and modular way to implement LLMs for various NLP tasks, our decision to build a custom solution stemmed from the need for greater flexibility, finer control, and the ability to tailor the system precisely to our requirements.&nbsp;<\/p>\n\n\n\n<p>This bespoke approach allowed us to optimize the architecture, implement highly specific prompts, and achieve scalability aligned with our project\u2019s unique demands.<\/p>\n\n\n\n<p>Whether you\u2019re developing a basic chatbot or an intricate organizational intelligence system, take into account the ability of LLMs to comprehend the needs of your users. LLMs have the potential to revolutionize human language interpretation and interaction at scale with thoughtful prompt design, modular workflows, and reliable logging.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><em>Thanks for reading! If you enjoyed this deep dive, consider following for more insights into NLP, LLM integration, and real-world AI engineering solutions.<\/em><\/p>\n\n\n\n<p class=\"is-style-plain\"><em>By Tanishk Narula, In collaboration with <a href=\"https:\/\/aihello.com\" target=\"_blank\" rel=\"noreferrer noopener\">AIHello<\/a>.<br>You can find me on: <a href=\"https:\/\/linkedin.com\/in\/tanishk-narula\" target=\"_blank\" rel=\"noreferrer noopener\">LinkedIn<\/a>, <a href=\"https:\/\/github.com\/imtani\" target=\"_blank\" rel=\"noreferrer noopener\">Github<\/a>, <a href=\"https:\/\/twitch.tv\/infinitani_\" target=\"_blank\" rel=\"noreferrer noopener\">Twitch<\/a>, <a href=\"https:\/\/x.com\/infinitani\" target=\"_blank\" rel=\"noreferrer noopener\">Twitter<\/a><\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Master advanced intent detection with LLMs. Discover how Large Language Models overcome spaCy&#8217;s limitations for complex NLP queries in AI systems like InSight.<\/p>\n","protected":false},"author":33,"featured_media":10927,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[103,163,85],"tags":[561,1149,1216],"class_list":["post-10923","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-machine-learning","category-resources","category-tips","tag-ai-machine-learning","tag-llm","tag-llm-vs-nlp"],"_links":{"self":[{"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/posts\/10923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/comments?post=10923"}],"version-history":[{"count":1,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/posts\/10923\/revisions"}],"predecessor-version":[{"id":12608,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/posts\/10923\/revisions\/12608"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/media\/10927"}],"wp:attachment":[{"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/media?parent=10923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/categories?post=10923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aihello.com\/resources\/wp-json\/wp\/v2\/tags?post=10923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}