استفاده از Gemini Code Assist برای کاوش و بهبود راه حل شروع پرش خلاصه سازی هوش مصنوعی

1. مقدمه

در این نرم‌افزار، ما به یک راه‌حل موجود Jump Start، AI Summarization نگاه خواهیم کرد که از مدل‌های Vertex AI برای خلاصه کردن اسناد PDF که در Google Cloud Storage آپلود شده‌اند، استفاده می‌کند.

سپس از Gemini Code Assist برای موارد زیر استفاده خواهیم کرد:

  • کد پایتون را که عملکرد Cloud Function را که کار استخراج متن از سند PDF، خلاصه کردن آن و نوشتن نتایج را در BigQuery انجام می دهد، درک کنید.
  • ما در طول این فرآیند از Gemini Code Assist برای کمک به نوشتن عملکرد جدید کمک خواهیم گرفت. ما یک برنامه وب (برنامه Python Flask Application) توسعه خواهیم داد و برنامه را به صورت محلی اجرا می کنیم تا کد خود را تأیید کنیم.
  • به صورت اختیاری، ما همچنین می توانیم به استقرار این برنامه در Cloud Run نگاه کنیم و طراحی (زیبایی شناسی) برنامه وب را با استفاده از طراحی متریال بهبود دهیم.

کاری که خواهی کرد...

  • شما راه حل Jump Start Summarization AI را به کار خواهید گرفت و جریان فرآیند را برای درک نحوه عملکرد آن فعال خواهید کرد.
  • سپس از Cloud Shell IDE برای دانلود کد موجود برای راه حل Jump Start و از Gemini Code Assist برای درک کد استفاده خواهید کرد.
  • شما از Gemini Code Assist Cloud Shell IDE برای تولید کد برای یک عملکرد جدید استفاده خواهید کرد.

آنچه یاد خواهید گرفت...

  • راه حل Jump Start Summarization چگونه کار می کند.
  • نحوه استفاده از Gemini Code Assist برای چندین کار توسعه دهنده مانند تولید کد، تکمیل کد و خلاصه سازی کد.

آنچه شما نیاز خواهید داشت ...

  • مرورگر وب کروم
  • یک اکانت جیمیل
  • یک پروژه Cloud با فعال کردن صورت‌حساب
  • Gemini Code Assist برای پروژه Cloud شما فعال شد

این آزمایشگاه برای توسعه دهندگان در تمام سطوح، از جمله مبتدیان هدف قرار گرفته است. اگرچه برنامه نمونه به زبان پایتون است، اما برای اینکه بفهمید چه اتفاقی می افتد، نیازی به آشنایی با برنامه نویسی پایتون ندارید. تمرکز ما بر آشنایی با قابلیت های Gemini Code Assist برای توسعه دهندگان خواهد بود.

2. راه اندازی

این بخش تمام کارهایی را که برای شروع کار با این آزمایشگاه باید انجام دهید را پوشش می دهد.

Gemini را برای Cloud در پروژه Google Cloud فعال کنید

اکنون Gemini for Cloud را در پروژه Google Cloud خود فعال می کنیم. مراحل زیر را دنبال کنید:

  1. از https://console.cloud.google.com دیدن کنید و مطمئن شوید که پروژه Google Cloud را که قصد دارید با آن برای این آزمایشگاه کار کنید، انتخاب کرده اید. روی نماد Open Gemini که در بالا سمت راست می بینید کلیک کنید.

28f084ec1e159938.png

  1. پنجره چت Gemini for Cloud در سمت راست کنسول باز می شود. مطابق شکل زیر بر روی دکمه Enable کلیک کنید. اگر دکمه Enable را نمی بینید و به جای آن یک رابط چت می بینید، به احتمال زیاد Gemini را برای Cloud برای پروژه فعال کرده اید و می توانید مستقیماً به مرحله بعدی بروید.

e8df9adc4ea43a37.png

  1. هنگامی که آن را فعال کنید، می توانید با پرسیدن یک یا دو پرس و جو از Gemini برای Cloud آزمایش کنید. چند نمونه پرس و جو نشان داده شده است اما می توانید چیزی مانند What is Cloud Run?

9859ea86a8310cb.png

Gemini for Cloud با پاسخ به سوال شما پاسخ خواهد داد. می توانید روی آن کلیک کنید f68286b2b2ea5c0a.png نماد در گوشه سمت راست بالا برای بستن پنجره چت Gemini for Cloud.

