استخدام 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 المقدم من شركة سيسكو العالمية