paint-brush
Google Gemini ile Yüksek Lisans Başvurusu Nasıl Oluşturulurile@alvinslee
1,790 okumalar
1,790 okumalar

Google Gemini ile Yüksek Lisans Başvurusu Nasıl Oluşturulur

ile Alvin Lee9m2024/06/05
Read on Terminal Reader

Çok uzun; Okumak

Google Gemini API'sini kullanarak bir LLM uygulamasının nasıl oluşturulacağına ve ardından bu uygulamanın Heroku'ya nasıl dağıtılacağına ilişkin bir eğitim.
featured image - Google Gemini ile Yüksek Lisans Başvurusu Nasıl Oluşturulur
Alvin Lee HackerNoon profile picture

Yüksek Lisans'ta inovasyon için sonsuz olasılık var gibi görünüyor. Siz de benim gibiyseniz, Expedia'da yerleşik ChatGPT, kod yazmak için Copilot ve hatta görüntü oluşturmak için DALL-E gibi GenAI uygulamalarını ve araçlarını kullanmışsınızdır. Ancak bir teknoloji uzmanı olarak Yüksek Lisans tabanlı araçları kullanmaktan daha fazlasını yapmak istiyorum. Kendiminkini inşa etmek istiyorum.


DALL-E'ye "LLM'lerle yapabileceği her şeyi düşünen bir bilgisayar programcısının suluboya resmini oluşturmasını" söyledim. Evet, bu oldukça yerinde.


Tüm yeni teknolojilerde inşaatçı olmak, basit bir başlangıç yapmak anlamına gelir. Öğrendiğim herhangi bir yeni programlama dili veya kontrol ettiğim herhangi bir yeni çerçeve için bu böyle. Yüksek Lisans ile inşaat yapmak da farklı değil. İşte burada bunun üzerinden geçeceğim. Google Gemini ile etkileşime giren hızlı ve kirli bir API oluşturacağım ve bana etkili bir şekilde kendime ait küçük bir sohbet robotu asistanı sunacağım.


İşte yapacağımız şey:


  1. Google Gemini'yi kısaca tanıtın.
  2. Basit bir Node.js uygulaması oluşturun.
  3. Uygulamayı Heroku'ya dağıtın.
  4. Dene.

Google Gemini Nedir?

Çoğu sıradan tüketici, GPT-4 LLM üzerine inşa edilen ChatGPT'yi biliyor. Ancak yüksek lisans söz konusu olduğunda GPT-4 şehirdeki tek oyun değil. Ayrıca Google Gemini (eskiden Bard olarak biliniyordu) da var. Çoğu performans kriterinde (çok disiplinli üniversite düzeyinde akıl yürütme problemleri veya Python kodu oluşturma gibi) Gemini, GPT-4'ten daha iyi performans gösteriyor.


İkizler burcu kendisi hakkında ne söylüyor?


Geliştiriciler olarak Gemini'ye Google AI Studio'daki Gemini API'si aracılığıyla erişebiliriz. Python , JavaScript , Swift ve Android için de SDK'lar mevcuttur.


Peki. Gelelim inşaata.

Node.js Uygulamasını Oluşturun

Node.js uygulamamız Gemini chatbot gibi çalışan basit bir Express API sunucusu olacaktır. İki uç noktayı dinleyecektir. İlk olarak, /chat ( message özniteliğine sahip bir JSON yükünü içerecek şekilde) yönelik bir POST isteği, mesajı Gemini'ye gönderecek ve ardından yanıtı döndürecektir. Uygulamamız Gemini ile devam eden bir sohbet görüşmesine devam edecektir. Bu, sohbet robotumuzu bizim için not tutabilen yardımsever bir asistana dönüştürür.


İkincisi, /reset adresine bir POST isteği gönderirsek, bu, sohbet görüşmesini sıfırdan başlayacak şekilde sıfırlayacak ve Gemini'nin bizimle olan önceki etkileşimlerine ilişkin hafızasını etkili bir şekilde silecektir.


Bu kod adım adım açıklamalı anlatımını atlamak istiyorsanız kodun tamamını buradaki GitHub depomda görebilirsiniz.

Uygulamayı Başlat

Başlamak için Node.js uygulamamızı başlatıyoruz ve bağımlılıkları yüklüyoruz.


 ~/project$ npm init -y && npm pkg set type="module" ~/project$ npm install @google/generative-ai dotenv express


Daha sonra bunu package.json dosyamızdaki scripts ekliyoruz:


 "scripts": { "start": "node index.js" },


index.js dosyası

Uygulamamız tek dosyadan oluşmaktadır ve oldukça basittir. Her seferinde bir bölüm üzerinden geçeceğiz.


