۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

با استفاده از API پالم گوگل یک ربات چت بسازید

با استفاده از مدل زبان بزرگ PalM 2 موجود در Google Cloud Vertex AI، می‌توانید یک ربات چت تنها در چند خط کد ایجاد کنید. این مراحل است.

با استفاده از مدل زبان بزرگ PalM 2 موجود در Google Cloud Vertex AI، می‌توانید یک ربات چت تنها در چند خط کد ایجاد کنید. این مراحل است.

در مقاله قبلی، با ساختن یک برنامه کاربردی ساده برای ایجاد یک پست وبلاگ، مدل پایه پالم ۲ Google را معرفی کردم. در این مقاله، نحوه ساخت ربات چت با API PalM 2 موجود در Google Cloud Vertex AI را بررسی خواهیم کرد. a>.

برای راهنمای دقیق در مورد تنظیم محیط و پیکربندی SDK، لطفاً به آموزش قبلی مراجعه کنید. این راهنما فرض می کند که شما راهنما قبلی را تکمیل کرده اید.

کتابخانه vertexai.preview.language_models دارای چندین کلاس از جمله ChatModel، TextEmbedding، و TextGenerationModel است. برای این مقاله، ما بر روی کتابخانه ChatModel تمرکز خواهیم کرد، جایی که مدل PalM به عنوان معلم فیزیک به سؤالات ما پاسخ خواهد داد.

به عنوان اولین قدم، اجازه دهید کلاس‌های مناسب را از کتابخانه وارد کنیم.

from vertexai.preview.language_models import ChatModel, InputOutputTextPair

کلاس ChatModel مسئول پذیرش یک درخواست و بازگرداندن پاسخ است. InputOutputTextPair ایجاد یک جفت پرسش و پاسخ را آسان می کند که نمونه هایی را برای چت بات ارائه می کند.

سپس ما شی را بر اساس مدل از پیش آموزش دیده، chat-bison@001، که برای مکالمات چت مانند بهینه شده است، مقداردهی اولیه می کنیم.

model = ChatModel.from_pretrained("chat-bison@001") 

مرحله بعدی تعریف تابعی است که دستور را به عنوان ورودی می پذیرد و پاسخ تولید شده توسط مدل را به عنوان خروجی برمی گرداند.

def get_completion(msg):
   
    ctx="My name is Jani. You are a physics teacher, knowledgeable about the gravitational theory"   
   
    exp=[
        InputOutputTextPair(
            input_text="How you define gravity?",
            output_text="Gravity is a force that attracts a body towards the centre of the earth or any other physical body having mass."
        ),
    ]   
    chat = model.start_chat(context=ctx,examples=exp)

    response = chat.send_message(msg,max_output_tokens=256,temperature=0.2)

    return response

vertex ai palm chatbot 01

این روش ماهیت ساخت یک ربات چت را نشان می دهد. این شامل سه عنصر ضروری برای ایجاد یک پاسخ معنادار و مرتبط است:

  • Context: این به ما کمک می کند تا رفتار مدل گپ را سفارشی کنیم. برای افزودن زمینه اضافی برای آموزش مدل در مورد موضوع یا موضوع اصلی گفتگو استفاده می شود. اگرچه اختیاری است، اما زمینه نقش مهمی در ایجاد پاسخ‌های دقیق دارد.
  • نمونه‌ها: فهرستی از جفت‌های ورودی-خروجی که خروجی مدل نمونه‌ای را برای یک ورودی مشخص نشان می‌دهد، نمونه‌ای از یک اعلان چت است. می‌توانید از مثال‌هایی برای تغییر نحوه پاسخ‌دهی مدل به سؤالات خاص استفاده کنید.
  • پیام‌ها: پیام‌های درخواست چت فهرستی از جفت‌های نویسنده-محتوا هستند. مدل به جدیدترین پیام که آخرین جفت در لیست پیام ها است پاسخ می دهد. تاریخچه جلسه چت از جفت های قبل از آخرین جفت تشکیل شده است.
چند شکلی و وراثت در جاوا

به نحوه تعریف زمینه و مثال‌ها توجه کنید. از آنجایی که ما در حال ساخت یک ربات چت فیزیک هستیم که متخصص در نظریه گرانشی است، هم متن و هم نمونه‌ها به موضوع اشاره دارند.

مدل PalM توکن‌ها را به عنوان پارامتر ورودی می‌پذیرد که اندازه درخواست و پاسخ‌ها را تعیین می‌کند. یک نشانه تقریباً چهار کاراکتر است. ۱۰۰ نشانه تقریباً با ۶۰ تا ۸۰ کلمه مطابقت دارد. برای این مکالمه، ما پارامتر max_output_tokens را روی ۲۵۰ قرار دادیم. شما می توانید بسته به مورد استفاده خود این مقدار را افزایش دهید. توجه داشته باشید که محدودیت نشانه تعیین می کند که چه تعداد پیام در تاریخچه جلسه چت حفظ می شود.

با Sentry برنامه های Jetpack Compose بهتر بسازید

خلاقیت مدل با پارامتر بعدی، دما، تعریف می‌شود. این گزینه تعیین می کند که انتخاب توکن چقدر تصادفی است. دماهای پایین تر برای درخواست هایی که نیاز به پاسخ خاص و خلاقانه کمتری دارند ترجیح داده می شوند، در حالی که دمای بالاتر می تواند پاسخ های متنوع و خلاقانه تری را به همراه داشته باشد. مقدار می تواند از ۰ تا ۱ متغیر باشد. ما آن را روی ۰.۲ تنظیم می کنیم زیرا به دقت نیاز داریم.

نحوه کار با نوع داده لیست پایتون

با روش موجود، بیایید درخواست را بسازیم.

prompt="What is the relationship between gravity and weight?"

Invoke the method by passing the prompt.
response=get_completion(prompt)
print(response)
response=get_completion(prompt)

vertex ai palm chatbot 02

بیایید سوال دیگری در رابطه با جاذبه بپرسیم.

prompt="What is gravity according to Einstein?"

response=get_completion(prompt)
print(response.text)

vertex ai palm chatbot 03

در زیر کد کامل مرجع شما آمده است.

from vertexai.preview.language_models import ChatModel, InputOutputTextPair

model = ChatModel.from_pretrained("chat-bison@001")

def get_completion(msg):
   
    ctx="My name is Jani. You are a physics teacher, knowledgeable about the gravitational theory"   

    exp=[
        InputOutputTextPair(
            input_text="How you define gravity?",
            output_text="Gravity is a force that attracts a body towards the centre of the earth or any other physical body having mass."
        ),
    ]   
    chat = model.start_chat(context=ctx,examples=exp)

    response = chat.send_message(msg,max_output_tokens=256,temperature=0.2)

    return response

prompt="What is the relationship between gravity and weight?"
response=get_completion(prompt)
print(response.text)

prompt="What is gravity according to Einstein?"
response=get_completion(prompt)
print(response.text)

ما یک ربات چت بر اساس مدل زبان بزرگ PalM 2 تنها در چند خط کد ساختیم. در مقاله بعدی به بررسی قابلیت embeddings کلمه مدل می پردازیم. با ما همراه باشید.