Mistral AI API Python LLM Yapay Zeka Geliştirme Open Source AI API

Mistral AI API Nasıl Kullanılır? Adım Adım Rehber (2026)

Orta
person Yapay Zeka Uzmanı
list_altİçindekilerexpand_more
  1. 01Mistral AI API’ye Giriş
  2. 02Hangi Mistral Modelini Seçmeli?
  3. 03La Plateforme’dan API Anahtarı Alma
  4. 04Python Ortamını Kurma
  5. 05İlk API Çağrısı: Temel Kullanım
  6. 06Multi-Turn Chatbot: Konuşma Geçmişi
  7. 07Streaming ile Gerçek Zamanlı Yanıt
  8. 08Function Calling: Dış Araçlara Bağlanma
  9. 09JSON Modu: Yapılandırılmış Çıktı
  10. 10Maliyet Optimizasyonu
  11. 11Le Chat vs Mistral API
  12. 12Sonraki Adımlar
Editorial tech-magazine cover illustration about Mistral AI API integration and Python development, glowing terminal screen showing Python code streams connecting to a distributed neural network, orange gradient data flows transforming into structured API responses, abstract artificial-intelligence motifs (glowing neural networks, flowing data, subtle circuitry), sophisticated modern concept art, clean balanced composition, soft cinematic studio lighting, rich depth of field, premium color grading in deep navy blues with cyan and magenta accents, highly detailed, polished editorial 8k. No text, no words, no letters, no captions, no logos, no watermark, no UI.

Mistral AI API Python entegrasyonu gösteren editöryal illüstrasyon

Mistral AI API’yi birkaç satır Python ile kullanmaya başlayabilirsiniz. Bu rehber La Plateforme’da hesap açmaktan başlayıp multi-turn chatbot, streaming, function calling ve JSON moduna kadar tüm temel konuları kod örnekleriyle geçiyor.

Mistral AI API’ye Giriş

Mistral AI, 2023’te Paris’te kurulan ve hızla açık kaynak LLM alanındaki güçlü oyunculardan biri hâline gelen bir Avrupa yapay zeka şirketi. Mistral’ı öne çıkaran şey, hem Apache 2.0 lisansıyla tamamen açık modeller sunması hem de bu modelleri yönetilen bir API üzerinden erişilebilir kılması.

Mistral API neden tercih edilir? Birkaç somut neden var: Avrupa veri merkezlerinde çalışması GDPR uyumluluğunu kolaylaştırıyor. Codestral gibi özel kod modelleri yazılım geliştirme iş akışlarına doğrudan giriyor. Fiyat/performans dengesi rakiplerine kıyasla sık sık avantajlı çıkıyor.

Modelleri karşılaştırmalı görmek isteyenler için Mistral vs Llama 4 vs Gemma 3 açık kaynak LLM karşılaştırma yazımız iyi bir başlangıç noktası.

Hangi Mistral Modelini Seçmeli?

Mistral’ın model ailesi birkaç farklı kullanım senaryosuna göre şekilleniyor. API üzerinden erişilebilen başlıca seçenekler şunlar:

ModelKullanım AlanıGiriş ($/MTok)Çıkış ($/MTok)
Mistral Small 3.2Sınıflandırma, kısa yanıt, yüksek hacim$0,10$0,30
Mistral Medium 3Genel sohbet, belge analizi$0,40$2,00
Mistral Large 2Karmaşık akıl yürütme, uzun bağlam$2,00$6,00
CodestralKod tamamlama, açıklama, test$0,30$0,90
Pixtral LargeGörsel + metin, multimodal görevler$2,00$6,00

Kaynak: Mistral AI resmi fiyatlandırma sayfası

Hızlı ve ucuz bir sınıflandırıcı kuruyorsanız Mistral Small yeterli. Karmaşık çok adımlı bir iş akışı üzerinde çalışıyorsanız Mistral Large 2’nin kapasitesine ihtiyaç duyabilirsiniz. Kod ağırlıklı projelerde Codestral ayrı bir seçenek olarak değerlendirin.

La Plateforme’dan API Anahtarı Alma

