استخدام Gemini API في مواقع الويب

  السلام عليكم .. 

عنوان الدرس/ استخدام Gemini API في مواقع الويب

الاختصاص/  الذكاء الاصطناعي

المستوى/ الكل


ملاحظة: اللغة المستخدمة في الدرس هي JavaScript باستخدام React JS


الخطوات:

1- نقوم بعمل مشروع React جديد من خلال الاسطر التالية:

npx create-react-app gemini-api 

cd my-app 

npm start


2- تنصيب حزمة google AI على المشروع كالتالي:


npm i @google/generative-ai


نحتاج إلى مفتاح API للمطور لاستخدام Gemini AI ولكي ننشيء مفتاح API للمطور، نذهب الى الرابط التالي https://aistudio.google.com/app/apikey
ثم نقوم بإنشاء المفتاح .. وبمجرد إنشائه، انسخه إلى موقع آمن داخل نظامك لاستخدامه لاحقًا في التطبيق.

3- نرجع الى مشروعنا في react ونفتح ملف App.js ونمسح الكود الذي بداخله ، ثم نقوم باستدعاء المكتبة الخاصة بالكوكل ai كالتالي:
import { GoogleGenerativeAI } from '@google/generative-ai';

4- نقوم بإنشاء كائن genAI من كلاس GoogleGenerativeAI من خلال تمرير مفتاح API لكي نتمكن من الوصول إلى جميع الدوال التي يقدمها. كالتالي:

  const API_KEY = "AIzaSyAAYmJ0_U61wa8toBUo_J_XXelgoNJz6-c";  // put your api key here
5- نستخدم useState من اجل ادخال الاسئلة الى gemini وكذلك لطبع الاجابة المتولدة ، من خلال الكود التالي

  const [geminisearchValue, setsearchValue] = useState('');
  const [geminiResponse, setgeminiResponse] = useState([]);

  const handlesearchInput = (e)=>{
    setsearchValue(e.target.value);
  }
          <input type="text" class="form-control"
          value={geminisearchValue}
          onChange={handlesearchInput}
          placeholder="type here" required
          />


6- نأتي الان الى الكود الخاص بال gemini api ونشرحه بالتفصيل:

ننشئ دالة getResponseforGemini  ونضع بداخله الأسطر التالية:

- عمل model  خاص بال gemini api وهنا استخدمنا gemini-1.5-flash كالتالي:

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

- عمل متغير result واسناده قيمة المدخل الى ال model من خلال model.generateContent كالتالي:
const result = await model.generateContent(geminisearchValue);

- عمل متغير response واسناده قيمة النتيجة الخارجة من ال model من خلال result.response كالتالي:
const response = result.response;

- وأخيراً تحويل قيمة استخراج الكتابة من ال response من خلال response.text  كالتالي:

const text = response.text();

حيث قمنا بهذا الدرس استخدام خاصية Generate text from text-only input وهي عملية توليد الكتابة من الكتابة فقط  

- نقوم الان بوضع النتيجة في المتغير geminiResponse من أجل اظهارها في الموقع كالتالي:
setgeminiResponse([...geminiResponse,text]);
وهنا الكود بالكامل :

import { useState } from 'react';
import './App.css';
import { GoogleGenerativeAI } from '@google/generative-ai';


function App() {

  const [geminisearchValue, setsearchValue] = useState('');
  const [geminiResponse, setgeminiResponse] = useState([]);


  const handlesearchInput = (e)=>{
    setsearchValue(e.target.value);
  }



  const API_KEY = "AIzaSyAAYmJ0_U61wa8toBUo_J_XXelgoNJz6-c";  // put your api key here
  const genAI = new GoogleGenerativeAI(API_KEY);

  const getResponseforGemini = async ()=>{
    try{
      const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
      const result = await model.generateContent(geminisearchValue);
      const response = result.response;
      const text = response.text();
      console.log(text);
      setgeminiResponse([...geminiResponse,text]);
    }
    catch (error) {
      console.log(error);
      console.log("Something Went Wrong");
    }
  };
 

  return (
    <div style={{height:'700px', backgroundColor: '#F2F3F4'}}>
        <div class="container" style={{padding:'70px'}}>
            <div style={{display:'flex', justifyContent: 'center'}}>
                <h1>
                    Hi Gemini!
                </h1>
            </div>
            <div style={{marginTop: "30px"}}>
 
                    <div class="col-md-4" style={{padding:'20px'}}>
                      <label for="validationCustom01" class="form-label">ask what you want</label>
                      <input type="text" class="form-control"
                      value={geminisearchValue}
                      onChange={handlesearchInput}
                      placeholder="type here" required
                      />
                    </div>
                    <div class="col-12">
                      <button class="btn btn-primary"
                      onClick={getResponseforGemini}
                      >
                        GO
                      </button>
                    </div>
                    <div class="form-floating">
                      {
                        geminiResponse.map((geminiRes,index)=>(
                          <div key={index}>
                            <div className={`response-text ${index === geminiResponse.length - 1 ? 'fw-italic' : ''}`}>{geminiRes}</div>
                          </div>
                        ))
                      }
                       
                    </div>

            </div>
    </div>
    </div>
  );
}

export default App;


النتيجة النهائية في الصورة

اضغط على الصورة للتكبير



واخيراً قم بمراجعة موقع https://ai.google.dev/gemini-api/docs وحاول ان تستخدم ميزات أخرى في gemini api في موقعك

enjoy 😊






تعليقات

المشاركات الشائعة من هذه المدونة

استخدام مكتبات Numpy, Pandas, Matplot الخاصة بلغة بايثون في تمثيل البيانات

بناء نظام انترنت الاشياء باستخدام محاكي Packet Tracer المقدم من شركة سيسكو العالمية

اضافة قاعدة بيانات فايربيس الى مشروع في اندرويد استوديو