API at SDKGabay
Unang request sa Java gamit ang openai-java: base URL, key, usage
Isang runnable na Java 8+ program: openai-java na nakaturo sa CheapTokens, isang chat completion, at ang sagot, finish_reason at token usage na naka-print.

Sa pahinang ito
Para tumawag sa CheapTokens mula sa Java, panatilihin ang opisyal na openai-java SDK at baguhin ang tatlong bagay: ang base URL (https:/), ang API key, at ang model id, na ipinapasa bilang plain String. Ang program sa ibaba ay nagpapadala ng isang chat completion at nagpi-print ng sagot, ang finish_reason at ang token usage. Kailangan nito ng Java 8 o mas bago.
Kung mayroon nang Spring service ang team mo na nakikipag-usap sa OpenAI, ito na ang buong migration: walang bagong client, walang bagong request classes.
Idagdag ang dependency#
Ang README ng SDK (github.com/openai/openai-java, sinuri noong 4 Nobyembre 2026) ay nagpapakita ng version 4.99.0, group com.openai, artifact openai-java. Hindi nagpi-print ang README ng release date, kaya tingnan ang repository para sa pinakabagong version bago kopyahin ito.
Idagdag ang openai-java sa iyong build
Maven
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java</artifactId>
<version>4.99.0</version>
</dependency>Gradle
implementation("com.openai:openai-java:4.99.0")Ang framework-neutral artifacts ay tumatakbo sa Java 8+, kaya ang mas lumang corporate JDK ay hindi blocker.
Itakda ang key at base URL sa labas ng code#
Ang SDK ay nagbabasa ng dalawang environment variables: OPENAI_API_KEY at OPENAI_BASE_URL. Kinukuha ng OpenAIOkHttpClient. ang dalawa, kaya hindi kailanman napupunta ang key sa iyong source files. (Gumagana rin ang system properties na openai.apiKey at openai.baseUrl at nauuna sa mga variable.)
export OPENAI_API_KEY="your-cheaptokens-key"
export OPENAI_BASE_URL="https://api.cheaptokens.dev/v1"Ang default na base URL ng SDK ay https:/. Laktawan ang pangalawang linya at doon pupunta ang iyong request, kasama ang CheapTokens key na hindi nito kilala. Isa iyon sa mga paraan para makakuha ng 401 sa unang run. Para sa kung saan itatago ang key at paano ito ilayo sa git, tingnan ang store an API key safely.

Ang program#
Gumawa ng FirstRequest.:
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
public class FirstRequest {
public static void main(String[] args) {
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model("deepseek-ai/DeepSeek-V4-Flash-0731")
.addUserMessage("Explain in two sentences what a token is.")
.maxCompletionTokens(300L)
.build();
ChatCompletion completion = client.chat().completions().create(params);
ChatCompletion.Choice choice = completion.choices().get(0);
System.out.println(choice.message().content().orElse("(no text)"));
System.out.println("finish_reason: " + choice.finishReason());
completion.usage().ifPresent(u ->
System.out.println("input " + u.promptTokens()
+ ", output " + u.completionTokens()));
}
}May ilang linya na dapat tingnan muli.
.. Gumagamit ang mga halimbawa sa README ng SDK ng mga typed constant tulad ngmodel("deepseek- ai/ DeepSeek- V4- Flash- 0731") ChatModel., pero mayroon dingGPT_ 5_ 2 model(String)overload ang builder, kaya gumagana ang anumang id. Gamitin ang buong id mula sa CheapTokens docs: ang maikling pangalan nadeepseek-ay kung paano nilalagyan ng label ang mga presyo sa site; kailangan ng API ang buong id na mayv4- flash- 0731 deepseek-ai/prefix. Hindi sigurado sa id? List models with GET /v1/models... Isang ceiling sa haba ng sagot, bilangmaxCompletionTokens(300L) long. Ang DeepSeek-V4-Flash ay nagpapahintulot ng hanggang 32,768 output tokens bawat sagot, kaya ang 300 dito ay isang pagpipilian para mapanatiling maikli ang demo, hindi limitasyon ng modelo.- Ang
content()ay isangOptional. Kaya mayorElseang program. Ang reply na puro tool calls lang ay walang text. - Ang
usage()ay isangOptionaldin. Ini-print ito ngifPresentkapag ipinadala ito ng server.
I-compile at i-run ito sa paraan ng iyong build (mvn compile exec:java -, o isang JavaExec task sa Gradle). Dapat makuha mo ang paliwanag ng isang token, pagkatapos ay isang linya na finish_reason: … na may stop sa loob, pagkatapos ay isang linya na may input at output token counts. Kung ang finish_reason ay nagsasabing length, naabot ng sagot ang iyong 300-token cap at naputol: taasan ang numero (bakit nangyayari iyon).
Ang usage() ay nagbabalik ng prompt, completion at total token counts (promptTokens(), completionTokens(), totalTokens()).
Itakda ang mga value nang tahasan gamit ang builder#
Ang mga test, o isang service na may maraming client, ay minsang nangangailangan ng tahasang values. Ang parehong client, na ginawa nang manu-mano:
OpenAIClient client = OpenAIOkHttpClient.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.baseUrl("https://api.cheaptokens.dev/v1")
.build();Lahat ng sumusunod sa linyang ito, ang params at ang create call, ay mananatiling eksaktong tulad ng nasa itaas. Patuloy na basahin ang key mula sa environment kahit dito; ang string literal sa isang .java file ay napupunta sa iyong repository.

