paint-brush
GenLayer Kullanarak Yapay Zeka Tahmini Akıllı Sözleşmesi Nasıl Oluşturulur ile@fakela
460 okumalar
460 okumalar

GenLayer Kullanarak Yapay Zeka Tahmini Akıllı Sözleşmesi Nasıl Oluşturulur

ile Favour Kelvin11m2024/06/25
Read on Terminal Reader

Çok uzun; Okumak

Bu eğitimde size GenLayer'ı kullanarak bir yapay zeka tahmini akıllı sözleşmesi oluşturma sürecini anlatacağım. Şu konuları ele alacağız: Yapay zeka destekli akıllı sözleşmeler nelerdir ve Akıllı Sözleşmeler kavramı. Web'e erişebilen ve doğal dil talimatlarını anlamak ve işlemek için LLM'yi kullanabilen akıllı bir sözleşme oluşturmak. Sözleşmeyi test etmek, dağıtmak ve yürütmek için GenLayer Simülatörünü kullanma.
featured image - GenLayer Kullanarak Yapay Zeka Tahmini Akıllı Sözleşmesi Nasıl Oluşturulur
Favour Kelvin HackerNoon profile picture
0-item
1-item

Yapay zeka destekli akıllı sözleşmeler, gerçek zamanlı web verilerine erişmek ve doğal dil talimatlarını yorumlamak için yapay zekayı kullanarak geleneksel akıllı sözleşmeleri geliştirir.

📌 Hızlı Bağlantılar

👩‍💻 Ne Yapacağız...

Bu eğitimde şunları ele alacağız:

  • Yapay zeka destekli akıllı sözleşmeler nelerdir ve Akıllı Sözleşmeler kavramı.
  • Tahmin akıllı sözleşmesi oluşturma adımları
  • Sözleşmeyi test etmek, dağıtmak ve yürütmek için GenLayer simülatörünü kullanma.


Not: Bu eğitimde Python'un bir miktar bilgi sahibi olduğu varsayılmaktadır ve buna ihtiyaç duyulmaktadır.

💡 Neden Yapay Zeka Destekli Akıllı Sözleşmeler?

Akıllı sözleşmeler şüphesiz oyunun kurallarını değiştirmiştir. Anlaşmanın şartları doğrudan koda yazıldığından, doğaları gereği kendi kendine yürütülürler. Önceden belirlenen koşullar karşılandığında, bir blockchain üzerinde konuşlandırılırlar ve işlemlerin üçüncü bir tarafa ihtiyaç duymadan güvenli, şeffaf bir şekilde işlenmesini sağlarlar.


Ancak akıllı sözleşmeler yalnızca belirli talimatları takip eder ve programlarında yer almayan beklenmedik durumlarla veya karmaşık gereksinimlerle başa çıkamaz. Zaman içinde olup bitenlere göre öğrenmezler veya uyum sağlamazlar. Ayrıca harici verilere bağımsız olarak erişemezler. Harici verileri akıllı sözleşmelere beslemek ve gerçek dünyadaki olaylara tepki vermelerini sağlamak için Oracles gibi üçüncü taraf hizmetlerine ihtiyaçları var.


🤔 Akıllı Sözleşme Nedir?

Akıllı sözleşmelerin bu sınırlamaları, GenLayer'ın geleneksel akıllı sözleşmelerin tüm yeteneklerini koruyan Akıllı Sözleşme oluşturarak çözmeye çalıştığı şeydir ancak aynı zamanda şunları da yapabilir:


  • Doğal dil talimatlarını anlamak ve işlemek için GPT-4 ve LLaMA gibi LLM modellerini kullanın.

  • Üçüncü taraf araçlara ihtiyaç duymadan internetten gerçek zamanlı verilere erişin ve bunları kullanın.



GenLayer, Akıllı Sözleşmelerin işlemlerini ve operasyonlarını doğrulamak için İyimser Demokrasi fikir birliği yöntemini kullanıyor. Bu fikir birliği yönteminin önemli bir parçası Eşdeğerlik İlkesi'dir . Eşdeğerlik İlkesi, Yüksek Lisans Eğitimleri veya gerçek zamanlı web verileri tarafından oluşturulanlar gibi deterministik olmayan çıktılarla uğraşırken doğruluğu ve tutarlılığı sağlamak için İyimser Demokrasi çerçevesinde kullanılan belirli bir kural veya kriterler dizisidir. İlerledikçe Eşdeğerlik İlkesi ve akıllı sözleşmemizi uyguladığımızda bunun nasıl çalıştığı hakkında daha fazla bilgi vereceğim.


