IBM Bob ile yapay zeka eşli programlama
Gereksinimlerden bir plana, üretilen koda, testlere ve belgelere kadar bir FastAPI Yapılacaklar API'si oluşturmak için Bob'u yapay zeka eşli programlama asistanı olarak kullan.
Yapay zeka eşli programlamada, yalnızca satır tamamlayan bir asistan yerine her aşamada — planlama, kodlama, test etme ve belgeleme — sana yardım eden bir asistanla birlikte yazılım geliştirirsin. Bu öğreticide, bir dizi gereksinimden yola çıkarak IBM Bob ile birlikte bir FastAPI Yapılacaklar API'si oluşturuyorsun.
Gereksinimlerden başlar, gözden geçirilmiş bir plan, üretilen kod, uygulamanın açıklaması, kod kalitesi iyileştirmeleri, birim testleri ve teknik belgeler aşamalarından geçersin. Veri deposu, bellekte tutulan bir Python listesidir; bu nedenle kurulacak bir veritabanı yoktur.
Öğreticinin sonunda, her aşamada Bob ile eşli çalışarak ve her değişikliği uygulamadan önce inceleyerek çalışır durumda, container içinde bir Yapılacaklar API'si oluşturmuş olacaksın.
Bu öğretici, temel Python ve REST kavramlarını bilen ve bir yapay zeka asistanıyla yazılım geliştirmek için tekrarlanabilir bir inceleme döngüsü isteyen geliştiriciler içindir. FastAPI deneyimine gerek yoktur.
Bu öğretici, yeni bir projede uçtan uca tam derleme döngüsünü kapsar. Mevcut bir kod tabanında büyük bir özelliği planlama ve uygulama konusunda daha derine inmek için bkz. Karmaşık özellikleri planlama ve uygulama.
Ön koşullar
Bu öğreticiyi tamamlamak için aşağıdakilere ihtiyacın var:
- Bob IDE kurulmuş ve yapılandırılmış olmalı.
- Yorumlardan kod üretmek için literate coding kullanımı konusunda temel bilgi sahibi olmalısın.
- Bob'un bağlamını bu çok adımlı iş akışında yönetebilmek için Yeni bir bağlam penceresi oluşturma tamamlanmış olmalı.
- Docker iş istasyonunda kurulu ve çalışır durumda olmalı. Bob, Python'u veya bağımlılıklarını yerel olarak kurmadan API'yi bir container içinde oluşturup çalıştırabilmen için bir Dockerfile üretiyor.
- Temel Python bilgisi.
- REST API'leri hakkında temel anlayış. Önceden FastAPI deneyimine gerek yok. Bob FastAPI kodunu üretiyor ve iş akışının bir parçası olarak istek üzerine açıklıyor.
Bob ile yapay zeka eşli programlamayı anlamak
Aşağıdaki her aşama planlama, üretim, açıklama, yeniden düzenleme, test ve belgeleme konularını kapsar. Her aşamada Bob değişiklikler önerir ve sen Bob bunları uygulamadan önce onaylarsın, reddedersin ya da revize edersin.
Eşli programlama iş akışı
Bu öğretici aşağıdaki iş akışını kullanır:
Requirements
↓
Bob creates a plan
↓
You review and refine the plan
↓
Bob generates code
↓
You review the output
↓
Run and validate
↓
Bob explains the implementation
↓
Bob suggests code-quality improvements
↓
Generate tests
↓
Generate documentationÇalışma alanını hazırla
Bob'u başlat, boş bir proje klasörü aç ve Bob'u dosyaları değiştirmeden önce onay istemesi için yapılandır.
IBM Bob'u başlat
IBM Bob IDE'yi başlat.
Bob sohbet arayüzünü aç
Bob sohbet arayüzü görünmüyorsa, gezinti çubuğunun yanındaki Bob simgesini seçerek açabilirsin. Mac'te Option + Command + B, Windows ve Linux'ta ise Ctrl + Alt + B tuşlarına da basabilirsin.

Boş bir proje klasörü aç
todo-api adında boş bir klasör oluştur, ardından File > Open Folder ile Bob'da aç. Bob, klasördeki dosyaların yazarlarına güvenip güvenmediğini sorarsa Yes, I trust the authors seçeneğini seç.
Bob, üretilen uygulamayı bu klasöre yazar. Bu öğretici için mevcut bir repository'ye gerek yoktur.
Otomatik onayı devre dışı bırak
Permissions bölümünü aç ve otomatik onayın kapalı olduğunu doğrula. Otomatik onay kapalıyken Bob, dosyaları okumadan, düzenlemeden veya komut çalıştırmadan önce iznini ister. Bu öğreticide her değişikliği senin kontrolünde tutarsın.
Gereksinimleri ve planı tanımla
Bob'a Yapılacaklar API'sinin gereksinimlerini ver, ardından Bob herhangi bir kod yazmadan önce önerdiği planı incele.
Plan moduna geç
Bob kenar çubuğunun altındaki mod açılır menüsünü açıp Plan seçeneğini seç.

