paint-brush
Ürün Yöneticisi ve Programcı Olmayan Bir Kişi Olarak ChatGPT ile Travel AI uygulamasını nasıl geliştirdim?ile@dinpd
4,451 okumalar
4,451 okumalar

Ürün Yöneticisi ve Programcı Olmayan Bir Kişi Olarak ChatGPT ile Travel AI uygulamasını nasıl geliştirdim?

ile NPD PM8m2023/08/24
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Yalnızca (bence öyle) kullanışlı bir uygulama geliştirmekle kalmadım, aynı zamanda modern çerçevelere yöneldim ve sözdizimi ve çerçeve öğrenmede boğulmadan biraz uygulamalı zaman kazandım ki bu da tam olarak istediğim şeydi. Bence bu çok önemli ve çok daha fazla insana yazılım geliştirmenin kapısını açıyor.
featured image - Ürün Yöneticisi ve Programcı Olmayan Bir Kişi Olarak ChatGPT ile Travel AI uygulamasını nasıl geliştirdim?
NPD PM HackerNoon profile picture
0-item
1-item

Yaptım! Yaklaşık 100 saatimi aldı ancak ChatGPT'nin yardımıyla gerçek bir uygulama yazıp dağıtmayı başardım.


O zamandan beri özellikleri korumak ve eklemek için 100 saat kadar daha harcadım, bu yüzden güzel, tam bir tutku projesine dönüştüm.


Deneyin temeli şuydu: "Uzun süredir aktif olarak kod yazmayan bir ürün yöneticisi olarak ChatGPT kullanarak bir uygulama tasarlayabilir, oluşturabilir ve dağıtabilir miyim?"


Lisans eğitimimi CS alanında yapmış ve teknolojinin çeşitli yönleriyle (sistem tasarımı, geliştirme, devops, barındırma) ilgilendiğim için iyi bir temele sahibim ancak son 10 yılı aşkın süredir uygulamalı geliştirme yapmadım.


Ürünlerin yinelemeli olarak nasıl oluşturulacağına ve işlevselliğin nasıl inceleneceğine dair bir anlayışa dönüşen oldukça iyi bir ürün anlayışım var ve bunun yardımcı olduğunu düşünüyorum.


Yazılım geliştirmede olağan olduğu gibi, zamanın %80'den fazlası sorun giderme ve hata ayıklamaya harcandı.

Neden Seyahat Yapay Zekası

ChatGPT API çevresinde yararlı bir şeyler oluşturma arayışımda, GPT'nin seyahat planlama sorununu (gidilecek yerleri, gidilecek ilgi çekici noktaları, seyahat planlarını vb.) çözme konusunda benzersiz bir donanıma sahip olduğunu düşündüm. Verilmesi gereken pek çok karar var Seyahat ederken yapılan ve birisinin tüm bunları benzersiz tercihlere veya koşullara göre sizin için bir araya getirmesini sağlamak, değerli olacağını düşündüğüm bir şey.

ChatGPT ile kodlama

Yaklaşık 6 haftayı geceleri çalışarak ve birkaç hafta sonunu, belki de toplam 100 saati harcadım. ChatGPT+ hesabım vardı, bu da bota ve GPT4'e erişim sırasında bana daha iyi bir istikrar sağladı.


Bu süreçteki bulgularım şunlardı:


  • ChatGPT, iş için doğru araçları seçmeme (tek sayfalı uygulama için Vue.js çerçevesi) ve kodu yinelemeler halinde yazmama yardımcı oldu. Onsuz kesinlikle yapamazdım. Bununla birlikte, kesinlikle komplikasyonlar vardı:


    1. ChatGPT kullanıcı arayüzünün dayattığı sınırlar (giriş ve çıkışta 4k jeton ve 15k bağlam civarında görünen) oldukça kısıtlayıcıdır ve sonunda sorularınızda çok fazla segmentasyon yapmak zorunda kalırsınız. Bu idealden daha azdır ve ekstra çaba gerektirir. CLI aracılığıyla erişmeyi denemedim - sadece aynı sınırları uygulamadığını bir yerde okudum - kontrol etmeye değer.

    2. "Kodu anlamlandırmanın" kalitesi tutarsızdı; bazen daha iyi, bazen daha kötü sonuç veriyor. Ne alakası olduğundan emin değilim.

    3. Bununla birlikte tavsiyem, kodu erkenden yapılandırmaya başlamanız olacaktır (kodu daha küçük işlevlere bölmek), çünkü ChatGPT bunu sizin için otomatik olarak yapmayacak, ancak siz sorarsanız yapacak. Sorun gidermeyi yolda kolaylaştırır.

    4. GPT4, 3 saatte 25 sorgudan sonra kesiliyor ve sizi "varsayılan" modele geçiriyor, ki bunun 3,5 olduğunu tahmin ediyorum - İlginç bir şekilde oldukça iyi bir şekilde toparlanıyor ve neredeyse GPT4'ten daha iyi olduğunu söylemek istiyorum, ancak başlamadığım için 3,5 ile elma-elma karşılaştırması değil.


      Güncelleme: Sınırlar yakın zamanda 3 saat içinde 50 sorguya yükseltildi.