Gemini Code Assist را در Cloud Shell IDE فعال کنید

ما از Cloud Shell IDE، یک محیط توسعه مبتنی بر کد OSS با مدیریت کامل، برای بقیه بخش کد استفاده خواهیم کرد. ما باید Code Assist را در Cloud Shell IDE فعال و پیکربندی کنیم و مراحل زیر ارائه شده است:

  1. از ide.cloud.google.com دیدن کنید. ممکن است کمی طول بکشد تا IDE ظاهر شود، پس لطفا صبور باشید.
  2. همانطور که نشان داده شده است، روی دکمه Cloud Code - Sign in در نوار وضعیت پایین کلیک کنید. پلاگین را طبق دستورالعمل مجاز کنید. اگر «کد ابری - بدون پروژه» را در نوار وضعیت می‌بینید، آن را انتخاب کنید و سپس پروژه Google Cloud خاص را از لیست پروژه‌هایی که قصد دارید با آنها کار کنید، انتخاب کنید.

6f5ce865fc7a3ef5.png

  1. همانطور که نشان داده شده است روی دکمه Gemini در گوشه سمت راست پایین کلیک کنید و برای آخرین بار پروژه صحیح Google Cloud را انتخاب کنید. اگر از شما خواسته شد که Cloud AI Companion API را فعال کنید، لطفاً این کار را انجام دهید و به جلو حرکت کنید.
  2. هنگامی که پروژه Google Cloud خود را انتخاب کردید، مطمئن شوید که می‌توانید آن را در پیام وضعیت Cloud Code در نوار وضعیت مشاهده کنید و همچنین Code Assist را در سمت راست، در نوار وضعیت، مانند شکل زیر، فعال کرده‌اید:

709e6c8248ac7d88.png

Gemini Code Assist آماده استفاده است!

اختیاری: اگر Gemini را در نوار وضعیت در پایین سمت راست نمی بینید، باید Gemini را در Cloud Code فعال کنید. قبل از انجام این کار، با رفتن به Cloud Code Extension → Settings، اطمینان حاصل کنید که Gemini در IDE فعال است و سپس متن Gemini را مطابق شکل زیر وارد کنید. مطمئن شوید که چک باکس انتخاب شده است. باید IDE خود را دوباره بارگیری کنید. این Gemini را در Cloud Code فعال می‌کند و نماد Gemini در نوار وضعیت در IDE شما ظاهر می‌شود.

228c9c9c6b956c8e.png

3. راه حل Jump Start Summarization AI را اجرا کنید

  1. به راه حل خلاصه سازی اسناد هوش مصنوعی Generative بروید
  2. روی Deploy کلیک کنید
  • اگر پروژه شما صورتحساب را فعال نکرده است، صورتحساب را فعال کنید.
  • us-central1 را به عنوان منطقه انتخاب کنید.
  • روی deploy کلیک کنید.
  • این می تواند تا 15 دقیقه طول بکشد.
  • نیازی به ایجاد هیچ تغییری ندارید، اما با کلیک بر روی دکمه کاوش در این راه حل در صفحه جزئیات استقرار راه حل، راه حل Jump Start را کاوش کنید.

4. با جمینی چت کنید

ما با یادگیری نحوه چت کردن با جمینی شروع می کنیم. Gemini به عنوان یک دستیار چت در Cloud Shell IDE به عنوان بخشی از برنامه افزودنی Cloud Code در VS Code در دسترس است. با کلیک بر روی دکمه Gemini در نوار ناوبری سمت چپ می توانید آن را بالا بیاورید. به دنبال نماد Gemini بگردید a489f98a34898727.png در نوار ابزار ناوبری سمت چپ و روی آن کلیک کنید.

با این کار، پنجره Chat: GeminiI در داخل Cloud Shell IDE ظاهر می‌شود و می‌توانید برای دریافت کمک در Google Cloud با Gemini چت کنید.

14ad103efaa0ddaa.png

اجازه دهید از صفحه چت Gemini برای وارد کردن یک درخواست و مشاهده پاسخ Gemini استفاده کنیم. اعلان زیر را وارد کنید:

What is Cloud Run? 