Öncelikle kullanacağımız tüm paketleri import ediyoruz. Daha sonra SDK'yı Google AI'dan başlatıyoruz. Gemini-pro modelini kullanacağız. Son olarak, Google'ın çok turlu konuşma olarak adlandırdığı şey için yeni bir ChatSession örneği oluşturan startChat() adını veriyoruz.


 import 'dotenv/config'; import express from 'express'; import { GoogleGenerativeAI } from '@google/generative-ai'; const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY); const model = genAI.getGenerativeModel({ model: "gemini-pro"}); let chat = model.startChat();


Daha sonra API sunucumuz olan yeni bir Express uygulamasını başlatıyoruz.


 const app = express(); app.use(express.json())


Daha sonra, /chat uç noktasına POST istekleri için dinleyicimizi ayarladık. JSON veri gövdesinin bir message içerdiğinden emin oluruz. Bu mesajı Gemini'ye göndermek için chat nesnemizi kullanırız. Daha sonra API çağırıcımıza Gemini'den gelen yanıt metniyle yanıt veriyoruz.


 app.post('/chat', async (req, res) => { if ((typeof req.body.message) === 'undefined' || !req.body.message.length) { res.status(400).send('"message" missing in request body'); return; } const result = await chat.sendMessage(req.body.message); const response = await result.response; res.status(200).send(response.text()); })


ChatSession kullanıldığında, tüm API çağrılarında Gemini ile olan etkileşimimizin kayıtlı, çalışan bir geçmişinin bulunduğunu unutmayın. İkizler burcuna konuşmamızın bir "hatırasını" vermek bağlam açısından faydalıdır.


Peki ya Gemini'nin tamamen yeniden başlamasını ve önceki tüm bağlamları unutmasını istiyorsanız? Bunun için /reset uç noktamız var. Bu sadece yeni bir ChatSession başlatır.


 app.post('/reset', async (req, res) => { chat = model.startChat(); res.status(200).send('OK'); })