Geliştirme ve Dağıtım Ortamları

  • Yeni çağ IDE'si için Replit'i kullandım. Bu iyi bir konsept ve muhtemelen gelecek, özellikle de onu anlamlı bir Codex/ChatGPT entegrasyonuyla birleştirebilirlerse. Şu anda sahip oldukları yapay zeka, projedeki kodu kullanmadığından ve benim ChatGPT ile yaptığım tüm manipülasyonların aynısını ve ileri geri yapılmasını gerektirdiğinden o kadar da kullanışlı değil. Replit'in kaynak kontrolü için Github'la nasıl entegre olduğunu ve aşamalandırmayla nasıl ilgilendiğini gerçekten beğendim.


  • Bulutta yerel olarak dağıtmak istediğim için Cloudflare ile konuşlandırdım. Kullanıcı arayüzü için CF sayfaları ve arka uç (API ağ geçidi) için çalışanlar kullandım. Sayfaların CICD için Github ile nasıl entegre olduğunu beğendim - bu gerçekten harikaydı - temel olarak uygulama, ana şubeye yapılan herhangi bir taahhütte kendisini yeniden konuşlandırıyordu.


    Genel olarak CF, bir sürü ağ oluşturma sıkıntısını basitleştirdiği için harikadır.

Çabuk

Oldukça fazla zaman harcadım ve komut istemi üzerinde birçok yineleme yaptım, onu temizledim ve kendine has özellikleri gidermeye çalıştım. İlk karar noktalarından biri, ChatGPT API'nin daha sonra anlamlandırmaya ve sınıflandırmaya çalışacağım bir metin listesi döndürmesi mi, yoksa zaten yerleşik bir yapıya sahip olan JSON'u döndürmesi mi gerektiğiydi. ChatGPT'den giderek daha fazla veri istediğimde (bu kod parçasında da kanıtlandığı gibi) yapılar giderek daha karmaşık hale geldiğinden, metin verilerini bir yapıya yorumlama ihtiyacı olasılığı beni korkuttu.


İsviçre'nin 10 Günlük Seyahat Programı