Bu blog için, web'den gerçek zamanlı veri alabilen ve maç sonuçlarını tahmin etmek için LLM'yi kullanarak işleyebilen bir futbol tahmini akıllı sözleşmesinin nasıl oluşturulacağına bakacağız. Kulağa ilginç geliyor değil mi?


Hadi hemen konuya girelim :).

⚒️ GenLayer Simülatörünü Kurma

Sözleşmemizi oluşturmaya başlamadan önce onu çalıştıracağımız ortamı ayarlamamız gerekiyor. GenLayer Simülatörü, Akıllı Sözleşmelerimizi oluşturmak ve test etmek için kullanabileceğimiz etkileşimli bir sanal alandır. Hadi ayarlayalım.

Önkoşullar

  • Docker'ın en son sürümünün kurulu ve çalışır durumda olduğundan emin olun.
  • Uyumluluk sorunlarını önlemek için hem Node.js hem de npm'nin en son sürümlerine güncellendiğinden emin olun.

Düzenlemek

GenLayer'ı bilgisayarınıza yüklemek için terminalinize gidin ve aşağıdakileri kopyalayıp yapıştırın:

 npm install -g genlayer


Kurulduktan sonra, geliştirme ortamınızı kurma işlemini başlatmak için init komutunu çalıştırın:

 genlayer init


Bu komutu çalıştırdığınızda, kurulum 5 doğrulayıcıyla başlatılır ve tercih ettiğiniz LLM sağlayıcısını/sağlayıcılarını seçmeniz istenir.


Aralarından seçim yapabileceğiniz üç seçenek vardır:

  • OpenAI: Doğrulayıcıları çalıştırmak için en hızlı ve en güvenilir seçenek)

  • Ollama: Ücretsiz ve açık kaynak seçeneği, diğer seçeneklere göre daha yavaş performans gösterebilir

  • Heurist: Açık kaynaklı yapay zeka modelleri için çıkarım sağlayıcı


Seçiminizi yaptıktan sonra GenLayer simülatör ortamı için gerekli Docker konteynerlerini otomatik olarak indirir ve yapılandırır. Kurulum tamamlandıktan sonra GenLayer Simulator'a http://localhost:8080/ adresinden erişebilirsiniz.


Şimdi sözleşmemizi oluşturmaya başlayalım!

⚽ Futbol Tahmin Sözleşmesini Oluşturmak

Simülatörde kod yazmak için bir kod düzenleyici bulunur.


Akıllı Sözleşmeler Python'da yazılmıştır, bu da onu web etkileşimleri ve doğal dil işleme için gerekli olan veri ve dize işlemlerinin yönetimi için ideal kılar.


Bu tahmin sözleşmesi için web verilerimizi BBC Sport web sitesinden alacağız ve ardından hangi takımın kazanan takım olduğunu belirlemek için alınan verileri işlemek için bir LLM kullanacağız. Bunu yapmak için adım adım süreci görelim


İzlenecek yolu atlamak istiyorsanız GitHub'daki kodu kontrol edin ve aşağıdaki "Sözleşmeyi Dağıt" bölümüne gidin.

1. Gerekli Kitaplıkları ve Modülleri İçe Aktarma

Öncelikle Akıllı Sözleşmemiz için kullanacağımız kütüphaneleri ve modülleri içe aktaracağız:


 import json from genvm.base.equivalence_principle import EquivalencePrinciple from genvm.base.icontract import IContract


  • json : Bu modül, veri alışverişi için yaygın bir format olan JSON verilerinin ayrıştırılması ve işlenmesi için kullanılır.
  • EquivalencePrinciple : Bu, sonuçların farklı doğrulayıcılar arasında tutarlı ve doğru olmasını sağlar. Birden fazla doğrulayıcının sonuçlarını karşılaştırarak deterministik olmayan çıktıların bütünlüğünü korumada çok önemli bir rol oynar.
  • IContract : GenLayer'da Akıllı Sözleşmeler oluşturmak için gerekli özellikleri ve davranışları sağlayan temel sınıf. Sözleşmenin GenLayer (GenVM) ortamına sorunsuz bir şekilde entegre olmasını sağlar.

