برنامه نویسی

با استفاده از ChatGPT با اسناد خود چت کنید 🦾

از زمانی که OpenAI مدل زبان خود را ChatGPT معرفی کرد، هر روز در سرفصل های دنیای هوش مصنوعی قرار گرفته است. ChatGPT به‌عنوان پایه‌ای برای ابزارها و برنامه‌های بی‌شماری جدید، از چت ربات‌های خدمات مشتری گرفته تا دستیاران نوشتن خلاق، استفاده می‌شود. ChatGPT با توانایی خود در ایجاد پاسخ‌های با کیفیت بالا و انسان‌مانند به درخواست‌های پیچیده، به سرعت به یک فناوری تغییردهنده بازی تبدیل شده است.

کاربردهای LLM مانند ChatGPT تقریباً بی حد و حصر هستند. تخیل ما تنها مانع خواهد بود. با این حال، در این مجموعه وبلاگ، ما بر این تمرکز خواهیم کرد که چگونه می‌توانیم ChatGPT یا هر LLM را برای پاسخگویی به سؤالات خود با زمینه دانش سفارشی از اسنادی که به آن می‌دهیم بسازیم. ما با پیاده‌سازی ساده‌تر با استفاده از Llama-index شروع می‌کنیم که تقریباً همه انواع قالب‌های سند پایه را می‌خواند و بر اساس آن پاسخ به سؤالات شما را برمی‌گرداند. همانطور که پیشرفت می کنیم، از Langchain برای ساختن یک چارچوب کامل چت بات استفاده می کنیم که محتوا را تقریباً از هر پیوند یا سندی که به آن می دهید می خواند و به سؤالات شما پاسخ می دهد. Langchain یک چارچوب عالی برای توسعه برنامه های کاربردی با مدل های زبان است. ما یک برنامه وب با استفاده از این چارچوب ها خواهیم ساخت. زمان های هیجان انگیزی در پیش است!

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

  • شما به یک کلید OpenAI در حال کار نیاز دارید، زیرا ما از مدل GPT-3 در زیر آن استفاده خواهیم کرد. اگر یکی ندارید، در اینجا نحوه دریافت کلید OpenAI API آورده شده است
  • شما باید python>=3.6 را در دستگاه خود نصب کنید

این تقریباً همه چیزهایی است که شما نیاز دارید. مابقی چیزهایی که در حین عبور از آن ها مراقبت خواهیم کرد. اکنون بدون هیچ مقدمه ای، بیایید درست شیرجه بزنیم.


ببینید، قدرت لاما-ایندکس

همانطور که قبلاً گفتم، ما از llama_index برای این آموزش استفاده خواهیم کرد. ما در حال حاضر هیچ چیز فانتزی نمی سازیم. ما هیچ رابط کاربری ایجاد نخواهیم کرد. تنها هدف از این کار این است که درک درستی از نحوه عملکرد lama_index در زیر ارائه دهد. در زیر پیاده سازی با استفاده از llama_index و langchain آورده شده است. lama_index از مدل های زنجیره ای زیر کاپوت استفاده می کند.

from gpt_index import download_loader, SimpleDirectoryReader, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain.chat_models import ChatOpenAI
import os

os.environ["OPENAI_API_KEY"] = 'Your API Key Here'

file_path = input('Enter the path of the file/doc: ')

def build_index(file_path):
    max_input_size = 4096
    num_outputs = 512
    max_chunk_overlap = 20
    chunk_size_limit = 256

    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)

    llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0.7, model_name="gpt-3.5-turbo", max_tokens=num_outputs))

    download_loader('SimpleDirectoryReader')
    documents = SimpleDirectoryReader(input_files=[file_path]).load_data()
    index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper)
    return index


index = build_index(file_path=file_path)

def chatbot(prompt):
    return index.query(prompt, response_mode="compact")

while True:
    print('########################################')
    pt = input('ASK: ')
    if pt.lower()=='end':
        break
    response = chatbot(pt)
    print('----------------------------------------')
    print('ChatGPT says: ')
    print(response)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد بالا را به طور کامل کپی کنید و در یک فایل پیست کنید و نام آن را هر چه می خواهید بگذارید. اسمشو میذارم main.py. جای جای کلید API را در کد، با کلید OpenAI API خود جایگزین کنید و کارتان تمام شد.

