Bu makale deepseek-v4-pro-0813 için kullanım notlarını ve dikkat edilmesi gereken tuzakları ele alıyor. AIHubMix üzerinde model; Chat Completions, Responses ve Claude uyumlu Messages API'leri üzerinden kullanılabilir. Ayrıca bakınız: DeepSeek resmi API dokümantasyonu.
Her bölümdeki "Doğrulandı" sonuçları ve örnek yanıtlar, 2026-08-13 tarihinde AIHubMix API'leri (Chat Completions / Responses / Messages) üzerinden yapılan gerçek çağrılardan gelmektedir; "Doğrulandı" olarak işaretlenmeyen teknik özellikler DeepSeek'in resmi dokümantasyonundandır.
1. Model Konumu ve Özelliklerin Özeti
V4 Pro, DeepSeek'in V4 neslinin üst düzey sürümüdür (hafif sürüm deepseek-v4-flash ise kardeş modeldir). Sürüm hattı 2026-04-24 tarihli DeepSeek-V4 Preview'a uzanır ve 0813, DeepSeek'in mevcut yapıya atadığı MODEL SÜRÜM etiketidir. Ham özelliklerin ötesinde, onu öne çıkaran dört unsur var:
- Seyrek bir öncü model: 1.6T toplam parametre / 49B etkinleştirilmiş parametre (MoE, yani uzman karışımı mimarisi — her çıkarım geçişinde yalnızca uzman ağların bir alt kümesi devreye girer: toplam parametreler bilgi kapasitesini, etkinleştirilmiş parametreler çağrı başına hesaplama maliyetini belirler). Model kartı CSA+HCA hibrit dikkat mekanizmasını, mHC'yi ve Muon optimizasyon algoritmasını listeler.
- MIT lisansı altında açık ağırlıklar:
deepseek-ai/DeepSeek-V4-Pro, HuggingFace'te MIT lisansı altında yayınlanmıştır (en izin verici açık kaynak lisanslarından biri — ticari kullanım ve kapalı kaynaklı yeniden dağıtım her ikisi de serbesttir) ve kendi sunucunuzda barındırılabilir. Bu büyüklükteki bir model için MIT lisansı alışılmadık bir tercihtir. Model kartındaki kendi sunucuda barındırma notları, Think Max (en yüksek düşünme seviyesi) modunda çalışırken ≥384K token bağlam penceresi önermektedir — bu, barındırılan API'nin bir özelliği değil, kendi sunucuda kurulum için bir dağıtım rehberidir. - Çok protokollü destek birinci taraf sunulmaktadır, üçüncü taraf çeviri değildir: DeepSeek'in kendisi bir OpenAI Chat API'si, Anthropic uyumlu bir uç nokta (
/anthropic, bu uç noktaclaude-opus*isteklerini bu modele yönlendirir) ve Responses API'si sunar (DeepSeek bu formata yerel destek verdiğini ve Codex için uyarlamalar yaptığını belirtir). Ayrıca ayrı bir uç noktada Beta özellik olarak FIM (ortayı doldurma) tamamlama da sunar; bu, AIHubMix'in üç API'sinin parçası değildir. - Önbellek isabeti ve önbellek ıskası fiyatlandırması arasında yaklaşık 120× fark: DeepSeek'in yayımladığı fiyatlandırma mekanizması, önbellek isabeti için $0.003625/M, önbellek ıskası için $0.435/M (çıktı $0.87/M) şeklindedir ve önbellekleme otomatiktir; ayarlanacak bir parametre yoktur. Uzun önekleri yeniden kullanan iş yükleri (sistem istemleri, uzun belgeler) için bu fark faturayı belirler. Gerçek perakende fiyat, model sayfasında gösterilen fiyattır.
| Öğe | Değer |
|---|---|
| AIHubMix'teki model adı | deepseek-v4-pro-0813 |
| Bağlam penceresi | 1M token (1,000,000) |
| Maksimum çıktı | Resmi ifade MAX OUTPUT MAXIMUM: 384K (tam token sayısı ve varsayılan değer yayımlanmamıştır) |
| Giriş modaliteleri | Yalnızca metin. Responses uyumluluk sayfası görüntü ve dosya girişlerinin desteklenmediğini açıkça belirtir; Messages sayfası type="image" bloklarını Desteklenmiyor olarak işaretler; Chat Completions'ta kullanıcı mesajındaki content yalnızca dize kabul eder, çok modlu içerik parçalarını kabul etmez |
| Düşünme modu | Hibrit (düşünme / düşünmeme), düşünme varsayılan olarak açık |
| Düşünme seviyeleri | reasoning_effort değeri low / high / max kabul eder, varsayılan high; uyumluluk için medium ve xhigh high değerine eşlenir |
| Kullanılabilir API'ler | Chat Completions, Responses, Messages (Claude uyumlu) |
Doğrulandı:max_tokensdeğerini aşmak sessizce kesilmek yerine doğrulama tarafından reddedilir —max_tokens=9999999göndermek HTTP 400 döndürür ve hata gövdesi alanı belirtir ve üst sınırı393216olarak verir.
# max_tokens=9999999 -> HTTP 400
"...max_tokens... 393216"
❗ Görseller hata vermez, ancak düşürülür: Responses API için resmi ifade şöyledir: "Görüntü ve dosya girişleri desteklenmemektedir (input_image parçaları hata oluşturmaz, bunun yerine yer tutucu metinle değiştirilir)" — yani birinput_imageparçası isteği başarısız kılmaz, yer tutucu metinle değiştirilir. Chat Completions'ta kullanıcı mesajındakicontentyalnızca dize kabul eder, Messages'tatype="image"blokları Desteklenmiyor olarak işaretlenir. Çok modlu yönlendirme kurarken, "hata yok" durumunu modelin görseli gerçekten gördüğünün kanıtı olarak asla kabul etmeyin.
2. Düşünme Modunu Nasıl Kapatırsınız? Üç API, Üç Alan Biçimi
V4 Pro varsayılan olarak düşünür: hiç parametre göndermezseniz yanıt düşünme içeriğiyle birlikte döner. Kapatmak için her üç API'de farklı bir alan biçimi kullanılır.
Chat Completions
Üst düzey thinking nesnesini kullanın.
from openai import OpenAI
client = OpenAI(
base_url="https://aihubmix.com/v1",
api_key="<AIHUBMIX_API_KEY>",
)
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "What is 2 + 2?"}],
extra_body={"thinking": {"type": "disabled"}},
)
# Thinking on (default): message.reasoning_content present, reasoning_tokens = 43
# Thinking off (disabled): reasoning_content absent, reasoning_tokens absent
Doğrulandı:thinking.type="disabled"ile birliktemessage.reasoning_contentveusage.completion_tokens_details.reasoning_tokensbirlikte kaybolur; bu da anahtarın etkili olduğunu doğrular.
Responses
Responses'ta ayrı bir anahtar yoktur; düşünmeyi kapatmak, seviyeyi none olarak ayarlamak anlamına gelir.
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="What is 2 + 2?",
reasoning={"effort": "none"},
)
# effort="none": usage.output_tokens_details.reasoning_tokens = 0
# output[0] is the message item directly (no reasoning item)
# effort unset : output always starts with a reasoning item
Doğrulandı:reasoning.effort="none", varsayılan seviyeden gözle görülür biçimde farklıdır (düşünme token'ları sıfıra düşer,reasoningçıktı öğesi kaybolur), bu da etkili olduğunu doğrular.
Messages
Chat Completions ile aynı ad ve aynı biçim: üst düzey thinking nesnesi.
from anthropic import Anthropic
client = Anthropic(
api_key="<AIHUBMIX_API_KEY>",
base_url="https://aihubmix.com",
)
response = client.messages.create(
model="deepseek-v4-pro-0813",
max_tokens=1024,
messages=[{"role": "user", "content": "What is 2 + 2?"}],
extra_body={"thinking": {"type": "disabled"}},
)
# Thinking on (default): content = [thinking block, text block]
# Thinking off (disabled): content = [text block]
Doğrulandı: devre dışı bırakıldıktan sonrathinkingbloğu tamamen kaybolur ve yalnızcatextbloğu kalır.
Düşünme seviyeleri hakkında: Testlerde Chat Completions üzerindelowvemaxher ikisi de 200 döndü (highvarsayılandır ve alan atlandığında uygulanır), ancak aynı soru için düşünme token sayıları seviyeler arasında monoton bir fark göstermedi (kolay soru: low=43 / max=27; zor soru: low=114 / max=92) ve yanıtta hiçbir şey geri yansıtılmıyor — seviyeler kabul ediliyor, ancak yanıttan ayırt edici bir sinyal gözlemlenemiyor. Responses'ta yalnızcanoneseviyesi (düşünme kapalı) yanıt tarafından doğrulanabilir.
3. Çok Turlu Bir Konuşma Neden Aniden 400 Döndürüyor? Düşünme Geçmişi Kelimesi Kelimesine Geri Gönderilmelidir
Bu, bu modelde en yaygın tuzaktır: düşünme modunda çok turlu bir konuşma, önceki turun düşünme içeriğini kelimesi kelimesine geri göndermelidir; aksi halde istek reddedilir. Düşük kaliteli değil, daha az iyi değil — doğrudan bir HTTP 400.
Üç API, aynı düşünme içeriğini farklı alan adlarıyla taşır:
| API | Geri gönderim biçimi | Eksik olduğunda hata gövdesi |
|---|---|---|
| Chat Completions | Asistan mesajındaki reasoning_content alanı |
The `reasoning_content` in the thinking mode must be passed back to the API. |
| Responses | input dizisinde type="reasoning" değerine sahip çıktı öğesi |
The `reasoning_text` in the thinking mode must be passed back to the API. |
| Messages | Asistan içerik bloklarındaki thinking bloğu |
The `content[].thinking` in the thinking mode must be passed back to the API. |
Doğrulandı (tetikleyici koşullar): bu doğrulama, tools içeren çok turlu isteklerde tutarlı biçimde tetiklenir (model bir araç çağrısı yapar, ardından araç sonucu geri gönderilir). Modelin doğrudan yanıt verdiği, araç içermeyen basit çok turlu isteklerde bu turdaki testte doğrulama tetiklenmedi ve istek 200 döndü. Başka bir deyişle, bu sorunla en sık araç orkestrasyonunda (ajan / fonksiyon çağırma iş yüklerinde) karşılaşılır; bu yüzden düşünme içeriğini, kalıcı tutulan ve tekrar oynatılan konuşma durumunun bir parçası gibi ele alın.Chat Completions
# Multi-turn: pass the previous assistant message back verbatim, including reasoning_content
messages = [
{"role": "user", "content": "What is 1 + 1? Remember the result."},
{
"role": "assistant",
"content": "2",
"reasoning_content": "<reasoning_content from the previous response>",
},
{"role": "user", "content": "Add 1 to the result."},
]
# Dropping reasoning_content -> HTTP 400 invalid_request_error
Doğrulandı: reasoning_content alanı eksik olan geçmiş bir asistan mesajı 400 döndürür; bu alanı geri eklemek, aynı isteği 200 döndürür hale getirir ve konuşma doğru biçimde devam eder.Responses
# Multi-turn: input = previous input + response.output (reasoning item included) + new message
input = previous_input + response.output + [
{"role": "user", "content": "Add 1 to the result."}
]
# Filtering out the type="reasoning" item -> HTTP 400
Doğrulandı:response.outputdeğerini olduğu gibi geri eklemek yeterlidir. Geçmişi oluştururken çıktı öğelerinitype == "message"ile filtrelemekreasoningöğesini düşürür ve 400 hatasını tetikler — en sık yaşanan hata budur.
Messages
# Multi-turn: pass response.content back verbatim as the assistant message
messages = [
{"role": "user", "content": "What's the weather in Paris?"},
{"role": "assistant", "content": response.content}, # thinking + tool_use blocks
{"role": "user", "content": [tool_result_block]},
]
# Stripping the thinking block -> HTTP 400
Doğrulandı: içerik dizisindenthinkingbloğunu çıkarmak 400 döndürür (error.typedeğeriinvalid_request_errorolarak ayarlanmış).
4. Araç Çağırma
Her API, araçları kendi protokol biçiminde tanımlar; bu biçimler birbirinin yerine kullanılamaz.
Chat Completions
İç içe biçim (name / parameters alanlarını saran bir function nesnesi). Adlandırılmış bir fonksiyon tool_choice çağrıyı zorlar.
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
},
}],
tool_choice={"type": "function", "function": {"name": "get_weather"}},
)
# Observed: finish_reason "tool_calls", tool_calls[0].function.arguments = {"city": "Paris"}
❗ Doğrulandı: düşünme açıkkentool_choice: "required"kullanılamaz —Thinking mode does not support this tool_choicehatasıyla 400 döndürür; düşünmeyi kapatmak (thinking.type="disabled") aynı isteği 200 döndürür hale getirir. "Mutlaka bir araç çağır" anlamına ihtiyacınız olduğunda, bunun yerine adlandırılmış fonksiyontool_choicekullanın (yukarıdaki gibi, düşünme açıkken de çalışır) ya da önce düşünmeyi kapatıp sonrarequiredkullanın.
Responses
Düz biçim (type / name / parameters aynı düzeyde).
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="What's the weather in Paris?",
tools=[{
"type": "function",
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
)
# Observed output items: ["reasoning", "function_call"]; arguments = {"city": "Paris"}
Doğrulandı: Chat Completions iç içe biçimini (function: {...}) Responses'a kopyalamak 400 döndürür — düz biçimi kullanın.tool_choice: "required", Chat'teki ile aynı düşünme modu kısıtlamasına tabidir.
Messages
Anthropic'e özgü biçim (input_schema), çağrıyı zorlamak için tool_choice: {"type": "any"} ile.
response = client.messages.create(
model="deepseek-v4-pro-0813",
max_tokens=1024,
tools=[{
"name": "get_weather",
"description": "Get weather for a city",
"input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
tool_choice={"type": "any"},
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)
# Observed: content contains a tool_use block, name = get_weather, input = {"city": "Paris"}
❗ Paralel araç çağırma kapatılamaz; bu, DeepSeek'in kendi tasarım tercihidir — resmi Anthropic uyumluluk sayfası,tool_choicesatırındadisable_parallel_tool_use is ignoredifadesini belirtir; Responses sayfası da benzer şekildeparallel_tool_calls | Ignored (parallel tool calling is always enabled)ifadesini belirtir. Testler bunu doğrular:disable_parallel_tool_use: trueile iki şehir hakkında aynı anda soru sorulduğunda hâlâ ikitool_usebloğu döner. Sıralı yürütmeye ihtiyacınız varsa ilk çağrıyı alın ya da çağrıları istemci tarafında kendiniz kuyruğa alın.
Araç sayısı ve bağlam maliyeti: Tek bir istekte 200 işlev tanımı göndermek yine 200 yanıtı ve normal bir cevap döndürdü, herhangi bir sayı doğrulamasına takılmadı (yalnızca bu yolda gözlemlendi; daha yüksek sayılar test edilmedi). Ancak bu istek için prompt_tokens değeri 6.105'e ulaştı — araç tanımları bağlama tamamen eklenir ve ücretlendirilir. Çok sayıda aracınız olduğunda, her şeyi koşulsuz olarak bildirmek yerine araç kümesini senaryoya göre daraltın.5. Yapılandırılmış Çıktı
Chat Completions
response_format JSON modunu destekler.
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "Return {\"a\": 1} as JSON."}],
response_format={"type": "json_object"},
)
# Observed response content: {"a":1}
Doğrulandı: çıktı geçerli JSON'dur.
Responses
text.format üzerinden bir JSON Şeması tanımlanır ve strict modu desteklenir.
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Return the number 1 under key a.",
text={
"format": {
"type": "json_schema",
"name": "extract",
"strict": True,
"schema": {"type": "object", "properties": {"a": {"type": "integer"}}, "required": ["a"]},
}
},
)
# Observed output text: {"a":1}
Doğrulandı: çıktı verilen şemaya tam olarak uyar.
Messages
Messages (Anthropic) protokolünde response_format / text.format karşılığı yoktur. Yaygın geçici çözüm, şemayı bir araç içinde taşımaktır — input_schema değeri hedef şemanız olan bir araç tanımlayın, tool_choice: {"type": "any"} ayarlayın ve yapılandırılmış sonucu tool_use bloğunun input alanından okuyun. Bu test turunda bu desen özel olarak doğrulanmadı; kesin şema garantisine ihtiyacınız olduğunda Chat Completions veya Responses tercih edin.
6. Bağlam Önbelleğini Nasıl Etkinleştirirsiniz? Etkinleştirmezsiniz, Otomatiktir
Bağlam önbellekleme (aynı önekler yeniden kullanılır ve önbelleğe alınan kısım daha düşük bir oranla ücretlendirilir) varsayılan olarak açıktır ve hiçbir parametre gerektirmez. Aynı uzun önekle yapılan ikinci bir istek, isabeti usage içinde raporlar; alan adı API'ye göre değişir. Önbellekleme ayrıntıları ve güncel fiyatlandırma için model sayfasına bakın; modeller arası önbellekleme stratejisi ve isabet oranı teknikleri için prompt önbellekleme uygulamalarına bakın.
Chat Completions
# usage of the second call with an identical long prefix
"prompt_tokens_details": {"cached_tokens": 640} # first call: 0
Doğrulandı: aynı kanalda, aynı uzun önekle arka arkaya yapılan iki çağrı, cached_tokens değerini 0'dan 640'a çıkardı.Responses
# usage of the second call with identical long instructions
"input_tokens_details": {"cached_tokens": 896} # first call: 0
Messages
# usage of a call whose long system prefix was already warmed
"cache_read_input_tokens": 896
Doğrulandı: yukarıdaki önek, aynı içeriğe sahip bir Responses isteğiyle ısıtıldı ve ilk Messages çağrısı hemen 896 isabet aldı — önbelleklemenin içerik öneki üzerinden anahtarlandığı ve protokol yüzeyleri arasında paylaşıldığıyla tutarlı.
7. logprobs: Chat İki Kanal Döndürür
logprobs (log olasılıkları — modelin aday token başına güven ayrıntısı), iki API'de farklı biçimlerde döner ve ayrıştırma kodunun bunları ayrı ayrı ele alması gerekir.
Chat Completions
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "Say hi."}],
logprobs=True,
top_logprobs=2,
)
# Observed: choices[0].logprobs contains TWO arrays
# logprobs.content[] -> tokens of the final answer
# logprobs.reasoning_content[] -> tokens of the thinking text
❗ Doğrulandı: Chat, hemcontenthem dereasoning_contentiçin log olasılıkları döndürür. Standart OpenAI yanıt biçimine göre yalnızcalogprobs.contentalanını okuyan kod hata vermez ama düşünme kanalını sessizce kaçırır; kodunuzlogprobsaltında tek bir dizi varsaydığında, önce bir biçim kontrolü ekleyin.
Responses
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Say hi.",
top_logprobs=3,
)
# Observed: logprobs only on the final message item
# output[-1].content[0].logprobs[] with logprob + top_logprobs details
Doğrulandı: Responses, logprobs bilgisini yalnızca son metin öğesine ekler — Chat'te görülen çift kanallı biçimin hiçbiri yoktur.
Messages
Messages (Anthropic) protokolünde eşdeğer bir alan yoktur. Token düzeyinde olasılık ayrıntısı için Chat Completions veya Responses kullanın.
8. Hangi API'ler Web'de Arama Yapabilir?
Buradaki web araması sunucu tarafı bir araçtır (erişim sunucuda çalışır; istemci isteği kendisi göndermez) ve testlerde hem Responses hem de Messages API'lerinde gerçekten çalışır.
Responses
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="What is the latest stable version of Python?",
tools=[{"type": "web_search"}],
)
# Observed output item sequence:
# ["reasoning", "web_search_call", "reasoning", "message"]
Doğrulandı: çıktı dizisinde bir web_search_call öğesi görünür; bu, sunucunun gerçekten bir erişim gerçekleştirdiği anlamına gelir.Messages
response = client.messages.create(
model="deepseek-v4-pro-0813",
max_tokens=1024,
tools=[{"type": "web_search_20250305", "name": "web_search"}],
messages=[{"role": "user", "content": "What is the latest stable version of Python?"}],
)
# Observed content block sequence:
# ["thinking", "server_tool_use", "web_search_tool_result", "thinking", "text"]
# usage.server_tool_use.web_search_requests = 1
Doğrulandı: usage.server_tool_use.web_search_requests değeri 1 sayar — erişim isteği gerçekten gerçekleşti ve ölçüldü.Chat Completions
Chat üzerinde web araması tetiklenemez. DeepSeek'in resmi Chat API referansı, istek şemasında hiçbir yerde arama aracı alanı içermez (bu, alan listesi tek tek incelenerek tespit edilen bir yokluktur; DeepSeek desteklemediğini açıkça belirtmiş değildir). Sunucu tarafı aramayı resmi olarak açıkça destekleyen API Responses'tır (web_search) ve resmi Messages uyumluluk sayfası da arama ile ilgili içerik bloklarını listeler.
# Three control groups, same question requiring live information, all HTTP 200:
# A no search field -> "cannot retrieve", annotations = null
# B web_search_options -> "cannot retrieve", annotations = null, usage identical to A
# C enable_search -> "cannot retrieve", annotations = null, usage identical to A
Doğrulandı:web_search_optionsveyaenable_searchgöndermek hata vermez, ama hiçbir şey de getirmez — yanıttaannotations(web araması çalıştığında yanıta eklenen atıf listesi) bulunmaz ve kullanım, kontrol grubuyla alan alan eşleşir. Web erişimi için bunun yerine Responses veya Messages API'sini kullanın.
9. Kullanım Notları: DeepSeek'in Tasarımı ve Yolumuzdaki Sapmalar
Aşağıdakilerin tümü HTTP 200 döndürür ama sezgiye aykırı davranır. Nedenler farklıdır ve bunlara yönelik yapılacaklar da farklıdır; bu yüzden ayrı listelenmişlerdir: ilk grup DeepSeek'in modeli nasıl tasarladığıdır ve sağlayıcı değiştirmek bunu değiştirmez; ikinci grup ise AIHubMix yolundaki mevcut davranıştır ve üzerinde çalışmaktayız.
9.1 DeepSeek Tasarımına Göre
| Davranış | Resmi ifade | Yapılacaklar |
|---|---|---|
| Responses oturum durumunu ve meta verileri saklamaz | Resmi Responses uyumluluk sayfası, satır satır, store | Not supported. The response always carries store: false, metadata | Not supported ve safety_identifier | Not supported belirtir (bu dört alandan yalnızca user desteklenir). Testler bunu doğrular: istek 200 döner, ancak metadata null'dur, safety_identifier yoktur ve store her zaman false değerindedir |
İstek korelasyon verilerini istemci tarafında tutun; sunucu tarafı saklamaya güvenmeyin |
| Düşünme modunda örnekleme parametrelerinin etkisi yoktur | DeepSeek, düşünme modunda temperature ve top_p değerlerinin sessizce etkisiz olduğunu açıkça belirtir. Testte her ikisi de 200 döndü, geri yansıtılan bir şey yoktu ve yanıt biçiminde değişiklik olmadı |
Düşünme modunda çıktı kararlılığı için örnekleme parametrelerine güvenmeyin; kesinlik gerektiğinde yapılandırılmış çıktı kullanın |
| Önek devamı / FIM yalnızca resmi beta uç noktasındadır | prefix için resmi açıklama şöyledir: "(Beta) … Bu özelliği kullanmak için base_url="https://api.deepseek.com/beta" ayarlamanız gerekir" ve FIM tamamlama da benzer şekilde bir Beta özelliğidir. AIHubMix üretim ortamında doğrulandı: standart uç noktaya prefix: true göndermek 200 döndürür ama önek sessizce atılır; bu, resmi ifadeyle yön olarak tutarlıdır |
Kontrollü çıktı biçimi için yapılandırılmış çıktıyı (bölüm 5) veya stop ile kesmeyi kullanın |
| Paralel araç çağrısı devre dışı bırakılamaz | Bkz. bölüm 4: DeepSeek, hem Responses hem de Anthropic sayfalarında, bu anahtarın yok sayıldığını ve paralel çağrının her zaman açık olduğunu belirtir | Seri yürütmeye ihtiyaç duyduğunuzda çağrıları istemci tarafında sıraya koyun |
9.2 AIHubMix Yolundaki Mevcut Davranış
| Davranış | Testlerin gösterdiği | Yapılacaklar |
|---|---|---|
Responses hata nesnelerinde standart dışı type |
4xx yanıtlarındaki error.type değeri Aihubmix_api_error iken, aynı sınıf hata Messages'ta standart invalid_request_error döndürür |
Dallanmayı error.type metnine göre değil, HTTP durum koduna göre yapın |
| Messages'ta düşünme token'ları 0 sayılıyor | Yanıt bir thinking bloğu içerir, ancak usage.output_tokens_details.thinking_tokens her zaman 0'dır; bu, üretilen düşünme içeriğiyle çelişir. Entegre ettiğimiz Anthropic sözleşmesine göre bu alan zorunludur ve output_tokens değerine eşit veya daha küçük olmalıdır |
Düşünme maliyeti hesabı için Chat'te completion_tokens_details.reasoning_tokens veya Responses'ta output_tokens_details.reasoning_tokens kullanın |
Messages, model değerini deepseek-v4-pro olarak geri döndürür |
İstek deepseek-v4-pro-0813 gönderir, yanıt ise deepseek-v4-pro döndürür. Neden adlandırmadır: DeepSeek'in tek resmi API model adı deepseek-v4-pro'dur ve 0813 sürüm etiketidir |
Yanıttaki model alanını model yönlendirme kontrolleri veya kullanım ataması için tek dayanak yapmayın |
9.3 DeepSeek Tanımlamadığı İçin Kesin Hüküm Yok
reasoning_effort için enum dışında bir değer göndermek (ör. bogus_xyz) hata vermeden, normal bir cevapla 200 döndürür ve gözlemlenebilir bir etkisi olmaz. Gerçek açık: bu yol şu anda reasoning_effort enum'unu doğrulamıyor. Belirsiz olan ise bunun yapması gerekip gerekmediği: DeepSeek geçerli enum'u yayımlıyor ama geçersiz bir düzeyin reddedilip reddedilmeyeceğini hiçbir zaman belirtmiyor, dolayısıyla karşılaştırılacak bir temel yok. Bu nedenle bu durum ne resmi davranış ne de yolumuzdaki bir kusur olarak sayılır. Güvenli istemci tarafı yaklaşımı: düzeyi kendiniz doğrulayın ve API'nin bunu yakalayacağına güvenmeyin.
10. Yetenek × API Destek Matrisi
Aşağıdaki hücreler her API için parametre / alan yazımını verir. DeepSeek'in açık ifadesi olarak işaretlenenler dışında, her sonuç 2026-08-13 tarihinde AIHubMix üretim API'lerine yapılan gerçek çağrılardan elde edilmiştir.
| Yetenek | Chat Completions | Responses | Messages |
|---|---|---|---|
| Temel sohbet / sistem talimatları | ✅ messages |
✅ input + instructions |
✅ messages + üst düzey system |
| Akış | ✅ stream + stream_options |
✅ stream (response.created … response.completed) |
✅ stream (message_start … message_stop) |
| Çıktı tavanı | ✅ max_tokens (aşıldığında 400, tavan 393216) |
✅ max_output_tokens |
✅ max_tokens |
| Düşünmeyi devre dışı bırakma | ✅ thinking: {"type": "disabled"} |
✅ reasoning: {"effort": "none"} |
✅ thinking: {"type": "disabled"} |
| Düşünme düzeyi | 🟡 reasoning_effort kabul edilir, ayırt edici bir sinyal yok |
✅ reasoning.effort (yalnızca none doğrulanabilir) |
🟡 output_config.effort kabul edilir, geri yansıtılan bir şey yok |
| Düşünme içeriği döndürülür | ✅ reasoning_content alanı |
✅ reasoning çıktı öğesi |
✅ thinking içerik bloğu |
| Zorunlu düşünme geçmişinin geri gönderilmesi | ✅ reasoning_content eksikse → 400 |
✅ reasoning öğesi eksikse → 400 |
✅ thinking bloğu eksikse → 400 |
| Araç çağırma | ✅ iç içe tools + adlandırılmış tool_choice |
✅ düz tools |
✅ input_schema + tool_choice: {"type":"any"} |
required ile çağrıyı zorlamak |
❗ Düşünme açıkken 400; önce düşünmeyi kapatın | ❗ soldakiyle aynı | ✅ {"type": "any"} |
| Paralel araç çağrısı (devre dışı bırakılamaz) | ➖ resmi Chat API'de böyle bir alan yok | ❗ DeepSeek, parallel_tool_calls değerinin yok sayıldığını ve paralel çağrının her zaman açık olduğunu belirtir |
❗ DeepSeek, disable_parallel_tool_use değerinin yok sayıldığını belirtir; testte yine iki tool_use bloğu döner |
| Yapılandırılmış çıktı | ✅ response_format (json_object) |
✅ text.format (json_schema + strict) |
➖ protokol alanı yok; şemayı bir araç içinde taşıyın |
| Otomatik önbellek isabeti ölçümü | ✅ usage.prompt_tokens_details.cached_tokens |
✅ usage.input_tokens_details.cached_tokens |
✅ usage.cache_read_input_tokens |
| logprobs | ❗ çift kanal: content + reasoning_content |
✅ top_logprobs yalnızca son metin öğesinde |
➖ |
| Web araması | ➖ resmi Chat API'de arama alanı yok; bir tane göndermek de arama yapmaz | ✅ tools: [{"type": "web_search"}] |
✅ web_search_20250305 |
| Durdurma dizileri | ✅ stop |
➖ protokolde durdurma dizisi alanı yok (uzunluğu yalnızca max_output_tokens sınırlar) |
✅ stop_sequences (stop_reason: "stop_sequence") |
Açıklama: ✅ doğrulanmış şekilde çalışıyor · 🟡 kabul ediliyor ancak etkisi doğrulanamıyor · ❗ dikkat gerektirir (yukarıdaki notlara bakın) · ➖ bu API'de böyle bir kavram yok
SSS
deepseek-v4-pro-0813, AIHubMix üzerinde hangi API'leri destekliyor?
Chat Completions (/v1/chat/completions), Responses (/v1/responses) ve Claude uyumlu Messages API (/v1/messages).
Çok turlu bir konuşma neden aniden 400 döndürüyor?
En yaygın neden, geri gönderilmeyen düşünme geçmişidir. Düşünme modunda, önceki turun düşünme içeriği aynen yeniden gönderilmelidir: Chat için asistan mesajındaki reasoning_content, Responses için type="reasoning" çıktı öğesi ve Messages için thinking içerik bloğu. Araçlarla çok turlu kullanımda bu sorun en çok hissedilir; birçok çerçeve geçmişi oluştururken çıktı öğelerini type == "message" koşuluyla filtreler ve bu da reasoning öğesini düşürür.
Düşünme kapatılabilir mi?
Evet. Chat veya Messages'ta thinking: {"type": "disabled"}, Responses'ta ise reasoning: {"effort": "none"} gönderin. Kapatıldığında hem düşünme içeriği hem de düşünme token'ları ortadan kalkar.
Üç reasoning_effort seviyesi birbirinden farklı mı?low / high / max seviyelerinin tümü kabul edilir (varsayılan high; medium ve xhigh uyumluluk için high değerine eşlenir). Testlerde aynı soru için düşünme token sayıları seviyeler arasında monoton bir fark göstermedi ve hiçbir şey geri yansıtılmadı; dolayısıyla fark çağıran taraftan doğrulanamıyor. Yalnızca Responses'taki none seviyesi (düşünme kapalı) net ve gözlemlenebilir bir fark yaratıyor.
tool_choice: "required" neden 400 döndürüyor?
Düşünme açıkken bu değer kabul edilmez (hata gövdesinde Thinking mode does not support this tool_choice yazar). Düşünme açıkken belirli bir çağrıyı zorlamak için adlandırılmış işlevli bir tool_choice kullanın ({"type": "function", "function": {"name": "..."}}); ya da önce düşünmeyi kapatın ve ardından required kullanın.
Bağlam önbelleği nasıl etkinleştirilir?
Etkinleştirmeniz gerekmez; otomatiktir. Sabit, değişmeyen içerikleri (sistem istemleri, bilgi parçacıkları, araç tanımları) isteğin başına koyun; isabet sayısı usage içinde raporlanır: Chat'te prompt_tokens_details.cached_tokens, Responses'ta input_tokens_details.cached_tokens ve Messages'ta cache_read_input_tokens.
Fiyatlandırma ve gerçek zamanlı durum için deepseek-v4-pro-0813 model sayfasına bakın; daha fazla model için model galerisini ziyaret edin.
İlgili uygulamalı rehberler: Kimi K3 uygulamalı rehberi (yeni parametreler ve üç API destek matrisi) ve GPT-5.6 istem önbellekleme ve faturalandırma değişiklikleri.



