ब्लॉग पर वापस जाएं

API और SDKगाइड

openai-dotnet के साथ C# में पहला अनुरोध: endpoint, key, उत्तर

C# console ऐप से अपना पहला chat completion भेजें: आधिकारिक OpenAI .NET लाइब्रेरी में Endpoint सेट करें, key को env से पढ़ें, उत्तर और finish reason छापें।

CheapTokens Team द्वाराप्रकाशित 6 मिनट का पाठ

कवर: C# और OpenAI .NET लाइब्रेरी CheapTokens endpoint से जुड़े हुए
इस पृष्ठ पर
  1. आपको क्या चाहिए
  2. console ऐप बनाएँ
  3. कोड, पंक्ति दर पंक्ति
  4. आपको क्या दिखना चाहिए
  5. मौजूदा सेवा बदलना
  6. एक अनुरोध की लागत
  7. अगर यह काम न करे

C# से CheapTokens को अनुरोध भेजने के लिए, .NET के लिए आधिकारिक OpenAI लाइब्रेरी रखें और OpenAIClientOptions.Endpoint को https://api.cheaptokens.dev/v1 पर सेट करें। पूरा मॉडल id पास करें, उदाहरण के लिए deepseek-ai/DeepSeek-V4-Flash-0731, और key को environment variable से पढ़ें। ChatClient और CompleteChat कॉल OpenAI के उदाहरणों की तरह ही बने रहते हैं।

मान लीजिए आपके पास पहले से एक ASP.NET सेवा है जो OpenAI से बात करती है, और आप बाकी कोड को छुए बिना दूसरा endpoint और मॉडल आज़माना चाहते हैं। इसे किसी भी चीज़ से जोड़ने से पहले, तीन चीज़ें (key, endpoint, model id) जो आमतौर पर गड़बड़ाती हैं, एक छोटे console ऐप में जाँच लें। यही हम यहाँ बनाते हैं। नीचे दिए गए विवरण GitHub पर लाइब्रेरी के README (openai/openai-dotnet, 5 नवंबर 2026 को जाँचा गया) और CheapTokens डॉक्स से हैं: docs पेज पर वही base URL है।

आपको क्या चाहिए#

NuGet पर पैकेज का नाम OpenAI है। 5 नवंबर 2026 तक नवीनतम स्थिर संस्करण 2.15.0 है (इसकी changelog प्रविष्टि 4 नवंबर की है)। यह .NET 8 और .NET Standard 2.0 को लक्षित करता है, और README कहता है कि यह सभी .NET Standard 2.0 एप्लिकेशन के साथ काम करता है, इसलिए पुराना प्रोजेक्ट भी ठीक है।

ऐप में तीन मान जाते हैं:

  • base URL: https://api.cheaptokens.dev/v1 (OpenAI Chat Completions संगत);
  • model id: deepseek-ai/DeepSeek-V4-Flash-0731। पूरा id इस्तेमाल करें, मूल्य तालिका से छोटा नाम स्वीकार नहीं किया जाता। DeepSeek-V4-Flash में 380K context window और प्रति उत्तर अधिकतम 32,768 output tokens हैं, दिन के किसी भी समय एक ही कीमत;
  • आपके CheapTokens खाते से एक API key, जो environment variable में रखी गई हो। अगर आपको इसे संग्रहीत करने का तरीका पता नहीं है, तो API key को सुरक्षित रूप से कैसे संग्रहीत करें पढ़ें।

console ऐप बनाएँ#

चरण दर चरण

प्रोजेक्ट बनाएँ और चलाएँ

console प्रोजेक्ट बनाएँ

bash
dotnet new console -o FirstRequest
cd FirstRequest

पैकेज जोड़ें

bash
dotnet add package OpenAI

key को environment variable में रखें

bash या zsh में:

bash
export CHEAPTOKENS_API_KEY=your-key

Windows PowerShell में:

powershell
$env:CHEAPTOKENS_API_KEY = "your-key"

कोड पेस्ट करें और चलाएँ

Program.cs की सामग्री को अगले अनुभाग के कोड से बदलें, फिर dotnet run चलाएँ।

console ऐप बनाने और चलाने वाले पाँच कमांड वाला टर्मिनल
पाँच कमांड: प्रोजेक्ट बनाएँ, फ़ोल्डर में जाएँ, पैकेज जोड़ें, key सेट करें, चलाएँ।

कोड, पंक्ति दर पंक्ति#

csharp
using System.ClientModel;
using OpenAI;
using OpenAI.Chat;

string? apiKey = Environment.GetEnvironmentVariable("CHEAPTOKENS_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
    Console.WriteLine("Set CHEAPTOKENS_API_KEY first.");
    return;
}

ChatClient client = new(
    model: "deepseek-ai/DeepSeek-V4-Flash-0731",
    credential: new ApiKeyCredential(apiKey),
    options: new OpenAIClientOptions
    {
        Endpoint = new Uri("https://api.cheaptokens.dev/v1")
    });

ChatCompletion completion = client.CompleteChat("Explain in two sentences what a token is.");

Console.WriteLine(completion.Content[0].Text);
Console.WriteLine($"finish_reason: {completion.FinishReason}");

