بلاگ پر واپس جائیں

API اور SDKگائیڈ

openai-dotnet کے ساتھ C# میں پہلی درخواست: اینڈ پوائنٹ، کلید، جواب

C# کنسول ایپ سے اپنی پہلی چیٹ کمپلیشن بھیجیں: آفیشل OpenAI .NET لائبریری میں Endpoint سیٹ کریں، کلید env سے پڑھیں، جواب اور اختتام کی وجہ چھاپیں۔

از CheapTokens Teamشائع شدہ 5 منٹ کا مطالعہ

کور: C# اور OpenAI .NET لائبریری جو CheapTokens اینڈ پوائنٹ سے جڑی ہے
اس صفحہ پر
  1. آپ کو کیا درکار ہے
  2. کنسول ایپ بنائیں
  3. کوڈ، سطر بہ سطر
  4. آپ کو کیا نظر آنا چاہیے
  5. موجودہ سروس کو تبدیل کرنا
  6. ایک درخواست کی قیمت
  7. اگر یہ کام نہ کرے

C# سے CheapTokens کو درخواست بھیجنے کے لیے، .NET کے لیے آفیشل OpenAI لائبریری رکھیں اور OpenAIClientOptions.Endpoint کو https://api.cheaptokens.dev/v1 پر سیٹ کریں۔ مکمل ماڈل آئی ڈی پاس کریں، مثلاً deepseek-ai/DeepSeek-V4-Flash-0731، اور کلید کو ماحول کے متغیر سے پڑھیں۔ ChatClient اور CompleteChat کالز بالکل ویسے ہی رہتی ہیں جیسے OpenAI کی مثالوں میں ہیں۔

فرض کریں کہ آپ کے پاس پہلے سے ایک ASP.NET سروس ہے جو OpenAI سے بات کرتی ہے، اور آپ باقی کوڈ کو چھوئے بغیر کوئی دوسرا اینڈ پوائنٹ اور ماڈل آزمانا چاہتے ہیں۔ اسے کسی بھی چیز سے جوڑنے سے پہلے، تین چیزیں جو عام طور پر غلط ہوتی ہیں (کلید، اینڈ پوائنٹ، ماڈل آئی ڈی) ایک چھوٹی کنسول ایپ میں جانچ لیں۔ ہم یہاں یہی بناتے ہیں۔ نیچے دی گئی تفصیلات GitHub پر لائبریری کے README (openai/openai-dotnet، 5 نومبر 2026 کو چیک کیا گیا) اور CheapTokens کی دستاویزات سے ہیں: docs صفحہ پر وہی بیس URL ہے۔

آپ کو کیا درکار ہے#

پیکیج کا نام NuGet پر OpenAI ہے۔ 5 نومبر 2026 کو تازہ ترین مستحکم ورژن 2.15.0 ہے (اس کی changelog اندراج کی تاریخ 4 نومبر ہے)۔ یہ .NET 8 اور .NET Standard 2.0 کو ہدف بناتا ہے، اور README کہتا ہے کہ یہ تمام .NET Standard 2.0 ایپلیکیشنز کے ساتھ کام کرتا ہے، لہٰذا پرانا پروجیکٹ بھی ٹھیک ہے۔

ایپ میں تین قدریں جاتی ہیں:

  • بیس URL: https://api.cheaptokens.dev/v1 (OpenAI Chat Completions کے ساتھ مطابقت رکھتا ہے)؛
  • ماڈل آئی ڈی: deepseek-ai/DeepSeek-V4-Flash-0731۔ مکمل آئی ڈی استعمال کریں، قیمت کے جدول سے مختصر نام قبول نہیں کیا جاتا۔ DeepSeek-V4-Flash کا 380K کانٹیکسٹ ونڈو اور فی جواب زیادہ سے زیادہ 32,768 آؤٹ پٹ ٹوکنز ہیں، دن کے کسی بھی وقت ایک ہی قیمت؛
  • آپ کے CheapTokens اکاؤنٹ سے ایک API کلید، جو ماحول کے متغیر میں رکھی گئی ہو۔ اگر آپ کو یقین نہیں کہ اسے کیسے محفوظ کریں، تو API کلید کو محفوظ طریقے سے کیسے محفوظ کریں پڑھیں۔

کنسول ایپ بنائیں#

قدم بہ قدم

پروجیکٹ بنائیں اور اسے چلائیں

کنسول پروجیکٹ بنائیں

bash
dotnet new console -o FirstRequest
cd FirstRequest

پیکیج شامل کریں

bash
dotnet add package OpenAI

کلید کو ماحول کے متغیر میں رکھیں

bash یا zsh میں:

bash
export CHEAPTOKENS_API_KEY=your-key

Windows PowerShell میں:

powershell
$env:CHEAPTOKENS_API_KEY = "your-key"

کوڈ پیسٹ کریں اور چلائیں

Program.cs کا مواد اگلے حصے کے کوڈ سے بدلیں، پھر dotnet run چلائیں۔

