<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kumar Rohit</title>
    <description>The latest articles on DEV Community by Kumar Rohit (@rohit7890).</description>
    <link>https://dev.to/rohit7890</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3543915%2Fa1eb5c38-c043-4d8c-82d1-0384d06bb7c9.jpeg</url>
      <title>DEV Community: Kumar Rohit</title>
      <link>https://dev.to/rohit7890</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohit7890"/>
    <language>en</language>
    <item>
      <title>A beginner-friendly deep dive into LangSmith- traces, runs, observability, and why every LLM app needs this.</title>
      <dc:creator>Kumar Rohit</dc:creator>
      <pubDate>Thu, 02 Jul 2026 07:05:51 +0000</pubDate>
      <link>https://dev.to/rohit7890/a-beginner-friendly-deep-dive-into-langsmith-traces-runs-observability-and-why-every-llm-app-3d95</link>
      <guid>https://dev.to/rohit7890/a-beginner-friendly-deep-dive-into-langsmith-traces-runs-observability-and-why-every-llm-app-3d95</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh" class="crayons-story__hidden-navigation-link"&gt;Stop Stalking Your Crush, Stalk Your Agents Instead: A LangSmith Deep Dive: Part - 1&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rohit7890" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3543915%2Fa1eb5c38-c043-4d8c-82d1-0384d06bb7c9.jpeg" alt="rohit7890 profile" class="crayons-avatar__image" width="800" height="1129"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rohit7890" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Kumar Rohit
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Kumar Rohit
                
              
              &lt;div id="story-author-preview-content-4043158" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rohit7890" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3543915%2Fa1eb5c38-c043-4d8c-82d1-0384d06bb7c9.jpeg" class="crayons-avatar__image" alt="" width="800" height="1129"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Kumar Rohit&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh" id="article-link-4043158"&gt;
          Stop Stalking Your Crush, Stalk Your Agents Instead: A LangSmith Deep Dive: Part - 1
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/monitoring"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;monitoring&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tooling"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tooling&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Stop Stalking Your Crush, Stalk Your Agents Instead: A LangSmith Deep Dive: Part - 1</title>
      <dc:creator>Kumar Rohit</dc:creator>
      <pubDate>Wed, 01 Jul 2026 17:09:49 +0000</pubDate>
      <link>https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh</link>
      <guid>https://dev.to/rohit7890/stop-stalking-your-crush-stalk-your-agents-instead-a-langsmith-deep-dive-27gh</guid>
      <description>&lt;p&gt;&lt;strong&gt;LangSmith&lt;/strong&gt; is a monitoring and observability platform built by the creators of LangChain and LangGraph for tracing AI applications.&lt;/p&gt;

&lt;p&gt;But before diving into LangSmith, let's first understand what observability and monitoring actually mean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability&lt;/strong&gt; is essentially keeping a close eye on your AI applications while they run — tracking exactly what input goes into each step and what output comes out of it. Take a RAG (Retrieval-Augmented Generation) application as an example. It's made up of several moving parts: vector stores, retrievers, documents, embeddings, and the LLM itself. Observability here means logging every single input and output as it flows between these components. This way, when something breaks (and something always breaks), you know exactly where to look instead of guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;, although it sounds similar to observability, is actually a different concept. Monitoring is the process of tracking your system or application's metrics as a whole — things like latency across different runs, the cost of one end-to-end execution, and so on.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In short&lt;/em&gt;: Observability tells you what happened and why, while monitoring tells you how well things are performing overall. You need both — monitoring flags that something's wrong (say, latency spiked at 3 PM), while observability helps you drill down and find out exactly which component caused it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do LLM apps specifically need this?
&lt;/h2&gt;

