Kod Üretimi

Kod Üretimi

⚠️

Bu bölüm geliştirme aşamasındadır.

ChatGPT gibi LLM'ler kod üretmede çok etkilidir. Bu bölümde, kod üretmek için ChatGPT'yi nasıl kullanacağımıza dair birçok örnek üzerinde duracağız.

Aşağıdaki tüm örnekler için OpenAI's Playground (Chat Mode) ve gpt-3.5-turbo modeli kullanılır.

OpenAI'nin tüm sohbet modellerinde olduğu gibi, yanıtların davranışını ve formatını tanımlamak için Sistem Mesajı kullanabilirsiniz. İstem örnekleri için aşağıdaki Sistem Mesajı'nı kullanacağız:

Bir junior geliştiriciye nasıl kod yazılacağını öğretebilen yardımcı bir kod asistanısınız. Tercih ettiğiniz dil Python. Kodu açıklamayın, sadece kod bloğunu üretin.

Basit Örnek

Kullanıcı Mesajı, modelin üretmesini istediğiniz belirli kodun talimatı ile birlikte istem olacaktır. Aşağıda, kod üretime yönelik ilk basit istemin bir görüntüsü bulunmaktadır. Son kodun Asistan tarafından üretildiğini unutmayın.

CODE1

Kendi denemeniz için istem:

Kullanıcının ismini soran ve "Merhaba" diyen kodu yazın

Yorumları Kod Haline Getirme

Bu LLM'lerin kod üretme yeteneklerini, sadece yorumlardan kod üretmek için de kullanabilirsiniz. Talimatları yorum bloğu olarak geçiren başka bir örneğe bakalım:

İstem:

"""
1. Bir film listesi oluşturun
2. Bu filmler için bir puan listesi oluşturun
3. Onları, puanlarıyla birlikte 10 filmlik bir json nesnesi yapmak için birleştirin.
"""

Çıktı:

filmler = ["The Shawshank Redemption", "The Godfather", "The Dark Knight", "Schindler's List", "Pulp Fiction", "The Lord of the Rings: The Return of the King", "Forrest Gump", "Star Wars: Episode V - The Empire Strikes Back", "Inception", "The Silence of the Lambs"]
 
puanlar = [9.3, 9.2, 9.0, 8.9, 8.9, 8.9, 8.8, 8.7, 8.7, 8.6]
 
film_puanları = {}
 
for i in range(len(filmler)):
    film_puanları[filmler[i]] = puanlar[i]
 
json_nesnesi = json.dumps(film_puanları, indent=4)
 
print(json_nesnesi)

Üretilen kod, çalışan bir kod gibi görünüyor. Ancak çıktı, önemli bir import ifadesini, yani import json ifadesini içermiyor. Bu modeller, çalışan kod üretirken, bu tür küçük detaylara dikkatli olmanız ve kodunuzu her zaman test etmeniz gerekir.

Fonksiyonları veya Sonraki Satırı Tamamla

LLM'ler, geliştiriciler için yararlı olmalarını sağlayan GitHub Copilot gibi araçlara da dahil edilmiştir. Modelin fonksiyonları tamamlama yeteneği yararlı bir özelliktir.

İstek:

# İki sayıyı çarpan ve sonucuna 75 ekleyen fonksiyon
 
def multiply(

Çıktı:

a, b):
    result = a * b
    result += 75
    return result

MySQL Sorgusu Oluşturma

Yukarıdaki temel kod oluşturma örneğinin yanı sıra, modeli MySQL sorgularını oluşturma ve test etme gibi programlamanın diğer yönlerinde kullanılabilecek kullanışlı kod oluşturmak için de kullanabilirsiniz.

Diyelim ki, bazı bilgilere sahip bir veri setiniz var ve bunları isteğin bir parçası olarak dahil edip belirli bir sorgu oluşturmasını isteyebilirsiniz. Örneğin:

"""
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
Create a MySQL query for all students in the Computer Science department
"""

Output:

SELECT students.StudentId, students.StudentName
FROM students
INNER JOIN departments
ON students.DepartmentId = departments.DepartmentId
WHERE departments.DepartmentName = 'Computer Science';

