This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Thursday, 18 December 2025
"यह मानक है," उन्होंने कहा. "सभी उदाहरण यह इस्तेमाल करते हैं." और वे सही थे अगर आप पायथन पर्यावरण में हैं, SELLONONONS हर जगह है. "
लेकिन यहाँ बात है: मैं LCachain से दूर नहीं है क्योंकि यह बुरा है. मैं इससे दूर हूँ क्योंकि यह मैं पहले से ही स्पष्ट रूप से हल समस्याओं को हल कर देता हूँ, और मेरे मामलों के लिए - C# C#, स्थानीय गोपनीयता, गोपनीयता, PRACARTACACACANACANANACACANANANANANANANACANANANANANANAN के बजाय विरोध को जोड़ता है.
यह एक विरोधी सींगिन पोस्ट नहीं है। यह समझ के बारे में एक पोस्ट है क्या समस्याओं के समाधान के बारे में है, और आपको एहसास है कि आप उन्हें जरूरत नहीं हो सकता।
Sisisis: अगर आप समझते हैं कि समस्या SCakyys हल, आप Layhain की जरूरत नहीं है.
चलो सबसे पहले उचित हो. LCachain कई बातों में सीमा:
विश्व - दर्शन - आप मिनट में काम कर सकते हैं. शुरू होने वाले उदाहरण वास्तव में अच्छा हैं.
पायथन पर्यावरण एकीकरण - अगर आप पहले से ही पायथन/Jues/plays दुनिया में कर रहे हैं, LCaks सभी एक साथ समुद्रीय।
दीवार गिराना - लोगों के लिए नए LLLM के लिए, यह उपयोगी एक संकेतक प्रदान करता है: प्रायोगिक प्रारूप, उपकरण कॉल पैटर्न, स्मृति प्रबंधन, सदिशी संयोजन.
LCakiin एक है एकीकरणीकरणीकरण"मेरे पास एक विचार है" के लिए "मैं एक डेमो है" के लिए। यह मूल्यवान है।
लेकिन यह भी है जहाँ समस्या सी# डेवलपर निर्माण तंत्र के रूप में मेरे लिए शुरू होती है।
एक फ्रेमवर्क को नज़रअंदाज़ करने से पहले, आप यह क्या समस्या हल कर रही है समझ की जरूरत है.
सवाल यह है: क्या इन्हें हल करने के लिए आपको एक फ्रेमवर्क की ज़रूरत है?
मेरे काम - निर्माण उत्पादन के लिए स्थानीय LLLM, सख़्त गोपनीयता माँगों के साथ प्रणाली, और विचारात्मक व्यवहार - कुशल ढंग से कई क्षेत्रों में संघर्षों का परिचय देता है ।
LLLCONSin आप के लिए स्मृति और संदर्भ का प्रबंधन करता है. यह ध्वनि जब तक आप डीबग करने की जरूरत है कि क्यों अपने इवेचित से अधिक आयु 10,000 संकेत, या क्यों अचानक आप से बातचीत इतिहास में पहुँच गया है आप सोचा था कि आप को मंजूरी दी थी.
फ्रेमवर्क जांच, स्मृति को संभालता है, और कार्यान्वित करने के आदेश को पूर्ण रूप से संभालता है. जब कुछ गड़बड़ होती है, आप फ्रेमवर्क के व्यवहार को डिबगिंग कर रहे हैं, अपने कोड के व्यवहार को नहीं.
एक बार आप Lakyhain ले, आप डिजाइन शुरू लैंगाइन के लिए. आपकी बनावट फ्रेमवर्क की एक वेश्याओं के साथ जोड़ा जाता है: जंजीर, एजेंट, Rarters, स्मृति बफर.
यह Lacayin - सभी फ्रेमवर्क यह करने के लिए अनोखा नहीं है. लेकिन एक तेजी से तेजी से जाँच क्षेत्र में, जहां सही एक lems अभी तक तय नहीं कर रहे हैं, एक फ्रेमवर्क की दुनिया दृश्य करने के लिए शामिल है.
LCacanin मान्स:
एक के रूप में.NT डेवलपर, मुझे लगता है:
वह लैंगाइन .नेट पोर्ट मौजूद है, लेकिन वे पायथन संस्करण के साथ शिकार कर रहे हैं, और एक सारस अभी भी C# के लिए विदेशी लग रहा है.
जब आप निर्माता से उत्पादन करने के लिए कदम, आप की जरूरत है:
यह डेमोओं के लिए ठीक है, यह उत्पादन के लिए एक समस्या है.
यहाँ मैं इस्तेमाल मानसिक मॉडल है: TLMMM इंजन हैं, नहीं DELM इंजन.
सिद्धांत: इंजन की गणना.
यह अलग ड्राइव मैं निर्माण सब कुछ.
फ्रेमवर्क-मेन्ड मेमोरी के बजाय, मैं संदर्भों को प्रत्यक्ष रूप से प्रति निवेदन बनाता हूं:
public class QueryContext
{
public List<ColumnInfo> Schema { get; set; }
public List<Dictionary<string, string>> SampleRows { get; set; }
public List<ConversationTurn> History { get; set; }
public string UserQuestion { get; set; }
}
हर आसान निर्माण दृश्य है. मैं वास्तव में क्या LLLM के लिए भेजा जा रहा है पता है क्योंकि मैं अपने आप को बनाया है:
private string BuildPrompt(QueryContext context)
{
var sb = new StringBuilder();
sb.AppendLine("You are a SQL expert. Generate a query based on:");
sb.AppendLine();
// Schema
sb.AppendLine("Schema:");
foreach (var col in context.Schema)
sb.AppendLine($" - {col.Name}: {col.Type}");
// History (if any)
if (context.History.Any())
{
sb.AppendLine("\nPrevious conversation:");
foreach (var turn in context.History.TakeLast(3))
sb.AppendLine($" Q: {turn.Question} → SQL: {turn.Sql}");
}
// Current question
sb.AppendLine($"\nQuestion: {context.UserQuestion}");
sb.AppendLine("Generate SQL (no explanation, just the query):");
return sb.ToString();
}
कोई गुप्त स्थिति नहीं, कोई जादुई जादू का निर्माण. बस सुस्पष्ट वाक्यांश निर्माण. जब यह गलत है, मुझे पता है क्यों है.
मैं कुछ भी करने के बजाय, मैं इसे बनाने के लिए इस्तेमाल करता हूँ फिर प्राप्त करें (_R), फिर उस इरादा को चालू करनेवाले इंजन के माध्यम से चलाने के लिए:
TLM एसक्यूएल उत्पन्न करता है. DatDB इसे चलाता है.LM डाटा कभी नहीं दिखता है:
// LLM generates intent
var sql = await GenerateSqlAsync(context);
// Validate before execution
var error = ValidateSql(connection, sql);
if (error != null)
{
// Retry with error feedback
sql = await GenerateSqlAsync(context, previousError: error);
}
// Execute in sandboxed engine
var results = ExecuteQuery(connection, sql);
यह सुरक्षित, तेजी से, और डिबग नहीं चला सकता. DROP TABLE क्योंकि मैं सबसे पहले एसक्यूएल को वैध करता हूँ. लेलएम डाटा लीक नहीं कर सकता क्योंकि यह कभी नहीं आंकड़ा - केवल स्कीमा को देखता है.
मैंने हाल ही में लिखा था स्थानीय CSVM के साथ बड़ी सीएसवी फ़ाइलों का विश्लेषण करें. बनावट:
उपयोक्ता प्रश्न QXML TSBBGEX अंजाम
LLL प्राप्त करता है:
LLM उत्पन्न करता है:
तब तंत्र:
EXPLAIN (कांची सिंटेक्स त्रुटि बिना )LLM कभी वास्तविक डाटा नहीं देखता. यह सिर्फ संरचना को देखता है.
यह है कि LCacagin एक "पीड़ा" - एक प्रणाली जो एक काम बनाने के लिए प्रयोग करता है, उन्हें रद्द करता है, और संभवतः असफल पर फिर से कोशिश करता है.
सिवाय मैंने इसे ~200 पंक्ति में बनाया C# कोई फ्रेमवर्क के साथ:
public class CsvQueryService
{
private readonly OllamaApiClient _ollama;
private readonly string _model;
public async Task<QueryResult> QueryAsync(string csvPath, string question)
{
using var connection = new DuckDBConnection("DataSource=:memory:");
connection.Open();
// 1. Build context
var context = BuildContext(connection, csvPath, question);
// 2. Generate SQL
var sql = await GenerateSqlAsync(context);
// 3. Validate
var error = ValidateSql(connection, sql);
if (error != null)
{
// Retry once with error feedback
sql = await GenerateSqlAsync(context, error);
}
// 4. Execute
return ExecuteQuery(connection, sql);
}
}
यही कारण है कि यह है। कोई जंजीर, कोई एजेंट फ्रेमवर्क, कोई जादू। बस स्पष्ट रूप से इ.
शब्द "स्टी" हमेशा के आसपास फेंक दिया जाता है, आम तौर पर मतलब है "किसी भी वस्तु से जुड़े कुछ भी" का मतलब है। चलो ठीक है।
एक एजेंट है:
एक एजेंट है नहीं aयह एक पैटर्न है.
C# में मेरे एजेंट पैटर्न:
public class Agent
{
private readonly List<ConversationTurn> _history = new();
public async Task<string> RunAsync(string goal)
{
while (!IsGoalAchieved(goal))
{
// 1. Generate next action based on history
var action = await GenerateActionAsync(goal, _history);
// 2. Validate before executing
if (!IsActionSafe(action))
{
_history.Add(new ConversationTurn
{
Action = action,
Result = "REJECTED: Unsafe action"
});
continue;
}
// 3. Execute through deterministic tool
var result = await ExecuteActionAsync(action);
// 4. Record and continue
_history.Add(new ConversationTurn { Action = action, Result = result });
}
return GenerateSummary(_history);
}
}
यह एक एजेंट है. यह राज्य, उपकरण, और फ़ीडबैक के साथ एक लूप है. मैं इसे 30 लाइन में लिखा. मुझे एक फ्रेमवर्क की जरूरत नहीं थी.
.EEECT पर्यावरण के लिए उचित होने के लिए, माइक्रोसॉफ़्ट ने छोड़ दिया है माइक्रोसॉफ्ट एजेंट फ्रेमवर्क यही कारण है कि उद्देश्य-टी डेवलपर निर्माण एआई सिस्टमों को बनाने के लिए।
प्लगइन (जो पहले Microsoft. विस्तार के रूप में जाना जाता है) प्रदान करता है:
कुंजी अवयव:
IChatClient - गपशप पूर्णता के लिए एकीकृत इंटरफेसIEmbeddingGenerator - सदिशों के पार आपूर्तििंग्सAIFunction - वर्ग सुरक्षित फंक्शन कॉलउदाहरण:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddChatClient(builder =>
builder.UseOllama("llama3.2")
.UseOpenTelemetry()
.UseLogging());
var app = builder.Build();
app.MapPost("/chat", async (IChatClient client, string message) =>
{
var response = await client.CompleteAsync(message);
return response.Content;
});
यहां तक कि Microsoft के फ्रेमवर्क के साथ भी, मैं रेडियो कोरंट साफ रखने के लिए पसंद करते हैं:
मैं नहीं चाहता:
मैं चाहता हूँ:
Microsoft के एजेंट फ्रेमवर्क के करीब है कि मैं कैसे Lacachain से लगता है. यह उदाहरण है. NenT पैटर्न, इंजेक्शन ठीक से प्रयोग करता है, और पर्यावरण के लिए लड़ाई नहीं करता है. लेकिन मैं अभी भी अपने आप को लिखने के लिए पसंद करता है.
माइक्रोसॉफ़्ट एजेंट फ्रेमवर्क का उपयोग करने के लिए:
जब मिटाया जाता है:
फ्रेमवर्क कवरिंग निर्णयों को समाप्त नहीं करता है. आप अभी भी संदर्भ में क्या डालने के लिए चुनते हैं, डेटा को पुनः करने के लिए, और जब कोशिश करने के लिए. यह सिर्फ नलिंग आसान बनाता है.
बहुत से कारणों के लिए फ्रेमवर्क-रहित तंत्र बेहतर:
परफार्मेंस - कोई छोटा कपड़ा नहीं. मेरी सीएसवी क्वैरी सेवा सब-100m चलाता है क्योंकि वहाँ ब्लूएम और DDB के बीच कोई फ्रेमवर्क नहीं है.
लागत अनुमानीय - मैं वास्तव में क्या LLLM करने के लिए चला जाता है नियंत्रण. कोई गुप्त रिप्रेचिक स्मृति से.
डिबगGenericName - जब कुछ ब्रेक हो, मैं अपने कोड को डिबगिंग कर रहा हूँ, नहीं एक फ्रेमवर्क के जादू को उलटा करने के लिए.
गोपनीयता - सख्त डेटा उच्च आवश्यकताओं के साथ व्यवस्थाओं के लिए, पता है कि क्या मशीन मामलों को छोड़ देता है.
ऑफ़लाइन दृश्य - किनारा उपकरण, हवाई-गित नेटवर्क, विनियमित वातावरण. फ्रेमवर्क इंटरनेट पहुँच और बादल सेवाओं का विचार करता है.
रीफ्रेक्टेड अनुपालन - खर्च में, स्वास्थ्य सुरक्षा, और सरकार, आप अक्सर समझा और हर निर्णय को समझाने की जरूरत है। "यह सेट किया" एक स्वीकार्य जवाब नहीं है।
आपके वातावरण को जितना अधिक प्रभावित किया जाता है उतना ज़्यादा आप सुस्पष्ट नियंत्रण चाहते हैं ।
आलोचकों के लिए: वहाँ वैध मामले हैं जहाँ मैं LCachain के लिए पहुँच जाएगा।
हंगेर्स - सामग्री को निर्माण करने की गति.
दूर भागें - यदि आप किसी विचार को जायज़ कर रहे हैं और उत्पादन के लिए फिर से फिर से लिखने की योजना बना रहे हैं.
पायथन- रंगीन टीम - अगर आपकी टीम पहले से ही पायथन में कुशल है, तो पर्यावरण फिट मजबूत है.
सिखाने की धारणाएँ - LCakain एक बदमाश की मदद कर सकता है अपने खुद का निर्माण करने से पहले एजेंट पैटर्न समझ सकता है.
वे जानते हैं कि कब नहीं इसे इस्तेमाल करने के लिए किसी चीज़ का इस्तेमाल करना अनमोल है ।
यह वास्तव में LCaphain के बारे में नहीं है. यह फ्रेमवर्क और पहली इप्रयोगीय इंजीनियरिंग के बीच व्यापार समाप्त के बारे में है.
फ्रेमवर्क तेजी से जानकारी की समस्या है. यदि आप 100 वींD API निर्माण कर रहे हैं, एंटिटी फ्रेमवर्क या sapper के लिए तक पहुँचने के लिए पहुँच. पैटर्न तय कर रहे हैं.
लेकिन हम अभी तक तय नहीं कर रहे हैं। हम नहीं जानते कि क्या "चाइन्स" या "सेसर" सही मानसिक मॉडल हैं। हम अभी भी इसे बाहर कर रहे हैं।
उस वातावरण में, मैं धातु के निकट बनाना पसंद करता हूँ:
OllamaSharp, खोलेंARAS SKRSमुझे लगता है कि ये सारी चीज़ें कहाँ से बनायी जा सकती हैं ।
Lacakiin एक पागल उन विचारों के लिए स्वच्छ रूप से नक्शा नहीं है. तो मैं इसे इस्तेमाल नहीं करते हैं.
यदि आप एक .NT डेवलपर कर रहे हैं ... ... ... Laggin पर देख और सोच रहे हैं कि "क्या मुझे इसकी ज़रूरत है?", यहाँ मेरा जवाब है:
आप LCANKS हल की समस्या को हल करने की जरूरत है - संदर्भ प्रबंधन, उपकरण झटका, तर्क फिर से कोशिश करें, तर्क.
आप उन्हें हल करने के लिए LCaggin की जरूरत नहीं है - विशेष रूप से अगर आप सुस्पष्टता, मजबूत टाइपिंग, और जल्दी से अधिक तेजी से निर्माण निर्माण.
मैं इस पर निर्माण सिद्धांत:
"एलिम कारण. इंजन गणना करता है, अपने आप के लिए तुम्हारा है."
या अधिक बस:
"अगर आप समस्या को हल करने के लिए समझते हैं, आप अक्सर फ्रेमवर्क की जरूरत नहीं है."
मेरे लिए, C#, मजबूत टाइपिंग, प्रत्यक्ष नियंत्रण प्रवाह, और विद्वत्ता पर निर्भर करता है.
आप के लिए, यह अलग हो सकता है. और यह ठीक है.
लक्ष्य केंद्रों से बचने के लिए नहीं है। लक्ष्य है उन्हें सचेत रूप से चुनने के लिए उन्हें क्या वे प्रदान करते हैं और क्या वे लागत।
आगे पढ़ा जा रहा है:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.