&lt;p&gt;Traditional software is predictable. If you call a function with the same input, you get the same output — every single time. When something breaks, you add a print statement, check the logs, find the line, fix it. Done.&lt;br&gt;
LLM applications don't work like that.The output is non-deterministic. The same prompt can produce a different response on every single run. So when a user complains "the answer was wrong," you can't just reproduce it and debug it. That exact run is gone — unless you logged it.&lt;br&gt;
The pipeline has multiple steps, each of which can silently fail. Take a RAG application. When your app gives a wrong answer, where did it go wrong?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the vector store retrieve the wrong documents?&lt;/li&gt;
&lt;li&gt;Did the retriever rank them poorly?&lt;/li&gt;
&lt;li&gt;Did the prompt template stuff too much context in?&lt;/li&gt;
&lt;li&gt;Did the LLM just hallucinate despite having the right context?&lt;/li&gt;
&lt;li&gt;Or did the change in prompt caused it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without observability you can just guess and play catch up but not get the exact root cause of the problem. You'd have to manually test each component in isolation, which is slow and doesn't reflect what actually happened during that specific run. And if the workflow or application is complex containing lot of components, finding the issue would become a nightmare.&lt;/p&gt;

&lt;p&gt;Every LLM call costs money — and in a multi-step pipeline, you might be making 5 to 10 LLM calls per user request without realizing it. Without monitoring, you have no idea which step is burning your budget. Is it the query rewriter? The summarizer? The final answer generator? You won't know until your API bill arrives.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is exactly why LangSmith exists.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's learn about some core concepts of LangSmith -
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Projects - A Project in LangSmith is simply a container for one of your AI applications. Every trace and run gets logged under a project so your data stays organized and separated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trace - A Trace represents one complete end-to-end execution of your application — from the moment a user sends an input to the moment your app returns a final response.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;For example, a user asks: "What is the return policy?"&lt;br&gt;
That single question triggers your entire RAG pipeline — retrieval, reranking, prompt construction, LLM call, response generation. All of that together, from start to finish, is one trace.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Runs - If a Trace is the full journey, a run is each individual step along the way.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Inside that one trace of "What is the return policy?", LangSmith breaks it down into runs:&lt;/p&gt;

&lt;p&gt;Trace: "What is the return policy?"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run 1: Embed the user query
&lt;/li&gt;
&lt;li&gt;Run 2: Retrieve documents
&lt;/li&gt;
&lt;li&gt;Run 3: Rerank documents
&lt;/li&gt;
&lt;li&gt;Run 4: Construct prompt
&lt;/li&gt;
&lt;li&gt;Run 5: LLM call&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Setting up LangSmith
&lt;/h2&gt;

&lt;p&gt;Step 1: Create a LangSmith Account&lt;br&gt;
Head over to smith.langchain.com and sign up. Once you're in, navigate to Settings → API Keys and generate a new API key. Copy it somewhere safe.&lt;/p&gt;

&lt;p&gt;Step 2: Create a Project&lt;br&gt;
Once you're inside the LangSmith dashboard, create a new project. Give it a meaningful name that matches your application.&lt;/p&gt;

&lt;p&gt;Step 3: Install the Package&lt;br&gt;
&lt;code&gt;pip install langsmith&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 4: Make sure to have these environment variables&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;.&lt;span class="n"&gt;env&lt;/span&gt;
&lt;span class="n"&gt;LANGCHAIN_TRACING_V2&lt;/span&gt;=&lt;span class="n"&gt;true&lt;/span&gt;  -- &lt;span class="n"&gt;Turns&lt;/span&gt; &lt;span class="n"&gt;tracing&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;/&lt;span class="n"&gt;off&lt;/span&gt; — &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;enable&lt;/span&gt;
&lt;span class="n"&gt;LANGCHAIN_API_KEY&lt;/span&gt;=&lt;span class="n"&gt;your&lt;/span&gt;-&lt;span class="n"&gt;langsmith&lt;/span&gt;-&lt;span class="n"&gt;api&lt;/span&gt;-&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;LANGCHAIN_PROJECT&lt;/span&gt;=&lt;span class="n"&gt;your&lt;/span&gt;-&lt;span class="n"&gt;project&lt;/span&gt;-&lt;span class="n"&gt;name&lt;/span&gt; -- &lt;span class="n"&gt;Which&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;send&lt;/span&gt; &lt;span class="n"&gt;traces&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's literally it. These three environment variables are all LangSmith needs to start capturing traces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's see a simple langchain workflow in action tracked by LangSmith -
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dotenv&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dotenv&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ChatOpenAI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_core.prompts&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PromptTemplate&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_core.output_parsers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StrOutputParser&lt;/span&gt;