Gemini باید با جزئیات مربوط به Cloud Run پاسخ دهد. درخواست ها سؤالات یا عباراتی هستند که کمک مورد نیاز شما را توصیف می کنند. درخواست‌ها می‌توانند شامل زمینه کدهای موجود باشند که Google Cloud برای ارائه پاسخ‌های مفیدتر یا کامل‌تر تجزیه و تحلیل می‌کند. برای اطلاعات بیشتر در مورد درخواست‌های نوشتن برای ایجاد پاسخ‌های خوب، به نوشتن درخواست‌های بهتر برای Gemini در Google Cloud مراجعه کنید.

برای پرسیدن سؤالات در مورد Google Cloud از نمونه درخواست‌های زیر یا هر یک از درخواست‌های خودتان استفاده کنید:

  • What is the difference between Cloud Run and Cloud Functions?
  • What services are available on Google Cloud to run containerized workloads?
  • What are the best practices to optimize costs while working with Google Cloud Storage?

به نماد سطل زباله در بالا توجه کنید - این راه شما برای بازنشانی زمینه سابقه چت Code Assist است. همچنین توجه داشته باشید که این تعامل چت با فایل(هایی) که در IDE روی آن کار می کنید، متنی است.

5. عملکرد ابر راه حل Jump Start را در Cloud Code دانلود کنید

با فرض اینکه در Cloud Shell Editor هستید، مراحل زیر را دنبال کنید:

  • روی Cloud Code کلیک کنید c0231861cba4b5d2.png
  • توجه: بسته به اندازه صفحه نمایش شما، ممکن است یک یا دو مرحله طول بکشد.

4bf4e654a1749030.png یا a0baa1d1c1c30151.png

  • روی Cloud Functions کلیک کنید.
  • در صورت درخواست، وارد حساب کاربری خود شوید یا مجوز دهید.
  • روی تابع webhook کلیک کنید.
  • روی نماد دانلود به فضای کاری جدید کلیک کنید 21c63666e951f7b4.png
  • 196780f852e1a99e.png
  • از webhook-1 به عنوان نام فضای کاری (باید پیش فرض باشد) یا هر نام دیگری استفاده کنید و روی OK کلیک کنید.
  • با این کار کد موجود در Cloud Shell IDE باز می شود.

6. پروژه موجود را بررسی کنید

این راه حل Jump Start در زیر نشان داده شده است:

ddf9ee7ff5346f23.png

جریان از قابلیت آپلود PDF به فضای ذخیره سازی ابری را مرور کنید. تابع Cloud که در صورت آپلود فایل PDF فراخوانی می شود در فایل main.py آورده شده است.

روی آن فایل کلیک کنید. نقطه ورود برای تابع ابری، تابع entrypoint است، که در نهایت تابع cloud_event_entrypoint را فراخوانی می‌کند که متن را از PDF استخراج می‌کند، سپس summarization_entrypoint فراخوانی می‌کند، که از مدل‌های Vertex AI برای خلاصه کردن و نوشتن نتایج به ترتیب در GCS و BigQuery استفاده می‌کند.

تمام کدهای موجود در فایل main.py یا هر قطعه کد خاصی را برجسته کنید. روی Gemini Chat کلیک کنید و دستور زیر را بدهید: Explain this .

این باید به شما توضیحی برای کد بدهد.

7. یک نمونه اجرا را اجرا کنید

طبق نمودار معماری، ما یک فایل را در سطل <PROJECT_ID>_uploads آپلود می کنیم تا تابع Cloud فراخوانی شود.

مطمئن شوید که یک نمونه PDF آماده دارید که می توانید آن را آپلود کنید و خلاصه آن را می خواهید.

  • در Cloud Console به Google Cloud Storage بروید.
  • به <PROJECT_ID>_سطل آپلودها بروید. روی لینک UPLOAD FILES کلیک کنید و نمونه PDF را بارگذاری کنید.

اگر نمونه فایل PDF ندارید، می توانید از یکی از نمونه هایی که ما ایجاد کرده ایم استفاده کنید. از Cloud Shell دستور زیر را اجرا کنید:

gsutil cp \
    gs://arxiv-dataset/arxiv/cmp-lg/pdf/9410/9410009v1.pdf \
    gs://<PROJECT_ID>_uploads/

هنگامی که فایل با موفقیت آپلود شد، تابع ابر webhook فراخوانی می شود و متن موجود در سند را خلاصه می کند. خروجی در یک مجموعه داده BigQuery با نام summary_dataset و در جدول summary_table نوشته می شود.

برای مشاهده نتایج خلاصه، جدول را استعلام کنید.

f2ed627e3e96d84e.png