README "एक proxy या self-hosted OpenAI-संगत LLM" के लिए यह पैटर्न दिखाता है: endpoint OpenAIClientOptions में जाता है, key एक ApiKeyCredential में (यह System.ClientModel में रहती है, इसलिए पहला using)। शीर्ष पर जाँच हमारी है: अगर variable सेट नहीं है तो यह स्पष्ट संदेश देती है।

सादे string के साथ CompleteChat एक user संदेश भेजता है और पूरे उत्तर की प्रतीक्षा करता है। उत्तर का टेक्स्ट completion.Content[0].Text में है। finish reason completion.FinishReason में है।

प्रवाह: env से key, Endpoint के साथ ChatClient, CompleteChat, टेक्स्ट और FinishReason
key से लेकर छपे हुए उत्तर तक प्रोग्राम में क्या होता है।

आपको क्या दिखना चाहिए#

आपको tokens की एक छोटी व्याख्या और finish reason वाली एक पंक्ति मिलनी चाहिए; सामान्य अंत के बाद यह Stop होता है (README FinishReason की ChatFinishReason.Stop से तुलना करता है)। उत्तर का शब्दांकन हर बार बदलता है।

दूसरी पंक्ति पढ़ने लायक है। README FinishReason की ChatFinishReason.Stop (मॉडल ने अपने आप समाप्त किया) और ChatFinishReason.ToolCalls (मॉडल कोई tool कॉल करना चाहता है) से तुलना करता है। सादे chat में Stop के अलावा कुछ भी होने का मतलब है कि उत्तर किसी और कारण से समाप्त हुआ, और आम संदिग्ध लंबाई सीमा है। अगर आपको वाक्य के बीच में रुकता उत्तर दिखे, तो यह लेख finish_reason और max_tokens समझाता है।

मौजूदा सेवा बदलना#

अगर आपकी सेवा पहले से OpenAI के लिए ChatClient बनाती है, तो आप दो चीज़ें बदलते हैं: model string और options। बाकी कॉल काम करते रहते हैं।

तुलना करें

वही client, दो बदली हुई पंक्तियाँ

पहले

csharp
ChatClient client = new(
    model: "your-current-model",
    credential: new ApiKeyCredential(apiKey));

बाद में

csharp
ChatClient client = new(
    model: "deepseek-ai/DeepSeek-V4-Flash-0731",
    credential: new ApiKeyCredential(apiKey),
    options: new OpenAIClientOptions
    {
        Endpoint = new Uri("https://api.cheaptokens.dev/v1")
    });

छोटे अनुरोधों के लिए दूसरा विकल्प है: zai-org/GLM-5.3-Flash (390K context, अधिकतम 8,192 output tokens)। आप केवल model string बदलते हैं। आपकी key किन ids का उपयोग कर सकती है, इसकी सूची एक अनुरोध दूर है, देखें GET /v1/models से मॉडल सूचीबद्ध करें।

एक अनुरोध की लागत#

मान लीजिए एक सेवा प्रतिदिन 1,000 अनुरोध संभालती है, प्रत्येक में लगभग 300 tokens इन और 400 tokens आउट। DeepSeek-V4-Flash पर ऐसे एक अनुरोध की लागत $0.000045 है। नीचे दी गई तालिका OpenRouter के मुकाबले तीनों मॉडलों पर वही 1,000 अनुरोध दिखाती है। कुल मिलाकर, input और output को साथ गिनने पर, DeepSeek-V4-Flash OpenRouter से सस्ता है। वर्तमान कीमतें मूल्य पेज पर हैं, और DeepSeek पेज बताता है कि मॉडल क्या प्रदान करता है।

मॉडल प्रति अनुरोध 1,000 अनुरोध OpenRouter, 1,000 अनुरोध
GLM-5.3-Flash $0.000022 $0.022 $0.0433
DeepSeek-V4-Flash $0.000045 $0.0445 $0.077
MiniMax-M2.7 $0.000075 $0.075 $0.90

प्रति अनुरोध 300 इनपुट और 400 आउटपुट टोकन। प्रति 1M टोकन की कीमतें वर्तमान हैं और हमारे टैरिफ के साथ बदलती रहती हैं; OpenRouter कॉलम समान कार्यभार के लिए संदर्भ कीमतें दिखाता है।

अगर यह काम न करे#

  • 401. key गायब है या गलत है। छापें कि variable सेट है या नहीं (कोड में जाँच यही करती है) और सुनिश्चित करें कि dotnet run उसी टर्मिनल में शुरू किया गया है जहाँ आपने export (या $env:) चलाया था: variable केवल उसी सत्र में रहता है।
  • 404. अक्सर model id: पूरे deepseek-ai/DeepSeek-V4-Flash-0731 के बजाय छोटा नाम, या /v1 के बिना endpoint (यह भी जाँचें कि OpenAIClientOptions वास्तव में ChatClient को पास हो रहा है)। विवरण API 401 या 404: गलत key, base URL या model id में हैं।
  • error CS0246: The type or namespace name 'ApiKeyCredential' could not be found. Program.cs के शीर्ष पर using System.ClientModel; पंक्ति गायब है।

वही विचार दूसरी भाषा में: openai-go के साथ Go संस्करण।