2. Akıllı Sözleşme Sınıfının Tanımlanması

Şimdi Akıllı Sözleşme sınıfımızı tanımlamamız gerekiyor, bu durumda bu Tahmin Pazarıdır. Akıllı Sözleşme sözleşme sınıfımız IContract devralınır. IContract devralma, sözleşmenin GenLayer çerçevesinde düzgün bir şekilde yürütülmesini sağlamak için gereklidir:


 class PredictionMarket(IContract):

3. Yapıcı Parametrelerini Ekleme

Daha sonra sözleşmenin durumunu başlatacağız ve gerekli parametreleri ayarlayacağız. Bu adım, sözleşmemizin yürütülmesi boyunca kullanacağı başlangıç koşullarını ve özelliklerini tanımladığı için çok önemlidir:

 class PredictionMarket(IContract): def __init__(self, game_date: str, team1: str, team2: str): self.has_resolved = False self.game_date = game_date self.resolution_url = 'https://www.bbc.com/sport/football/scores-fixtures/' + game_date self.team1 = team1 self.team2 = team2


Bu yapıcıda aşağıdaki parametreleri tanımlıyoruz:

  • game_date : Oyunun 'YYYY-AA-GG' olarak biçimlendirilmiş tarihi.
  • team1 : Maça katılan ilk takımın adı.
  • team2 : Maça katılan ikinci takımın adı.
  • has_resolved : Oyunun sonucunun zaten çözülüp çözülmediğini belirtir ve gereksiz işlemeyi önler.
  • resolution_url : Maç sonuçlarının alınabileceği BBC Sport web sitesinin URL'si.


Bu parametreler sözleşmemizin başlangıç durumunu tanımlayarak oyun sonuçlarını işlemeye hazır hale getirir.

4. Oyunun Sonucunu Çözmek

Şimdi oyunun sonucunu belirleyecek bir yöntem ekleyelim. Bu yöntem, oyunun sonucunu yalnızca henüz çözülmemişse işleme koymamızı sağlar:

 async def resolve(self) -> None: if self.has_resolved: return "Already resolved" final_result = {}


Bu yöntem öncelikle sonucun self.has_resolved incelenerek belirlenip belirlenmediğini kontrol eder. Bu, gereksiz işlemleri önler ve verimliliği sağlar. Eğer oyun henüz çözülmediyse, sonuçları depolamak için final_result başlatırız. Bu sözlük oyunun nihai onaylanmış sonuçlarını içerecektir.

5. Eşdeğerlik Prensibinin Yazılması

Akıllı Sözleşme yazarken Eşdeğerlik Prensibi çok önemlidir. Web'e eriştiğinizde veya LLM'leri aradığınızda tutarsızlıklar ortaya çıkabilir. Daha önce de söylediğimiz gibi Eşdeğerlik İlkesi, deterministik olmayan işlemlerin (web veya LLM çağrıları) nihai çıktılarını doğrulamak için kullanılan belirli bir kural veya kriterler dizisidir. Bu prensipte birden fazla doğrulayıcı kullanılır; bunlardan biri bir sonuç önermek için lider olarak hareket eder ve diğerleri bu sonucu tanımlanmış kriter veya kurala göre doğrular.


Bu nedenle webden çıktılarımızda veya LLM ile süreçlerimizde tutarsızlıkları önlemek için sözleşmemizde Eşdeğerlik Prensibimizi tanımlamamız gerekiyor:

 async with EquivalencePrinciple( result=final_result, principle="The score and the winner have to be exactly the same", comparative=True, ) as eq:


Tahmin sözleşmemiz için Eşdeğerlik İlkesi şöyle diyor: "Puan ve kazanan tamamen aynı olmalıdır." Doğrulayıcılar, sonuçlarını liderin sonucuyla karşılaştırmak için bu prensibi kullanacaklardır. Sonuç Eşdeğerlik Prensibine göre eşleşirse nihai sonuç kabul edilir. comparative=True bayrağı, hem liderin hem de doğrulayıcıların aynı görevleri yerine getirdiğini ve tutarlılığı sağlamak için sonuçlarını karşılaştırdığını gösterir.


Bu Eşdeğerlik Prensibi kapsamında oyunla ilgili web verilerini alıp LLM kullanarak işleyeceğiz.

Web Verileri Getiriliyor