Mistral’ın yönetilen API servisi La Plateforme üzerinden çalışıyor. Hesap açmak için şu adımları izleyin:

  1. console.mistral.ai adresine gidin
  2. E-posta ile kayıt olun veya Google hesabınızla giriş yapın
  3. Ödeme yöntemi ekleyin (kredi kartı zorunlu, ücretsiz deneme kredisi başlangıçta verilir)
  4. Sol menüden API Keys bölümüne geçin
  5. Create new key ile yeni anahtar üretin

Anahtarı kopyaladıktan sonra doğrudan koda gömmeyin. Bunun yerine .env dosyasına yazın:

# .env
MISTRAL_API_KEY=your_api_key_here

Anahtarınızı bir kez görürsünüz; kaydetmeyi unutursanız yeni bir tane üretmeniz gerekir.

Python Ortamını Kurma

Mistral’ın resmi Python SDK’sını pip ile yükleyin:

pip install mistralai python-dotenv

Bağımlılıklarınızı requirements.txt ile kayıt altına alın:

mistralai>=1.0.0
python-dotenv>=1.0.0

Temel import yapısı şöyle:

import os
from dotenv import load_dotenv
from mistralai import Mistral

load_dotenv()
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

Mistral() sınıfı, MISTRAL_API_KEY ortam değişkenini otomatik olarak okur. load_dotenv() çağrısı bu değişkeni .env dosyasından yükler.

İlk API Çağrısı: Temel Kullanım

İlk çağrıyı yapmak için birkaç satır yeterli:

import os
from dotenv import load_dotenv
from mistralai import Mistral

load_dotenv()

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

response = client.chat.complete(
    model="mistral-small-latest",
    messages=[
        {"role": "user", "content": "Python'da liste ve tuple arasındaki fark nedir?"}
    ]
)

print(response.choices[0].message.content)

Yanıt nesnesinden iki şeyi sık kullanacaksınız:

# Yanıt metni
metin = response.choices[0].message.content

# Token kullanımı
print(f"Giriş: {response.usage.prompt_tokens} token")
print(f"Çıkış: {response.usage.completion_tokens} token")

client.chat.complete() senkron çalışır; tüm yanıt hazır olana kadar bekler. Asenkron ihtiyaç için client.chat.complete_async() kullanılır.

Multi-Turn Chatbot: Konuşma Geçmişi

Mistral API durumsuz çalışır: her çağrıda tüm konuşma geçmişini göndermeniz gerekir. Geçmişi bir liste olarak yönetmek en temiz yol:

import os
from dotenv import load_dotenv
from mistralai import Mistral

load_dotenv()

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
gecmis = []

def konuş(kullanici_mesaji: str) -> str:
    gecmis.append({"role": "user", "content": kullanici_mesaji})

    yanit = client.chat.complete(
        model="mistral-small-latest",
        messages=gecmis
    )

    asistan_mesaji = yanit.choices[0].message.content
    gecmis.append({"role": "assistant", "content": asistan_mesaji})

    return asistan_mesaji

print(konuş("Python'da decorator nedir?"))
print(konuş("Bir örnek göster"))
print(konuş("Bu örneği nasıl genişletebilirim?"))

Uzun konuşmalarda bellek yönetimi önemli. Bağlam penceresi şişmesin diye son N mesajı tutabilirsiniz:

MAKS_GECMIS = 20

def gecmisi_kisalt(gecmis: list) -> list:
    if len(gecmis) > MAKS_GECMIS:
        return gecmis[-MAKS_GECMIS:]
    return gecmis

Sistem talimatı eklemek isterseniz system rolünü geçmiş listesinin başına koyun ya da doğrudan messages parametresine verin:

messages = [
    {"role": "system", "content": "Sen yardımcı bir Python asistanısın. Yanıtlarını kısa ve net tut."},
    {"role": "user", "content": kullanici_mesaji}
]

Streaming ile Gerçek Zamanlı Yanıt

Normal çağrı tüm yanıtı bekler; kullanıcı uzun bir cevap için saniyeler boyunca boş ekrana bakabilir. Streaming bu beklemeyi ortadan kaldırıyor: yanıt token token geliyor ve anında ekrana yansıyor.

import os
from dotenv import load_dotenv
from mistralai import Mistral

load_dotenv()

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

