Berita Membuka Kekuatan Pengembangan Berbasis AI dengan SudoLang – O'Reilly

gomerdeka

Berita Membuka Kekuatan Pengembangan Berbasis AI dengan SudoLang – O'Reilly

Karena AI terus berkembang dengan pesat, para pengembang semakin beralih ke pengembangan berbasis AI (AIDD) untuk membangun aplikasi yang lebih cerdas dan adaptif. Namun, menggunakan perintah bahasa alami untuk menggambarkan perilaku kompleks pada AI dapat menjadi tantangan nyata. Meskipun bahasa alami bersifat ekspresif, bahasa alami tidak memiliki struktur dan efisiensi yang dibutuhkan untuk mengomunikasikan instruksi rumit dengan jelas dan mempertahankan status kompleks.

Salah satu masalah terbesar dengan perintah bahasa alami adalah kurangnya enkapsulasi dan penggambaran instruksi terkait yang jelas. Tidak seperti kode sumber, yang menggunakan elemen seperti kurung kurawal dan indentasi untuk mengelompokkan dan mengatur blok kode, perintah bahasa alami dapat dengan cepat berubah menjadi dinding teks yang sulit dibaca dan dikelola. Kurangnya struktur ini membuat AI lebih sulit memahami dan mengikuti instruksi yang dimaksud secara akurat.

Bahasa alami tidak selalu menjadi cara yang paling efisien untuk merepresentasikan instruksi yang kompleks. Model bahasa dapat mengalami “sparse attention,” di mana kapasitas perhatian model ditekankan saat konteks input bertambah. Hal ini dapat menyebabkan AI lupa atau salah menafsirkan informasi penting dalam prompt, terutama di tengah input, sebuah fenomena yang dikenal sebagai masalah “Lost in the Middle” (Liu dkk., 2023). Akibatnya, AI mungkin kesulitan mematuhi instruksi yang dimaksudkan, sehingga menghasilkan keluaran yang salah.

Untuk mengatasi keterbatasan ini dan membuka potensi penuh AIDD, kita memerlukan pendekatan yang lebih terstruktur terhadap komunikasi AI. Di sinilah pseudocode prompting dan bahasa pemrograman SudoLang berperan.

Prompting Pseudocode dan SudoLang: Solusi untuk Pengembangan Berbasis AI

Perintah pseudocode adalah teknik yang menggabungkan ekspresi bahasa alami dengan struktur dan ketepatan konsep pemrograman. Dengan menggunakan sintaksis seperti pseudocode, pengembang dapat memberikan petunjuk kontekstual kepada AI, membimbingnya untuk memahami dan mengikuti instruksi dengan lebih akurat.

Model bahasa berperilaku seperti pemain peran, dan semua hal dalam perintah Anda digunakan sebagai konteks dan konotasi bagi AI untuk mendasari responsnya. Model bahasa besar (LLM) dilatih pada kode, dan mereka memahami bahwa itu adalah bahasa yang digunakan untuk menginstruksikan komputer secara terperinci dan tepat. Karena itu, melihat hal-hal yang tampak seperti kode membawa konotasi bahwa ia harus berpikir dengan hati-hati tentang konten tersebut. Ini memicu pemikiran yang ditingkatkan, pelacakan status, dan penalaran dalam model bahasa. Makalah “Prompting with Pseudocode Instructions” (Mishra dkk., 2023) menunjukkan bahwa perintah pseudocode menghasilkan peningkatan skor respons sebesar 12%–38%.

Salah satu manfaat utama dari perintah pseudocode adalah kemampuannya untuk secara efisien merepresentasikan instruksi yang kompleks. Dengan menggunakan konstruksi pemrograman seperti batasan, antarmuka, dan fungsi, pseudocode dapat mengekspresikan logika dan algoritma yang rumit dengan cara yang ringkas, mudah dibaca, dan ekspresif. Hal ini tidak hanya mengurangi jumlah token perintah, yang menghemat uang dan waktu, tetapi juga memudahkan AI untuk memahami dan mengeksekusi perilaku yang diinginkan.