Son olarak dinlemeye başlamak için sunucumuzu başlatıyoruz.


 const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`) })


Bir ek not olarak, bu projenin tamamı sadece mini bir demodur. Üretimde kullanılması amaçlanmamıştır! Şimdilik tasarladığım yöntemle (kimlik doğrulama olmadan), URL'ye sahip olan herkes /chat /reset istek gönderebilir. Bir üretim kurulumunda, uygun kimlik doğrulamaya sahip olacağız ve her kullanıcı, Gemini ile başka hiç kimsenin manipüle edemeyeceği kendi konuşma örneğine sahip olacaktı.

Gemini API Anahtarının Edinilmesi

Bu noktada neredeyse gitmeye hazırız. İhtiyacımız olan son şey Gemini API'sine erişmek için bir API anahtarıdır. API anahtarı almak için Geliştiriciler için Google AI hesabına kaydolarak başlayın.


Giriş yaptıktan sonra yeni bir Google Gemini projesi başlatmak için Google AI Studio'yu Başlat'ı seçin.



Proje içinde, API anahtarları sayfasına gitmek için API anahtarını al'a tıklayın. Ardından, bir anahtar oluşturmak için API anahtarı oluştur'a tıklayın. Değeri kopyalayın.


Projenizde .env.template adlı dosyayı .env adlı yeni bir dosya olarak kopyalayın. Gemini API anahtarınızın değerini yapıştırın. .env dosyanız şuna benzer görünmelidir:


 GEMINI_API_KEY=ABCDEFGH0123456789_JJJ

Uygulamamızı Yerel Olarak Test Edin

Her şey yerinde olduğunda, test etmek için sunucumuzu yerel olarak çalıştırabiliriz.


 ~/project$ npm start > [email protected] start > node index.js Server is running on port 3000


Farklı bir terminalde bazı curl istekleri gönderebiliriz:


 $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"I would like to bake a shepherds pie to feed 8 \ people. As you come up with a recipe, please keep a grocery \ list for me with all of the ingredients that I would need to \ purchase."}' \ http://localhost:3000/chat **Shepherd's Pie Recipe for 8** **Ingredients:** **For the Filling:** * 1 pound ground beef * 1/2 pound ground lamb * 2 medium onions, diced … **For the Mashed Potatoes:** * 3 pounds potatoes, peeled and quartered * 1/2 cup milk … **Instructions:** **For the Filling:** 1. Heat a large skillet over medium heat. Add the ground beef and lamb and cook until browned. … $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"I also need to buy fresh basil, for a different dish (not the shepherds pie). Add that to my grocery list \ too."}' \ http://localhost:3000/chat **Updated Grocery List for Shepherd's Pie for 8, and Fresh Basil:** * 1 pound ground beef * 1/2 pound ground lamb * 2 medium onions * 2 carrots * 2 celery stalks * 1 bag frozen peas * 1 bag frozen corn * 1 tablespoon Worcestershire sauce * 1 teaspoon dried thyme * 1 cup beef broth * 1/4 cup tomato paste * 3 pounds potatoes * 1/2 cup milk * 1/4 cup butter * **Fresh basil** $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What items on my grocery list can I find in the \ produce section?"}' \ http://localhost:3000/chat The following items on your grocery list can be found in the produce section: * Onions * Carrots * Celery * Potatoes * Fresh basil $ curl -X POST http://localhost:3000/reset OK $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What items are on my grocery list?"}' \ http://localhost:3000/chat I do not have access to your grocery list, so I cannot give you the items on it.


İşe yarıyor. Görünüşe göre konuşlanmaya hazırız!

Uygulamamızı Heroku'ya Dağıtın

Uygulamamızı dağıtmak için Heroku'yu kullanmayı tercih ettim. Hızlı, basit ve düşük maliyetlidir. Tüm temel altyapı sorunlarına takılıp kalmadan yalnızca birkaç basit adımla kodumu bulutta çalıştırabiliyorum. Bu şekilde sadece harika uygulamalar geliştirmeye odaklanabiliyorum.


Bir Heroku hesabına kaydolduktan ve CLI'yi yükledikten sonra, dağıtımı gerçekleştirmek için yapmanız gerekenler aşağıda açıklanmıştır.

Procfile Kod Tabanına Ekleme

Heroku'ya uygulamamızı nasıl başlatacağımızı söyleyen Procfile adlı bir dosya eklememiz gerekiyor. Procfile içeriği şuna benzer:


 web: npm start


Bu dosyayı kod tabanı depomuza gönderiyoruz.

Heroku'da oturum açın (CLI aracılığıyla)

 ~/project$ heroku login

Uygulama Oluştur

 ~/project$ heroku create gemini-chatbot Creating ⬢ gemini-chatbot... done https://gemini-chatbot-1933c7b1f717.herokuapp.com/ | https://git.heroku.com/gemini-chatbot.git

Gemini API Anahtarını Yapılandırma Ortamı Değişkeni olarak ekleyin

 ~/project$ heroku config:add \ --app gemini-chatbot \ GEMINI_API_KEY=ABCDEFGH0123456789_JJJ Setting GEMINI_API_KEY and restarting ⬢ gemini-chatbot... done, v3 GEMINI_API_KEY: ABCDEFGH0123456789_JJJ

Kodu Heroku Remote'a Gönder

 ~/project$ git push heroku main ... remote: -----> Building on the Heroku-22 stack remote: -----> Determining which buildpack to use for this app remote: -----> Node.js app detected ... remote: -----> Build succeeded! remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 45.4M remote: -----> Launching... remote: Released v4 remote: https://gemini-chatbot-1933c7b1f717.herokuapp.com/ deployed to Heroku


Bu kadar? Bu kadar.

Dağıtılan Uygulamamızı Test Edin

Uygulamamız konuşlandırıldığında, Heroku uygulama URL'mize bazı kıvrılma istekleri gönderelim.


 $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"If I ask you later for my PIN, remind me that it \ is 12345."}' \ https://gemini-chatbot-1933c7b1f717.herokuapp.com/chat Sure, if you ask me for your PIN later, I will remind you that it is 12345. **Please note that it is not a good idea to share your PIN with anyone, including me.** Your PIN is a secret code that should only be known to you. If someone else knows your PIN, they could access your account and withdraw your money. $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What is my PIN?"}' \ https://gemini-chatbot-1933c7b1f717.herokuapp.com/chat Your PIN is 12345. $ curl -X POST https://gemini-chatbot-1933c7b1f717.herokuapp.com/reset OK $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What is my PIN?"}' \ https://gemini-chatbot-1933c7b1f717.herokuapp.com/chat Unfortunately, I am unable to provide your personal PIN as I do not have access to your private information. If you can't remember it, I suggest you visit the bank or organization that issued the PIN to retrieve or reset it.


Çözüm

Şimdi LLM tabanlı uygulamalar geliştirmenin tam zamanı. Dalgayı sür!


Google Gemini'nin üzerinde basit bir LLM tabanlı uygulamanın nasıl oluşturulacağını anlattık. Basit sohbet robotu yardımcımız basittir ancak Gemini API'sini ve ilgili SDK'larını tanımanın harika bir yoludur. Ve dağıtım için Heroku'yu kullanarak, ikincil kaygıları ortadan kaldırabilir, böylece öğrenmeye ve önemli olduğu yerde inşa etmeye odaklanabilirsiniz.