ٹرمینل جس میں وہ پانچ کمانڈز ہیں جو کنسول ایپ بناتی اور چلاتی ہیں
پانچ کمانڈز: پروجیکٹ بنائیں، فولڈر میں داخل ہوں، پیکیج شامل کریں، کلید سیٹ کریں، چلائیں۔

کوڈ، سطر بہ سطر#

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 "ایک پراکسی یا خود میزبان OpenAI-مطابق LLM" کے لیے یہی پیٹرن دکھاتا ہے: اینڈ پوائنٹ OpenAIClientOptions میں جاتا ہے، کلید ایک ApiKeyCredential میں (یہ System.ClientModel میں رہتی ہے، اسی لیے پہلا using)۔ اوپر کی جانچ ہماری ہے: اگر متغیر سیٹ نہ ہو تو یہ واضح پیغام دیتی ہے۔

سادہ سٹرنگ کے ساتھ CompleteChat ایک صارف پیغام بھیجتا ہے اور پورے جواب کا انتظار کرتا ہے۔ جواب کا متن completion.Content[0].Text میں ہے۔ اختتام کی وجہ completion.FinishReason میں ہے۔

بہاؤ: env سے کلید، Endpoint کے ساتھ ChatClient، CompleteChat، متن اور FinishReason
پروگرام میں کلید سے لے کر چھپے ہوئے جواب تک کیا ہوتا ہے۔

آپ کو کیا نظر آنا چاہیے#

آپ کو ٹوکنز کی مختصر وضاحت اور اختتام کی وجہ والی ایک سطر ملنی چاہیے؛ عام اختتام کے بعد یہ Stop ہوتی ہے (README FinishReason کا ChatFinishReason.Stop سے موازنہ کرتا ہے)۔ جواب کی عبارت ہر بار بدلتی ہے۔

دوسری سطر پڑھنے کے قابل ہے۔ README FinishReason کا ChatFinishReason.Stop (ماڈل خود ختم ہوا) اور ChatFinishReason.ToolCalls (ماڈل کوئی ٹول کال کرنا چاہتا ہے) سے موازنہ کرتا ہے۔ سادہ چیٹ میں Stop کے علاوہ کچھ بھی ہونے کا مطلب ہے کہ جواب کسی اور وجہ سے ختم ہوا، اور عام طور پر قصور لمبائی کی حد کا ہوتا ہے۔ اگر آپ کو ایسا جواب نظر آئے جو درمیانِ جملہ رک جائے، تو یہ مضمون finish_reason اور max_tokens کی وضاحت کرتا ہے۔

موجودہ سروس کو تبدیل کرنا#

اگر آپ کی سروس پہلے سے OpenAI کے لیے ChatClient بناتی ہے، تو آپ دو چیزیں بدلتے ہیں: ماڈل سٹرنگ اور آپشنز۔ باقی کالز کام کرتی رہتی ہیں۔

موازنہ کریں

وہی کلائنٹ، دو بدلی ہوئی سطریں

پہلے

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 کانٹیکسٹ، زیادہ سے زیادہ 8,192 آؤٹ پٹ ٹوکنز)۔ آپ صرف model سٹرنگ بدلتے ہیں۔ آپ کی کلید کون سی آئی ڈیز استعمال کر سکتی ہے اس کی فہرست ایک درخواست کی دوری پر ہے، دیکھیں GET /v1/models کے ساتھ ماڈلز کی فہرست۔

ایک درخواست کی قیمت#

فرض کریں ایک سروس روزانہ 1,000 درخواستیں سنبھالتی ہے، ہر ایک میں تقریباً 300 ٹوکن اندر اور 400 ٹوکن باہر۔ ایسی ایک درخواست DeepSeek-V4-Flash پر $0.000045 کی ہوتی ہے۔ نیچے کا جدول وہی 1,000 درخواستیں تینوں ماڈلز پر OpenRouter کے ساتھ دکھاتا ہے۔ مجموعی طور پر، ان پٹ اور آؤٹ پٹ کو ملا کر، 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۔ کلید غائب یا غلط ہے۔ چھاپیں کہ متغیر سیٹ ہے یا نہیں (کوڈ میں جانچ یہی کرتی ہے) اور یقینی بنائیں کہ dotnet run اسی ٹرمینل میں شروع کیا گیا ہے جہاں آپ نے export (یا $env:) چلایا: متغیر صرف اسی سیشن میں رہتا ہے۔
  • 404۔ زیادہ تر ماڈل آئی ڈی: مکمل deepseek-ai/DeepSeek-V4-Flash-0731 کی بجائے مختصر نام، یا /v1 کے بغیر اینڈ پوائنٹ (یہ بھی جانچیں کہ OpenAIClientOptions واقعی ChatClient کو پاس ہوتا ہے)۔ تفصیلات API 401 یا 404: غلط کلید، بیس URL یا ماڈل آئی ڈی میں ہیں۔
  • خرابی CS0246: The type or namespace name 'ApiKeyCredential' could not be found۔ Program.cs کے اوپر using System.ClientModel; سطر غائب ہے۔

یہی خیال کسی اور زبان میں: openai-go کے ساتھ Go ورژن۔