İleriye doğru, Eşdeğerlik İlkesi bloğu dahilinde web sayfası içeriğini BBC Sport haber web sitesi URL'sinden alacağız:

 web_data = await eq.get_webpage(self.resolution_url) print(web_data)


Veriler alındıktan sonra, sonucu kontrol etmek ve alınan web sayfasından kazanan takımı belirlemek için LLM ile işleyeceğiz.

Yüksek Lisans kullanarak alınan verileri işleyin

Alınan web sayfasındaki bilgileri işlemek için, LLM'ye gönderilecek istemleri oluşturacağız ve ona tam olarak ne yapması gerektiğini anlatacağız. Yüksek Lisans'larla etkileşimde bulunurken, doğru ve ilgili yanıtlar sağlamada modele rehberlik edecek açık ve spesifik istemler oluşturmak önemlidir. Aşağıda hazırladığımız istem budur:

 task = f"""In the following web page, find the winning team in a matchup between the following teams: Team 1: {self.team1} Team 2: {self.team2} Web page content: {web_data} End of web page data. If it says "Kick off [time]" between the names of the two teams, it means the game hasn't started yet. If you fail to extract the score, assume the game is not resolved yet. Respond with the following JSON format: {{ "score": str, // The score with numbers only, eg, "1:2", or "-" if the game is not resolved yet "winner": int, // The number of the winning team, 0 for draw, or -1 if the game is not yet finished }} """ result = await eq.call_llm(task) print(result)


Hazırladığımız bilgi istemi LLM'ye şunları yapma talimatını verir:

  • Alınan web sayfasından kazanan takımı ve puanı belirleyin

  • Ayrıca LLM'nin oyunun henüz başlayıp başlamadığını kontrol etmesi için bir koşul da ekledik. İki takımın isimleri arasında "Başlama zamanı" ibaresi görünüyorsa bu, oyunun başlamadığını gösterir . LLM'ye bu senaryoyu tanıması ve henüz bir sonuç elde edilemeyeceğini anlaması talimatı verildi.

  • Ayrıca LLM'nin, skoru çıkaramadığı takdirde oyunun çözülmediğini varsayması için ele alınması gereken başka bir koşulu da ekledik. Bu, tamamlanmamış veya devam eden oyunların uygun şekilde ele alınmasını sağlar.

  • Son olarak LLM'den JSON formatını kullanarak yanıt vermesini istiyoruz.


Bu ayrıntılı bilgi istemi, farklı senaryoları ele alır ve LLM'nin gerekli bilgileri doğru ve tutarlı bir şekilde çıkarmasını ve işlemesini sağlar. Bilgi istemi oluşturulduktan sonra onu call_llm yöntemini kullanarak LLM'ye göndeririz.


5. Sonucun Eşdeğerlik Prensibine Göre Belirlenmesi

Sonucumuz LLM'den alındıktan sonra, yukarıda tanımlanan Eşdeğerlik İlkesine göre kontrol edilecek ve doğrulanacaktır: "Puan ve kazanan tamamen aynı olmalıdır." Sonuç Eşdeğerlik Prensibine göre eşleşirse nihai sonuç kabul edilir.

 eq.set(result)


Not: Doğrulayıcılar, Eşdeğerlik İlkesi bloğundaki her adımı doğrulamazlar ve karmaşık doğrulama ihtiyacını azaltmak, kaynaklardan tasarruf etmek ve sözleşmenin işlemlerini basitleştirmek için yalnızca nihai sonuca odaklanırlar.

6. Sonucun Ayrıştırılması ve Değerlendirilmesi

Sonuç doğrulandıktan ve sonlandırıldıktan sonra artık json.loads() kullanarak sonucu ayrıştırabiliriz. Bu, sonucu kolayca değiştirilebilecek ve değerlendirilebilecek bir formata dönüştürür. Ayrıştırılmış sonuçtan kazananı ve puanı çıkaracağız:

 result_json = json.loads(final_result['output']) if result_json['winner'] > -1: self.has_resolved = True self.winner = result_json['winner'] self.score = result_json['score'] return result_json


Oyunun sonucu belirlenirse (kazanan > -1), sözleşmenin durumu buna göre güncellenir. Bu, nihai sonucun doğru bir şekilde kaydedilmesini sağlar.


Artık sözleşmemizi uygulamaya hazırız!


Sözleşmemizi çalışırken görelim!

