Açık ağırlıklı büyük dil modelleri, mühendislik ekiplerinin yapay zeka altyapısı hakkındaki düşüncelerini değiştirdi. Sağlayıcının donanımı, model ağırlıklarını ve yayın takvimini kontrol ettiği kapalı API'lerin aksine, açık ağırlıklı modeller bu kararları size geri verir. Modelin nerede yaşayacağını, nasıl ince ayar (tune) yapılacağını ve ne zaman —eğer yapılacaksa— yeni bir checkpoint'e güncelleneceğini siz seçersiniz. Bu düzeyde bir sahiplik güçlüdür, ancak aynı zamanda entegrasyon işinin doğrudan sizin omuzlarınızda olması anlamına gelir.
OpenAI'ın GPT-4'ü veya Anthropic'in Claude'u gibi yönetilen bir API'den geliyorsanız, iyi haber şu ki; birçok açık ağırlıklı barındırma sağlayıcısı ve çıkarım motoru artık aynı dili konuşuyor: HTTP POST, JSON payload'ları ve bearer token kimlik doğrulaması. Mekanikler tanıdık görünse de detaylar daha önemlidir; çünkü sağlayıcı değil, siz güvenilirlikten, maliyet kontrolünden ve davranış şekillendirmeden sorumlusunuz.
API Çağrısının Temelleri
Temelde entegrasyon bir POST isteğidir. Authorization başlığında standart bir bearer token ile kimlik doğrulaması yaparsınız. Gövde (body) bir JSON nesnesidir ve en önemli alanı messages dizisidir. Bu dizi, alışılmış sohbet formatını takip eder: sırasıyla system, user ve assistant rolleri.
İşte pratikte minimal bir istek yapısının nasıl göründüğü:
AuthorizationbaşlığınıBearer <your-token>olarak ayarlayın.- En az bir
modeltanımlayıcısı ve birmessageslistesi içeren bir JSON payload'ı gönderin. - Deterministik veya yaratıcı bir kontrol istiyorsanız
max_tokensvetemperatureparametrelerini ekleyin.
Yanıt, bir choices dizisi ve bir usage nesnesi ile döner. usage bloğunu görmezden gelmeyin. Bu blok prompt_tokens, completion_tokens ve toplam kullanım miktarını içerir. Eğer kendi sunucunuzda barındırma (self-hosting) yapıyorsanız, bu belirli bir kullanıcı etkileşiminin maliyetli olup olmadığını anlamanız için bir sinyaldir. Eğer üçüncü taraf bir çıkarım sağlayıcısına ödeme yapıyorsanız, bu sizin faturalandırma verinizdir. Her iki durumda da, ilk günden itibaren bunu günlüğe kaydedin (loglayın).
Streaming ve Neden Kullanmalısınız
Kimse tek bir metin bloğu görünmeden önce üç saniye boyunca bir yükleme simgesine (loading spinner) bakmak istemez. Streaming bunu çözer. Modelin tüm tamamlamayı bitirmesini beklemek yerine, sunucu token'ları üretildikçe yayınlar. İstemciniz Server-Sent Events veya chunked HTTP yanıtları alır ve kelimeleri geldikleri anda ekrana yansıtabilir.
JSON payload'ınızda stream: true bayrağını ayarlayarak streaming özelliğini etkinleştirin. İstemci tarafında genellikle akışı satır satır ayrıştırır (parse eder) ve data: öneklerini takip edersiniz. Bağlantı akış sırasında koparsa, yeniden bağlanmaya veya streaming olmayan bir yeniden denemeye (retry) hazır olun. Sohbet uygulamanızın algılanan gecikme süresi önemli ölçüde düşer ve kullanıcılar sistemin isteklerini toplu işlemek (batch-processing) yerine onlarla birlikte düşündüğünü hisseder.
Gerçek Dünya İş Akışları İçin Function Calling
Sadece düz metin döndüren bir model kullanışlıdır, ancak araçları (tools) çağırabilen bir model çok daha kullanışlıdır. Function calling, mevcut operasyonları tanımlayan bir JSON şeması (örneğin search_orders veya update_profile) tanımlamanıza olanak tanır ve model bunları ne zaman kullanacağına karar verir. Kullanıcıya takip eden bir soru sormak yerine, konuşmadan çıkarılan argümanlarla yapılandırılmış bir fonksiyon çağrısı yayınlar.
Örneğin, bir kullanıcı “Son siparişim neydi?” diye sorarsa, şemanız bir limit parametresi içeren get_recent_orders fonksiyonunu tanımlayabilir. Model bir araç çağrısı (tool call) döndürür, backend'iniz sorguyu veritabanınızda çalıştırır ve sonucu bir fonksiyon yanıt mesajı olarak modele geri beslersiniz. Model daha sonra doğal dilde bir yanıt sentezler.
Bunu uygulamak için:
- Payload'ınızda bir
toolsveyafunctionsdizisi sağlayın. - Her aracı bir
name,descriptionveparametersşeması ile tanımlayın. - Yanıtı, bir tool-calls bitiş nedeni veya benzeri bir sinyal için inceleyin.
- Fonksiyonu backend tarafınızda sıkı bir doğrulama ile çalıştırın. Ham model çıktılarını temizlenmemiş (unsanitized) bir şekilde veritabanınıza yazması için asla güvenmeyin.
- Fonksiyon sonucunu mesaj geçmişine ekleyin ve modelin nihai yanıtı üretebilmesi için takip eden bir istek gönderin.
Bu desen, üretken metin ile deterministik sistemler arasındaki boşluğu doldurur. Yapay zekanız, her dalı (branch) kodla sabitlemenize (hard-coding) gerek kalmadan takvimleri okuyabilir, API'lere sorgu atabilir veya webhook'ları tetikleyebilir.
Üretim Ortamı İçin Güçlendirme (Hardening)
Açık ağırlıklı modelleri üretim ortamında çalıştırmak, sizi herhangi bir dağıtık sistemle aynı hata modlarına (failure modes) ve üzerine birkaç benzersiz moda maruz bırakır. Model çıkarımı hesaplama açısından yoğundur ve uç noktalar (endpoints) yük altında zorlanabilir. Uygulamanızı nasıl sabit tutacağınız aşağıdadır.
Hatalar ve Yeniden Denemeler (Retries)
- 429 Too Many Requests: This is a rate-limit signal. Implement exponential backoff with jitter. Start with a short delay, double it on repeated 429s, and cap it at a few seconds so you do not hammer the server.
- 5xx Server Errors: These are usually transient, especially if you are routing to a pool of GPU workers. Retry them, but put a hard ceiling on the number of attempts—three is a common default.
- 4xx Client Errors: Do not retry these blindly. A 400 means your payload is malformed, a 401 means your token is wrong, and a 404 means the model ID does not exist on that endpoint. Fix the request instead of looping.
Timeouts and Hanging Processes
Inference can lag when queues build up or when a worker crashes mid-generation. Always set a request timeout. If your HTTP client default is infinity, change it. A reasonable starting point is 30 to 60 seconds for standard completions, shorter for health checks. If the timeout fires, treat it as a failure, log it, and decide whether to show the user a graceful error or retry on a fallback model.
Budget Control
Token counts translate directly into money or GPU hours. Log both prompt and completion tokens for every request. Track them per user, per feature, and per model version. Open-weight models let you swap checkpoints, but each checkpoint has its own cost profile and context-window size. Without logs, you will not know which part of your product is bleeding compute.
Behavior Shaping with System Messages
The system message is your first line of control. Use it to set the tone, enforce constraints, and inject static context that every user conversation should respect. Because open-weight models behave differently depending on their fine-tuning and system prompts, treat this field as a variable you A/B test. A vague system prompt yields vague answers. A precise one keeps the model on track—for instance, telling the assistant it only handles billing and returns, and should politely decline everything else.
Infrastructure Freedom and Data Sovereignty
One of the quietest benefits of open-weight models is custody. Your prompts and completions do not need to leave your environment. If you run the model on-premises or inside a virtual private cloud, you eliminate third-party data processing agreements and reduce exposure to training-data controversies. That matters for healthcare, finance, and any domain where a data leak is a compliance event.
Even if you use an external inference host, open weights give you portability. If the host changes pricing or terms, you can move the same model files to another provider or bring them in-house. You are not locked into a single API because there is only one company that holds the weights.
A Practical Starting Point
If you are integrating today, begin with a single model and a single endpoint. Wrap your HTTP client in a small abstraction layer that handles authentication, retries, and token logging. Add streaming next, because the user experience payoff is immediate. Then introduce one function call for a high-value workflow—status lookups, content moderation, or form filling. Monitor latency, error rates, and token spend for a week before you broaden the rollout.
Open-weight models demand more setup than a fully managed API, but they repay that effort with transparency, flexibility, and control. Build the integration carefully, instrument everything, and you will have an AI layer that behaves exactly the way your application needs.
Sources and further reading
- Based on: How to Integrate Open-Weight LLMs via API: A Developer’s Guide
- Join the discussion: GyaanSetu AI on Telegram