Model bir sorgu oluşturuyor! Ancak bu örnekte veritabanını biz uydurduk, bu yüzden oluşturulan sorguyu test edecek bir veritabanımız yok. Bu örneği test ediyorsanız, bu veritabanını oluşturmanız yararlı olabilir. Neyse ki, bunu oluşturmak için de ChatGPT'yi kullanabilirsiniz. Bir yaklaşım, bir veritabanı şeması oluşturmak için yukarıdaki isteğin biraz farklı talimatlara sahip modifiye edilmiş bir versiyonunu kullanmaktır:

Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
Create a valid database schema with the above tables and columns

Model aşağıdaki şemayı oluşturdu:

CREATE TABLE departments (
  DepartmentId INT PRIMARY KEY,
  DepartmentName VARCHAR(50)
);

CREATE TABLE students (
  DepartmentId INT,
  StudentId INT PRIMARY KEY,
  StudentName VARCHAR(50),
  FOREIGN KEY (DepartmentId) REFERENCES departments(DepartmentId)
);

Bunu sqliteonline.com (opens in a new tab) gibi bir şey kullanarak geçici bir veritabanı oluşturabilirsiniz.

Ayrıca, orijinal olarak oluşturulan sorgunun geçerli olup olmadığını test etmek için sahte verilere de ihtiyacınız olacak. Bunun için de ChatGPT'yi kullanalım! İstek şöyle bir şey olabilir:

CREATE TABLE departments (
  DepartmentId INT PRIMARY KEY,
  DepartmentName VARCHAR(50)
);

CREATE TABLE students (
  DepartmentId INT,
  StudentId INT PRIMARY KEY,
  StudentName VARCHAR(50),
  FOREIGN KEY (DepartmentId) REFERENCES departments(DepartmentId)
);

Verilen veritabanı şemasıyla, her tablo için 4 satır içeren geçerli ekleme ifadeleri oluşturun.

Ekleme ifadelerini içeren çıktı:

INSERT INTO departments (DepartmentId, DepartmentName)
VALUES (1, 'Computer Science'), (2, 'Mathematics'), (3, 'Physics'), (4, 'Biology');

INSERT INTO students (DepartmentId, StudentId, StudentName)
VALUES (1, 101, 'John Doe'), (1, 102, 'Jane Doe'), (2, 201, 'Alice Smith'), (2, 202, 'Bob Johnson');

Şimdi veritabanınız ve sahte verileriniz var, orijinal sorguyu test edebilirsiniz. Sahte verilere dayanarak, sonuç Jane Doe ve John Doe olan iki satır olmalıdır.

Kod Açıklama

Belirli bir dilde programlamayı öğreniyorsanız, modelin belirli kod parçalarını açıklaması için istem oluşturmak yararlı olabilir. Yukarıda oluşturulan sorguyu kullanalım ve modelden bunu açıklamasını isteyelim.

Daha önceki Sistem Mesajını kullanıyorsanız, modeli nasıl yönlendirdiğinize dikkat edin. Örneğin, aşağıdaki örneği kullanırsak, model bu bir Python kod asistanı olduğunu belirtirken bir açıklama da sağlar. Bazen model, Sistem Mesajını takip etmek üzere tasarlandığı için talep ettiğiniz şeyi oluşturmayı reddeder.

İstem:

SELECT students.StudentId, students.StudentName
FROM students
INNER JOIN departments
ON students.DepartmentId = departments.DepartmentId
WHERE departments.DepartmentName = 'Computer Science';

Yukarıdaki SQL ifadesini açıklayın.

Çıktı:

Üzgünüm, bir Python kod asistanı olarak, SQL kodu oluşturamam. Ancak, sağlanan SQL ifadesinin amacını açıklayabilirim. 

Bu SQL ifadesi, `departments` tablosundaki `DepartmentName` sütunun 'Computer Science' eşit olduğu durumlarda `students` tablosundan `StudentId` ve `StudentName` sütunlarını seçer. Bunu başarmak için, ifade `students` ve `departments` tabloları arasında `DepartmentId` sütunu üzerinde bir iç birleştirme gerçekleştirir. 

Daha basit bir dille ifade edecek olursak, Bilgisayar Bilimleri bölümüne kayıtlı olan öğrencilerin isimlerini ve ID'lerini seçer.

Kodu Düzenleme

Örnek yakında gelecek!

Kodu Hata Ayıklama

Örnek yakında gelecek!

En İyi Uygulamalar

Yakında geliyor!