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
मैं क्यों नहीं-'-LongChain का उपयोग नहीं करता है।
Thursday, 18 December 2025
मैं एक नेट डेवलपनर हूँ। जब मैंने LLM का निर्माण आरंभ किया था, तो सभी मुझे LangChain की ओर इशारा कर रहे थे।
लेकिन यहाँ यह बात है-', मैं नहीं हूँ, ', लंगचैन से बचने के लिए नहीं क्योंकि यह बुरा है,', मैं इसे से बचता हूँ क्योंकि यह समस्याओं को हल करता है मैं पहले से ही अधिक स्पष्ट रूप से हल करता हूँ।
यह एक प्रतिकूल नहीं है।
पाठ: यदि आप समस्याओं को समझते हैं LangChain हल करता है
लंगचैन वास्तव में क्या अच्छा करता है
लैंग चेन कई बातों में श्रेष्ठ है
त्वरित प्रारूप निर्माण - आप मिनटों में एक कार्य प्रदर्शन कर सकते हैं
पाइथोन पारिस्थितिकी एकीकरण - यदि आप'\you पहले से ही पाइथोन में होते हैं
अवरोध को कम करना - LLMs के लिए नए लोगों के लिए यह उपयोगी व्युत्पन्न प्रदान करता है।
लंगचैन एक है एकीकृत त्वरक, एक अभियांत्रिकी आवश्यकता नहीं है।
लेकिन यह भी है जहां समस्याएँ मेरे लिए एक C के रूप में शुरू होते हैं
लंगचेन की समस्याओं को हल करता है
फ्रेमवर्क को छोड़ने से पहले आपको यह समझना होगा कि कौन सी समस्याओं को यह हल करता है
- संदर्भ निर्माण - स्कीमा से सुसंगत प्रांप्ट बनाना
- औज़ार वादन - शर्तात्मक तर्क के साथ अनुक्रम में बहुविध उपकरण कॉल का प्रबंधन
- राज्य प्रबंधन - बहुमुखी वार्तालाप संदर्भ बनाए रखना
- पुनः प्रयास और त्रुटि प्रबंधन - जब एलएलएम अवैध आउटपुट उत्पन्न करता है तो शालीन रूप से पुनर्प्राप्ति
- बहु-- चरण तर्क जटिल कार्यों को अनुक्रमिक चरणों में तोड़ना
- प्रेक्षणशीलता - निष्पादन के दौरान क्या वास्तव में हुआ ट्रैकिंग
इन समस्याओं को हल करने के लिए एक ढांचे की जरूरत है
जहां लंगचेन की चोट शुरू हो जाती है
मेरे काम के लिए - निर्माण उत्पादन . स्थानीय LLMs के साथ नेट प्रणालियां | , | सटीक गोपनीयता आवश्यकताएं |, | और निर्णायक व्यवहार
छुपे राज्य और अप्रत्यक्ष नियंत्रण प्रवाह
लंगचैन आपके लिए स्मृति और संदर्भ का प्रबंधन करता है।
फ्रेमवर्क प्रांप्टों को कनेटेन करता है।
फ्रेमवर्क
एक बार आप लेंगचैन अपनाने के लिए, आप डिजाइन शुरू लंगचैन के लिएआपका वास्तुकला फ्रेमवर्क से जोड़ा जाता है
यह लैंग चेन के लिए अद्वितीय नहीं है।
पाइथन Impedance विसंगति
लंगचैन मानता है
- लंबे समय तक चलने वाले प्रक्रियाएँ
- स्थूल वैश्विक स्थिति
- Python's गतिशील टाइपिंग और डक टाइपिंग
- ब्लॉकिंग I/O पैटर्न
एक .NET विकासकर्ता के रूप में
- अनुरोध-स्कोपित जीवनकाल M SK1ASP.NET कोर पैटर्न
- अपरिवर्तनीय या स्पष्ट रूप से
- मजबूत टाइपिंग और कम्पाइल
- सभी जगह प्रतीक्षा करें
लंगचैन .नेट पोर्ट मौजूद हैं, लेकिन वे पकड़ खेल रहे हैं, पिथन संस्करण के साथ-साथ - बजा रहा है, और abstractions अभी भी भाषात्मक C को विदेशी महसूस करता है
उत्पादन वास्तविकता अंतर
जब आप प्रोटोटाइप से उत्पादन में ले जा रहे हैं
- निर्धारवाद - एक ही इनपुट से पूर्वानुमानीय व्यवहार उत्पन्न होना चाहिए
- वैधीकरण इसे निष्पादित करने से पहले LLM ' s आउटपुट को सुरक्षित सुनिश्चित करें
- सैंडबाक्सिंग - सीमा क्या उत्पन्न कोड वास्तव में कर सकता है
- लागत नियंत्रण - ट्रैक टोकन उपयोग और सीमाएं लागू करें
- स्थानीय निष्कर्ष - मॉडल ऑफ़लाइन चलाएँ बिना क्लाउड निर्भरताओं
LangChain पुनरावर्तन गति के लिए अनुकूलित करता है
मैं क्या बनाता हूँ इसके बजाय
यहाँ मैं प्रयोग करता हूँ मानसिक मॉडल है एलएलएम तर्क इंजन हैं
LLMs Do:
- व्याख्या - प्राकृतिक भाषा से उपयोगकर्ता अभिप्राय को समझना
- योजना - जटिल कार्यों को चरणों में तोड़ना
- अनुवाद अभिप्राय को संरचनात्मक प्रारूपों में रूपांतरित करना
LLMs नहीं करें
- समुच्चय गणना करें - सारांश
- डाटासेट स्कैन करें - बड़े फ़ाइलों के माध्यम से खोज
- स्वायत्त राज्य - दीर्घकालिक स्मृति को बनाए रखना
सिद्धांत LLMs कारण
यह पृथक्करण मैं निर्माण करने के लिए सब कुछ चलाता है
स्पष्ट संदर्भ, जादुई स्मृति नहीं
फ्रेमवर्क के बजाय
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; }
}
प्रत्येक प्रांप्ट निर्माण दृश्यात्मक है
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();
}
कोई पोशीदा स्थिति नहीं है।
निर्धारात्मक निष्पादन परतें
LLM को कुछ भी निष्पादित करने के बजाय मैं इसे उत्पन्न करने के लिए उपयोग करता हूँ अभिप्रायतब उस उद्देश्य को निर्णायक इंजनों के माध्यम से निष्पादित करें
- एसक्यूएल इंजन डेटा क्वेरी के लिए
- खोज इंजन (Lucene, Postgres पूर्ण
- नियम इंजन व्यापारिक तर्क के लिए
- डोमेन सेवाएँ - वैध ऑपरेशन के लिए
एलएलएम एसक्यूएल उत्पन्न करता है
// 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 क्योंकि मैं एसक्यूएल पहले प्रमाणित करता हूँ
एक ठोस उदाहरण: फ्रेमवर्क बिना सीएसवी विश्लेषण
मैंने हाल ही में स्थानीय LLMs के साथ बड़ी सीएसवी फ़ाइलों का विश्लेषणवास्तुकला
उपयोक्ता प्रश्न → LLM | → | SQL | → | DuckDB |→ | परिणाम
एलएलएम प्राप्त करता है
- सीएसवी स्कीमा
- नमूना पंक्तियाँ
- उपयोक्ता' का प्रश्न
एलएलएम उत्पन्न करता है
- एक डकडीबी एसक्यूएल क्वेरी
तब सिस्टम:
- एसक्यूएल का वैधीकरण कर रहा है
EXPLAINनिष्पादित किए बिना वाक्य संरचना त्रुटियों को पकड़ता है - सीएसवी फ़ाइल के खिलाफ क्वेरी चलाता है
- परिणाम उपयोगकर्ता को लौटाता है
LLM कभी भी वास्तविक डेटा नहीं देखता
यह है क्या लंगचैन एक एलएलएम का उपयोग करने के लिए क्रियाओं को उत्पन्न करने के लिये एक सिस्टम को "एजेंट"\ -\ कहेगा
सिवाय इसके कि मैंने इसे सी के लाइनों में बिना फ्रेमवर्क के बनाया
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);
}
}
यह है कि-' यह है-. कोई श्रृंखलाएँ नहीं हैं, , कोई एजेंट फ्रेमवर्क नहीं है,, कोई जादू नहीं है।
एक एजेंट क्या है
शब्द '"' अभिकर्ता '"' लगातार चारों ओर फेंका जाता है',' सामान्यतः इसका अर्थ होता है '"' किसी भी LLM से संबंधित ''
एक एजेंट है
- एक लूप - यह कई बार चलाता है
- राज्य के साथ यह याद करता है कि क्या यह कोशिश की
- उपकरणों के साथ - यह विश्व में कार्रवाई कर सकता है
- पृष्ठपोषण के साथ - यह परिणामों को देखता है और समायोजन करता है
एक एजेंट है कोई लाइब्रेरी नहींयह एक पैटर्न है
में मेरा एजेंट पैटर्न 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);
}
}
यह एक एजेंट है।
जहाँ माइक्रोसॉफ्ट एमएसके0 के एजेंट फ्रेमवर्क फिट है
.NET पारिस्थितिकी के प्रति निष्पक्ष होने के लिए, माइक्रोसॉफ्ट ने जारी किया है माइक्रोसॉफ्ट एजेंट फ्रेमवर्क यह कि नेट डेवलपर्स निर्माण उत्पादन एआई प्रणालियों के लिए बनाया गया है
माइक्रोसॉफ्ट एजेंट फ्रेमवर्क क्या सही करता है
फ्रेमवर्क (अगाडि माइक्रोसॉफ्ट के रूप में जाना जाता है
- स्पष्ट वाद्य-रचना - आप एजेंट लूप को नियंत्रित करते हैं
- मजबूत टाइपिंग उपकरण परिभाषाओं और फ़ंक्शन कॉल के लिए समय सुरक्षा
- प्रथम-वर्ग अवलोकननीयता - BuiltM SK1in telemetry, loggingMSC3 and distributed tracing via OpenTelemetry
- उद्यम सीमाएँ - विनिर्माण के लिए डिजाइन किया गया है।
- बहु-- मॉडल समर्थन - OpenAI के ऊपर संक्षेप | , | Azure OpenAI |, | Ollama | МSK3 और अन्य प्रदाताओं पर
- सेमेटिक कर्नेल एकीकरण माइक्रोसॉफ्ट के साथ काम करता है
मुख्य घटक
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;
});
जहाँ मैं अभी भी नीचे रह रहा हूँ
माइक्रोसॉफ्ट के साथ भी
मैं नहीं चाहता
- अपारदर्शी योजनाकार - फ्रेमवर्क स्वायत्त रूप से निर्णय करने के लिए कौन सा उपकरण कॉल करना है
- अप्रत्यक्ष औज़ार चयन प्राकृतिक भाषा वर्णनों पर आधारित जादुई रूटिंग
- छुपे पुनः प्रयास तर्क - फ्रेमवर्क
मैं चाहता हूँ
- दृश्य लूप - मैं अपने कोड में प्रत्येक पुनरावृत्ति देखता हूँ
- परीक्षण योग्य चरण - मैं निर्णय तर्क को इकाई परीक्षण कर सकता हूँ
- प्रतिस्थापन योग्य घटक - मैं LLM को Swap कर सकता हूँ
- स्पष्ट स्थिति मैं ठीक से जानता हूँ कि संदर्भ में क्या है
माइक्रोसॉफ्ट के एजेंट फ्रेमवर्क मेरे विचार से लंगचैन से अधिक निकट है।
जब माइक्रोसॉफ्ट एजेंट फ्रेमवर्क का उपयोग करना है
- फ़ंक्शन कॉल के साथ चैट अनुप्रयोग बनाना
- बहुविध -मोडल समर्थन की आवश्यकता है।
- उद्यम विशेषताएं चाहते हैं
- एक टीम में कार्य करना जो फ्रेमवर्क सुसंगतता को प्राथमिकता देता है
- सेमेटिक कर्नेल के ऊपर निर्माण
जब फ्रेमवर्क चलाना है
- आपको एजेंट लूप पर पूर्ण नियंत्रण की जरूरत है
- आप custom reasoning patterns का निर्माण कर रहे हैं
- आप शून्य अमूर्ति ओवरहेड चाहते हैं
- आप विशेष उपयोग के लिए अनुकूलन कर रहे हैं
- आप ठीक से समझना चाहते हैं कि यह कैसे काम करता है
फ्रेमवर्क स्थापत्य निर्णयों को समाप्त नहीं करता है
क्यों यह बेहतर लंबाई मापन करता है
फ्रेमवर्क
निष्पादन मेरा सीएसवी क्वेरी सेवा sub-100ms चलाता है क्योंकि वहाँ LLM और DuckDB के बीच कोई फ्रेमवर्क नहीं है
लागत पूर्वानुमान मैं ठीक से नियंत्रण करता हूँ क्या LLM के लिए जाता है
त्रुटिमोचन क्षमता जब कुछ टूटता है तो मैं अपनी कोड को डिबग कर रहा हूँ
गोपनीयता - कठोर डेटा आवास आवश्यकताओं के साथ प्रणालियों के लिए
ऑफ़लाइन परिदृश्य - किनारे युक्तिएं, वायुसमूहM SK2गाप नेटवर्कोंMSC3नियंत्रित परिवेशों . फ्रेमवर्क इंटरनेट अभिगम और क्लाउड सेवाओं को मानते हैं
विनियामक अनुपालन वित्त में1 स्वास्थ्य देखभाल2 और सरकार में3 आपको प्रायः हर निर्णय को स्पष्ट करना और लेखापरीक्षा करनी होती है4 फ्रेमवर्क ने ऐसा किया6 क्या है7 एक स्वीकार्य उत्तर नहीं है8
जितना अधिक सीमाबद्ध आपका वातावरण है, उतना अधिक आप स्पष्ट नियंत्रण चाहते हैं
जब मैं लंगचैन का उपयोग करूँगा
आलोचकों को निरस्त्र करने के लिए-:-यहाँ विधिवत मामले हैं जहां मैं-'-LongChain के लिए पहुंचता है
हाकथॉन्स - डेमो के लिए गति वास्तुकला से अधिक महत्वपूर्ण है
थ्रोवाई पीओसी यदि आप किसी विचार को प्रमाणित कर रहे हैं और उत्पादन के लिए फिर से लिखने की योजना बना रहे है
पायथन-भारी टीम - यदि आपका दल पहले से ही पाइथोन में प्रवाहित है
शिक्षण संकल्पना -\ LangChain\ '\ abstractions beginners can help understand the agent pattern before building their own
कब जानना नहीं किसी चीज़ का उपयोग करने के लिए यह जानने की तरह ही मूल्यवान है कि इसे कब प्रयोग करना चाहिए
व्यापक पैटर्न: फ्रेमवर्क vs. प्रथम सिद्धांत
यह वास्तव में लंगचैन के बारे में नहीं है।
फ्रेमवर्क परिचित समस्याओं को त्वरित करता है
लेकिन LLM---powered systems-?-the right abstractions aren't settled yet-M SK2-we don't know if "-chains-MSC6-or "-agents,"-or "-retrievers—"-are the right mental models.
उस वातावरण में मैं धातु के निकट बनाना पसंद करता हूँ
- प्रत्यक्ष API कॉल के माध्यम से एलएलएम (
OllamaSharpOpenAI SDK - स्पष्ट स्ट्रिंग निर्माण के माध्यम से त्वरित निर्माण
- डोमेन के माध्यम से वैधीकरण
- उद्देश्य के माध्यम से निष्पादन
एक .NET डेवलपर के रूप में, मैं सिस्टमों को कैसे बनाया जाना चाहिए के बारे में मजबूत राय रखते हैं
लंगचैन
द ट्युकेवे
यदि आप लैंगचैन को देख रहे हैं और यह सोच रहे है
आपको समस्याओं को हल करने की जरूरत है LangChain हल करता है संदर्भ प्रबंधन
आप उन्हें हल करने के लिए लंगचैन की जरूरत नहीं है विशेष रूप से यदि आप स्पष्टता का मूल्य रखते हैं
मैं इस सिद्धांत पर निर्माण करता हूँ
"LLMs कारण
या अधिक सरल
यदि आप उन समस्याओं को समझते हैं जो एक फ्रेमवर्क हल करता है
अपने पारिस्थितिकी में तर्कसंगत प्रणालियां बनाना-अपने प्रतिबंधों के साथ-साथ-अपनी भाषा का प्रयोग करते हुए-अपना भाषा का उपयोग करते हुए।
आपके लिए यह भिन्न हो सकता है
लक्ष्य यह है कि फ्रेमवर्कों से बचना नहीं है।
आगे पढ़ने:
- स्थानीय LLMs के साथ बड़े सीएसवी फ़ाइलों का विश्लेषण C# में - फ्रेमवर्क के बिना LLM का एक ठोस उदाहरण
- एलएलएमs के साथ वेब सामग्री लाना और विश्लेषण - वेब स्क्रैपिंग और फ्रेमवर्क के बिना विश्लेषण
- माइक्रोसॉफ्ट एजेंट फ्रेमवर्क दस्तावेज़ीकरण - के लिए आधिकारिक माइक्रोसॉफ्ट एजेंट फ्रेमवर्क
- माइक्रोसॉफ्ट - NET के लिए मूलभूत AI अमूर्ति
- सेमेटिक कर्नेल Microsoft LLM orchestration SDK
- लंगचैन दस्तावेज़ीकरण - समझने के लिए क्या आप नहीं उपयोग करने का चयन कर रहे हैं
- ओल्लामाशर्प स्थानीय LLM निष्कर्ष के लिए - C# क्लाइंट