Tatlong error na una mong makikita#
Itugma ang mga pares
Itugma ang sintomas sa sanhi
I-tap ang isang item sa kaliwa, pagkatapos ang pares nito
- 401 Unauthorizedwalang laman o mali ang key, o napunta ang request sa api.openai.com dahil hindi nakatakda ang
OPENAI_BASE_URL - 404 Not Foundkulang ang base URL ng
/v1, o wala ang model id - finish_reason says lengthmas mababa ang
maxCompletionTokenskaysa sa kailangan ng sagot
Madaling makaligtaan ang walang laman na environment variable sa isang IDE: ang run configuration na sinimulan mula sa toolbar ay maaaring hindi magmana ng mga variable na in-export mo sa terminal. Kung "nakatakda" ang key pero nakakakuha ka pa rin ng 401, idagdag ang mga variable sa run configuration. Higit pa sa mga code na ito: API 401 or 404: key, base URL, model id.
Magkano ang isang request#
Dahil ini-print mo ang usage, maaari mong presyuhan ang request bago mo ito palakihin. Sabihin nating nagpapadala ang iyong service ng mga 200 input tokens at nakakakuha ng 300 pabalik. Sa mga presyo ngayon, ang request na iyon ay nagkakahalaga ng $0.000033 sa DeepSeek-V4-Flash. Sabay na sinisingil ang input at output, at sa kabuuan mas mura ito kaysa sa OpenRouter. Inuulit ito ng table para sa 1,000 requests sa aming mga modelo:
| 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.000016 | $0.016 | $0.0316 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000033 | $0.033 | $0.056 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000055 | $0.055 | $0.66 |
200 input at 300 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.
Ngayon ilagay ang sarili mong traffic. Hilahin ang mga slider sa mga numero mula sa iyong unang na-print na usage line:
Calculator ng gastos
Isang support service na may 2,000 requests kada araw
Mga input token bawat kahilingan: 200 · Mga output token bawat kahilingan: 300 · Mga kahilingan bawat araw: 2,000
| Modelo | Bawat araw | Bawat buwan |
|---|---|---|
| GLM-5.3-Flash$0.02$0.04 | $0.032 | $0.96 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.066 | $1.98 |
| MiniMax-M2.7$0.05$0.15 | $0.11 | $3.30 |
Para sa mas maraming espasyo bawat sagot o ibang hugis ng workload, binibigyan ka ng DeepSeek-V4-Flash ng 380K context window at isang presyo sa anumang oras ng araw; ang GLM-5.3-Flash (zai-) ay drop-in replacement sa parehong program: palitan ang id, wala nang iba. Ang kasalukuyang presyo para sa lahat ng modelo ay nasa pricing page, at ang docs ay nagpapakita ng parehong request sa ibang mga wika. Ginagawa ito sa Go? Tingnan ang the openai-go version.