Bu nedenle JSON için ChatGPT'yi yönlendirmeye karar verdim. Ancak bunun, JSON'un her zaman iyi yapılandırılmamış olması veya istemde çok fazla belirsizlik olması ve ChatGPT'nin beklemediğim bir sonuç döndürmesi gibi kendi yan etkileri vardı. Zamanın neredeyse %25'ini hızlı ince ayar ile JSON hata işleme arasında geçirdiğimi söyleyebilirim. Oldukça öğretici bir deneyimdi. Sonuçta, işte sonunda ulaştığım bilgi istemi:


 SYSTEM_PROMPT = `You are a helpful travel assistant. You perform the requests with diligence and make the best attempt to answer the questions, never refusing due to complexity etc. Reset the conversation if I mention a new location in my user prompt. Return the results in JSON format as an array of objects. Make sure JSON format is complete and valid and does not include unescaped special characters. Please avoid escaping double quotes and instead use single quotes or another method to prevent JSON parsing issues. Do not use "\n" newline symbols in the middle of element text. Each object in the array should have the following keys: - "title" - "description" - "airportCode" (for the destination airport) - "poi" (array of points of interest) - "lodging" (array of lodging options) - "itinerary" (array of objects, each representing a day) - "considerations" - "history" (history related to the destination) - "key_local_phrases" (array of common local phrases) - "cost" The "itinerary" key should contain an array of objects, each object representing a day with the key "activities", which is itself an array of objects. Each activity object should have the following keys: - "description" - "waypoint" (name of the location, not coordinates) - "cost" - "travelTime" - "travelOptions" If travel is involved within the itinerary, include "Travel To" as part of the daily activity and provide the travel time, travel options, and associated cost. Each step in the itinerary should also suggest representative local "food" to try. Focus on most interesting points of interest, lodging, and activities. Consider activities that are popular, affordable, and recommended by the travelers. Make sure you cover the entire duration of the trip or outing. If it says "week-long", it has to cover the entire week. It's OK to group multiple days or weeks together if it's a longer trip. If it doesn't give a timeframe, take a guess based on the nature of a trip. Considerations should include travel restrictions and visa requirements, typical weather, criminogenic conditions including which areas to avoid, recommendations on visit timing, parking situation, and ways to save on travel costs. Here is an example of the desired output format: [ { "title": "Sample Title", "description": "Sample Description", "airportCode": "XYZ", "poi": ["Sample POI1", "Sample POI2"], "lodging": ["Sample Lodging1", "Sample Lodging2"], "itinerary": [ { "day": "Sample Day 1-2 - City or Place", "location": "Wikipedia identifiable name of the place in city,_country or city,_state format", "activities": [ { "description": "Sample Activity1", "waypoint": "Sample Waypoint1 connected to the activity", "cost": "$100", "travelTime": "30 minutes", "travelOptions": "Taxi or Bus" }, { "description": "Sample Activity2", "waypoint": "Sample Waypoint2 connected to the activity", "cost": "$50", "travelTime": "1 hour", "travelOptions": "Ferry or Bus" } ], "food": ["Sample Food1 with short description", "Sample Food2 with short description"] }, { "day": "Sample Day 3 - City or Place", ... }, { "week": "Sample Week 2 - City or Place", ... } ], "considerations": "Sample considerations text", "history": "Sample history text", "key_local_phrases": ["Sample phrase 1 - translation", "Sample phrase 2 - translation"], "cost": "Sample total cost" } ]`;


Not: Bu yazının yazıldığı tarih itibariyle OpenAI, JSON yapılandırılmış veri dönüşünün daha sağlam ve tutarlı hale getirilmesinde çok yararlı olabileceğini düşündüğüm ince ayar geliştirmelerini yayınladı.

İstek Listesi

Bu noktada istek listemdeki en büyük öğe, geliştirme ortamı / AI kod oluşturma entegrasyonudur. Bir şeyleri ileri geri yapıştırmak, kod yapısını bozmamak için (özellikle kod tabanı büyüdükçe) kesinlikle arzulanan çok şey bırakıyor.


Yapay zeka kod oluşturmadaki bir sonraki büyük adımın, kodu dahili olarak bölümlere ayıran ve kullanıcının bunu manuel olarak yapmasına gerek kalmadan modele/modelden ilgili girdiyi hem sağlayabilen hem de modelden ilgili girdiyi alabilen entegre akıllı kod düzenleyicileri olacağını düşünüyorum.


Bundan sonraki adım, hata ayıklama amacıyla tarayıcıyla entegre olmak ve sonuçta kapalı döngü yinelemeli bir hata ayıklama döngüsü oluşturmak olacaktır.


Üzerinde çalışmak harika bir proje olurdu!


Not: Google'ın IDX projesiyle ilgili neler planladığını merak ediyorum; tam da bu olabilir.

Özet

Genel olarak, yalnızca (bence öyle) kullanışlı bir uygulama geliştirmekle kalmadım, aynı zamanda modern çerçevelere yöneldim ve sözdizimi ve çerçeve öğrenmede boğulmadan biraz uygulamalı zaman kazandım ki bu da tam olarak istediğim şeydi. Bence bu çok önemli ve çok daha fazla insana yazılım geliştirmenin kapısını açıyor.


Uygulamayı VoyageAI.app adresinde bulabilirsiniz. Uygulama, reklam olmadan ve oturum açma olmadan (dolayısıyla kişisel veriler kullanılmadan) ücretsiz olarak kullanılacaktır ve öyle kalacaktır.