SudoLang, bahasa pemrograman yang secara khusus dirancang, ditemukan, dan dikurasi dengan bantuan GPT-4 untuk mengomunikasikan ide dan program yang kompleks dengan AI, membawa perintah pseudocode ke tingkat berikutnya. Saya katakan dirancang, ditemukan, dan dikurasi karena, meskipun beberapa desain cerdas digunakan dalam SudoLang, upaya sebenarnya dilakukan untuk menemukan dan menguji pemahaman pseudocode yang melekat dalam model bahasa, dengan mengkurasi fitur dan konsep umum dari bahasa yang ada—baik bahasa pemrograman maupun bahasa alami. Faktanya, semua model bahasa besar yang cukup maju sudah mengenal SudoLang—itu selalu ada di ruang laten. Kami hanya mengungkapnya, mengkurasi fitur, dan mendokumentasikannya.

SudoLang adalah bahasa multiparadigma yang memiliki fitur pemrograman berbasis kendala bahasa alami yang terinspirasi oleh Sketchpad karya Ivan Sutherland. Sketchpad adalah bahasa pemrograman grafis yang memungkinkan pengguna untuk memilih beberapa elemen pada kanvas menggunakan interaksi layar langsung dengan pena cahaya. Misalnya, Anda dapat memilih dua garis, membatasinya agar sejajar, lalu mengubah satu garis akan menyebabkan pemecah kendala aktif dan memperbarui garis lainnya untuk mempertahankan kendala paralel. Kendala adalah konsep yang hebat dalam SudoLang, yang memungkinkan pengembang untuk menentukan perilaku dan hubungan yang diinginkan antara entitas dengan cara deklaratif.

Batasan dalam SudoLang ditulis dalam bahasa alami dan dapat berupa panduan positif atau elemen yang harus dihindari. Batasan tersebut dapat berupa aksioma matematika formal atau instruksi aneh untuk chatbot anak anjing yang suka bermain. SudoLang adalah bahasa deklaratif, yang berarti Anda harus memfokuskan batasan pada apa yang Anda inginkan daripada menuliskan instruksi terperinci tentang cara melakukannya. AI biasanya cukup pintar untuk mencari tahu “bagaimana” untuk Anda, dan kemampuan itu akan menghemat banyak pekerjaan, waktu, token, dan uang Anda.

Dengan SudoLang, pengembang dapat menentukan batasan yang akan terus dipecahkan oleh AI, memastikan bahwa status terkait tetap sinkron dan konsisten. Misalnya, Anda dapat menentukan bahwa nilai terhitung harus selalu diperbarui setiap kali variabel kunci berubah. Batasan juga menyediakan cara untuk memandu perilaku AI, seperti memberinya kepribadian tertentu atau menyesuaikan outputnya untuk audiens target tertentu.

Desain berorientasi antarmuka SudoLang adalah fitur utama lain yang membedakannya. Pengembang dapat dengan jelas dan ringkas mendefinisikan struktur data dan operasi menggunakan antarmuka yang diketik. Sementara sebagian besar tipe dapat disimpulkan, SudoLang memungkinkan deklarasi tipe eksplisit saat dibutuhkan, dan semua tipe bahasa pemrograman umum didukung. Pendekatan berbasis antarmuka ini mempromosikan modularitas dan penggunaan ulang, sehingga lebih mudah untuk membangun dan memelihara aplikasi berbasis AI yang kompleks.

Komposisi merupakan kekuatan lain dari SudoLang. Bahasa ini mendukung fungsi, komposisi fungsi, dan komposisi antarmuka, yang memungkinkan pengembang untuk membuat program yang kompleks dengan menggabungkan komponen yang lebih sederhana dan independen. Komposisi fungsi memungkinkan Anda untuk menggabungkan serangkaian fungsi satu demi satu untuk membentuk fungsi baru yang lebih kompleks. Definisi aljabar dari komposisi fungsi adalah: (f ∘ g)(x) = f(g(x)) (sering diucapkan “f setelah g“).

Di SudoLang, Anda dapat menulis ini sebagai g |> f—yang artinya: terapkan fungsi tersebut g ke nilai yang diberikan, lalu terapkan fungsinya f ke keluaran gMenyusun antarmuka juga mudah:

// Some interfaces to compose:
Character {
  name: ""
  health: 1..10 // ".." is the range operator in SudoLang
  strength: 1..10
  speed: 1..10
}