🚀 Futbol Tahmin Akıllı Sözleşmenizi Kullanın

  1. GenLayer Simulator'da sözleşmenizi yürütmek için oynat düğmesine tıklayın.

  2. Yapıcı parametreleri bölümünde oyun tarihini ve kontrol etmek istediğiniz iki takımın adlarını girin. Örneğin, game_date "2024-06-05", team1 "Brezilya" ve team2 "Jamaika" olarak ayarlayabilirsiniz.

  3. Oyun ayrıntıları ayarlandıktan sonra Dağıt'a tıklayın



🎯 İşlemlerin Gerçekleştirilmesi

Dağıtılan sözleşmeyle etkileşim kurmak için İşlemleri Yürüt bölümüne gidin. Burada oyunun sonucunu işlemek için çözümleme yöntemini çağırabilirsiniz.



Çözümleme yöntemi yürütüldüğünde:

  • Simülatör tarafından çalıştırılan düğümler, verileri belirtilen URL'den alır; bu, bu durumda BBC Spor URL'sidir ve ardından LLM bunu işler.
  • Nihai oyunun sonucu daha sonra kodda tanımlanan Eşdeğerlik Prensibine göre doğrulanır.

Akıllı Bir Sözleşme Yürütüldüğünde Eşdeğerlik İlkesi Nasıl Çalışır:

  • Lider Hesaplaması: Lider doğrulayıcı, oyun verilerini BBC Sport'tan alır ve final skorunu ve kazanan takımı belirler. Örneğin Lider, Jamaika'nın (Takım 2) Brezilya'ya (Takım 1) karşı kazanmasıyla skoru "1:2" olarak hesaplıyor.
  • Doğrulayıcıların Hesaplamaları: Her doğrulayıcı bağımsız olarak oyun verilerini aynı URL'den alır ve nihai puanı ve kazananı belirlemek için aynı görevi gerçekleştirir. Örneğin, bir doğrulayıcı Jamaika'nın (Takım 2) Brezilya'ya (Takım 1) karşı kazandığı skoru "1:2" olarak da hesaplayabilir.
  • Karşılaştırma: Doğrulayıcılar kendi sonuçlarını Liderin sonuçlarıyla karşılaştırırlar. Eşdeğerlik İlkesine göre puanın ve kazananın tamamen aynı olması gerekir. Liderin sonucu Jamaika'nın (Takım 2) kazandığı "1:2" ise, her doğrulayıcının sonucu da Jamaika'nın (Takım 2) kazandığı "1:2" olmalıdır.
  • Karar: Doğrulayıcıların tüm sonuçları Liderin sonucuyla eşleşiyorsa Liderin sonucunu geçerli kabul ederler.


Bu süreç ağ genelinde tutarlılık ve doğruluk sağlar. Doğrulayıcılar kazanan olarak Jamaika (Takım 2) ile "1:3" sonucunu verirse ve lider Jamaika (Takım 2) ile "1:2" sonucunu verirse, doğrulayıcılar sonucu reddedecektir.

Farklı Senaryoları Ele Alma:

  • Oyun bittiyse JSON yanıtı final skorunu ve kazanan takımı içerecektir.
  • Oyun başlamış ancak bitmemişse JSON yanıtı oyunun henüz çözülmediğini gösterecektir.
  • Oyun başlamadıysa JSON yanıtı bu durumu gösterecektir.


Sözleşme etkileşimiyle ilgili ayrıntılı bilgileri görmek için günlükleri görüntüleyin.

💭 Son Düşünceler: Yapay Zeka Akıllı Sözleşmelerinin Diğer Kullanım Durumları

🙌 Baştan sona okuduysanız tebrikler!!!


Yapay zeka destekli akıllı sözleşmelerin geleceği parlak görünüyor. Futbol tahmin sözleşmesinin yanı sıra GenLayer Simülatörü ile oluşturup test edebileceğiniz başka akıllı sözleşme fikirleri de vardır:

  • Hava Durumu Muhabiri
  • ERC-20 Jetonu
  • Hisse Senedi Fiyat Kontrolörü
  • Haber Özetleyici
  • Seyahat Planlayıcısı
  • Kitap Bulucu
  • Mantık Bulmacaları
  • Para Büyücüsü


GenLayer belgelerinde yukarıdakilerden bazılarının nasıl elde edileceğine dair daha fazla örnek fikir var.