def streaming_yanit(mesaj: str) -> str:
    tam_yanit = ""

    with client.chat.stream(
        model="mistral-small-latest",
        messages=[{"role": "user", "content": mesaj}]
    ) as stream:
        for olay in stream:
            if olay.data.choices[0].delta.content:
                parca = olay.data.choices[0].delta.content
                print(parca, end="", flush=True)
                tam_yanit += parca

    print()
    return tam_yanit

streaming_yanit("Python'da asenkron programlamayı açıkla")

flush=True çıktı tamponlamasını devre dışı bırakır; her token anında terminale yazılır. Web uygulamalarında Server-Sent Events (SSE) ile aynı mantığı kullanabilirsiniz.

Function Calling: Dış Araçlara Bağlanma

Function calling, modelin bir dış API veya fonksiyon çağırması gerektiğinde ne yapması gerektiğini bildirmesini sağlıyor. Model fonksiyonu kendisi çalıştırmaz; hangi fonksiyonu hangi parametrelerle çağırmanız gerektiğini söyler.

Hava durumu örneği üzerinden adım adım:

import os
import json
from dotenv import load_dotenv
from mistralai import Mistral

load_dotenv()

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

# Araç tanımı
araclar = [
    {
        "type": "function",
        "function": {
            "name": "hava_durumu_al",
            "description": "Belirtilen şehir için güncel hava durumu bilgisini döndürür",
            "parameters": {
                "type": "object",
                "properties": {
                    "sehir": {
                        "type": "string",
                        "description": "Hava durumu sorgulanacak şehir adı"
                    }
                },
                "required": ["sehir"]
            }
        }
    }
]

def hava_durumu_al(sehir: str) -> dict:
    # Gerçek uygulamada bir hava durumu API'si çağırırsınız
    return {"sehir": sehir, "sicaklik": 22, "durum": "güneşli"}

# İlk çağrı: model araç kullanmaya karar verir
yanit = client.chat.complete(
    model="mistral-large-latest",
    messages=[{"role": "user", "content": "İstanbul'da hava nasıl?"}],
    tools=araclar,
    tool_choice="auto"
)

mesaj = yanit.choices[0].message

# Model araç çağırdı mı?
if mesaj.tool_calls:
    arac_cagrisi = mesaj.tool_calls[0]
    fonksiyon_adi = arac_cagrisi.function.name
    parametreler = json.loads(arac_cagrisi.function.arguments)

    # Fonksiyonu çalıştır
    sonuc = hava_durumu_al(**parametreler)

    # Sonucu modele geri gönder
    mesajlar = [
        {"role": "user", "content": "İstanbul'da hava nasıl?"},
        mesaj,
        {
            "role": "tool",
            "tool_call_id": arac_cagrisi.id,
            "content": json.dumps(sonuc)
        }
    ]

    son_yanit = client.chat.complete(
        model="mistral-large-latest",
        messages=mesajlar
    )

    print(son_yanit.choices[0].message.content)

Önemli bir nokta: model fonksiyonu çalıştırmaz. Hangi fonksiyona hangi argümanların gideceğini söyler; onu çağırmak sizin kodunuzun işi. Yanıt döndükten sonra sonucu tool rolüyle geri gönderirsiniz ve model nihai cevabı oluşturur.

JSON Modu: Yapılandırılmış Çıktı

Veri çıkarma, sınıflandırma veya form doldurma gibi görevlerde model çıktısını doğrudan JSON olarak almak kodu basitleştiriyor. Bunun için response_format parametresini kullanın:

import os
import json
from dotenv import load_dotenv
from mistralai import Mistral

load_dotenv()

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

kullanici_metni = """
Ad: Ahmet Yılmaz
E-posta: ahmet@example.com
Şehir: Ankara
İlgi Alanı: Python, makine öğrenmesi
"""

yanit = client.chat.complete(
    model="mistral-small-latest",
    messages=[
        {
            "role": "system",
            "content": "Kullanıcı bilgilerini JSON formatında çıkar. ad, email, sehir ve ilgi_alanlari alanlarını doldur."
        },
        {
            "role": "user",
            "content": kullanici_metni
        }
    ],
    response_format={"type": "json_object"}
)