Objective {
  name
  description
  status: ready | started | finished
}

Quest {
  name
  description
  objectives: []
}

// The following composes all of the above interfaces together:
Player {
  // The `...` here is the spread operator. It will mix
  // all the properties of "character" into the top level
  // of the player object, so instead of player.character.health
  // we get a direct reference to player.health.
  ...character // include the properties of "character"
  quests: []
}

Mari kita lihat bagaimana model bahasa dapat menginterpretasikan dan mengeksekusi skenario petualangan teks menggunakan SudoLang. Contoh ini didasarkan pada interaksi dengan Claude 3.5 Sonnet milik Anthropic:

Village Elder: "Greetings, brave adventurer. Our village is in dire need of ancient wisdom. In the grand library to the east, there lies a scroll of immense power. I task you with retrieving this scroll and bringing it back to me. Will you accept this quest?"


Player: I accept the quest, Elder.


Village Elder: "Excellent! The scroll is said to be hidden in the deepest chamber of the library. Be cautious, for the path may be treacherous. Return to me once you have the scroll in your possession."


Your quest log updates:

Quests:
  - name: Retrieve the Ancient Scroll
    description: Fetch an old scroll from the ancient library and return it to the village elder.
    objectives:
      - name: Fetch the scroll
        description: Find and retrieve the ancient scroll from the library.
        status: started
      - name: Return to the elder
        description: Bring the scroll back to the village elder.
        status: ready

[Time passes as the player journeys to the ancient library and navigates its chambers…]

You enter a dimly lit chamber deep within the library. Dust motes dance in the air as your torch illuminates rows upon rows of ancient texts. In the center of the room, atop a weathered stone pedestal, you spot a scroll emanating a faint, ethereal glow.


Player: I carefully approach the pedestal and take the glowing scroll.


As your fingers touch the parchment, you feel a surge of energy course through your body. The scroll's glow intensifies for a moment before settling into a steady, warm light. You've found the ancient scroll the elder spoke of!


You have a new item: Ancient Scroll

Your quest log updates:
Player:
name: Adventurer
inventory:
- Ancient Scroll
quests:
- name: Retrieve the Ancient Scroll
description: Fetch an old scroll from the ancient library and return it to the village elder.
objectives:
- name: Fetch the scroll
description: Find and retrieve the ancient scroll from the library.
status: finished
- name: Return to the elder
description: Bring the scroll back to the village elder.
status: started

Contoh ini menunjukkan bagaimana SudoLang dapat digunakan untuk menciptakan interaksi dinamis yang sadar status dalam permainan petualangan teks. AI menafsirkan tindakan pemain, memperbarui status permainan yang sesuai, dan memberikan respons yang sesuai serta pembaruan log pencarian, mematuhi batasan yang diberikan dan menghargai antarmuka yang telah kami tetapkan.

Di SudoLang, semakin Anda dapat mengandalkan kemampuan AI untuk menyimpulkan maksud Anda, semakin baik, jadi kita biasanya tidak perlu menggunakan fitur seperti perulangan dan percabangan, tetapi perlu dicatat bahwa SudoLang memang menyertakan konstruksi perulangan dan percabangan, meskipun tanpa semua kekacauan sintaksis dan referensi yang tepat serta definisi fungsi yang dibutuhkan sebagian besar bahasa pemrograman. Misalnya, perulangan dapat dinyatakan sebagai:

for each user, send update email

Konstruksi ini memungkinkan AI untuk menangani detail implementasi. Jika Anda memandunya dengan batasan yang tepat, AI bahkan dapat menyesuaikan setiap email berdasarkan preferensi pengguna atau aktivitas terkini, yang menunjukkan bagaimana SudoLang dapat menghasilkan hasil yang lebih canggih dan lebih personal dibandingkan dengan pendekatan pemrograman tradisional.

Demikian pula, ada konstruksi percabangan. AI merespons dengan baik terhadap “if” dan “else,” tetapi Anda juga dapat menggunakan pemahaman model bahasa tentang semantik dan bahasa alami untuk melakukan pencocokan pola semantikmisalnya:

if the player dies, extract the penalty for dying and respawn in the nearest safe location

