API ve SDKKılavuz
openai-dotnet ile C# dilinde ilk istek: uç nokta, anahtar, yanıt
İlk sohbet tamamlamanızı bir C# konsol uygulamasından gönderin: resmi OpenAI .NET kütüphanesinde Endpoint'i ayarlayın, anahtarı ortamdan okuyun, yanıtı ve bitiş nedenini yazdırın.

Bu sayfada
C# üzerinden CheapTokens'e istek göndermek için resmi OpenAI .NET kütüphanesini koruyun ve OpenAIClientOptions. değerini https:/ olarak ayarlayın. Tam model kimliğini, örneğin deepseek-, geçirin ve anahtarı bir ortam değişkeninden okuyun. ChatClient ve CompleteChat çağrıları OpenAI örneklerindekiyle tamamen aynı kalır.
Diyelim ki OpenAI ile konuşan bir ASP.NET servisiniz var ve kodun geri kalanına dokunmadan başka bir uç nokta ve model denemek istiyorsunuz. Herhangi bir şeyi ona bağlamadan önce, genellikle yanlış giden üç şeyi (anahtar, uç nokta, model kimliği) küçük bir konsol uygulamasında kontrol edin. Burada kurduğumuz şey bu. Aşağıdaki ayrıntılar kütüphanenin GitHub'daki README dosyasından (openai/openai-dotnet, 5 Kasım 2026'da kontrol edildi) ve CheapTokens belgelerinden geliyor: belgeler sayfası aynı temel URL'ye sahip.
Neye ihtiyacınız var#
Paketin NuGet üzerindeki adı OpenAI. 5 Kasım 2026 itibarıyla en son kararlı sürüm 2.15.0 (değişiklik günlüğü kaydı 4 Kasım tarihli). .NET 8 ve .NET Standard 2.0'ı hedefliyor ve README tüm .NET Standard 2.0 uygulamalarıyla çalıştığını söylüyor, yani daha eski bir proje de sorun değil.
Uygulamaya üç değer giriyor:
- temel URL:
https:/(OpenAI Chat Completions uyumlu);/ api. cheaptokens. dev/ v1 - model kimliği:
deepseek-. Tam kimliği kullanın, fiyat tablosundaki kısa ad kabul edilmez. DeepSeek-V4-Flash 380K bağlam penceresine ve yanıt başına 32.768'e kadar çıktı token'ına sahip, günün her saatinde tek fiyat;ai/ DeepSeek- V4- Flash- 0731 - CheapTokens hesabınızdan bir API anahtarı, bir ortam değişkeninde saklanır. Nasıl saklayacağınızdan emin değilseniz, bir API anahtarını güvenle nasıl saklayacağınızı okuyun.
Konsol uygulamasını oluşturun#
Adım adım
Projeyi oluşturun ve çalıştırın
Bir konsol projesi oluşturun
dotnet new console -o FirstRequest
cd FirstRequestPaketi ekleyin
dotnet add package OpenAIAnahtarı bir ortam değişkenine koyun
bash veya zsh'de:
export CHEAPTOKENS_API_KEY=your-keyWindows PowerShell'de:
$env:CHEAPTOKENS_API_KEY = "your-key"Kodu yapıştırın ve çalıştırın
Program.cs dosyasının içeriğini sonraki bölümdeki kodla değiştirin, ardından dotnet run komutunu çalıştırın.

Kod, satır satır#
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 bu deseni "bir proxy veya kendi barındırdığınız OpenAI uyumlu LLM" için gösteriyor: uç nokta OpenAIClientOptions içine, anahtar bir ApiKeyCredential içine gider (System. içinde yaşar, dolayısıyla ilk using). Üstteki kontrol bizim: değişken ayarlanmamışsa net bir mesaj verir.
Düz bir dizeyle CompleteChat tek bir kullanıcı mesajı gönderir ve tüm yanıtı bekler. Yanıt metni completion. içinde. Bitiş nedeni completion. içinde.

Görmeniz gerekenler#
Token'ların kısa bir açıklamasını ve bitiş nedenini içeren bir satır almalısınız; normal bir bitişten sonra bu Stop olur (README FinishReason ile ChatFinishReason. karşılaştırır). Yanıtın ifadesi çalıştırmadan çalıştırmaya değişir.
Okumaya değer olan ikinci satırdır. README FinishReason ile ChatFinishReason. (model kendi kendine bitirdi) ve ChatFinishReason. (model bir araç çağırmak istiyor) karşılaştırır. Düz bir sohbette Stop dışında herhangi bir şey yanıtın başka bir nedenle bittiği anlamına gelir ve olağan şüpheli bir uzunluk sınırıdır. Cümle ortasında duran bir yanıt görürseniz, bu makale finish_reason ve max_tokens açıklıyor.
Mevcut bir servisi değiştirmek#
Servisiniz OpenAI için zaten bir ChatClient oluşturuyorsa, iki şeyi değiştirirsiniz: model dizesi ve seçenekler. Çağrıların geri kalanı çalışmaya devam eder.
Karşılaştır
Aynı istemci, iki değişen satır
Önce
ChatClient client = new(
model: "your-current-model",
credential: new ApiKeyCredential(apiKey));Sonra
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")
});Kısa istekler için ikinci bir seçenek var: zai- (390K bağlam, 8.192'ye kadar çıktı token'ı). Yalnızca model dizesini değiştirirsiniz. Anahtarınızın kullanabileceği kimliklerin listesi bir istek uzaklıkta, bkz. GET /v1/models ile modelleri listeleyin.
Bir isteğin maliyeti#
Diyelim ki bir servis günde 1.000 istek işliyor, her biri yaklaşık 300 token giriş ve 400 token çıkış. Böyle bir istek DeepSeek-V4-Flash üzerinde $0.000045 tutuyor. Aşağıdaki tablo aynı 1.000 isteği üç modelde OpenRouter'ın yanında gösteriyor. Toplamda, giriş ve çıkış birlikte sayıldığında, DeepSeek-V4-Flash OpenRouter'dan daha ucuz. Güncel fiyatlar fiyatlandırma sayfasında ve DeepSeek sayfası modelin sunduklarını listeliyor.
| Model | Giriş $/1M | Çıkış $/1M | İstek başına | 1.000 istek | OpenRouter, 1.000 istek |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000022 | $0.022 | $0.0433 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000045 | $0.0445 | $0.077 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000075 | $0.075 | $0.90 |
İstek başına 300 giriş ve 400 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.
Çalışmazsa#
- 401. Anahtar eksik veya yanlış. Değişkenin ayarlanıp ayarlanmadığını yazdırın (koddaki kontrol bunu yapar) ve
dotnet runkomutununexport(veya$env:) çalıştırdığınız aynı terminalde başlatıldığından emin olun: değişken yalnızca o oturumda yaşar. - 404. Çoğunlukla model kimliği: tam
deepseek-yerine kısa bir ad veyaai/ DeepSeek- V4- Flash- 0731 /v1olmayan bir uç nokta (ayrıcaOpenAIClientOptionsdeğerinin gerçektenChatClientiçine geçirildiğini kontrol edin). Ayrıntılar API 401 veya 404: yanlış anahtar, temel URL veya model kimliği içinde. - error CS0246: The type or namespace name 'ApiKeyCredential' could not be found.
Program.csdosyasının üstündeusing System.satırı eksik.ClientModel;
Aynı fikir başka bir dilde: openai-go ile Go sürümü.