&lt;span class="c1"&gt;# Load environment variables
&lt;/span&gt;&lt;span class="nf"&gt;load_dotenv&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Prompt to generate a detailed report
&lt;/span&gt;&lt;span class="n"&gt;prompt1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;PromptTemplate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;template&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generate a detailed report on {topic}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;input_variables&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;topic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Prompt to summarize the report
&lt;/span&gt;&lt;span class="n"&gt;prompt2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;PromptTemplate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;template&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generate a 5 pointer summary from the following text:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;{text}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;input_variables&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize models
&lt;/span&gt;&lt;span class="n"&gt;model1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ChatOpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o-mini&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ChatOpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Output parser
&lt;/span&gt;&lt;span class="n"&gt;parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;StrOutputParser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Create sequential chain
&lt;/span&gt;&lt;span class="n"&gt;chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt1&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;model1&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;prompt2&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;model2&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;parser&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Configuration for tracing
&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tags&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llm_app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;report generation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summarization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Invoke chain
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;topic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Artificial Intelligence&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1rzxgqw9pz9ln3wn838c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1rzxgqw9pz9ln3wn838c.png" alt="LangSmith Dashboard" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The screenshot above shows a real LangSmith trace for a simple Sequential LLM application.&lt;/p&gt;

&lt;p&gt;The middle panel breaks down the six runs inside this trace — &lt;code&gt;PromptTemplate&lt;/code&gt; formatted the input, gpt-4o-mini made the first LLM call (13.68s, 1.1K tokens), &lt;code&gt;StrOutputParser&lt;/code&gt; cleaned the output, then the chain continued with another &lt;code&gt;PromptTemplate&lt;/code&gt;, a second LLM call via gpt-4o (4.85s, 1.4K tokens), and a final &lt;code&gt;StrOutputParser&lt;/code&gt;. On the right, you can see the exact input (topic: AI Opportunity in India) and the structured output the LLM returned. &lt;/p&gt;

&lt;p&gt;This is exactly what makes LangSmith powerful. When something goes wrong, you don't guess — you just open the trace and see precisely where it broke.&lt;/p&gt;

&lt;p&gt;LangSmith works out of the box with LangChain and LangGraph — no extra setup needed. However, if your pipeline includes components that aren't natively part of these frameworks, LangSmith won't trace them automatically. For those cases, you can wrap the function with the &lt;code&gt;@traceable&lt;/code&gt; decorator and LangSmith will capture it just like any other run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langsmith&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;traceable&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nd"&gt;@traceable&lt;/span&gt;  &lt;span class="c1"&gt;# LangSmith will trace this function
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_llm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o-mini&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_llm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What is RAG in AI?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;@traceable&lt;/code&gt; decorator tells LangSmith — "treat this function as a run, log its input and output." Works with any Python function, any framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives of LangSmith
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Langfuse&lt;/strong&gt;&lt;br&gt;
Langfuse is open source and self-hostable, meaning your data never leaves your own infrastructure. It works with any LLM framework — not just LangChain — and comes with prompt versioning and evaluation built in. Best choice if data privacy is a concern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Helicone&lt;/strong&gt;&lt;br&gt;
Helicone works as a proxy between your app and the LLM provider. You change one base URL and it automatically starts logging every request — tokens, cost, latency. No code changes needed. Best for teams who just want clean cost and usage visibility without a full observability setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arize Phoenix&lt;/strong&gt;&lt;br&gt;
Phoenix runs completely locally — no cloud, no data sharing. It goes beyond just tracing, offering embeddings visualization and dataset analysis. Best suited for ML teams doing serious evaluation or fine-tuning work alongside production monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Let's zoom out and look at what we covered - &lt;/p&gt;

&lt;p&gt;We started with a simple truth — LLM applications are fundamentally different from traditional software. They're non-deterministic, multi-step, and fail silently. A wrong answer doesn't throw an error. It just quietly erodes your user's trust until they stop using your product.&lt;/p&gt;

&lt;p&gt;Observability and monitoring are your defense against that. Observability tells you what happened and why at every step. Monitoring tells you how well your system is performing over time. You need both. LangSmith gives you both — wrapped in a clean UI that integrates natively with LangChain and LangGraph with almost zero setup effort. &lt;/p&gt;

&lt;p&gt;The best time to add observability to your LLM app is before you need it — because by the time something breaks in production and a user is complaining, you'll wish you had the trace from that exact run.&lt;/p&gt;

&lt;p&gt;So stop stalking your crush and start stalking your agents. Every trace tells a story, and the better you understand those stories, the easier it becomes to build reliable AI applications.&lt;/p&gt;

&lt;p&gt;In Part 2, we'll go beyond tracing and explore how LangSmith helps you evaluate prompts, create datasets, run experiments, collect user feedback, and continuously improve your LLM applications.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>monitoring</category>
      <category>tooling</category>
      <category>agents</category>
    </item>
    <item>
      <title>How I Built an AI-Powered Personal Chatbot That Represents Me Professionally (And How You Can Too)</title>
      <dc:creator>Kumar Rohit</dc:creator>
      <pubDate>Fri, 03 Oct 2025 15:34:11 +0000</pubDate>
      <link>https://dev.to/rohit7890/how-i-built-an-ai-powered-personal-chatbot-that-represents-me-professionally-and-how-you-can-too-fhk</link>
      <guid>https://dev.to/rohit7890/how-i-built-an-ai-powered-personal-chatbot-that-represents-me-professionally-and-how-you-can-too-fhk</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgc684j9c7n5sgwk6k02z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgc684j9c7n5sgwk6k02z.jpeg" alt=" " width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Problem: Lost Opportunities in Professional Networking
&lt;/h1&gt;

&lt;p&gt;Have you ever visited someone's professional website and wished you could just ask them directly about their experience? Or worse, have you missed potential opportunities because people couldn't easily learn about your background and expertise?&lt;/p&gt;

&lt;p&gt;I was facing this exact problem. Despite having a solid professional background, my static website wasn't engaging visitors or converting them into meaningful connections. That's when I decided to build something revolutionary: an AI chatbot that actually represents me professionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: "The AI You" - Your Digital Professional Twin
&lt;/h2&gt;

&lt;p&gt;I created an intelligent chatbot that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Knows your professional background inside and out&lt;/li&gt;
&lt;li&gt;Engages visitors in natural conversations about your expertise&lt;/li&gt;
&lt;li&gt;Automatically captures leads when people show interest&lt;/li&gt;
&lt;li&gt;Notifies you instantly when someone wants to connect&lt;/li&gt;
&lt;li&gt;Runs 24/7 without requiring manual intervention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as having a digital version of yourself that never sleeps, always knows your resume, and can have meaningful conversations with potential clients, employers, or collaborators.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes This Different (And Why It Works)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AI That Actually Understands Context
&lt;/h3&gt;

&lt;p&gt;Unlike generic chatbots, this system is trained specifically on your professional summary. It doesn't just give scripted responses - it understands your unique background and can discuss your experience authentically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instant Notifications
&lt;/h3&gt;