Namun jika Anda bermain golf token (mencoba mengurangi jumlah token untuk mengoptimalkan biaya dan kinerja), ini mungkin juga berhasil:

(player died) => extract penalty, respawn

Dengan lebih menekankan inferensi dan memperkenalkan sedikit sintaksis dalam kasus ini, jumlah token pada GPT-4 berkurang dari 17 menjadi 8.

Pencocokan pola adalah fitur hebat yang terinspirasi oleh bahasa seperti Haskell, Elixir, Rust, Scala, F#, dan seterusnya.

Inti dasar dalam bahasa pemrograman tradisional mungkin terlihat seperti ini:

// Non-standard, hypothetical pattern matching syntax in JavaScript
function area(shape) {
  return match (shape) => {
    ({ type: "circle", radius }) => Math.PI * Math.pow(radius, 2);
    ({ type: "rectangle", width, height }) => width * height;
    ({ type: "triangle", base, height }) => 0.5 * base * height;
  }
}

console.log(area({ type: "rectangle", width: 4, height: 5 })); // 20

Perlu dicatat bahwa dalam SudoLang, Anda tidak perlu menentukan bentuk atau propertinya, karena AI dapat menyimpulkannya dari konteks. Dalam SudoLang, fungsi tersebut tidak memerlukan pencocokan pola yang eksplisit dan mungkin akan lebih terlihat seperti:

function area(shape) => Number

Salah satu aspek SudoLang yang paling hebat adalah kemampuannya untuk memanfaatkan sifat inferensi omnireferensial dari LLM. LLM dilatih pada sejumlah besar pengetahuan manusia yang tersedia di internet, sehingga memungkinkan mereka untuk memahami berbagai domain. SudoLang memanfaatkan hal ini dengan memungkinkan pengembang untuk mendefinisikan fungsi tanpa harus selalu memberikan detail implementasi.

Dalam banyak kasus, AI dapat menyimpulkan apa yang seharusnya dilakukan suatu fungsi berdasarkan konteks program dan nama fungsi itu sendiri. Hal ini dapat dikatakan menjadikan SudoLang sebagai bahasa pemrograman dengan pustaka standar terbesar, karena dapat memanfaatkan pemahaman bahasa alami AI yang luas untuk menyimpulkan fungsionalitas di berbagai domain.

Saya sering menggunakan welcome() sebagai inisialisasi saya untuk menginstruksikan AI cara memulai, tanpa mendefinisikan apa welcome() harus berarti. Sangat sering, jika Anda menyediakan pembukaan dan antarmuka utama yang baik dengan perintah, welcome() akan melakukan hal yang benar tanpa memerlukan instruksi tambahan.

Perintah atau fungsi lain yang berfungsi meliputi fungsi pustaka standar dari bahasa pemrograman umum, banyak fungsi dari Lodash atau RxJS JavaScript yang berfungsi, misalnya. sort(list) |> take(3) akan mengurutkan daftar berdasarkan beberapa kriteria yang disimpulkan (misalnya, berdasarkan abjad), dan mengembalikan tiga hasil teratas. Tentu saja, Anda dapat menentukan kriteria dan urutan pengurutan saat Anda memanggil sort.

Seiring dengan terus berubahnya lanskap pengembangan perangkat lunak, alat seperti pseudocode prompting dan SudoLang akan memainkan peran penting dalam memungkinkan pengembang memanfaatkan potensi AIDD secara maksimal. Dengan menyediakan cara yang terstruktur dan efisien untuk berkomunikasi dengan AI, SudoLang memberdayakan pengembang untuk menciptakan aplikasi yang cerdas, adaptif, dan tangguh yang melampaui batas-batas yang memungkinkan dengan kecerdasan buatan.

Seperti yang Anda lihat, SudoLang dan pseudocode prompting dapat membuka potensi sebenarnya dari Pengembangan Berbasis AI. Masa depan pengembangan perangkat lunak sudah di sini. Mari kita ciptakan keajaiban!



Sumber

Mohon maaf, Foto memang tidak relevan. Jika keberatan atau harus diedit baik Artikel maupun foto Silahkan Klik Laporkan. Terima Kasih

Also Read

Tags

tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq tq