ব্লগে ফিরে যান

API ও SDKগাইড

openai-dotnet দিয়ে C#-এ প্রথম অনুরোধ: এন্ডপয়েন্ট, কী, উত্তর

একটি C# কনসোল অ্যাপ থেকে আপনার প্রথম চ্যাট কমপ্লিশন পাঠান: অফিসিয়াল OpenAI .NET লাইব্রেরিতে Endpoint সেট করুন, env থেকে কী পড়ুন, উত্তর ও ফিনিশ রিজন প্রিন্ট করুন।

CheapTokens Team দ্বারাপ্রকাশিত হয়েছে 7 মিনিট পড়ার সময়

কভার: 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, ৫ নভেম্বর ২০২৬-এ যাচাইকৃত) এবং CheapTokens ডকস থেকে নেওয়া: ডকস পেজে একই বেস URL আছে।

আপনার যা প্রয়োজন#

NuGet-এ প্যাকেজটির নাম OpenAI। ৫ নভেম্বর ২০২৬-এ সর্বশেষ স্থিতিশীল সংস্করণ 2.15.0 (এর চেঞ্জলগ এন্ট্রির তারিখ ৪ নভেম্বর)। এটি .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। নিচের টেবিলটি OpenRouter-এর পাশে তিনটি মডেলে একই 1,000 অনুরোধ দেখায়। মোটে, ইনপুট ও আউটপুট একসাথে গণনা করলে, DeepSeek-V4-Flash OpenRouter-এর চেয়ে সস্তা। বর্তমান দাম প্রাইসিং পেজে, এবং DeepSeek পেজ মডেলটি কী অফার করে তা তালিকাভুক্ত করে।

মডেল প্রতি অনুরোধে ১,০০০টি অনুরোধ OpenRouter, ১,০০০টি অনুরোধ
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

প্রতি অনুরোধে ৩০০ ইনপুট এবং ৪০০ আউটপুট টোকেন। প্রতি 1M টোকেনের দাম বর্তমান এবং আমাদের ট্যারিফের সাথে পরিবর্তিত হয়; OpenRouter কলামটি একই ওয়ার্কলোডের জন্য রেফারেন্স মূল্য দেখায়।

যদি কাজ না করে#

  • 401. কী অনুপস্থিত বা ভুল। ভেরিয়েবল সেট আছে কিনা প্রিন্ট করুন (কোডের চেক এটি করে) এবং নিশ্চিত করুন dotnet run একই টার্মিনালে চালু হয়েছে যেখানে আপনি export (বা $env:) চালিয়েছেন: ভেরিয়েবলটি শুধু সেই সেশনে থাকে।
  • 404. বেশিরভাগ ক্ষেত্রে মডেল আইডি: সম্পূর্ণ deepseek-ai/DeepSeek-V4-Flash-0731 এর বদলে একটি সংক্ষিপ্ত নাম, বা /v1 ছাড়া একটি এন্ডপয়েন্ট (এটাও যাচাই করুন যে OpenAIClientOptions সত্যিই ChatClient-এ পাস হয়েছে)। বিস্তারিত API 401 বা 404: ভুল কী, বেস URL বা মডেল আইডি-এ।
  • error CS0246: The type or namespace name 'ApiKeyCredential' could not be found. Program.cs এর উপরে using System.ClientModel; লাইনটি অনুপস্থিত।

অন্য ভাষায় একই ধারণা: openai-go সহ Go সংস্করণ।