Modlar en az ayrıcalık ilkesini uygular. Plan modunda Bob, kodunu okur ve bir Markdown planı yazar. Bob komut çalıştırmaz veya uygulama değişikliği yapmaz. Bob herhangi bir uygulama kodu yazmadan önce yaklaşımı gözden geçirirsin.
Uygulama gereksinimlerini tanımla
Bob sohbet arayüzüne aşağıdaki istemi gir:
Create a simple FastAPI To-Do API.
Requirements:
- Store tasks in a Python list.
- Each task should contain:
- id
- task_name
Implement these endpoints with explicit HTTP status codes:
- GET /tasks: list all tasks. Return 200.
- POST /tasks: create a task from a JSON body containing only task_name. Return 201 with the created task.
- DELETE /tasks/{task_id}: delete a task. Return 204 on success and 404 if no task has that id.
Use FastAPI and Pydantic. Use Pydantic model validation so an invalid request body returns 422.
Include a requirements.txt and a Dockerfile. The Dockerfile must start Uvicorn bound to 0.0.0.0 on port 8000 so the API is reachable through a published container port.
Save the plan as Markdown files in a folder named `plans`.
Put the FastAPI application in a single file named `main.py` at the project root.
Keep the implementation simple.
Don't install any dependencies locally or run local tests. Everything will run in a Docker container.Planı oluşturmak için Bob planlama skill'ini çalıştırır. İstendiğinde Approve skill tools for task ve Approve subagent tools for task seçeneklerini seç; böylece Bob çalışma alanını araştırıp planı taslak haline getirebilir.
Planı iyileştir
Bob herhangi bir kod yazmadan önce planı değiştirebilirsin. Bob sohbet arayüzüne takip istemi gir:
Update the plan to reject a task whose task_name is empty or longer than 200 characters.Bob, ekstra giriş doğrulamasını içerecek şekilde planı revize eder. Güncellenmiş planı incele.
Planı incele
Bob sıralı bir plan sunar ve bunu projede Markdown dosyası olarak kaydedebilir. Devam etmeden önce incele:
- Kapsam: Plan, eklediğin doğrulama kuralı dahil tüm endpoint'leri kapsamalı ve istemediğin hiçbir şeyi içermemelidir.
- Adlandırılmış dosyalar: Her adım, oluşturduğu veya değiştirdiği dosyayı adıyla belirtmelidir.
- Belirsiz ifadeler: "Hataları uygun şekilde yönet" gibi ifadeler varsayımları gizler. Bob'dan bunları somut hale getirmesini iste.
Bu tasarım kararlarından sen sorumlusun. Bob, Uygulamayı üret ve incele bölümünde Agent moduna geçene kadar hiçbir şey uygulamaz.
Uygulamayı üret ve incele
Yeni bir bağlam penceresi başlat, Agent moduna geç ve Bob'un onaylanan planı uygulamasını sağla.
Yeni bir bağlam penceresi başlat
Yeni bir bağlam penceresi başlatmak için sohbet kutusundaki New task veya sohbet panelinin üstündeki + seçeneğini seç. Arka plan için Yeni bir bağlam penceresi oluşturma sayfasına bakabilirsin. Bob planı plans klasörüne kaydettiğinden artık planlama konuşmasına bağlamda ihtiyacın yok. Temiz bir bağlam, uygulamanın onaylanan plana odaklanmasını sağlar.
Agent moduna geç ve planı çalıştır
Bob kenar çubuğunun altındaki mod açılır menüsünü açıp Agent seçeneğini seç. Ardından Bob'a planı uygulamasını söyle:
Implement the plan in the plans folder.
@plans/Agent modu, Bob'un dosya yazmasına ve komut çalıştırmasına izin verir. Otomatik onayı devre dışı bıraktığın için Bob, her değişiklikten önce onay ister. Bob plan üzerinde çalışırken adımları onayla.
Üretilen uygulamayı incele
Uygulama tamamlandığında üretilen kodu incele. Bob'un çıktısı olasılıksal olduğundan, kod stili ve iç adlar buradaki örneklerden farklı olabilir. Uygulama aşağıdaki parçalardan oluşur.
Veri modelleri. Bob iki Pydantic modeli üretir: biri görev oluştururken istek gövdesi için, diğeri depolanan bir görev için. Oluşturma modeli, planlama sırasında eklediğin uzunluk kuralını uygular:
class TaskCreate(BaseModel):
task_name: Annotated[str, Field(min_length=1, max_length=200)]
class Task(BaseModel):
id: int
task_name: strEndpoint yolları ve durum kodları Bob'a verdiğin gereksinimlere uyar; ancak model sınıf adları ve dosya düzeni değişkenlik gösterebilir. Bu öğretici Task ve TaskCreate modellerini varsayar. Bob farklı adlar seçtiyse takip eden istemleri buna göre düzenle.
Bellek içi veri deposu. Bob, görevleri boş bir Python listesinde depolar ve her yeni göreve artan bir id atar:
tasks: list[dict] = []
id_counter = 0API işlemleri. Uygulama aşağıdaki endpoint'leri sağlar:
GET /tasksPOST /tasksDELETE /tasks/{task_id}
POST /tasks yalnızca istek gövdesinde task_name alır ve oluşturulan görevle birlikte 201 döner. DELETE /tasks/{task_id} başarıda 204, o task_id'ye sahip görev yoksa 404 döner.
Bağımlılıklar. Bob, FastAPI, Uvicorn ve Pydantic'i listeleyen bir requirements.txt dosyası üretir.
Container. Bob, bağımlılıkları kuran ve API'yi Uvicorn ile 8000 portunda çalıştıran bir Dockerfile üretir.
HTTP kontratı, yöntemler, yollar ve durum kodları dahil olmak üzere gereksinimlerin istemine uyar. Aşağıdaki doğrulama adımları olduğu gibi uygulanır.
Literate coding ile endpoint ekle
Sohbet penceresine geçmeden, doğrudan editördeki doğal dil talimatından bir güncelleme endpoint'i eklemek için literate coding modunu kullan.
Literate coding modu, doğrudan editöre yazılan doğal dil talimatlarından kod üretir.
Uygulama dosyasını aç
Bob'un ürettiği main.py dosyasını aç ve imlecini dosyanın sonundaki boş bir satıra, son route handler'ının ardına yerleştir.
Literate coding modunu etkinleştir
Mac'te Command + I, Windows ve Linux'ta ise Ctrl + I tuşlarına bas. Editör araç çubuğundaki sihirli değnek simgesini de seçebilirsin.
Talimatı yaz
Boş satıra aşağıdaki talimatı gir. Kodun geri kalanından farklı bir renkte vurgulanmış olarak görünür.
Add a PUT /tasks/{task_id} endpoint that updates the task_name of an existing task, matching the style and conventions of the existing routes. Return 200 with the updated task, or 404 if no task has that id.Bob, parametre adını, istek modelini ve hata yönetimini çevreleyen koddan çıkarır; bu nedenle yalnızca yöntemi ve yolu belirtmen yeterlidir.
Kodu üret ve kabul et
Generate seçeneğini seç ya da Mac'te Command + Enter, Windows ve Linux'ta ise Ctrl + Enter tuşlarına bas. Bob, talimatını bir uygulamayla değiştirir ve satır içi bir diff gösterir.
Diff'i incele, ardından değişikliği uygulamak için Accept All seçeneğini seç. Literate coding modundan çıkmak için Mac'te Command + I, Windows ve Linux'ta ise Ctrl + I tuşlarına tekrar bas.
Açıkla, çalıştır ve doğrula
Bob'dan uygulamayı açıklamasını iste, ardından uygulamayı çalıştır ve davranışını doğrula.
Bob'dan kodu açıklamasını iste
New task ile yeni bir bağlam penceresi başlat, ardından mod açılır menüsünden Ask seçeneğini seç. Ask modu, dosyaları düzenlemeden soruları yanıtlar ve kodu analiz eder. Değişiklik yapmadan açıklama istediğinde kullan.
Üretilen kodu anlamak, yapay zeka eşli programlamanın önemli bir parçasıdır. Bob'a sor:
Explain the generated To-Do API.Bob, uygulama mimarisini, veri akışını, FastAPI bileşenlerini, Pydantic modellerini, endpoint davranışını ve tasarım kararlarını açıklayabilir. Kodu değiştirmeden veya genişletmeden önce beklediğin gibi çalıştığını doğrulamak için açıklamayı kullan.
Uygulamayı çalıştır
Bob'un komut çalıştırabilmesi için Agent moduna geri dön. Bob'dan API'yi bir container içinde derleyip çalıştırmasını iste:
Build the Docker image and run the container with port 8000 mapped to the host. Confirm the API is reachable.Bob, derleme ve başlatma komutlarını çalıştırır ve container çalışmaya başladığında bildirir.
Tarayıcında http://localhost:8000/docs adresini aç.
FastAPI, /docs adresinde etkileşimli bir Swagger UI sunar. Her endpoint'i keşfetmek, istek ve yanıt şemalarını incelemek ve tarayıcıdan API çağrıları yapmak için bunu kullanabilirsin.
API'yi doğrula
Her işlemi test etmek için /docs adresindeki Swagger UI'yi kullan. Her endpoint için:
- Satırını genişlet ve Try it out seçeneğini seç.
- Path parametrelerini veya istek gövdesini gir.
- Execute seçeneğini seç.
- Server response kodunu ve gövdesini kontrol et.
Görev ekle
-
POST /tasks'ı genişlet ve Try it out seçeneğini seç.
-
İstek gövdesini şununla değiştir:
{ "task_name": "My first API item!" } -
Execute seçeneğini seç. Yanıt kodunun
201olduğunu ve yanıt gövdesinin atanmış biridile oluşturulan görevi gösterdiğini doğrula.
Görevleri al
- GET /tasks'ı genişlet ve Try it out seçeneğini seç.
- Execute seçeneğini seç. Yanıt kodunun
200olduğunu ve yanıt gövdesinin, eklendiğinde atananidile birlikteMy first API item!görevini listelediğini doğrula.
Görevi güncelle
-
PUT /tasks/{task_id}'yi genişlet ve Try it out seçeneğini seç. -
Oluşturduğun görevin
task_id'sini gir. -
İstek gövdesini şununla değiştir:
{ "task_name": "Build and ship a To-Do API" } -
Execute seçeneğini seç. Yanıt kodunun
200olduğunu ve dönen görevin güncellenmiştask_name'i gösterdiğini doğrula. -
task_id'yi var olmayan bir değere değiştir ve Execute'u tekrar seç. Yanıt kodunun404olduğunu doğrula.
Görevi sil
DELETE /tasks/{task_id}'yi genişlet ve Try it out seçeneğini seç.- Oluşturduğun görevin
task_id'sini gir ve Execute seçeneğini seç. Yanıt kodunun204olduğunu doğrula. - GET /tasks'ı genişlet, Execute seçeneğini seç ve görevin artık yanıtta görünmediğini doğrula.
DELETE /tasks/{task_id}'yi tekrar genişlet, aynıtask_id'yi gir ve Execute seçeneğini seç. Yanıt kodunun404olduğunu doğrula.
Uygulama, literate coding ile eklediğin güncelleme endpoint'i dahil olmak üzere orijinal gereksinimleri karşılar.
Kod kalitesini iyileştir
Bob'dan üretilen kodu kalite sorunları açısından incelemesini iste, ardından katıldığın değişiklikleri uygula. Bu adım, Bob'u yalnızca kod üreticisi olarak değil, bir inceleyici olarak kullanır.
Bob'dan iyileştirme önerileri iste
New task ile yeni bir bağlam penceresi başlat, ardından şunu gir:
Review the To-Do API and suggest improvements to code quality, error handling, and HTTP status codes.Bob, tek bir görevi almak için eksik bir endpoint, doğrulanmış Task modelleri yerine düz sözlükler tutan bir bellek içi depo ve sıfırlanması veya test edilmesi zor olan modül düzeyinde bir id_counter gibi eksiklikleri tanımlar.
İyileştirmeleri uygula
Bob'dan saklamak istediğin önerileri uygulamasını iste:
Add a GET /tasks/{task_id} endpoint that returns 404 when the task ID does not exist, and store tasks as Task models instead of dictionaries.Önerilen değişiklikleri incele ve uygulamak için onayla. Bob'dan imajı yeniden oluşturmasını ve container'ı yeniden başlatmasını iste, ardından doğrulama adımlarını tekrarla. Geçerli bir ID için GET /tasks/{task_id}'nin 200 ve görev ile, bilinmeyen bir ID için 404 döndürdüğünü, ve mevcut endpoint'lerin önceki gibi davrandığını doğrula.
Test ve belge üret
Bob'dan API için bir test paketi ve teknik belgeler üretmesini iste.
Birim testleri üret
New task ile yeni bir bağlam penceresi başlat, ardından Bob'a sor:
Generate pytest unit tests for this application. Add pytest and httpx to a dev requirements file, build a test image, and run the suite in a container.Bob, pytest ve httpx test bağımlılıklarını ekler, bunları içeren bir imaj oluşturur, paketi bir container içinde çalıştırır ve sonuçları raporlar. Testleri bir container içinde çalıştırmak, yerel bir Python ortamına ihtiyacın olmadığı anlamına gelir. Üretilen testleri incele ve geliştir.
Üretilen testlerin incelenmesi ve bakımı senin sorumluluğundadır.
Teknik belgeler üret
Bob'a sor:
Generate technical documentation for this To-Do API.Bob, uygulama genel bakışı, mimari açıklama, endpoint özetleri, istek ve yanıt örnekleri ve kullanım talimatları üretebilir. Bu belgeler, FastAPI'nin otomatik olarak ürettiği API belgelerini tamamlar.
Sorun giderme
Sık karşılaşılan sorunlar için aşağıdaki çözümleri kullan:
- Docker daemon'a bağlanılamıyor: İmajı oluşturmadan önce Docker Desktop'ı veya Docker servisini başlat.
- Container başlatılıyor ancak
http://localhost:8000/docsyüklenmiyor: Dockerfile, container içinde API'yi127.0.0.1'e bağlıyor; bu durumda yayınlanan port erişilemiyor olur. Dockerfile'ın Uvicorn'ı--host 0.0.0.0ile başlattığından emin ol, ardından imajı yeniden oluştur. - 0.0.0.0:8000 için bağlama başarısız oldu: port zaten kullanımda:
8000portunu kullanan işlemi durdur veyadocker run -d --name todo-api -p 8080:8000 todo-apiile başka bir host portunu eşle vehttp://localhost:8080/docsadresini aç. - "/todo-api" container adı zaten kullanımda:
docker rm -f todo-apikomutunu çalıştır, ardından container'ı yeniden başlat. - Testler çalışırken pytest eksik: Uygulama imajı test bağımlılıklarını içermiyor. Bob'dan
pytestvehttpx'i bir geliştirici gereksinimler dosyasına eklemesini ve ayrı bir test imajı oluşturmasını iste.
Temizlik
8000 portunu serbest bırakmak için container'ı durdurup kaldır:
Stop and remove the To-Do API and test container and image.API görevleri yalnızca bellekte tutar; bu nedenle container kaldırıldığında tüm veriler silinir. Başka bir temizliğe gerek yoktur.
Sonraki adımlar
Bu öğreticide, her aşamada Bob ile eşli çalışarak ve her değişikliği uygulamadan önce inceleyerek bir FastAPI Yapılacaklar API'si oluşturup doğruladın.
- Daha büyük, çok katmanlı değişiklikleri kapsamlandırmak için Karmaşık özellikleri planlama ve uygulama bölümüne geç.
- Üretilen kodu editörünüzden bir pull request'e taşımak için Commit ve pull request oluşturma bölümünü keşfet.
SSS
FastAPI bilmem gerekiyor mu? Hayır. Bob, FastAPI ve Pydantic kodunu üretir ve istek üzerine açıklar. Temel Python ve REST bilgisi yeterlidir.
Neden aşamalar arasında mod değiştiriyoruz? Modlar en az ayrıcalık ilkesini uygular. Plan modu kodu okur ve plan yazar, ancak hiçbir şey çalıştırmaz; Agent modu dosya düzenleyebilir ve komut çalıştırabilir; Ask modu dosyaları değiştirmeden soruları yanıtlar. Mod değiştirmek, Bob'un yeteneklerini o anki göreve uygun tutar.
Bob dosyaları veya modelleri farklı adlandırırsa ne olur?
HTTP kontratı, gereksinimlerin istemi tarafından sabitlendiğinden yollar ve durum kodları uyuşur. Sınıf adları ve dosya düzeni değişkenlik gösterebilir. Bu öğretici Task ve TaskCreate modellerini varsayar; Bob farklı adlar seçtiyse sonraki istemleri buna göre düzenle.
Neden her aşamada yeni bir bağlam penceresi başlatıyoruz?
Bob planı plans klasörüne kaydettiğinden önceki konuşmaya artık bağlamda ihtiyaç duyulmaz. Temiz bir bağlam, her aşamanın odaklı kalmasını sağlar ve token maliyetini kontrol altında tutar.
Docker olmadan yapabilir miyim? Bu öğreticiyi Docker olmadan teknik olarak yapabilirsin, ancak Bob'a verdiğin planı ve istemleri düzenlemen gerekir.
Plan modu dosyaları değiştirir mi? Hayır. Plan modunda Bob yalnızca kodunu okur ve bir Markdown planı yazar. Agent moduna geçene kadar uygulama kodunda hiçbir değişiklik yapılmaz.