veri = json.loads(yanit.choices[0].message.content)
print(veri["ad"])       # Ahmet Yılmaz
print(veri["email"])    # ahmet@example.com

JSON modunda model, yanıtını mutlaka geçerli bir JSON nesnesi olarak döndürür. json.loads() her zaman başarılı olur; ek doğrulama katmanına gerek kalmaz.

Maliyet Optimizasyonu

En çok fark yaratan adım model seçimi. Gereksiz yere büyük model çalıştırmak, aynı kalite için 20 kat daha pahalıya işlem yapmak anlamına gelebilir.

Model bazında maliyet karşılaştırması:

ModelGiriş ($/MTok)Çıkış ($/MTok)1M token / günlük iş yükü
Mistral Small 3.2$0,10$0,30~$0,30
Mistral Medium 3$0,40$2,00~$1,60
Mistral Large 2$2,00$6,00~$6,00
Codestral$0,30$0,90~$0,70

Kaynak: Mistral AI resmi fiyatlandırma sayfası

Görev türüne göre model seçimini otomatikleştirmek istiyorsanız:

def model_sec(gorev_turu: str) -> str:
    model_haritasi = {
        "siniflandirma": "mistral-small-latest",
        "ozet": "mistral-small-latest",
        "sohbet": "mistral-medium-latest",
        "kod": "codestral-latest",
        "analiz": "mistral-large-latest",
        "multimodal": "pixtral-large-latest"
    }
    return model_haritasi.get(gorev_turu, "mistral-small-latest")

Token sayımı: Gerçek maliyeti ölçmek için her çağrıdan sonra response.usage alanını loglayın:

def maliyetli_cagri_yap(mesajlar: list, model: str) -> str:
    yanit = client.chat.complete(model=model, messages=mesajlar)

    giris_token = yanit.usage.prompt_tokens
    cikis_token = yanit.usage.completion_tokens

    print(f"[{model}] giriş={giris_token} çıkış={cikis_token}")
    return yanit.choices[0].message.content

Sistem promptu sabit kalıyorsa (her çağrıda aynı içerik), prompt önbellekleme token maliyetini önemli ölçüde azaltır. Prompt mühendisliği tekniklerimizde sistem talimatını minimize etme konusunu derinlemesine ele aldık.

Le Chat vs Mistral API

Le Chat, Mistral’ın kullanıcıya yönelik sohbet uygulaması. API ise geliştiriciye yönelik programatik erişim. Hangisini ne zaman kullanacağınıza karar vermeyi kolaylaştırmak için:

KriterLe ChatMistral API
Hedef kullanıcıSon kullanıcı, bireyselGeliştirici, sistem entegratörü
ArayüzTarayıcı, mobilPython, REST, SDK
OtomasyonYokTam
Maliyet kontrolüAbonelikToken başına ödeme
ÖzelleştirmeSınırlıTam (sistem prompt, araçlar, format)
Büyük hacim işlemUygun değilUygun

Kendi uygulamanıza Mistral entegre edecekseniz API; bireysel araştırma veya hızlı içerik üretimi için Le Chat doğru seçim.

Sonraki Adımlar

Temel yapıyı kavradıktan sonra ilerleyebileceğiniz birkaç yön:

RAG ile bilgi tabanı kurma: Mistral API’yi kendi belgelerinizle birleştirerek belgeye dayalı soru-cevap sistemi oluşturabilirsiniz. Başlangıç noktası için RAG ve yerel chatbot rehberimize bakın.

LangChain entegrasyonu: LangChain, Mistral API’yi zincirleme ve ajan iş akışlarına kolayca bağlıyor. langchain-mistralai paketi bu entegrasyonu birkaç satıra indiriyor.

Benzer API rehberleri: Claude API kullanmayı öğrenmek isteyenler için Claude API Python chatbot rehberimiz aynı yapıyı Anthropic SDK üzerinden ele alıyor.

Kod örneklerinin tamamı çalışır durumda; doğrudan kopyalayıp kendi projenize uyarlayabilirsiniz. İlk işe yarayan çağrıyı yaptıktan sonra gerisini ihtiyacınıza göre katmanlayabilirsiniz.

auto_stories İlgili Makaleler