ابتدا دستور زیر را برای نصب کتابخانه های مورد نیاز خود اجرا کنید:

pip3 install gpt_index==0.4.24 && pip3 install langchain==0.0.142
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با اجرای این دستور می توانید کد را اجرا کنید python3 main.py در محل این فایل، وقتی از شما خواسته شد مسیر فایل متنی خود را به برنامه بدهید. من از فایل PDF متن سخنرانی مارتین لوتر کینگ “I have a dream” استفاده می کنم.

➜  python3 main.py
Enter the path of the file/doc: blogs/docbot/martin.pdf
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما می توانید هر نوع فرمت فایل را بدهید. بسته به اندازه فایل و قدرت دستگاه شما، خواندن و تبدیل محتویات فایل شما به بردار زمان می برد. در مورد من، پردازش یک سند 30 مگابایتی حدود 10 ثانیه طول می کشد.

پس از انجام این کار، می توانید با استفاده از ChatGPT شروع به پرسیدن سؤال از سند خود کنید. در زیر برخی از مثال‌ها و پاسخ‌ها آورده شده است.

ASK: 

what is this document about?

----------------------------------------

ChatGPT says: 

The document is about a speech or written piece that discusses the promise of equal rights for all Americans, particularly black Americans, as outlined in the Constitution and Declaration of Independence.
It addresses the fact that this promise has not been fully realized and that there is a shameful
condition that needs to be dramatized.  
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ASK: 

summarize the speech

----------------------------------------

ChatGPT says: 

The speech urges America to remember the importance of freedom and justice, and emphasizes the urgent
need for action in the face of racial injustice. The speaker encourages the audience to rise above 
segregation and work towards brotherhood. The overall message is that now is the time to make real the
promises of democracy. 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خودشه. به همین سادگی. 35 خط کد. Llama-Index و ابزارهای دیگر مانند آن، استفاده از قدرت کامل LLM ها را بسیار آسان و کاربرپسند کرده است.


خیلی خوب است، اما واقعاً چه اتفاقی در زیر می افتد؟

Llama-index و langchain کل فرآیند را بسیار یکپارچه کرده است، که در غیر این صورت یک کار واقعاً دست و پا گیر بود. بنابراین، این چیزی است که اتفاق می افتد:

  • وقتی سند را به llama_index می‌دهید، از یکی از آداپتورهایی استفاده می‌کند که در واقع برای نوع فایل از مجموعه آداپتورهای از پیش ساخته شده از Llama-Hub مناسب است و محتویات فایل را تجزیه می‌کند.

  • پس از انجام تجزیه، llama_index کل محتوا را به تکه‌هایی از بردارها تبدیل می‌کند.

  • وقتی سوالی را در ChatGPT مطرح می‌کنید، llama_index با استفاده از جستجوی مشابه، تکه‌هایی از بردارها را از فایل تجزیه‌شده بازیابی می‌کند.

  • هنگامی که تکه های مربوطه را بازیابی کرد، llama_index با اضافه کردن آنچه که به عنوان متن به مدل بازیابی کرده است، درخواست اصلی شما را لغو می کند.

  • با سؤال اصلی و زمینه ای که به تازگی ارائه شده است، ChatGPT باید بتواند سؤال شما را درک کند.

و voila! پاسخ مربوطه را از ChatGPT دریافت خواهید کرد. اینگونه است که llama_index باعث می شود LLM ها دانش سفارشی را درک کنند. چیزهای بیشتری در این مورد وجود دارد و هر روز ویژگی های جدیدی به llama_index اضافه می شود. مطمئن شوید که کارهایی که می تواند انجام دهد را بیشتر بررسی کرده اید.


حالا این در مورد lama_index است. در وبلاگ بعدی این مجموعه خواهیم دید که چگونه از langchain برای ساختن یک چارچوب چت بات قوی‌تر استفاده کنیم که مکالمات قبلی را که با کاربر انجام داده است، پیگیری کند. در قسمت بعدی می بینمت 😉

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا