<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Lcel on Pythonflow</title>
		<link>https://pythonflow.com/tags/lcel/</link>
		<description>Recent content in Lcel on Pythonflow</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
			<managingEditor>alicandonmez90@gmail.com (flowfelis)</managingEditor>
		
		
			<webMaster>alicandonmez90@gmail.com (flowfelis)</webMaster>
		
		
		
			<lastBuildDate>Sat, 27 Jun 2026 07:00:00 +0100</lastBuildDate>
		
			<atom:link href="https://pythonflow.com/tags/lcel/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>LangBot Day 10: Agents and Tool Calling — Let the LLM Decide What to Do</title>
				<link>https://pythonflow.com/posts/langbot-day-10-agents/</link>
				<pubDate>Sat, 27 Jun 2026 07:00:00 +0100</pubDate><author>alicandonmez90@gmail.com (flowfelis)</author>
				<guid>https://pythonflow.com/posts/langbot-day-10-agents/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; On Day 9, LangBot became a full RAG pipeline — every chat message retrieves relevant documents and the LLM answers from them. The &lt;code&gt;/search&lt;/code&gt; command, list-mode routing, and regular chat all coexist. But there is a problem hiding in plain sight: the routing logic is hand-coded in &lt;code&gt;if&lt;/code&gt;/&lt;code&gt;elif&lt;/code&gt; blocks. LangBot doesn&amp;rsquo;t &lt;em&gt;decide&lt;/em&gt; anything — it follows a script. Today we replace that script with an &lt;strong&gt;agent&lt;/strong&gt;: an LLM that reasons about which tool to use, calls it, and responds — autonomously.&lt;/p&gt;</description>
			</item>
			<item>
				<title>LangBot Day 9: The RAG Pipeline — Retriever Meets Generator</title>
				<link>https://pythonflow.com/posts/langbot-day-9-rag-pipeline/</link>
				<pubDate>Fri, 26 Jun 2026 07:00:00 +0100</pubDate><author>alicandonmez90@gmail.com (flowfelis)</author>
				<guid>https://pythonflow.com/posts/langbot-day-9-rag-pipeline/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; On Day 8, LangBot gained a long-term memory — a vector store (Pinecone) filled with document embeddings. You can ask &lt;code&gt;/search home office stipend&lt;/code&gt; and get relevant chunks back. But that is half the picture. You still have to type &lt;code&gt;/search&lt;/code&gt;, read raw chunks, and synthesize the answer yourself. Today we close the loop: the retriever feeds into the chatbot automatically, so you ask &lt;em&gt;&amp;ldquo;How much is the home office stipend?&amp;rdquo;&lt;/em&gt; and LangBot answers from your documents — no slash command, no manual lookup.&lt;/p&gt;</description>
			</item>
			<item>
				<title>LangBot Day 7: Streaming Output — Token-by-Token Responses</title>
				<link>https://pythonflow.com/posts/langbot-day-7-streaming/</link>
				<pubDate>Tue, 23 Jun 2026 07:00:00 +0100</pubDate><author>alicandonmez90@gmail.com (flowfelis)</author>
				<guid>https://pythonflow.com/posts/langbot-day-7-streaming/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; On Day 6, LangBot gained output parsers and now responds in two modes — chat mode returns typed &lt;code&gt;LangBotResponse&lt;/code&gt; objects with mood and confidence, and list mode returns clean &lt;code&gt;list[str]&lt;/code&gt; via &lt;code&gt;CommaSeparatedListOutputParser&lt;/code&gt;. Both modes use &lt;code&gt;.invoke()&lt;/code&gt;, which means the entire response arrives at once after the model finishes generating. Today we fix that — LangBot learns to type its replies one token at a time.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;the-problem-waiting-for-the-whole-answer&#34;&gt;The problem: waiting for the whole answer&lt;/h2&gt;&#xA;&lt;p&gt;Every interaction so far has the same rhythm:&lt;/p&gt;</description>
			</item>
			<item>
				<title>LangBot Day 6: Output Parsers — Transforming Raw Responses into Usable Data</title>
				<link>https://pythonflow.com/posts/langbot-day-6-output-parsers/</link>
				<pubDate>Mon, 22 Jun 2026 07:00:00 +0100</pubDate><author>alicandonmez90@gmail.com (flowfelis)</author>
				<guid>https://pythonflow.com/posts/langbot-day-6-output-parsers/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; On Day 5, LangBot started returning typed objects — every response is now a &lt;code&gt;LangBotResponse&lt;/code&gt; with &lt;code&gt;.message&lt;/code&gt;, &lt;code&gt;.mood&lt;/code&gt;, and &lt;code&gt;.confidence&lt;/code&gt;. That is great when you need structured metadata. But structured output is not always the right tool. Sometimes you just want a clean string. Sometimes you want a parsed list. Today we add output parsers — lightweight LCEL components that transform raw &lt;code&gt;AIMessage&lt;/code&gt; output into exactly the shape you need.&lt;/p&gt;</description>
			</item>
			<item>
				<title>LangBot Day 4: Chaining with LCEL — The Pipe Operator</title>
				<link>https://pythonflow.com/posts/langbot-day-4-lcel/</link>
				<pubDate>Sat, 20 Jun 2026 07:00:00 +0100</pubDate><author>alicandonmez90@gmail.com (flowfelis)</author>
				<guid>https://pythonflow.com/posts/langbot-day-4-lcel/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; On Day 1 we built a basic CLI chatbot. Day 2 gave it memory so it remembers the conversation. Day 3 added a prompt template so LangBot has a personality. But every turn still requires two separate steps — format the template, then call the model. Today we stitch them together into one fluid pipeline.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;the-problem-two-steps-where-one-should-do&#34;&gt;The problem: two steps where one should do&lt;/h2&gt;&#xA;&lt;p&gt;Here is how LangBot works on Day 3. Every single turn:&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
