API at SDKGabay
Unang request sa C# gamit ang openai-dotnet: endpoint, key, tugon
Magpadala ng iyong unang chat completion mula sa isang C# console app: itakda ang Endpoint sa opisyal na OpenAI .NET library, basahin ang key mula sa env, i-print ang tugon at finish reason.

Sa pahinang ito
Upang magpadala ng request mula sa C# patungo sa CheapTokens, panatilihin ang opisyal na OpenAI library para sa .NET at itakda ang OpenAIClientOptions. sa https:/. Ipasa ang buong model id, halimbawa deepseek-, at basahin ang key mula sa isang environment variable. Ang mga tawag na ChatClient at CompleteChat ay nananatiling eksaktong tulad ng sa mga halimbawa ng OpenAI.
Sabihin nating mayroon ka nang ASP.NET service na nakikipag-usap sa OpenAI, at gusto mong subukan ang ibang endpoint at model nang hindi hinahawakan ang iba pang bahagi ng code. Bago mo ikabit ang anuman dito, suriin ang tatlong bagay na karaniwang nagkakamali (key, endpoint, model id) sa isang maliit na console app. Iyon ang bubuuin natin dito. Ang mga detalyeng nasa ibaba ay mula sa README ng library sa GitHub (openai/openai-dotnet, sinuri noong 5 Nobyembre 2026) at mula sa mga doc ng CheapTokens: ang pahina ng docs ay may parehong base URL.
Ang kailangan mo#
Ang package ay tinatawag na OpenAI sa NuGet. Ang pinakabagong stable na bersyon noong 5 Nobyembre 2026 ay 2.15.0 (ang entry nito sa changelog ay may petsang 4 Nobyembre). Sinusuportahan nito ang .NET 8 at .NET Standard 2.0, at sinasabi ng README na gumagana ito sa lahat ng .NET Standard 2.0 application, kaya okay din ang mas lumang proyekto.
Tatlong value ang ipapasok sa app:
- base URL:
https:/(compatible sa OpenAI Chat Completions);/ api. cheaptokens. dev/ v1 - model id:
deepseek-. Gamitin ang buong id, hindi tinatanggap ang maikling pangalan mula sa price table. Ang DeepSeek-V4-Flash ay may 380K context window at hanggang 32,768 output tokens bawat sagot, isang presyo sa anumang oras ng araw;ai/ DeepSeek- V4- Flash- 0731 - isang API key mula sa iyong CheapTokens account, itinatago sa isang environment variable. Kung hindi ka sigurado kung paano ito itatago, basahin ang paano mag-imbak ng API key nang ligtas.
Buuin ang console app#
Hakbang-hakbang
Gumawa ng proyekto at patakbuhin ito
Gumawa ng console project
dotnet new console -o FirstRequest
cd FirstRequestIdagdag ang package
dotnet add package OpenAIIlagay ang key sa isang environment variable
Sa bash o zsh:
export CHEAPTOKENS_API_KEY=your-keySa Windows PowerShell:
$env:CHEAPTOKENS_API_KEY = "your-key"I-paste ang code at patakbuhin
Palitan ang nilalaman ng Program.cs ng code mula sa susunod na seksyon, pagkatapos ay patakbuhin ang dotnet run.

Ang code, linya per linya#
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}");Ipinapakita ng README ang pattern na ito para sa "isang proxy o self-hosted na OpenAI-compatible LLM": ang endpoint ay napupunta sa OpenAIClientOptions, ang key sa isang ApiKeyCredential (nasa System. ito, kaya ang unang using). Ang check sa itaas ay sa amin: nagbibigay ito ng malinaw na mensahe kung hindi nakatakda ang variable.
Ang CompleteChat na may plain string ay nagpapadala ng isang user message at naghihintay ng buong sagot. Ang teksto ng tugon ay nasa completion.. Ang finish reason ay nasa completion..

Ano ang dapat mong makita#
Dapat kang makakuha ng maikling paliwanag tungkol sa tokens at isang linyang may finish reason; pagkatapos ng normal na pagtatapos ito ay Stop (inihahambing ng README ang FinishReason sa ChatFinishReason.). Nagbabago ang pananalita ng tugon sa bawat pagtakbo.
Ang pangalawang linya ang sulit basahin. Inihahambing ng README ang FinishReason sa ChatFinishReason. (natapos ang model nang kusa) at ChatFinishReason. (gustong tumawag ng tool ang model). Anumang iba pa sa Stop sa isang plain chat ay nangangahulugang natapos ang sagot sa ibang dahilan, at ang karaniwang hinala ay limitasyon sa haba. Kung may nakita kang tugon na humihinto sa gitna ng pangungusap, ipinapaliwanag ng artikulong ito ang finish_reason at max_tokens.
Paglilipat ng umiiral na service#
Kung ang iyong service ay gumagawa na ng ChatClient para sa OpenAI, dalawang bagay ang babaguhin mo: ang model string at ang mga opsyon. Patuloy na gagana ang iba pang tawag.
Ihambing
Parehong client, dalawang binagong linya
Bago
ChatClient client = new(
model: "your-current-model",
credential: new ApiKeyCredential(apiKey));Pagkatapos
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")
});Para sa maiikling request may pangalawang opsyon: zai- (390K context, hanggang 8,192 output tokens). Ang babaguhin mo lang ay ang model string. Isang request lang ang layo ng listahan ng mga id na magagamit ng iyong key, tingnan ang Ilista ang mga model gamit ang GET /v1/models.
Magkano ang isang request#
Sabihin nating ang isang service ay humahawak ng 1,000 request bawat araw, mga 300 tokens in at 400 tokens out bawat isa. Ang isang ganoong request ay nagkakahalaga ng $0.000045 sa DeepSeek-V4-Flash. Ipinapakita ng talahanayan sa ibaba ang parehong 1,000 request sa lahat ng tatlong model sa tabi ng OpenRouter. Sa kabuuan, kung isasama ang input at output, mas mura ang DeepSeek-V4-Flash kaysa sa OpenRouter. Ang mga kasalukuyang presyo ay nasa pahina ng pagpepresyo, at inililista ng pahina ng DeepSeek ang inaalok ng model.
| Modelo | Input $/1M | Output $/1M | Bawat kahilingan | 1,000 mga kahilingan | OpenRouter, 1,000 mga kahilingan |
|---|---|---|---|---|---|
| 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 |
300 input at 400 output na token bawat kahilingan. Ang mga presyo kada 1M token ay kasalukuyan at nagbabago kasabay ng aming mga taripa; ang column ng OpenRouter ay nagpapakita ng reference na presyo para sa parehong workload.
Kung hindi ito gumana#
- 401. Kulang o mali ang key. I-print kung nakatakda ang variable (ginagawa ito ng check sa code) at tiyaking ang
dotnet runay sinimulan sa parehong terminal kung saan mo pinatakbo angexport(o$env:): nabubuhay lang ang variable sa session na iyon. - 404. Kadalasan ang model id: maikling pangalan sa halip na buong
deepseek-, o endpoint na walangai/ DeepSeek- V4- Flash- 0731 /v1(suriin din na talagang naipapasa angOpenAIClientOptionssaChatClient). Ang mga detalye ay nasa API 401 o 404: maling key, base URL o model id. - error CS0246: The type or namespace name 'ApiKeyCredential' could not be found. Kulang ang linyang
using System.sa itaas ngClientModel; Program.cs.
Ang parehong ideya sa ibang wika: ang bersyon sa Go gamit ang openai-go.



