მარტივად რომ ვთქვათ, Gradio-ს გადატვირთვის რეჟიმი (reload mode) იღებს უახლეს ცვლილებებს თქვენი საწყისი ფაილებიდან Gradio სერვერის გადატვირთვის გარეშე. თუ ეს ჯერ კიდევ გაუგებარია, გთხოვთ, განაგრძოთ კითხვა. Gradio არის პოპულარული Python ბიბლიოთეკა ინტერაქტიული მანქანური სწავლების აპლიკაციების შესაქმნელად. Gradio-ს დეველოპერები UI-ს განლაგებას სრულად Python-ში აცხადებენ და ამატებენ Python ლოგიკას, რომელიც გააქტიურდება UI მოვლენისას. მისი სწავლა მარტივია, თუ საბაზისო Python გესმით. გაეცანით ამ სწრაფ სტარტს, თუ ჯერ არ იცნობთ Gradio-ს. Gradio აპლიკაციები იშვება ისევე, როგორც ნებისმიერი სხვა Python სკრიპტი, უბრალოდ გაუშვით `python app.py` (ფაილს Gradio კოდით შეიძლება ნებისმიერი სახელი ერქვას). ეს დაიწყებს HTTP სერვერს, რომელიც გამოსახავს თქვენი აპლიკაციის UI-ს და რეაგირებს მომხმარებლის ქმედებებზე. თუ გსურთ ცვლილებების შეტანა აპლიკაციაში, აჩერებთ სერვერს (ჩვეულებრივ, Ctrl + C-ით), არედაქტირებთ საწყის ფაილს და შემდეგ ხელახლა უშვებთ სკრიპტს. სერვერის შეჩერებამ და ხელახლა გაშვებამ შეიძლება გამოიწვიოს დიდი შეფერხება აპლიკაციის შემუშავებისას. უკეთესი იქნება, თუ არსებობდა გზა, რომ ავტომატურად მიეღო კოდის უახლესი ცვლილებები, რათა მყისიერად შეგეძლოთ ახალი იდეების ტესტირება. სწორედ ამას აკეთებს Gradio-ს გადატვირთვის რეჟიმი. უბრალოდ გაუშვით `gradio app.py` `python app.py`-ის ნაცვლად, რათა თქვენი აპლიკაცია გადატვირთვის რეჟიმში გაუშვათ! Gradio აპლიკაციები იშვება uvicorn-ით, ასინქრონული სერვერით Python ვებ ფრეიმვორკებისთვის. Uvicorn უკვე გთავაზობთ ავტომატურ გადატვირთვას, მაგრამ Gradio ახორციელებს საკუთარ ლოგიკას შემდეგი მიზეზების გამო: ახლა გაჩვენებთ, თუ როგორ შეგიძლიათ გამოიყენოთ Gradio-ს გადატვირთვის რეჟიმი AI აპლიკაციის სწრაფად შესაქმნელად. ჩვენი აპლიკაცია მომხმარებლებს საშუალებას მისცემს ატვირთონ დოკუმენტების სურათები და დაუსვან მათ შეკითხვები. ისინი მიიღებენ პასუხებს ბუნებრივ ენაზე. ჩვენ გამოვიყენებთ უფასო Hugging Face Inference API-ს, ასე რომ თქვენ შეძლებთ ყველაფრის გაკეთებას თქვენი კომპიუტერიდან. GPU არ არის საჭირო! დასაწყებად, მოდით შევქმნათ ძირითადი `gr.Interface`. ჩაწერეთ შემდეგი კოდი `app.py` ფაილში და გაუშვით გადატვირთვის რეჟიმში `gradio app.py` ბრძანებით: ეს ქმნის შემდეგ მარტივ UI-ს (მომხმარებლის ინტერფეისს). რადგან მსურს მომხმარებლებმა ატვირთონ სურათები თავიანთ შეკითხვებთან ერთად, შევცვლი შემავალ კომპონენტს `gr.MultimodalTextbox()`-ზე. შეამჩნიეთ, როგორ განახლდება UI მყისიერად! ეს UI მუშაობს, მაგრამ ვფიქრობ, უკეთესი იქნება, თუ შემავალი ტექსტბოქსი იქნებოდა გამომავალი ტექსტბოქსის ქვემოთ. ამის გაკეთება შემიძლია Blocks API-ის გამოყენებით. მე ასევე ვახდენ შემავალი ტექსტბოქსის პერსონალიზაციას, ვამატებ შემავსებელ ტექსტს მომხმარებლების გასაყოლებლად. ახლა, როდესაც კმაყოფილი ვარ UI-ით, დავიწყებ `chat_fn` ლოგიკის იმპლემენტაციას. რადგან Hugging Face-ის Inference API-ს გამოვიყენებ, შემოვიტან `InferenceClient`-ს `huggingface_hub` პაკეტიდან (ის Gradio-სთან ერთად დაყენებულია). მომხმარებლის შეკითხვაზე პასუხის გასაცემად გამოვიყენებ `impira/layouylm-document-qa` მოდელს. შემდეგ გამოვიყენებ `HuggingFaceH4/zephyr-7b-beta` LLM-ს, რათა პასუხი ბუნებრივ ენაზე მივაწოდო. ეს არის ჩვენი დემო მოქმედებაში! მე ასევე მივაწვდი სისტემურ შეტყობინებას, რათა LLM-მა პასუხები შეინარჩუნოს მოკლედ და არ შეიცავდეს ნედლ სანდოობის ქულებს. `InferenceClient`-ის ყოველ ცვლილებაზე ხელახალი ინსტანცირების თავიდან ასაცილებლად, მას მოვათავსებ „გადატვირთვის გარეშე“ (no reload) კოდის ბლოკში. ეს არის ჩვენი დემო ახლა მოქმედებაში! სისტემურმა შეტყობინებამ ნამდვილად შეუწყო ხელი ბოტის პასუხების მოკლედ შენარჩუნებას და გრძელი ათობითი რიცხვების გარეშე. როგორც საბოლოო გაუმჯობესება, დავამატებ markdown სათაურს გვერდზე: ამ პოსტში, მე შევქმენი მოქმედი AI აპლიკაცია Gradio-სა და Hugging Face Inference API-ის გამოყენებით. როდესაც ამის შემუშავება დავიწყე, არ ვიცოდი, როგორი იქნებოდა საბოლოო პროდუქტი, ამიტომ UI-სა და სერვერის ლოგიკის მყისიერმა გადატვირთვამ საშუალება მომცა ძალიან სწრაფად მემუშავა სხვადასხვა იდეაზე. მთელი ამ აპლიკაციის შესაქმნელად დაახლოებით ერთი საათი დამჭირდა! თუ გსურთ ნახოთ ამ დემოს სრული კოდი, გთხოვთ, შეამოწმოთ ეს სივრცე! მეტი სტატია ჩვენი ბლოგიდან. დარეგისტრირდით ან შეხვიდეთ კომენტარისთვის.