8. یک کلاینت اپلیکیشن وب برای اپلیکیشن بسازید

فرآیند فوق یک فرآیند گام به گام دستی برای آپلود PDF است که می خواهیم خلاصه شود. در مورد ساخت یک وب فرانت اند برای برنامه چطور؟

شرایط لازم برای وب جلو ساده است:

  1. یک فرم اولیه HTML که به ما امکان می دهد فایل را انتخاب و آپلود کنیم، که باید خلاصه شود.
  2. فایل هنگام آپلود موفقیت آمیز باید در سطل <PROJECT_ID>_uploads نوشته شود تا بقیه عملکردها همانطور که هست کار کنند.

ما از Python و چارچوب Flask برای برنامه های کاربردی تحت وب استفاده خواهیم کرد تا با کمک هوش مصنوعی Duet این را بسازیم.

بیایید شروع کنیم. ما فرض می کنیم که شما هنوز همان فضای کاری را در Cloud Shell IDE باز دارید.

تمام فایل ها را ببندید و در پنجره Gemini Chat دستور زیر را بدهید:

Write a Python Flask application that has a couple of routes:
The root route / should serve the index.html page using the render_template framework. The /upload route should accept a file being uploaded and write that file to a Cloud Storage bucket.

در حالت ایده‌آل باید کدی را به صورت زیر تولید کند:

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    filename = file.filename
    bucket = storage.Client().bucket('your-bucket-name')
    blob = bucket.blob(filename)
    blob.upload_from_string(
        file.read(),
        content_type=file.content_type
    )
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

کد بالا را به عنوان app.py در ریشه فضای کاری IDE ذخیره کنید.

ما می خواهیم برنامه روی پورت 8080 اجرا شود و از آدرس میزبان 0.0.0.0 استفاده کند، بنابراین بیایید از Gemini بخواهیم دستور app.run را اصلاح کند.

دستور زیر را بدهید:

Modify the app.py to run on port 8080 and host address 0.0.0.0

اکنون کد شما باید به شکل زیر باشد:

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    filename = file.filename
    bucket = storage.Client().bucket('your-bucket-name')
    blob = bucket.blob(filename)
    blob.upload_from_string(
        file.read(),
        content_type=file.content_type
    )
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

در مرحله بعد، ما می خواهیم index.html نیز تولید شود. در پنجره Gemini Chat دستور زیر را بدهید:

Provide the index.html file

باید کدی را که در زیر برای index.html داده شده است در اختیار شما قرار دهد.

<!DOCTYPE html>
<html>
<head>
  <title>File Upload</title>
</head>
<body>
  <h1>File Upload</h1>
  <form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
  </form>
</body>
</html>

می توانیم از Gemini بخواهیم که به ما بگوید فایل index.html را کجا ذخیره کنیم. دستور زیر را بدهید:

Since this is using the render_template framework, where should this file be saved?

باید پاسخی شبیه به زیر بدهد:

c666ee4af5039728.png

ادامه دهید و یک پوشه با نام templates در پوشه root ایجاد کنید و فایل index.html را در آن ذخیره کنید.

در صورتی که فایل در سطل Google Cloud Storage ذخیره نشود، ما می‌خواهیم در فایل app.py برخی موارد استثنا انجام شود. فایل app.py را باز نگه دارید و در پنجره Gemini Chat دستور زیر را بدهید.

modify the app.py to have exception handling in the upload() function. The success or failure should be returned to the index page.

اکنون باید برخی از کنترل استثناها را مانند شکل زیر اضافه کند:

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    try:
        file = request.files['file']
        filename = file.filename
        bucket = storage.Client().bucket('your-bucket-name')
        blob = bucket.blob(filename)
        blob.upload_from_string(
            file.read(),
            content_type=file.content_type
        )
        return redirect(url_for('index'))
    except Exception as e:
        return render_template('index.html', error=str(e))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

از آنجایی که باید پیام خطا را در index.html نمایش دهیم، باید آن را نیز اصلاح کنیم. بیایید از Gemini بخواهیم این کار را از طریق اعلان زیر انجام دهد:

update the index.html to display the error message

این باید یک index.html به روز شده را مطابق شکل زیر ارائه دهد:

<!DOCTYPE html>
<html>
<head>
  <title>File Upload</title>
</head>
<body>
  <h1>File Upload</h1>
  {% if error %}
    <p style="color: red;">{{ error }}</p>
  {% endif %}
  <form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
  </form>
