{"id":35607,"date":"2025-12-01T17:40:57","date_gmt":"2025-12-01T14:40:57","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35607"},"modified":"2025-12-01T17:40:57","modified_gmt":"2025-12-01T14:40:57","slug":"kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/","title":{"rendered":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma"},"content":{"rendered":"<p><body><\/p>\n<h2>Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Yapay zeka teknolojileri, \u00f6zellikle b\u00fcy\u00fck dil modelleri (LLM&#8217;ler), g\u00fcnl\u00fck hayat\u0131m\u0131z\u0131n ve i\u015f s\u00fcre\u00e7lerimizin ayr\u0131lmaz bir par\u00e7as\u0131 haline gelmi\u015ftir. OpenAI&#8217;nin ChatGPT&#8217;si gibi platformlar, do\u011fal dil anlama ve \u00fcretme yetenekleriyle \u00e7\u0131\u011f\u0131r a\u00e7m\u0131\u015f, insan-bilgisayar etkile\u015fimini yeni bir boyuta ta\u015f\u0131m\u0131\u015ft\u0131r. Bu teknolojiler, metin yaz\u0131m\u0131ndan kod \u00fcretimine, bilgi sorgulamadan karma\u015f\u0131k problem \u00e7\u00f6z\u00fcmlerine kadar geni\u015f bir yelpazede kullan\u0131lmaktad\u0131r. Ancak, \u00e7o\u011fu kullan\u0131c\u0131 bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 web aray\u00fczleri veya mobil uygulamalar arac\u0131l\u0131\u011f\u0131yla deneyimler. Peki ya kendi ki\u015fisel, \u00f6zelle\u015ftirilebilir ve tam kontrol\u00fcn\u00fczde olan bir yapay zeka asistan\u0131na sahip olmak isterseniz? Terminal tabanl\u0131 bir ChatGPT botu geli\u015ftirmek, tam da bu ihtiyac\u0131 kar\u015f\u0131lar.<\/p>\n<p>Bu makalede, Python programlama dilini ve OpenAI API&#8217;lerini kullanarak kendi terminal tabanl\u0131 ChatGPT botunuzu ad\u0131m ad\u0131m nas\u0131l in\u015fa edece\u011finizi ve da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Bu s\u00fcre\u00e7, sadece g\u00fc\u00e7l\u00fc bir araca sahip olman\u0131z\u0131 sa\u011flamakla kalmayacak, ayn\u0131 zamanda modern yapay zeka API&#8217;leriyle \u00e7al\u0131\u015fma, ortam y\u00f6netimi, g\u00fcvenlik ve da\u011f\u0131t\u0131m konular\u0131nda de\u011ferli teknik bilgiler edinmenize de yard\u0131mc\u0131 olacakt\u0131r. Kendi botunuzu geli\u015ftirerek, veri gizlili\u011finiz \u00fczerinde daha fazla kontrol sahibi olacak, botun davran\u0131\u015f\u0131n\u0131 tamamen kendi tercihlerinize g\u00f6re \u015fekillendirebilecek ve hatta maliyetleri daha etkin bir \u015fekilde y\u00f6netebileceksiniz.<\/p>\n<p>Bu rehber, hem Python&#8217;a yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in uygundur. Ad\u0131m ad\u0131m kod \u00f6rnekleri, a\u00e7\u0131klamalar ve en iyi uygulamalarla, kendi yapay zeka asistan\u0131n\u0131z\u0131 hayata ge\u00e7irme yolculu\u011funuzda size rehberlik edece\u011fiz.<\/p>\n<h2>Neden Kendi Terminal Botunuzu Geli\u015ftirmelisiniz?<\/h2>\n<p>Web aray\u00fczleri veya mobil uygulamalar arac\u0131l\u0131\u011f\u0131yla eri\u015filebilen haz\u0131r ChatGPT \u00e7\u00f6z\u00fcmleri mevcutken, kendi terminal botunuzu geli\u015ftirmenin bir\u00e7ok avantaj\u0131 bulunmaktad\u0131r:<\/p>\n<h3>\u00d6zelle\u015ftirme ve Esneklik<\/h3>\n<p>Kendi botunuzu olu\u015fturdu\u011funuzda, onun davran\u0131\u015f\u0131n\u0131, yan\u0131t tarz\u0131n\u0131, kullanaca\u011f\u0131 modeli ve hatta entegre edece\u011fi ek i\u015flevleri tamamen kontrol edebilirsiniz. Belirli bir alanda uzmanla\u015fm\u0131\u015f bir asistan m\u0131 istiyorsunuz? Yoksa belirli bir kodlama dilinde size yard\u0131mc\u0131 olacak bir partner mi ar\u0131yorsunuz? Kendi botunuzla, bu t\u00fcr \u00f6zelle\u015ftirmeleri kolayca yapabilirsiniz. Prompt m\u00fchendisli\u011fi ile botunuzun ki\u015fili\u011fini ve amac\u0131n\u0131 belirleyebilir, hatta farkl\u0131 senaryolar i\u00e7in farkl\u0131 bot profilleri olu\u015fturabilirsiniz.<\/p>\n<h3>Gizlilik ve Veri Kontrol\u00fc<\/h3>\n<p>\u00dc\u00e7\u00fcnc\u00fc taraf uygulamalar\u0131 kullan\u0131rken, verilerinizin nas\u0131l i\u015flendi\u011fi ve sakland\u0131\u011f\u0131 konusunda endi\u015feleriniz olabilir. Kendi terminal botunuzu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, konu\u015fma ge\u00e7mi\u015finizin ve girdi\u011finiz verilerin nerede saklanaca\u011f\u0131n\u0131 ve nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 siz belirlersiniz. Hassas bilgilerle \u00e7al\u0131\u015f\u0131rken veya gizlili\u011fe \u00f6nem veren projelerde bu, kritik bir avantajd\u0131r. API \u00e7a\u011fr\u0131lar\u0131 OpenAI sunucular\u0131na gitse de, verinin yerel olarak nas\u0131l y\u00f6netildi\u011fi tamamen sizin kontrol\u00fcn\u00fczdedir.<\/p>\n<h3>\u00d6\u011frenme ve Geli\u015ftirme F\u0131rsat\u0131<\/h3>\n<p>Bu projeyi geli\u015ftirmek, Python programlama, API entegrasyonu, sanal ortam y\u00f6netimi, ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, hata ay\u0131klama ve hatta da\u011f\u0131t\u0131m gibi bir\u00e7ok alanda pratik deneyim kazanman\u0131z\u0131 sa\u011flar. Yapay zeka teknolojilerinin i\u00e7 i\u015fleyi\u015fini daha yak\u0131ndan anlamak i\u00e7in harika bir f\u0131rsatt\u0131r. Kendi kodunuzu yazarken kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z sorunlar\u0131 \u00e7\u00f6zmek, problem \u00e7\u00f6zme yeteneklerinizi de geli\u015ftirecektir.<\/p>\n<h3>H\u0131z ve Verimlilik<\/h3>\n<p>Terminal tabanl\u0131 uygulamalar genellikle web tabanl\u0131 aray\u00fczlerden daha hafiftir ve daha h\u0131zl\u0131 yan\u0131t verebilir. Gereksiz grafik aray\u00fcz\u00fc y\u00fck\u00fc olmadan, do\u011frudan etkile\u015fim kurabilir ve an\u0131nda yan\u0131tlar alabilirsiniz. Geli\u015ftiriciler ve komut sat\u0131r\u0131 kullan\u0131c\u0131lar\u0131 i\u00e7in bu, i\u015f ak\u0131\u015f\u0131na sorunsuz bir entegrasyon anlam\u0131na gelir.<\/p>\n<h3>Maliyet Kontrol\u00fc<\/h3>\n<p>OpenAI API&#8217;leri kullan\u0131m ba\u015f\u0131na \u00fccretlendirilir. Kendi botunuzu geli\u015ftirerek, API \u00e7a\u011fr\u0131lar\u0131n\u0131z\u0131n nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131, hangi modellerin kullan\u0131ld\u0131\u011f\u0131n\u0131 ve ne kadar token harcand\u0131\u011f\u0131n\u0131 daha yak\u0131ndan takip edebilirsiniz. Bu, beklenmedik maliyetlerin \u00f6n\u00fcne ge\u00e7menize ve b\u00fct\u00e7enizi daha iyi y\u00f6netmenize yard\u0131mc\u0131 olabilir. \u00d6zellikle token say\u0131m\u0131 gibi \u00f6zellikler ekleyerek, her etkile\u015fimin potansiyel maliyetini \u00f6nceden g\u00f6rebilirsiniz.<\/p>\n<h2>Gerekli \u00d6nko\u015fullar ve Ortam Kurulumu<\/h2>\n<p>Kendi terminal botunuzu geli\u015ftirmeye ba\u015flamadan \u00f6nce, sisteminizde baz\u0131 temel ara\u00e7lar\u0131n kurulu olmas\u0131 ve belirli bir ortam\u0131n haz\u0131rlanmas\u0131 gerekmektedir.<\/p>\n<h3>Python Kurulumu<\/h3>\n<p>Bu proje i\u00e7in Python 3.8 veya daha yeni bir s\u00fcr\u00fcm gereklidir. Python&#8217;un sisteminizde kurulu olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in terminalinizde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">python3 --version<\/code><\/pre>\n<p>E\u011fer kurulu de\u011filse veya s\u00fcr\u00fcm eski ise, Python&#8217;\u0131n resmi web sitesinden (python.org) i\u015fletim sisteminize uygun en g\u00fcncel s\u00fcr\u00fcm\u00fc indirebilir ve kurabilirsiniz.<\/p>\n<h3>OpenAI API Anahtar\u0131 Edinme<\/h3>\n<p>OpenAI API&#8217;lerini kullanabilmek i\u00e7in bir API anahtar\u0131na ihtiyac\u0131n\u0131z olacak. Bu anahtar\u0131 edinmek i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyin:<\/p>\n<p>1.  OpenAI web sitesine gidin: [platform.openai.com](https:\/\/platform.openai.com\/).<br \/>\n2.  Bir hesap olu\u015fturun veya mevcut hesab\u0131n\u0131zla giri\u015f yap\u0131n.<br \/>\n3.  Sa\u011f \u00fcst k\u00f6\u015fedeki profil simgenize t\u0131klay\u0131n ve &#8220;View API keys&#8221; (API anahtarlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcle) se\u00e7ene\u011fini se\u00e7in.<br \/>\n4.  &#8220;Create new secret key&#8221; (Yeni gizli anahtar olu\u015ftur) d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n5.  Olu\u015fturulan anahtar\u0131 kopyalay\u0131n. Bu anahtar\u0131 bir daha g\u00f6remeyece\u011finiz i\u00e7in g\u00fcvenli bir yere kaydetti\u011finizden emin olun. Bu anahtar, API&#8217;ye eri\u015fim kimli\u011finizdir ve gizli tutulmal\u0131d\u0131r.<\/p>\n<h3>Sanal Ortam Olu\u015fturma ve Etkinle\u015ftirme<\/h3>\n<p>Python projelerinde ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netmek i\u00e7in sanal ortamlar (virtual environments) kullanmak iyi bir pratiktir. Bu, projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n sisteminizdeki di\u011fer Python projeleriyle \u00e7ak\u0131\u015fmas\u0131n\u0131 engeller.<\/p>\n<p>Projeniz i\u00e7in bir dizin olu\u015fturun ve i\u00e7ine girin:<\/p>\n<pre><code class=\"language-bash\">mkdir my_chatgpt_bot\ncd my_chatgpt_bot<\/code><\/pre>\n<p>\u015eimdi bir sanal ortam olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">python3 -m venv venv<\/code><\/pre>\n<p>Sanal ortam\u0131 etkinle\u015ftirin:<\/p>\n<p>*   <strong>Linux\/macOS:<\/strong><\/p>\n<pre><code class=\"language-bash\">source venv\/bin\/activate<\/code><\/pre>\n<p>*   <strong>Windows (Command Prompt):<\/strong><\/p>\n<pre><code class=\"language-bash\">venv\\Scripts\\activate.bat<\/code><\/pre>\n<p>*   <strong>Windows (PowerShell):<\/strong><\/p>\n<pre><code class=\"language-powershell\">venv\\Scripts\\Activate.ps1<\/code><\/pre>\n<p>Sanal ortam etkinle\u015ftirildi\u011finde, terminal istemcinizin ba\u015f\u0131nda <code>(venv)<\/code> gibi bir ibare g\u00f6receksiniz.<\/p>\n<h3>Gerekli K\u00fct\u00fcphanelerin Kurulumu<\/h3>\n<p>Sanal ortam\u0131n\u0131z etkinle\u015ftirildikten sonra, projemiz i\u00e7in gerekli Python k\u00fct\u00fcphanelerini kurabiliriz:<\/p>\n<p>*   <code>openai<\/code>: OpenAI API&#8217;leriyle etkile\u015fim kurmak i\u00e7in resmi Python istemci k\u00fct\u00fcphanesi.<br \/>\n*   <code>python-dotenv<\/code>: API anahtar\u0131n\u0131z\u0131 ve di\u011fer hassas bilgileri ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla g\u00fcvenli bir \u015fekilde y\u00f6netmek i\u00e7in.<\/p>\n<pre><code class=\"language-bash\">pip install openai python-dotenv<\/code><\/pre>\n<p>Art\u0131k t\u00fcm \u00f6nko\u015fullar tamamland\u0131 ve botunuzu geli\u015ftirmeye ba\u015flamak i\u00e7in haz\u0131rs\u0131n\u0131z.<\/p>\n<h2>Botun \u00c7ekirdek Mant\u0131\u011f\u0131n\u0131 Olu\u015fturma<\/h2>\n<p>Ki\u015fisel terminal ChatGPT botunuzun kalbi, OpenAI API&#8217;leri ile etkile\u015fim kuran Python kodunda yatmaktad\u0131r. Bu b\u00f6l\u00fcmde, botun temel i\u015flevselli\u011fini ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 inceleyece\u011fiz.<\/p>\n<h3>OpenAI API ile Etkile\u015fim<\/h3>\n<p>OpenAI API&#8217;leri, b\u00fcy\u00fck dil modellerine programatik olarak eri\u015fmenizi sa\u011flar. <code>openai<\/code> Python k\u00fct\u00fcphanesi, bu etkile\u015fimi olduk\u00e7a basitle\u015ftirir. \u00d6zellikle <code>chat.completions<\/code> endpoint&#8217;i, ChatGPT tarz\u0131 sohbet deneyimleri i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p>Bir sohbet tamamlama iste\u011fi g\u00f6nderirken, API&#8217;ye bir <code>model<\/code> (\u00f6rne\u011fin, &#8220;gpt-3.5-turbo&#8221; veya &#8220;gpt-4&#8221;) ve bir <code>messages<\/code> listesi sa\u011flaman\u0131z gerekir. <code>messages<\/code> listesi, sohbetin ge\u00e7mi\u015fini temsil eden bir dizi s\u00f6zl\u00fckten olu\u015fur. Her s\u00f6zl\u00fck, bir <code>role<\/code> (rol) ve <code>content<\/code> (i\u00e7erik) i\u00e7erir.<\/p>\n<p>*   <code>system<\/code>: Botun genel davran\u0131\u015f\u0131n\u0131 veya ki\u015fili\u011fini tan\u0131mlayan ba\u015flang\u0131\u00e7 mesaj\u0131.<br \/>\n*   <code>user<\/code>: Kullan\u0131c\u0131n\u0131n g\u00f6nderdi\u011fi mesajlar.<br \/>\n*   <code>assistant<\/code>: Botun verdi\u011fi yan\u0131tlar.<\/p>\n<p>\u0130\u015fte temel bir API etkile\u015fimi \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-python\">import os\nfrom openai import OpenAI\nfrom dotenv import load_dotenv\n\n<h2>.env dosyas\u0131ndan ortam de\u011fi\u015fkenlerini y\u00fckle<\/h2>\nload_dotenv()\n\n<h2>OpenAI istemcisini API anahtar\u0131 ile ba\u015flat<\/h2>\nclient = OpenAI(api_key=os.getenv(\"OPENAI_API_KEY\"))\n\ndef get_chat_response(messages, model=\"gpt-3.5-turbo\"):\n    \"\"\"\n    OpenAI API'sine bir sohbet iste\u011fi g\u00f6nderir ve yan\u0131t\u0131 d\u00f6nd\u00fcr\u00fcr.\n    \"\"\"\n    try:\n        response = client.chat.completions.create(\n            model=model,\n            messages=messages,\n            temperature=0.7, # Yarat\u0131c\u0131l\u0131k seviyesi (0.0 - 1.0)\n            max_tokens=500 # Yan\u0131t\u0131n maksimum uzunlu\u011fu\n        )\n        return response.choices[0].message.content\n    except Exception as e:\n        print(f\"API iste\u011fi s\u0131ras\u0131nda bir hata olu\u015ftu: {e}\")\n        return \"\u00dczg\u00fcn\u00fcm, \u015fu anda yan\u0131t veremiyorum.\"\n\n<h2>\u00d6rnek kullan\u0131m:<\/h2>\nif __name__ == \"__main__\":\n    conversation_history = [\n        {\"role\": \"system\", \"content\": \"Sen yard\u0131mc\u0131 bir yapay zeka asistan\u0131s\u0131n.\"},\n        {\"role\": \"user\", \"content\": \"Merhaba, nas\u0131ls\u0131n?\"}\n    ]\n    response_content = get_chat_response(conversation_history)\n    print(f\"Bot: {response_content}\")<\/code><\/pre>\n<p>Bu kod par\u00e7ac\u0131\u011f\u0131, <code>get_chat_response<\/code> ad\u0131nda bir fonksiyon tan\u0131mlar. Bu fonksiyon, verilen mesaj ge\u00e7mi\u015fini kullanarak OpenAI API&#8217;sine bir istek g\u00f6nderir ve botun yan\u0131t\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. <code>temperature<\/code> parametresi, botun yan\u0131tlar\u0131n\u0131n ne kadar yarat\u0131c\u0131 veya rastgele olaca\u011f\u0131n\u0131 kontrol eder (daha y\u00fcksek de\u011ferler daha yarat\u0131c\u0131 yan\u0131tlar \u00fcretir). <code>max_tokens<\/code> ise botun \u00fcretebilece\u011fi maksimum token say\u0131s\u0131n\u0131 belirler.<\/p>\n<h3>API Anahtar\u0131n\u0131 G\u00fcvenli Y\u00f6netme<\/h3>\n<p>API anahtarlar\u0131n\u0131z\u0131 do\u011frudan kodunuzun i\u00e7ine yazmak veya bir metin dosyas\u0131na kaydetmek g\u00fcvenlik a\u00e7\u0131s\u0131ndan risklidir. Bu anahtarlar\u0131n if\u015fa olmas\u0131 durumunda, hesab\u0131n\u0131z k\u00f6t\u00fcye kullan\u0131labilir ve y\u00fcksek maliyetlerle kar\u015f\u0131la\u015fabilirsiniz. Bu nedenle, API anahtarlar\u0131n\u0131 ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla y\u00f6netmek en iyi uygulamad\u0131r. <code>python-dotenv<\/code> k\u00fct\u00fcphanesi bu s\u00fcreci kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Projenizin k\u00f6k dizininde <code>.env<\/code> ad\u0131nda bir dosya olu\u015fturun ve i\u00e7ine API anahtar\u0131n\u0131z\u0131 a\u015fa\u011f\u0131daki formatta ekleyin:<\/p>\n<pre><code class=\"language-\">OPENAI_API_KEY=\"sizin_openai_api_anahtar\u0131n\u0131z_buraya\"<\/code><\/pre>\n<p>Ard\u0131ndan, Python kodunuzda <code>load_dotenv()<\/code> fonksiyonunu \u00e7a\u011f\u0131rarak bu de\u011fi\u015fkenleri ortam\u0131n\u0131za y\u00fckleyebilirsiniz. Daha sonra <code>os.getenv()<\/code> kullanarak anahtara eri\u015febilirsiniz. Yukar\u0131daki \u00f6rnek kodda bu kullan\u0131m zaten g\u00f6sterilmi\u015ftir. <code>.env<\/code> dosyas\u0131n\u0131 <code>git<\/code> gibi versiyon kontrol sistemlerine eklememeye \u00f6zen g\u00f6sterin (genellikle <code>.gitignore<\/code> dosyas\u0131na eklenir).<\/p>\n<h3>Konu\u015fma Ge\u00e7mi\u015fini Y\u00f6netme (Statefulness)<\/h3>\n<p>ChatGPT gibi sohbet botlar\u0131n\u0131n en \u00f6nemli \u00f6zelliklerinden biri, \u00f6nceki konu\u015fmalar\u0131 hat\u0131rlayabilme yetene\u011fidir. Bu &#8220;statefulness&#8221; (durum bilgisi) \u00f6zelli\u011fi, <code>messages<\/code> listesini her yeni mesajda g\u00fcncelleyerek sa\u011flan\u0131r. Bot, her yeni kullan\u0131c\u0131 girdisi ald\u0131\u011f\u0131nda, t\u00fcm konu\u015fma ge\u00e7mi\u015fini (sistem mesaj\u0131, \u00f6nceki kullan\u0131c\u0131 mesajlar\u0131 ve bot yan\u0131tlar\u0131) API&#8217;ye g\u00f6nderir. Bu sayede model, ba\u011flam\u0131 koruyarak tutarl\u0131 ve ilgili yan\u0131tlar \u00fcretebilir.<\/p>\n<pre><code class=\"language-python\"># ... (\u00f6nceki kodlar) ...\n\ndef main():\n    # Konu\u015fma ge\u00e7mi\u015fini tutacak liste\n    conversation_history = [\n        {\"role\": \"system\", \"content\": \"Sen yard\u0131mc\u0131 ve bilgili bir yapay zeka asistan\u0131s\u0131n. Kullan\u0131c\u0131 sorular\u0131na detayl\u0131 ve a\u00e7\u0131klay\u0131c\u0131 yan\u0131tlar ver.\"},\n    ]\n\n    print(\"Ki\u015fisel Terminal ChatGPT Botunuza ho\u015f geldiniz!\")\n    print(\"\u00c7\u0131kmak i\u00e7in '\u00e7\u0131k\u0131\u015f' yaz\u0131n veya sohbeti s\u0131f\u0131rlamak i\u00e7in 's\u0131f\u0131rla' yaz\u0131n.\")\n\n    while True:\n        user_input = input(\"\\nSiz: \")\n\n        if user_input.lower() == \"\u00e7\u0131k\u0131\u015f\":\n            print(\"G\u00fcle g\u00fcle!\")\n            break\n        elif user_input.lower() == \"s\u0131f\u0131rla\":\n            conversation_history = [\n                {\"role\": \"system\", \"content\": \"Sen yard\u0131mc\u0131 ve bilgili bir yapay zeka asistan\u0131s\u0131n. Kullan\u0131c\u0131 sorular\u0131na detayl\u0131 ve a\u00e7\u0131klay\u0131c\u0131 yan\u0131tlar ver.\"},\n            ]\n            print(\"Sohbet ge\u00e7mi\u015fi s\u0131f\u0131rland\u0131.\")\n            continue\n        \n        # Kullan\u0131c\u0131 mesaj\u0131n\u0131 ge\u00e7mi\u015fe ekle\n        conversation_history.append({\"role\": \"user\", \"content\": user_input})\n\n        # API'den yan\u0131t al\n        bot_response = get_chat_response(conversation_history)\n        print(f\"Bot: {bot_response}\")\n\n        # Bot yan\u0131t\u0131n\u0131 ge\u00e7mi\u015fe ekle\n        conversation_history.append({\"role\": \"assistant\", \"content\": bot_response})\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n<p>Bu <code>main<\/code> fonksiyonu, s\u00fcrekli bir d\u00f6ng\u00fc i\u00e7inde kullan\u0131c\u0131dan girdi al\u0131r. Kullan\u0131c\u0131n\u0131n mesaj\u0131n\u0131 <code>conversation_history<\/code> listesine <code>user<\/code> rol\u00fcyle ekler, ard\u0131ndan <code>get_chat_response<\/code> fonksiyonunu \u00e7a\u011f\u0131rarak API&#8217;den yan\u0131t al\u0131r. Gelen yan\u0131t\u0131 ekrana yazd\u0131r\u0131r ve ayn\u0131 zamanda <code>assistant<\/code> rol\u00fcyle <code>conversation_history<\/code> listesine ekler. Bu sayede bir sonraki API \u00e7a\u011fr\u0131s\u0131nda, t\u00fcm konu\u015fma ge\u00e7mi\u015fi modele g\u00f6nderilir.<\/p>\n<h3>Kullan\u0131c\u0131 Giri\u015fi ve \u00c7\u0131k\u0131\u015f\u0131<\/h3>\n<p>Terminal tabanl\u0131 bir bot i\u00e7in kullan\u0131c\u0131 giri\u015fi <code>input()<\/code> fonksiyonu, botun yan\u0131tlar\u0131 ise <code>print()<\/code> fonksiyonu ile y\u00f6netilir. Yukar\u0131daki <code>main<\/code> fonksiyonu bu temel etkile\u015fimi g\u00f6stermektedir. Kullan\u0131c\u0131n\u0131n &#8220;\u00e7\u0131k\u0131\u015f&#8221; yazmas\u0131 durumunda d\u00f6ng\u00fc sonlan\u0131r, &#8220;s\u0131f\u0131rla&#8221; yazmas\u0131 durumunda ise sohbet ge\u00e7mi\u015fi ba\u015flang\u0131\u00e7 sistem mesaj\u0131na geri d\u00f6ner. Bu basit mekanizmalar, kullan\u0131c\u0131 dostu bir terminal deneyimi i\u00e7in yeterlidir.<\/p>\n<h2>Geli\u015fmi\u015f \u00d6zellikler ve \u0130yile\u015ftirmeler<\/h2>\n<p>Temel bot i\u015flevselli\u011fini olu\u015fturduktan sonra, kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek ve botunuzu daha sa\u011flam hale getirmek i\u00e7in \u00e7e\u015fitli geli\u015fmi\u015f \u00f6zellikler ekleyebilirsiniz.<\/p>\n<h3>Ak\u0131\u015fl\u0131 Yan\u0131tlar (Streaming Responses)<\/h3>\n<p>Varsay\u0131lan olarak, OpenAI API&#8217;si t\u00fcm yan\u0131t\u0131 tek bir blok halinde g\u00f6nderir. Bu, uzun yan\u0131tlar i\u00e7in kullan\u0131c\u0131n\u0131n botun yazmas\u0131n\u0131 beklemesi gerekti\u011fi anlam\u0131na gelir. Ak\u0131\u015fl\u0131 yan\u0131tlar (streaming responses) kullanarak, botun yan\u0131t\u0131n\u0131 kelime kelime veya c\u00fcmle c\u00fcmle alabilir ve terminale yazd\u0131rabilirsiniz. Bu, daha dinamik ve h\u0131zl\u0131 bir kullan\u0131c\u0131 deneyimi sa\u011flar.<\/p>\n<p><code>client.chat.completions.create<\/code> metoduna <code>stream=True<\/code> parametresini ekleyerek ak\u0131\u015fl\u0131 yan\u0131tlar\u0131 etkinle\u015ftirebilirsiniz.<\/p>\n<pre><code class=\"language-python\"># ... (\u00f6nceki importlar ve client tan\u0131m\u0131) ...\n\ndef get_streaming_chat_response(messages, model=\"gpt-3.5-turbo\"):\n    \"\"\"\n    OpenAI API'sine ak\u0131\u015fl\u0131 bir sohbet iste\u011fi g\u00f6nderir ve yan\u0131t\u0131 ak\u0131\u015f halinde d\u00f6nd\u00fcr\u00fcr.\n    \"\"\"\n    full_response_content = \"\"\n    try:\n        stream = client.chat.completions.create(\n            model=model,\n            messages=messages,\n            temperature=0.7,\n            stream=True\n        )\n        print(\"Bot: \", end=\"\", flush=True) # Yan\u0131t\u0131 ayn\u0131 sat\u0131rda ba\u015flat\n        for chunk in stream:\n            if chunk.choices[0].delta.content is not None:\n                print(chunk.choices[0].delta.content, end=\"\", flush=True)\n                full_response_content += chunk.choices[0].delta.content\n        print() # Yeni sat\u0131ra ge\u00e7\n        return full_response_content\n    except Exception as e:\n        print(f\"\\nAPI iste\u011fi s\u0131ras\u0131nda bir hata olu\u015ftu: {e}\")\n        return \"\u00dczg\u00fcn\u00fcm, \u015fu anda yan\u0131t veremiyorum.\"\n\n<h2>main fonksiyonunda get_chat_response yerine get_streaming_chat_response kullan\u0131n:<\/h2>\n<h2>bot_response = get_streaming_chat_response(conversation_history)<\/code><\/pre>\n<\/h2>\n<p>Bu de\u011fi\u015fiklik, botun yan\u0131tlar\u0131n\u0131 daha etkile\u015fimli hale getirecektir. <code>end=\"\"<\/code> ve <code>flush=True<\/code> parametreleri, <code>print<\/code> fonksiyonunun \u00e7\u0131kt\u0131y\u0131 hemen ve yeni bir sat\u0131ra ge\u00e7meden yazmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Yap\u0131land\u0131rma Dosyas\u0131 Kullan\u0131m\u0131<\/h3>\n<p>Model ad\u0131, s\u0131cakl\u0131k (temperature), maksimum token say\u0131s\u0131 gibi ayarlar\u0131 kodun i\u00e7ine g\u00f6mmek yerine, ayr\u0131 bir yap\u0131land\u0131rma dosyas\u0131nda (\u00f6rne\u011fin, <code>config.ini<\/code> veya <code>config.json<\/code>) tutmak esnekli\u011fi art\u0131r\u0131r. Bu, kodda de\u011fi\u015fiklik yapmadan botun davran\u0131\u015f\u0131n\u0131 ayarlaman\u0131za olanak tan\u0131r.<\/p>\n<p>\u00d6rnek <code>config.ini<\/code> dosyas\u0131:<\/p>\n<pre><code class=\"language-ini\">[openai]\nmodel=gpt-3.5-turbo\ntemperature=0.7\nmax_tokens=1000<\/code><\/pre>\n<p>Python kodunuzda bu ayarlar\u0131 okumak i\u00e7in <code>configparser<\/code> k\u00fct\u00fcphanesini kullanabilirsiniz:<\/p>\n<pre><code class=\"language-python\">import configparser\n\nconfig = configparser.ConfigParser()\nconfig.read('config.ini')\n\nOPENAI_MODEL = config['openai'].get('model', 'gpt-3.5-turbo')\nOPENAI_TEMPERATURE = float(config['openai'].get('temperature', 0.7))\nOPENAI_MAX_TOKENS = int(config['openai'].get('max_tokens', 500))\n\n<h2>get_chat_response veya get_streaming_chat_response fonksiyonlar\u0131nda bu de\u011fi\u015fkenleri kullan\u0131n<\/h2>\n<h2>model=OPENAI_MODEL, temperature=OPENAI_TEMPERATURE, max_tokens=OPENAI_MAX_TOKENS<\/code><\/pre>\n<\/h2>\n<h3>Hata Y\u00f6netimi<\/h3>\n<p>API \u00e7a\u011fr\u0131lar\u0131 s\u0131ras\u0131nda a\u011f sorunlar\u0131, API anahtar\u0131 hatalar\u0131, kota a\u015f\u0131mlar\u0131 veya ge\u00e7ersiz istekler gibi \u00e7e\u015fitli hatalar meydana gelebilir. Bu hatalar\u0131 d\u00fczg\u00fcn bir \u015fekilde y\u00f6netmek, botunuzun daha sa\u011flam olmas\u0131n\u0131 sa\u011flar ve kullan\u0131c\u0131ya bilgilendirici geri bildirimler sunar. <code>try-except<\/code> bloklar\u0131 kullanarak potansiyel hatalar\u0131 yakalayabilir ve i\u015fleyebilirsiniz.<\/p>\n<p>Yukar\u0131daki <code>get_chat_response<\/code> ve <code>get_streaming_chat_response<\/code> fonksiyonlar\u0131nda basit bir <code>try-except<\/code> blo\u011fu zaten mevcuttur. Daha spesifik hatalar\u0131 yakalamak i\u00e7in <code>openai.APIError<\/code>, <code>openai.RateLimitError<\/code> gibi istisnalar\u0131 kullanabilirsiniz.<\/p>\n<pre><code class=\"language-python\">from openai import OpenAI, APIError, RateLimitError\n\n<h2>... (client tan\u0131m\u0131) ...<\/h2>\n\ndef get_chat_response_robust(messages, model=\"gpt-3.5-turbo\"):\n    try:\n        response = client.chat.completions.create(\n            model=model,\n            messages=messages,\n            temperature=0.7,\n            max_tokens=500\n        )\n        return response.choices[0].message.content\n    except RateLimitError:\n        print(\"API kullan\u0131m limitinize ula\u015ft\u0131n\u0131z. L\u00fctfen bir s\u00fcre bekleyin veya limitlerinizi kontrol edin.\")\n        return \"\u00dczg\u00fcn\u00fcm, \u00e7ok fazla istek g\u00f6nderdim. L\u00fctfen biraz bekleyin.\"\n    except APIError as e:\n        print(f\"OpenAI API hatas\u0131: {e}\")\n        return \"OpenAI API'sinden bir hata ald\u0131m. L\u00fctfen daha sonra tekrar deneyin.\"\n    except Exception as e:\n        print(f\"Beklenmeyen bir hata olu\u015ftu: {e}\")\n        return \"Bir sorun olu\u015ftu. L\u00fctfen tekrar deneyin.\"<\/code><\/pre>\n<h3>Maliyet Kontrol\u00fc ve Token Kullan\u0131m\u0131<\/h3>\n<p>OpenAI API&#8217;leri, kullan\u0131lan token say\u0131s\u0131na g\u00f6re \u00fccretlendirilir. Her API iste\u011fi, hem girdi (prompt) hem de \u00e7\u0131kt\u0131 (completion) i\u00e7in token harcar. Maliyetleri izlemek ve y\u00f6netmek i\u00e7in <code>tiktoken<\/code> k\u00fct\u00fcphanesini kullanarak mesajlardaki token say\u0131s\u0131n\u0131 tahmin edebilirsiniz.<\/p>\n<pre><code class=\"language-python\">import tiktoken\n\ndef num_tokens_from_messages(messages, model=\"gpt-3.5-turbo\"):\n    \"\"\"\n    Mesaj listesindeki token say\u0131s\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.\n    \"\"\"\n    try:\n        encoding = tiktoken.encoding_for_model(model)\n    except KeyError:\n        encoding = tiktoken.get_encoding(\"cl100k_base\")\n    \n    num_tokens = 0\n    for message in messages:\n        # Her mesaj i\u00e7in 3 token ba\u015flang\u0131\u00e7 maliyeti (rol, i\u00e7erik, vs.)\n        num_tokens += 3 \n        for key, value in message.items():\n            num_tokens += len(encoding.encode(value))\n            if key == \"name\":\n                num_tokens += 1 # Her isim i\u00e7in ek token\n    num_tokens += 3 # Yan\u0131t i\u00e7in ek token\n    return num_tokens\n\n<h2>main fonksiyonunda token kullan\u0131m\u0131n\u0131 izleme \u00f6rne\u011fi:<\/h2>\n<h2>...<\/h2>\n<h2>conversation_history.append({\"role\": \"user\", \"content\": user_input})<\/h2>\n<h2>tokens_used_for_prompt = num_tokens_from_messages(conversation_history, model=OPENAI_MODEL)<\/h2>\n<h2>print(f\"Prompt i\u00e7in tahmini token say\u0131s\u0131: {tokens_used_for_prompt}\")<\/h2>\n<h2># bot_response = get_streaming_chat_response(conversation_history, model=OPENAI_MODEL)<\/h2>\n<h2>...<\/h2>\n<h2>conversation_history.append({\"role\": \"assistant\", \"content\": bot_response})<\/h2>\n<h2>tokens_used_for_completion = num_tokens_from_messages([{\"role\": \"assistant\", \"content\": bot_response}], model=OPENAI_MODEL) - 3 # Sadece completion<\/h2>\n<h2>print(f\"Completion i\u00e7in tahmini token say\u0131s\u0131: {tokens_used_for_completion}\")<\/h2>\n<h2>print(f\"Toplam tahmini token say\u0131s\u0131: {tokens_used_for_prompt + tokens_used_for_completion}\")<\/code><\/pre>\n<\/h2>\n<p>Bu fonksiyon, bir mesaj listesinin yakla\u015f\u0131k token maliyetini hesaplaman\u0131za yard\u0131mc\u0131 olur. Bu bilgiyi kullan\u0131c\u0131ya sunarak veya belirli bir token limitine ula\u015f\u0131ld\u0131\u011f\u0131nda sohbet ge\u00e7mi\u015fini k\u0131saltarak maliyetleri y\u00f6netebilirsiniz.<\/p>\n<h3>\u00d6zel Komutlar ve \u0130\u015flevsellik<\/h3>\n<p>Botunuza <code>\/exit<\/code>, <code>\/reset<\/code>, <code>\/help<\/code> gibi \u00f6zel komutlar ekleyerek kullan\u0131c\u0131 deneyimini zenginle\u015ftirebilirsiniz. Bu komutlar, kullan\u0131c\u0131n\u0131n botla daha kolay etkile\u015fim kurmas\u0131n\u0131 sa\u011flar. Yukar\u0131daki <code>main<\/code> fonksiyonunda <code>\u00e7\u0131k\u0131\u015f<\/code> ve <code>s\u0131f\u0131rla<\/code> komutlar\u0131 zaten g\u00f6sterilmi\u015ftir. Daha karma\u015f\u0131k komutlar i\u00e7in kullan\u0131c\u0131 girdisini ayr\u0131\u015ft\u0131rabilir ve belirli fonksiyonlar\u0131 \u00e7a\u011f\u0131rabilirsiniz.<\/p>\n<pre><code class=\"language-python\"># main fonksiyonunda:\n<h2>...<\/h2>\n<h2>if user_input.lower() == \"\u00e7\u0131k\u0131\u015f\":<\/h2>\n<h2>print(\"G\u00fcle g\u00fcle!\")<\/h2>\n<h2>break<\/h2>\n<h2>elif user_input.lower() == \"s\u0131f\u0131rla\":<\/h2>\n<h2>conversation_history = [<\/h2>\n<h2>{\"role\": \"system\", \"content\": \"Sen yard\u0131mc\u0131 ve bilgili bir yapay zeka asistan\u0131s\u0131n. Kullan\u0131c\u0131 sorular\u0131na detayl\u0131 ve a\u00e7\u0131klay\u0131c\u0131 yan\u0131tlar ver.\"},<\/h2>\n<h2>]<\/h2>\n<h2>print(\"Sohbet ge\u00e7mi\u015fi s\u0131f\u0131rland\u0131.\")<\/h2>\n<h2>continue<\/h2>\n<h2>elif user_input.lower() == \"\/yard\u0131m\":<\/h2>\n<h2>print(\"Mevcut komutlar: '\u00e7\u0131k\u0131\u015f' (botu kapat\u0131r), 's\u0131f\u0131rla' (sohbeti s\u0131f\u0131rlar), '\/yard\u0131m' (bu mesaj\u0131 g\u00f6sterir).\")<\/h2>\n<h2>continue<\/h2>\n<h2>...<\/code><\/pre>\n<\/h2>\n<h2>Botu Da\u011f\u0131tma ve \u00c7al\u0131\u015ft\u0131rma<\/h2>\n<p>Botunuzu geli\u015ftirmeyi tamamlad\u0131ktan sonra, onu \u00e7e\u015fitli ortamlarda \u00e7al\u0131\u015ft\u0131rmak isteyebilirsiniz. Bu b\u00f6l\u00fcm, botunuzu yerel olarak \u00e7al\u0131\u015ft\u0131rmaktan Docker ile konteynerle\u015ftirmeye kadar farkl\u0131 da\u011f\u0131t\u0131m yakla\u015f\u0131mlar\u0131n\u0131 ele alacakt\u0131r.<\/p>\n<h3>Yerel \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Botunuzu kendi bilgisayar\u0131n\u0131zda yerel olarak \u00e7al\u0131\u015ft\u0131rmak en basit y\u00f6ntemdir. Geli\u015ftirme s\u00fcrecinde zaten bu \u015fekilde \u00e7al\u0131\u015ft\u0131rd\u0131n\u0131z.<\/p>\n<p>1.  <strong>Sanal ortam\u0131n\u0131z\u0131 etkinle\u015ftirin:<\/strong><\/p>\n<pre><code class=\"language-bash\">source venv\/bin\/activate # Linux\/macOS\n    # veya\n    venv\\Scripts\\activate.bat # Windows CMD<\/code><\/pre>\n<p>2.  <strong>Bot beti\u011finizi \u00e7al\u0131\u015ft\u0131r\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">python my_chat_bot.py # Bot dosyan\u0131z\u0131n ad\u0131<\/code><\/pre>\n<p>Botunuz terminalinizde \u00e7al\u0131\u015fmaya ba\u015flayacak ve girdi bekleyecektir.<\/p>\n<h3>Containerization (Docker ile Da\u011f\u0131t\u0131m)<\/h3>\n<p>Docker, uygulamalar\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131yla birlikte izole edilmi\u015f &#8220;konteynerler&#8221; i\u00e7inde paketlemenize olanak tan\u0131yan bir platformdur. Botunuzu Dockerize etmek, onu farkl\u0131 ortamlara (ba\u015fka bir geli\u015ftiricinin makinesi, bir sunucu vb.) kolayca ta\u015f\u0131yabilmenizi sa\u011flar ve ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<p><strong>Neden Docker?<\/strong><br \/>\n*   <strong>\u0130zolasyon:<\/strong> Botunuz, sisteminizdeki di\u011fer uygulamalardan izole edilmi\u015f bir ortamda \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Ta\u015f\u0131nabilirlik:<\/strong> Konteyner imaj\u0131, Docker&#8217;\u0131n kurulu oldu\u011fu her yerde ayn\u0131 \u015fekilde \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Tutarl\u0131l\u0131k:<\/strong> Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda tutarl\u0131l\u0131k sa\u011flar.<\/p>\n<p><strong>Dockerfile Olu\u015fturma:<\/strong><br \/>\nProjenizin k\u00f6k dizininde <code>Dockerfile<\/code> ad\u0131nda bir dosya olu\u015fturun (uzant\u0131s\u0131 yok):<\/p>\n<pre><code class=\"language-dockerfile\"># Resmi Python 3.9 slim imaj\u0131n\u0131 temel al\nFROM python:3.9-slim-buster\n\n<h2>\u00c7al\u0131\u015fma dizinini ayarla<\/h2>\nWORKDIR \/app\n\n<h2>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 kopyala ve kur<\/h2>\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\n\n<h2>Uygulama kodunu kopyala<\/h2>\nCOPY . .\n\n<h2>Ortam de\u011fi\u015fkenleri i\u00e7in bir yer tutucu tan\u0131mla (g\u00fcvenlik i\u00e7in do\u011frudan anahtar\u0131 koymay\u0131n)<\/h2>\nENV OPENAI_API_KEY=\"\"\n\n<h2>Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131racak komut<\/h2>\nCMD [\"python\", \"my_chat_bot.py\"]<\/code><\/pre>\n<p><code>requirements.txt<\/code> dosyan\u0131z\u0131n a\u015fa\u011f\u0131daki gibi oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-\">openai\npython-dotenv\ntiktoken<\/code><\/pre>\n<p>Bu dosyay\u0131 <code>pip freeze > requirements.txt<\/code> komutuyla olu\u015fturabilirsiniz.<\/p>\n<p><strong>Docker \u0130maj\u0131 Olu\u015fturma:<\/strong><br \/>\nProjenizin k\u00f6k dizininde, terminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker build -t my-chatgpt-bot .<\/code><\/pre>\n<p>Bu komut, <code>Dockerfile<\/code>&#8216;\u0131 kullanarak <code>my-chatgpt-bot<\/code> ad\u0131nda bir Docker imaj\u0131 olu\u015fturacakt\u0131r.<\/p>\n<p><strong>Docker Konteynerini \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\nKonteyneri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in API anahtar\u0131n\u0131z\u0131 ortam de\u011fi\u015fkeni olarak ge\u00e7irmelisiniz:<\/p>\n<pre><code class=\"language-bash\">docker run -it --rm -e OPENAI_API_KEY=\"sizin_openai_api_anahtar\u0131n\u0131z_buraya\" my-chatgpt-bot<\/code><\/pre>\n<p>*   <code>-it<\/code>: \u0130nteraktif terminal oturumu sa\u011flar.<br \/>\n*   <code>--rm<\/code>: Konteyner durdu\u011funda otomatik olarak silinir (ge\u00e7ici \u00e7al\u0131\u015ft\u0131rmalar i\u00e7in kullan\u0131\u015fl\u0131d\u0131r).<br \/>\n*   <code>-e OPENAI_API_KEY=\"...\"<\/code>: API anahtar\u0131n\u0131z\u0131 konteyner i\u00e7ine ortam de\u011fi\u015fkeni olarak enjekte eder. <strong>Bu, anahtar\u0131 do\u011frudan Dockerfile&#8217;a yazmaktan \u00e7ok daha g\u00fcvenlidir.<\/strong><\/p>\n<p>Art\u0131k botunuz bir Docker konteyneri i\u00e7inde \u00e7al\u0131\u015f\u0131yor olacakt\u0131r.<\/p>\n<h3>Bulut Ortam\u0131nda Da\u011f\u0131t\u0131m (Opsiyonel, Basit VM)<\/h3>\n<p>Botunuzu s\u00fcrekli \u00e7al\u0131\u015f\u0131r durumda tutmak veya uzaktan eri\u015filebilir k\u0131lmak isterseniz, bir bulut sanal makinesine (VM) da\u011f\u0131tabilirsiniz. AWS EC2, Google Cloud VM, Azure VM veya DigitalOcean Droplet gibi servisler bu ama\u00e7la kullan\u0131labilir.<\/p>\n<p>1.  <strong>Bir VM Olu\u015fturun:<\/strong> Se\u00e7ti\u011finiz bulut sa\u011flay\u0131c\u0131s\u0131nda k\u00fc\u00e7\u00fck bir Linux VM (\u00f6rne\u011fin Ubuntu) olu\u015fturun.<br \/>\n2.  <strong>SSH ile Ba\u011flan\u0131n:<\/strong> SSH istemcinizi kullanarak VM&#8217;nize ba\u011flan\u0131n.<br \/>\n3.  <strong>Gerekli Ara\u00e7lar\u0131 Kurun:<\/strong> VM \u00fczerinde Python, pip ve iste\u011fe ba\u011fl\u0131 olarak Docker&#8217;\u0131 kurun.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\n    sudo apt install python3 python3-pip python3-venv<\/code><\/pre>\n<p>4.  <strong>Bot Kodunu VM&#8217;ye Kopyalay\u0131n:<\/strong> <code>scp<\/code> veya <code>git clone<\/code> kullanarak proje kodunuzu VM&#8217;ye aktar\u0131n.<\/p>\n<pre><code class=\"language-bash\"># scp ile\n    scp -r my_chatgpt_bot\/ user@your_vm_ip:\/home\/user\/\n    # veya git ile\n    git clone your_repo_url.git<\/code><\/pre>\n<p>5.  <strong>Ortam\u0131 Kurun ve \u00c7al\u0131\u015ft\u0131r\u0131n:<\/strong> VM \u00fczerinde sanal ortam\u0131 olu\u015fturun, ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurun ve <code>.env<\/code> dosyan\u0131z\u0131 olu\u015fturarak API anahtar\u0131n\u0131z\u0131 ekleyin.<\/p>\n<pre><code class=\"language-bash\">cd my_chatgpt_bot\n    python3 -m venv venv\n    source venv\/bin\/activate\n    pip install -r requirements.txt\n    # .env dosyas\u0131n\u0131 olu\u015fturun ve API anahtar\u0131n\u0131z\u0131 i\u00e7ine yap\u0131\u015ft\u0131r\u0131n\n    nano .env<\/code><\/pre>\n<p>6.  <strong>Botu Arka Planda \u00c7al\u0131\u015ft\u0131r\u0131n:<\/strong> Botunuzu SSH oturumunuz kapand\u0131ktan sonra bile \u00e7al\u0131\u015f\u0131r durumda tutmak i\u00e7in <code>nohup<\/code> veya <code>tmux<\/code>\/<code>screen<\/code> gibi ara\u00e7lar\u0131 kullanabilirsiniz.<\/p>\n<pre><code class=\"language-bash\"># nohup ile\n    nohup python3 my_chat_bot.py &\n    # \u00c7\u0131kt\u0131y\u0131 g\u00f6rmek ve durdurmak i\u00e7in:\n    # tail -f nohup.out\n    # killall python3<\/code><\/pre>\n<p>    Veya Docker ile da\u011f\u0131tt\u0131ysan\u0131z, Docker komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker run -d --name chatgpt-bot -e OPENAI_API_KEY=\"sizin_anahtar\u0131n\u0131z\" my-chatgpt-bot\n    # -d: detach mode, arka planda \u00e7al\u0131\u015ft\u0131r\u0131r\n    # --name: konteynere isim verir<\/code><\/pre>\n<p>    Bu, botunuzun bulutta s\u00fcrekli olarak \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>G\u00fcvenlik ve En \u0130yi Uygulamalar<\/h2>\n<p>Kendi yapay zeka botunuzu geli\u015ftirirken ve da\u011f\u0131t\u0131rken g\u00fcvenli\u011fi g\u00f6z \u00f6n\u00fcnde bulundurmak kritik \u00f6neme sahiptir.<\/p>\n<h3>API Anahtar\u0131n\u0131n Gizlili\u011fi<\/h3>\n<p>*   <strong>Asla Kodunuza Sabit Kodlamay\u0131n:<\/strong> API anahtar\u0131n\u0131z\u0131 do\u011frudan Python kodunuzun i\u00e7ine yazmaktan ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>.env Dosyas\u0131 Kullan\u0131n:<\/strong> <code>.env<\/code> dosyalar\u0131 ve <code>python-dotenv<\/code> gibi k\u00fct\u00fcphanelerle ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla y\u00f6netin.<br \/>\n*   <strong>.gitignore&#8217;a Ekleyin:<\/strong> <code>.env<\/code> dosyas\u0131n\u0131 versiyon kontrol sistemlerine (Git gibi) asla eklemeyin. <code>.gitignore<\/code> dosyan\u0131za <code>\/.env<\/code> sat\u0131r\u0131n\u0131 ekledi\u011finizden emin olun.<br \/>\n*   <strong>Docker Kullan\u0131rken:<\/strong> Anahtar\u0131 <code>docker run<\/code> komutuyla <code>-e<\/code> parametresiyle ge\u00e7irin, <code>Dockerfile<\/code>&#8216;a yazmay\u0131n.<br \/>\n*   <strong>Bulut Ortam\u0131nda:<\/strong> Bulut sa\u011flay\u0131c\u0131n\u0131z\u0131n gizli y\u00f6netim servislerini (AWS Secrets Manager, Azure Key Vault, Google Secret Manager) kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h3>Veri Gizlili\u011fi (Konu\u015fma Ge\u00e7mi\u015fi)<\/h3>\n<p>*   <strong>Hassas Bilgileri Dikkatli \u0130\u015fleyin:<\/strong> Botunuzla payla\u015ft\u0131\u011f\u0131n\u0131z bilgilerin OpenAI sunucular\u0131na g\u00f6nderildi\u011fini unutmay\u0131n. \u00c7ok hassas ki\u015fisel veya \u015firket verilerini payla\u015fmaktan ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>Yerel Depolama:<\/strong> E\u011fer konu\u015fma ge\u00e7mi\u015fini kal\u0131c\u0131 olarak kaydetmek isterseniz, bunu yerel bir dosyada veya g\u00fcvenli bir veritaban\u0131nda yap\u0131n. Bu verilerin \u015fifrelenmesi ve eri\u015fim kontrollerinin sa\u011flanmas\u0131 \u00f6nemlidir.<br \/>\n*   <strong>Veri Saklama Politikalar\u0131:<\/strong> OpenAI&#8217;nin veri kullan\u0131m politikalar\u0131n\u0131 inceleyin. Varsay\u0131lan olarak, API verileri model e\u011fitimi i\u00e7in kullan\u0131lmaz, ancak bu ayarlar\u0131 her zaman kontrol etmekte fayda vard\u0131r.<\/p>\n<h3>Ba\u011f\u0131ml\u0131l\u0131klar\u0131n G\u00fcncel Tutulmas\u0131<\/h3>\n<p>Kulland\u0131\u011f\u0131n\u0131z t\u00fcm Python k\u00fct\u00fcphanelerini (<code>openai<\/code>, <code>python-dotenv<\/code>, <code>tiktoken<\/code> vb.) d\u00fczenli olarak g\u00fcncelleyin. G\u00fcvenlik a\u00e7\u0131klar\u0131 veya performans iyile\u015ftirmeleri genellikle yeni s\u00fcr\u00fcmlerle birlikte gelir.<\/p>\n<pre><code class=\"language-bash\">pip install --upgrade openai python-dotenv tiktoken<\/code><\/pre>\n<h3>Maliyet \u0130zleme<\/h3>\n<p>OpenAI hesab\u0131n\u0131zdaki kullan\u0131m panelini d\u00fczenli olarak kontrol edin. Beklenmedik maliyet art\u0131\u015flar\u0131n\u0131 erkenden fark etmek i\u00e7in b\u00fct\u00e7e uyar\u0131lar\u0131 ayarlay\u0131n. <code>tiktoken<\/code> ile yerel token say\u0131m\u0131 yaparak da maliyetleri tahmin edebilirsiniz.<\/p>\n<h2>Sonu\u00e7 ve Gelecek Geli\u015ftirmeler<\/h2>\n<p>Bu makalede, Python ve OpenAI API&#8217;lerini kullanarak kendi ki\u015fisel terminal ChatGPT botunuzu nas\u0131l geli\u015ftirece\u011finizi ve da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 kapsaml\u0131 bir \u015fekilde inceledik. Temel kurulumdan \u00e7ekirdek mant\u0131\u011f\u0131na, geli\u015fmi\u015f \u00f6zelliklerden da\u011f\u0131t\u0131m stratejilerine ve g\u00fcvenlik en iyi uygulamalar\u0131na kadar bir\u00e7ok \u00f6nemli konuyu ele ald\u0131k. Kendi botunuzu in\u015fa etmek, sadece g\u00fc\u00e7l\u00fc bir araca sahip olman\u0131z\u0131 sa\u011flamakla kalmaz, ayn\u0131 zamanda yapay zeka teknolojileri, programlama ve sistem y\u00f6netimi konular\u0131nda de\u011ferli pratik deneyimler kazand\u0131r\u0131r.<\/p>\n<p>Ki\u015fisel terminal botunuz, bilgiye h\u0131zl\u0131 eri\u015fim, kodlama yard\u0131m\u0131, metin olu\u015fturma ve daha fazlas\u0131 i\u00e7in g\u00fc\u00e7l\u00fc bir asistan g\u00f6revi g\u00f6rebilir. \u00d6zelle\u015ftirme yetene\u011fi sayesinde, onu belirli ihtiya\u00e7lar\u0131n\u0131za g\u00f6re \u015fekillendirebilir ve i\u015f ak\u0131\u015f\u0131n\u0131za sorunsuz bir \u015fekilde entegre edebilirsiniz.<\/p>\n<h3>Gelecek Geli\u015ftirmeler<\/h3>\n<p>Bu bot, daha da ileriye ta\u015f\u0131nabilecek bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. \u0130\u015fte potansiyel gelecek geli\u015ftirmeler i\u00e7in baz\u0131 fikirler:<\/p>\n<p>*   <strong>Sesli Giri\u015f\/\u00c7\u0131k\u0131\u015f:<\/strong> <code>SpeechRecognition<\/code> ve <code>gTTS<\/code> (Google Text-to-Speech) gibi k\u00fct\u00fcphaneleri kullanarak sesli komutlar\u0131 i\u015fleyebilir ve botun yan\u0131tlar\u0131n\u0131 sesli olarak duyurabilirsiniz.<br \/>\n*   <strong>Ara\u00e7 Entegrasyonu (Tool Use\/Function Calling):<\/strong> OpenAI&#8217;nin &#8220;Function Calling&#8221; \u00f6zelli\u011fini kullanarak botunuzu harici ara\u00e7larla entegre edebilirsiniz. \u00d6rne\u011fin, internetten bilgi arama, hava durumu sorgulama, takvim y\u00f6netimi veya kod \u00e7al\u0131\u015ft\u0131rma gibi i\u015flevler ekleyebilirsiniz.<br \/>\n*   <strong>Kal\u0131c\u0131 Konu\u015fma Ge\u00e7mi\u015fi:<\/strong> Konu\u015fma ge\u00e7mi\u015fini yerel bir dosyaya (JSON, SQLite) kaydederek, botu kapatt\u0131ktan sonra bile \u00f6nceki sohbetlerinize devam edebilme \u00f6zelli\u011fi ekleyebilirsiniz.<br \/>\n*   <strong>GUI (Grafik Kullan\u0131c\u0131 Aray\u00fcz\u00fc):<\/strong> <code>Tkinter<\/code>, <code>PyQt<\/code> veya <code>Streamlit<\/code> gibi k\u00fct\u00fcphanelerle terminal tabanl\u0131 botunuza basit bir grafik aray\u00fcz\u00fc ekleyerek daha geni\u015f bir kullan\u0131c\u0131 kitlesine hitap edebilirsiniz.<br \/>\n*   <strong>\u00c7oklu Model Deste\u011fi:<\/strong> Kullan\u0131c\u0131n\u0131n farkl\u0131 OpenAI modelleri (GPT-4, GPT-3.5-turbo vb.) aras\u0131nda se\u00e7im yapmas\u0131na olanak tan\u0131y\u0131n.<br \/>\n*   <strong>Markdown Deste\u011fi:<\/strong> Botun yan\u0131tlar\u0131n\u0131 daha okunabilir hale getirmek i\u00e7in terminalde Markdown format\u0131n\u0131 i\u015fleyebilen k\u00fct\u00fcphaneler kullan\u0131n.<br \/>\n*   <strong>Profil Y\u00f6netimi:<\/strong> Farkl\u0131 roller veya ki\u015filikler i\u00e7in \u00f6nceden tan\u0131mlanm\u0131\u015f sistem prompt&#8217;lar\u0131 i\u00e7eren profiller olu\u015fturun ve kullan\u0131c\u0131lar\u0131n bunlar aras\u0131nda ge\u00e7i\u015f yapmas\u0131na izin verin.<\/p>\n<p>Yapay zeka teknolojileri h\u0131zla geli\u015fmeye devam ederken, kendi ki\u015fisel ara\u00e7lar\u0131n\u0131z\u0131 olu\u015fturma ve onlara h\u00fckmetme yetene\u011fi, dijital d\u00fcnyada giderek daha de\u011ferli hale gelmektedir. Bu proje, bu yolculukta \u00f6nemli bir ad\u0131md\u0131r. Kendi botunuzu geli\u015ftirmenin keyfini \u00e7\u0131kar\u0131n!<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma\nGiri\u015f\nYapay zeka teknolojileri, \u00f6zellikle b\u00fcy\u00fck dil mo","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-35607","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#039;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#039;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma\" \/>\n<meta property=\"og:description\" content=\"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#039;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma Giri\u015f Yapay zeka teknolojileri, \u00f6zellikle b\u00fcy\u00fck dil mo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-01T14:40:57+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma\",\"datePublished\":\"2025-12-01T14:40:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\"},\"wordCount\":3408,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\",\"name\":\"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API'leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-01T14:40:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API'leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/","og_locale":"tr_TR","og_type":"article","og_title":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API'leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma","og_description":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API'leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma Giri\u015f Yapay zeka teknolojileri, \u00f6zellikle b\u00fcy\u00fck dil mo","og_url":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-01T14:40:57+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma","datePublished":"2025-12-01T14:40:57+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/"},"wordCount":3408,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/","url":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/","name":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API'leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-01T14:40:57+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kisisel-terminal-chatgpt-botunuzu-python-ve-openai-apileri-ile-insa-etme-ve-dagitma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ki\u015fisel Terminal ChatGPT Botunuzu Python ve OpenAI API&#8217;leri ile \u0130n\u015fa Etme ve Da\u011f\u0131tma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35607"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35607\/revisions"}],"predecessor-version":[{"id":35608,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35607\/revisions\/35608"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}