&lt;p&gt;The moment someone expresses interest or leaves their contact information, you get notified via Pushover (works on any device). No more checking your website daily for leads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lead Generation Built-In
&lt;/h3&gt;

&lt;p&gt;The chatbot is designed to naturally guide conversations toward getting in touch, making it a powerful tool for networking and business development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost-Effective
&lt;/h3&gt;

&lt;p&gt;Using GPT-4o-mini, the operating costs are minimal - typically under $5/month even with heavy usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Deep Dive: How It Actually Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core Architecture
&lt;/h3&gt;

&lt;p&gt;The system is built on three main components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit Frontend&lt;/strong&gt; for a clean, professional chat interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI GPT-4o-mini&lt;/strong&gt; as the AI brain that understands your context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Tools&lt;/strong&gt; that handle lead capture and notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Magic Behind the Scenes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The system prompt that makes the AI "be" you:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_system_prompt&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;You are acting as &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;. You are answering questions on &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s website,
    particularly questions related to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s career, background, skills and experience.
    Your responsibility is to represent &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; for interactions on the website as faithfully as possible.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;## Summary:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;summary&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;##&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;With this context, please chat with the user, always staying in character as &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;system_prompt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Smart Lead Capture:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The chatbot includes intelligent tools that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Record user details when someone wants to connect&lt;/li&gt;
&lt;li&gt;Track unanswered questions to help you improve your professional summary&lt;/li&gt;
&lt;li&gt;Send instant notifications so you never miss an opportunity
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;record_user_details&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;not provided&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;notes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;not_provided&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; with email &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tried reaching out and these are the notes &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;notes&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recorded&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ok&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step-by-Step: Build Your Own AI Professional Assistant
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;You'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic Python knowledge&lt;/li&gt;
&lt;li&gt;An OpenAI API key&lt;/li&gt;
&lt;li&gt;A Pushover account for notifications&lt;/li&gt;
&lt;li&gt;Your professional summary in PDF format&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Set Up the Environment
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;streamlit openai PyPDF2 requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Configure Your Professional Context
&lt;/h3&gt;

&lt;p&gt;Place your professional summary in &lt;code&gt;summary.pdf&lt;/code&gt;. This should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your career background&lt;/li&gt;
&lt;li&gt;Key skills and technologies&lt;/li&gt;
&lt;li&gt;Notable projects and achievements&lt;/li&gt;
&lt;li&gt;Areas of expertise&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Set Up API Keys
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;.streamlit/secrets.toml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;OPENAI_API_KEY&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your_openai_api_key"&lt;/span&gt;
&lt;span class="py"&gt;PUSHOVER_USER&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your_pushover_user_key"&lt;/span&gt;
&lt;span class="py"&gt;PUSHOVER_TOKEN&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your_pushover_app_token"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Customize for Yourself
&lt;/h3&gt;

&lt;p&gt;Update the name variable in &lt;code&gt;chatbot.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your Name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with your actual name
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Deploy
&lt;/h3&gt;

&lt;p&gt;For local testing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;streamlit run chatbot.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For production, deploy to Streamlit Cloud or your preferred hosting platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Build Your AI Professional Twin?
&lt;/h2&gt;

&lt;p&gt;The code is open-source and ready to customise. Whether you're a developer looking to showcase your skills, a consultant wanting to generate more leads, or a job seeker wanting to stand out, this AI assistant can transform how people interact with your professional brand.&lt;/p&gt;

&lt;p&gt;Have questions about the implementation? Drop them in the comments below, and I'll help you get your AI professional assistant up and running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo Link:&lt;/strong&gt; &lt;a href="https://github.com/k-Rohit/Agentic-AI" rel="noopener noreferrer"&gt;https://github.com/k-Rohit/Agentic-AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://theaiagentme.streamlit.app/" rel="noopener noreferrer"&gt;https://theaiagentme.streamlit.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
    </item>
  </channel>
</rss>