</body>
</html>

اطمینان حاصل کنید که در هر یک از مراحل بالا، تغییرات را به ترتیب در فایل app.py و index.html ذخیره می کنید.

app.py نام سطل درستی ندارد و از این رو می توانیم آن اطلاعات را به Gemini بدهیم و از او بخواهیم تغییرات را انجام دهد. علاوه بر این، ما باید شناسه پروژه را برای نمونه storage.Client() ارائه کنیم. بنابراین چند دستور زیر را در پنجره Gemini Chat ارائه دهید ( <PROJECT_ID> با شناسه پروژه Google Cloud خود جایگزین کنید) و تغییرات را در آن اعمال کنید:

درخواست 1

My bucket name is gemini-for-devs-demo_uploads, please change the code to use that.

درخواست 2

My project id is gemini-for-devs-demo, please change the storage.Client() to use that.

فایل app.py نهایی شبیه این است (شناسه پروژه من در زیر نشان داده شده است، اما در حالت ایده آل باید همانی باشد که با آن کار می کنید و در درخواست بالا داده اید):

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    try:
        file = request.files['file']
        filename = file.filename
        bucket = storage.Client(project='gcp-experiments-349209').bucket('gcp-experiments-349209_uploads')
        blob = bucket.blob(filename)
        blob.upload_from_string(
            file.read(),
            content_type=file.content_type
        )
        return redirect(url_for('index'))
    except Exception as e:
        return render_template('index.html', error=str(e))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

9. برنامه وب را به صورت محلی اجرا کنید

یک محیط پایتون با وابستگی های تعریف شده در فایل requires.txt ایجاد کنید. مطابق شکل زیر به پالت Command در Cloud Shell IDE بروید:

55dffeed9fe6e9c0.png

در Python: Create Environment و سپس مراحل ایجاد یک محیط مجازی را با استفاده از (venv)، سپس مفسر Python 3.x و فایل requirements.txt طی کنید. این باعث ایجاد محیط مورد نیاز می شود.

همانطور که در زیر نشان داده شده است اکنون ترمینال را راه اندازی کنید:

6ede24cb97a4e9c5.png

دستور زیر را در ترمینال بدهید:

python app.py

برنامه Flask باید راه اندازی شود و چیزی شبیه به این را ببینید:

(.venv) romin@cloudshell:~/webhook-2 (gcp-experiments-349209)$ python app.py 
 * Serving Flask app 'app'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:8080
 * Running on http://10.88.0.3:8080
Press CTRL+C to quit
 * Restarting with watchdog (inotify)
 * Debugger is active!
 * Debugger PIN: 989-296-833

از آدرس http://127.0.0.1:8080 دیدن کنید و باید صفحه index.html نمایش داده شود.

فایلی را از دستگاه محلی خود آپلود کنید و باید با موفقیت پردازش شود.

می‌توانید با رفتن به مجموعه داده‌ها و جدول BigQuery که قبلاً در آزمایشگاه دیدیم، خلاصه‌سازی را بررسی کنید. از طرف دیگر، می‌توانید سطل فضای ذخیره‌سازی ابری ( <PROJECT_ID>_output ) را بررسی کنید.

10. (اختیاری) Open Exploration - استقرار در Cloud Run

  • می توانید برنامه را در Cloud Run مستقر کنید.
  • با دستور زیر از Gemini Code Assist بپرسید (ممکن است لازم باشد چند نوع از دستور بالا را امتحان کنید):
I don't want to build a container image but deploy directly from source. What is the gcloud command for that?

11. (اختیاری) کاوش را باز کنید - سبک های CSS را اضافه کنید

  • از Gemini Code Assist و دستیار ویرایشگر استفاده کنید تا سبک های CSS را به برنامه خود اضافه کنید و پس از اتمام دوباره برنامه را اجرا کنید!
  • فایل index.html را باز کنید و در Gemini Chat دستور زیر را بدهید: Can you apply material design styles to this index.html?
  • کد را بررسی کنید و ببینید کار می کند یا خیر.

12. تبریک می گویم!

تبریک می‌گوییم - شما با موفقیت با Gemini Code Assist روی یک پروژه نمونه کار کرده‌اید تا بفهمید چگونه می‌تواند به تولید کد، تکمیل کد، خلاصه‌سازی کد کمک کند و به شما در دریافت پاسخ به سؤالات درباره Google Cloud کمک کند.

13. اسناد مرجع