OpenAI Assistants API - Course for Beginners

2024 ж. 16 Мам.
172 087 Рет қаралды

Learn how to use the OpenAI's Assistants API to build powerful AI assistants. In this course, we'll explore how to leverage the Assistants API by OpenAI to create dynamic, intelligent web apps using Streamlit.
What we'll cover:
1️⃣ Function Calling with the API: Learn to seamlessly integrate the Assistants API into your applications, enabling advanced AI functionalities right at your fingertips.
2️⃣ Knowledge Retrieval: Discover how to use the API to extract information, answer questions, and make your applications smarter and more responsive.
3️⃣ Code Interpreter Capabilities: Dive into the API's ability to interpret and generate code, a game-changer for automating tasks and enhancing your app's capabilities.
4️⃣ LLM Fundamentals: Gain a solid understanding of Large Language Models (LLMs) and how they form the backbone of OpenAI's Assistants API. This module demystifies the technology and provides a foundation for advanced application development.
The course features a series of hands-on projects and real-world examples to apply what you've learned. By the end of our session, you'll have the skills and confidence to build your own intelligent web apps using Streamlit and OpenAI's Assistants API.
⭐️ Code ⭐️
Personal trainer: github.com/pdichone/vincibits...
Personal trainer: github.com/pdichone/vincibits...
Study-Buddy: github.com/pdichone/vincibits...
✏️ Created by @vincibits
Twitter (X): @buildappswithme
⭐️ Contents ⭐️
⌨️ (0:00:00) Introduction
⌨️ (0:01:02) What’s This Course About - What Will You Learn?
⌨️ (0:01:33) Pre-requisites
⌨️ (0:02:44) Python and Dev tools Set up
⌨️ (0:04:22) VS Code Installation
⌨️ (0:05:31) OpenAI Account - Generate an API Key
⌨️ (0:07:53) What is the Assistants API & Benefits - Comparison Between the Chat Completion API and the Assistants API
⌨️ (0:18:16) Assistants API Building Blocks
⌨️ (0:24:04) Creating an Assistants API - Manually (Personal Trainer)
⌨️ (0:38:20) Creating an Assistants API - In Code (Personal Trainer)
⌨️ (1:04:15) Build a News Summarizer Introduction: Function Calling - A Streamlit Application
⌨️ (1:25:39) Create an AssistantsManager Class For our News Summarizer
⌨️ (2:10:46) Using the AssistantManager Class to Create an Assistant and run it as a Streamlit App
⌨️ (2:28:23) Knowledge Bases Retrieval Tools - How it Works & Introduction to Embeddings
⌨️ (2:35:25) Build a Study Buddy Streamlit Application
⌨️ (3:22:24) Run the Study Buddy Streamlit Application and Test
⌨️ (3:29:27) Wrap up and Final Considerations.
🎉 Thanks to our Champion and Sponsor supporters:
👾 davthecoder
👾 jedi-or-sith
👾 南宮千影
👾 Agustín Kussrow
👾 Nattira Maneerat
👾 Heather Wcislo
👾 Serhiy Kalinets
👾 Justin Hual
👾 Otis Morgan
👾 Oscar Rahnama
--
Learn to code for free and get a developer job: www.freecodecamp.org
Read hundreds of articles on programming: freecodecamp.org/news

Пікірлер
  • Thank you so much for watching, Everone. I hope you find this course valuable and if you have any question don’t hesitate to reach out to me :) again, thank you for the opportunity 🎉

    @vincibits@vincibits3 ай бұрын
    • Love your style. Subscribed. Waiting for more quality videos.

      @noNullMoments@noNullMoments3 ай бұрын
    • @@noNullMoments Thank you so much for your support. It means the world to me... :)

      @vincibits@vincibits3 ай бұрын
    • Discord server was the early birds? 😀@@vincibits

      @noNullMoments@noNullMoments3 ай бұрын
    • Without having the API subscription can we able to do the python code

      @joyaljose3666@joyaljose36663 ай бұрын
    • @@joyaljose3666 you have to have the API subscription, however, if you open an account (for the first time) you'll have a few Free credits that you can use :)

      @vincibits@vincibits3 ай бұрын
  • This dude's voice is so soothing I might learn this lesson in my sleep.

    @goo_tx@goo_tx3 ай бұрын
    • Hahh.. Is that a good thing? I mean I want you to learn, and not to fall asleep :)

      @vincibits@vincibits2 ай бұрын
    • Also liked it. Soft and clear. It's a good thing for sure.

      @thallesn@thallesn2 ай бұрын
    • for real, it feels like I'm being taught by Kendrick Lamar

      @rolandcucicea6006@rolandcucicea6006Ай бұрын
    • @@rolandcucicea6006 lol! I hope that's a good thing?!

      @vincibits@vincibitsАй бұрын
    • @@vincibits, To me I feel like you teaching me like sitting next to me. 😄

      @aeonfoxie1260@aeonfoxie126029 күн бұрын
  • I am casually watching this course, and I like the teacher. I am casually considering trying to follow along. I appreciate the relaxed speed of the course. I have seen some other hotshot young KZheadrs, talking about Assistants API, but they are so fast, so I don't understand anything. This teacher's speed is just right for me :)

    @deja00@deja00Ай бұрын
    • Thank you!!

      @vincibits@vincibitsАй бұрын
  • Paulo was the first to do Flutter Courses. Love to see he’s still making great videos.

    @craignine5074@craignine50743 ай бұрын
    • Thank you so much for your kind words :)

      @vincibits@vincibits3 ай бұрын
  • Mr.bo this gentleman is an excellent teacher take care of him

    @karimbouche3563@karimbouche35633 ай бұрын
  • Randomly came across this tutorial and the instructor has such a calming voice and so so easy to grasp the lesson. This is something I haven’t even considered learning before and I am so focused on the subject that I’m excited to give it a try. Thank you!!

    @fatumaali4398@fatumaali439826 күн бұрын
  • Smooth, masterful, and timely walk-though of the OpenAI Assistants API. Very clear. Much more pragmatic than reading the docs. Fantastic job!

    @AlexWoolford@AlexWoolford3 ай бұрын
    • i was just saying the exact opposite to myself 😅 Anyway, thank authors for the effort and for the ideas included 😌

      @kalamatej@kalamatej3 ай бұрын
    • @@kalamatej You don't like the course? I am just curious :)

      @vincibits@vincibits2 ай бұрын
  • Thanks for this tutorial, this solves my tasks for this sprint.

    @adetoro@adetoro2 ай бұрын
  • I just finished this course and I must say I thoroughly enjoyed it! The content was well-explained and beginner-friendly. I would be really excited to see more videos on this topic in the future. Please continue with the great work, and I'm looking forward to the next videos!

    @Xantianis@Xantianis3 ай бұрын
    • Thank you so. much!

      @vincibits@vincibits2 ай бұрын
  • Oh my god finally 😭I've been waiting for this

    @KAIZENTECHNOLOGIES@KAIZENTECHNOLOGIES3 ай бұрын
  • Amazing Teacher, Very detailed Tutorial.

    @sullgun7600@sullgun76003 ай бұрын
    • Thank you so much! I really appreciate you!

      @vincibits@vincibits3 ай бұрын
  • As always Steve Jobs giving great advice thanks steve.

    @xenaidop6416@xenaidop64163 ай бұрын
  • Thank you so much for this tutorial!! Very helpful

    @arepitas5019@arepitas50193 ай бұрын
  • Great Course! watched from Brazil

    @d.Santos18@d.Santos182 ай бұрын
  • Paulo is great. I did one of his courses on another plataform. Happy to see him here

    @pragadoegito@pragadoegito3 ай бұрын
    • Thank you so much for your kind work! I am humbled!

      @vincibits@vincibits3 ай бұрын
    • Thank you for your kind words. It means a lot!

      @vincibits@vincibits3 ай бұрын
    • i watched the first 10 minutes but i'm still confused regarding what assistant api actually does, i even asked chatgpt but it doesn't know either.. is it just chatgpt api or i can use this to teach the chat's api to learn only my specific dataset and answer questions regarding that data without answering other topics? thanks! p.s. i've subscribed to your youtube channel btw, i saw few interesting python projects there i hope you keep it up and not give up after a year or. so like most youtubers@@vincibits

      @disrael2101@disrael21013 ай бұрын
  • Thanks a lot for this tutorial. I've learned a lot from this. 2:14:48 I wonder why we need to create the assistant everytime users click the button? This creates a lot of assistant in the OpenAI account. Should we just create it one time when the app is built?

    @togepilinhvuu906@togepilinhvuu9063 ай бұрын
  • Love Paulo! Always a pleasure to see him.

    @mr.daniish@mr.daniish3 ай бұрын
    • Thank you so much! It means a lot to me. Thank you!

      @PauloDichone@PauloDichone3 ай бұрын
    • Thank you so much!

      @vincibits@vincibits3 ай бұрын
  • Great content! Unlike speedy, marketer, shallow content that is often seen, this man provides in depth, nicely paced, original content. 👏👏

    @rafaelcattan287@rafaelcattan28729 күн бұрын
    • Thank you so much! I really appreciate it!

      @vincibits@vincibits29 күн бұрын
  • Thank you so much. This is what i need 🎉

    @user-yn3nh5op5f@user-yn3nh5op5f2 ай бұрын
  • I was looking for this many weeks, most of the other information is out of date and code is not working. Thank you so much! if you can make another video about how to connect this to simple webinterface - would be great!

    @Gardetsky@Gardetsky3 ай бұрын
  • thank you so much for this video. saved us all a ton of time. the api from the application is generating inconsistent responses and behaves as if the files don't event exist. However, from the playground, it works as expected.

    @rmn6088@rmn60883 ай бұрын
    • Thank you so much!

      @vincibits@vincibits2 ай бұрын
  • Mr paulo really your style is excellent and that was very helpfull,hope to see more frequently in this channel,hope mr bo will accept

    @karimkrimou399@karimkrimou3993 ай бұрын
    • Thank you so much!

      @vincibits@vincibits3 ай бұрын
  • Thank you very much. Easy to follow. I'll try it in NodeJS ❤

    @IonizedSun@IonizedSun3 ай бұрын
    • Thank you!

      @vincibits@vincibits3 ай бұрын
  • Great course, thank you for making available this high quality content 😃

    @leonardosantiago8251@leonardosantiago825127 күн бұрын
  • This course is very nice and useful for us thanks all of that

    @sayedmobashir7803@sayedmobashir78033 ай бұрын
    • Thank you! I am glad you find it helpful!

      @vincibits@vincibits3 ай бұрын
  • Please share the slides / presentation for notes. Thanks 🙏

    @deepaksood9592@deepaksood95923 ай бұрын
  • Thank you for such a indepth tutorial and it has help me alot and I think you have alot to offer.You can really provide alot of value if you just brush up a little in your teaching skills as I am totally lost sometimes on which part I am coding when your writing a monolith and only seeing the final result in the end. I dont know which part is broken or which part does what. Again I dont mean this to come in a bad way.

    @not_subodh.7998@not_subodh.799829 күн бұрын
  • Paulo 's flutter course was good. I took it in udemy.

    @VinayakGNair@VinayakGNair3 ай бұрын
    • Thank you!

      @vincibits@vincibits3 ай бұрын
  • thanks a million for this content

    @euginekholmogorov5196@euginekholmogorov5196Ай бұрын
  • Great content, thanks! Do you have a preference when building a RAG app to work with the OpenAI Assistants API, Llama Index, or Langchain?

    @nigeldogg@nigeldoggАй бұрын
  • Thanks

    @sultan4youu@sultan4youu3 ай бұрын
  • This is a goldmine

    @CashCowInvestor@CashCowInvestor2 ай бұрын
  • Plz tell me which version of dell laptop is required for OpenAI project

    @swarupsaha1976@swarupsaha19763 ай бұрын
  • This is a wonderful video @vincibits This may be premature since I haven’t tried it yet, but I’ve been doing a lot of work so I’m not token hogging and this assistants API feels like it may eat up tokens. I’ll benchmark each for comparison. The convo history compression alone would be something I’d rather managed in a thread, but if it’s using up tokens, it’s gonna be expensive

    @Cymricus@CymricusАй бұрын
  • Thank you for the tutorial, it's truly awesome. I need to find time to thoroughly review it. I have a question: I'm currently looking to analyze simulated data from interviews between psychologists and clients. Each interview is about 20,000 tokens long, and I want to summarize the Q&A content to create a case report for each client. However, loading all the data at once is a significant challenge. I've considered dividing the data into batches and feeding it to the assistant for processing, but this often leads to incoherent outputs, as if the assistant is hallucinating. My current plan is to split the data into multiple files, then gradually submit these to the assistant to generate summaries, and finally integrate these into a comprehensive case report. The issue is that my current programming skills are limited to simple interactions-submitting a question and receiving an answer. Although I can use a for loop to process batches of data for summaries, these seem to be treated as separate conversations without shared context, which means the AI might not remember past interactions. How can I program it so that my prompts are processed in a single thread, similar to how the assistant interface maintains context throughout a conversation? Thank you for your help.

    @user-mv9ul9tz1c@user-mv9ul9tz1c20 күн бұрын
  • Paulo, wonderful course, and thank you. Is the OpenAI Assistant python class code you demonstrated available anywhere? I looked at the links provided (two were the same) and didn't see anything regarding the class development. Again, thank you so much for your time.

    @providence6643@providence66433 ай бұрын
  • Love this video! By the way, is there the code of function calling provided? I do not find it in the profile.

    @jacobji0415@jacobji04152 ай бұрын
  • Fantastic job Paulo!

    @RhinoInsight@RhinoInsight3 ай бұрын
    • Thank you so much!

      @vincibits@vincibits3 ай бұрын
  • This was excellent. Do you do consultations as well? Thanks.

    @collinvelarde7473@collinvelarde747321 күн бұрын
  • Very useful, Thank you Paulo

    @juliotriana4449@juliotriana44493 ай бұрын
    • Thank you!

      @vincibits@vincibits3 ай бұрын
  • would assistant API follow the same response with custom GPT if we give them both the same instruction?

    @fintech1378@fintech1378Ай бұрын
  • in the function call, how can we connect to the database?

    @Shorts-lb2if@Shorts-lb2if2 ай бұрын
  • Thanks!

    @GBS.NOCODEAI@GBS.NOCODEAIАй бұрын
  • thanks for sharing great knowledge sir, can we have assistant api implementation in php

    @Basirafeef@BasirafeefАй бұрын
  • nice. so assistance api is something which is doing what langchain does??

    @KumR@KumR3 ай бұрын
  • Amazing tutorial! One question about the cost. Is cheaper to create a new thread for each message or it's the same we use the same thread for each messages ? How to calculate cost of usage ?

    @xdominguez1978@xdominguez19783 ай бұрын
    • same question I have

      @osamaa1891@osamaa18913 ай бұрын
  • In the Study Buddy you need to fix upload_to_openai so that the file actually gets a name when uploaded: def upload_to_openai(filepath): with open(filepath, "rb") as file: response = client.files.create(file=(os.path.basename(filepath), file), purpose="assistants") return response.id

    @peerjako@peerjakoАй бұрын
    • Correct.

      @Rahulkp220@Rahulkp220Ай бұрын
    • thanks very much,

      @miguelospina5848@miguelospina5848Ай бұрын
    • Thanks a million. i had nothing working until you provided this. very kind of you!!!

      @aeharrison1able@aeharrison1ableАй бұрын
    • it really gets to me that error prevented the assistant from working and only you mentioned it. im lucky i saw your comment and connected the problem to the code,. not familiar with python i would have never figured that out. i cant thank you enough. made all the difference. i have a big question for you: do you think my sql tables with extensive business calculation knowledge examples can be read in and recognized as the models for building any workflow? organized by access, functions and sequence, this methodology can define any business process. if an assistant can read in my proven formulas that reside in 15 sql tables and let users select from them and build new ones anything can be defined, matched and executed.

      @aeharrison1able@aeharrison1ableАй бұрын
  • Its awesome.

    @ecstaticsolution@ecstaticsolution25 күн бұрын
  • @vincibits Thank you very much for your explanations. I can't find the link to get code about News Summarizer. Could-you publish it again?

    @jean-yveshillion6749@jean-yveshillion674928 күн бұрын
  • Now see the thing is, they have mentioned multiple forms of pricing in OpenAI, it's confusing, if you could help. You see, if wer'e using assistants api with 4 or 4.5 turbo models, also fine tuning a bit(if this means training our assistant to some extent), then they are going to charge separately on the three fronts they mentioned there? model + assistant api(session thing) + fine tuning($8/M tokens or so)?

    @adityagupta7288@adityagupta728829 күн бұрын
  • I think there is a little mistake in the video description. The personal trainer github repo shows up twice and the newsSummarizer is missing!

    @mariuswilsch4035@mariuswilsch40352 ай бұрын
  • Why I cant see is no save button, when I am creating assistant?

    @ahsanmalik9576@ahsanmalik957623 күн бұрын
  • I used assistants api a week after it released. I'm just a small text file it was super slow I'm saying 10 seconds for a simple question. It's a really unoptimized rag system.

    @skyhappy@skyhappy3 ай бұрын
  • Can I create a single PDF chatbot assistant and use it for multiple users or I have to create a new assistant for each user ? I am talking about android application.

    @user-fi8pc9pz4k@user-fi8pc9pz4kАй бұрын
  • why didn't you get directly with google colab? No need to install coder or python libraries as is all in one. Makes sense ora do you see any issue in using google colab?

    @punk_e_meme@punk_e_meme24 күн бұрын
  • Great job. It would be great if you can teach us how to implement stream responses when it release for tge Asistant api

    @nguyenquangngoc3993@nguyenquangngoc39933 ай бұрын
    • Will do!

      @vincibits@vincibits3 ай бұрын
    • Please do a short follow up with the streaming responses 😊😊😊

      @nguyenquangngoc3993@nguyenquangngoc3993Ай бұрын
  • (58:58) why the response when call assistant was so slow ? Do u have a solution or something explain that ?

    @hoangnguyenhuy8360@hoangnguyenhuy83602 ай бұрын
  • As a knowledge base can’t you just get it to retrieve large files and then the chat gpt will incorporate it into its answer without all the coding?

    @marklangley7135@marklangley713521 күн бұрын
  • where will we get these notes ?? plz help

    @hitenkaistha3221@hitenkaistha32213 ай бұрын
  • thanks for the video, but I a getting this error:"TypeError: OpenAI.__init__() takes 1 positional argument but 2 were given"

    @karimgamal1208@karimgamal12082 ай бұрын
  • Can you tell me what kind of computer or laptop you are using? I am 47 yrs old and starting my life over. I need a new career. I was hoping to develop skills using A.I. so I can get out of my horrific predicament. Please any advice would be great. Great video by the way!🤙

    @danr4746@danr4746Ай бұрын
  • Good but perhaps a bit slow? Speed x10

    @andreasek341@andreasek3412 ай бұрын
  • ❤ yes I a great 👍

    @sayedmobashir7803@sayedmobashir78033 ай бұрын
  • sorry im new OAI asssistant API..i have already had 'credentials' from my custom GPT in GPT store. how can i connect it to my separate app with assistant API? not recreating the instruction on assistant API but just connect it to custom GPT in GPT store that i have already created earlier

    @fintech1378@fintech1378Ай бұрын
  • This isn't possible without credit card info, right? Even the $5 credits on the new account aren't a lot?

    @naehalmulazim@naehalmulazimАй бұрын
  • Does this cover how to create images with assistants

    @tiffanyw3794@tiffanyw3794Ай бұрын
  • What are the benefits of using this over say the custom GPT’s?

    @astroewok7298@astroewok72983 ай бұрын
    • Using someone else's configuration versus making your own. More power and more control to you at the expense of having to do the work...

      @juandager5220@juandager52203 ай бұрын
    • But you make your own Custom GPT's anyway

      @tyranmcgrath6871@tyranmcgrath68713 ай бұрын
  • Interesting how about 70% of the video just shows things you can already do with the normal chat completions API (function calling), but with way less overhead and cost. Anyway, good video 👍

    @aleperezmoreno2368@aleperezmoreno23682 ай бұрын
  • can we build RAG system here

    @fintech1378@fintech1378Ай бұрын
  • ❤❤❤

    @user-un2fr6rk2v@user-un2fr6rk2v3 ай бұрын
  • Thank you KZhead for 2x speed 😅

    @HLhere@HLhereАй бұрын
  • I am getting this error in personal trainer project plss tell me how to resolve this--> raise OpenAIError( openai.OpenAIError: The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable and this error also--> File "C:\Users\ASUS\OneDrive\Desktop\New folder (3)\main.py", line 24, in thread = client.beta.threads.create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: Threads.create() got an unexpected keyword argument 'message'

    @jyotishmoydeka6804@jyotishmoydeka68043 ай бұрын
  • Dude I just fall in love with you ❤❤

    @seewave544@seewave544Ай бұрын
  • Charley your voice be more than sleeping tablets..😉

    @codetraffics@codetrafficsАй бұрын
  • hi where you supply the 3 links for your course code, there is an error the 2nd project link, the first persona-trainer code is repeated so i have been trying to type in every word as you say it and its very hard to comprehend at the same time. could you please fix that link to go to NEWS-SUMMERIZER code instead?

    @aeharrison1able@aeharrison1ableАй бұрын
    • Yes, I can't find the news summarizer code as well @vincibits

      @ramangupta5918@ramangupta5918Ай бұрын
  • I have created a assitance ID asst_..... but I am still failing to build a simple php file that tests it via curl. any one who can help?

    @TobiasHam@TobiasHam2 ай бұрын
  • could you please upload news summarizer code

    @SafwanMansuri-pf2ro@SafwanMansuri-pf2ro16 күн бұрын
  • I would like to ask how to activate, (source myenv/bin/activate), I am stuck here, I am a windows user and I followed the steps you instructed but I am stuck at this early hahahaha, could you instruct me?

    @ZyLkeFarroh@ZyLkeFarrohАй бұрын
  • does anyone know that gpt 4 subscription which costs 20 dollar per month allow access to openai assitants api toekns or not ?

    @daaimrehman717@daaimrehman7172 ай бұрын
    • No it doesn't. Open AI's api and chatgpt plus are different things which doesn't correlate. Got OpenAI's billing section and just add no more than $10 to start working with an api.

      @mentalpump@mentalpump2 ай бұрын
    • @@mentalpump so it's like 10 dollars per month for the assistants api?

      @daaimrehman717@daaimrehman7172 ай бұрын
    • @@daaimrehman717 No. 10 dollars is just a thresholding price which I personally suggested. You can have whatever. And your balabce will deduct as you use api after that from that balace you hold ie 10 dollars or whatever.

      @mantavyasoni1773@mantavyasoni17732 ай бұрын
  • Can i use gpt 3 for assistance api for free?

    @nabinmaiti9167@nabinmaiti91673 ай бұрын
    • yes 100%

      @cuti9114@cuti91143 ай бұрын
  • Holy crap, an extra day in Paris is $12.9K??

    @JoeKnouse@JoeKnouse9 күн бұрын
  • First comment

    @xavAk@xavAk3 ай бұрын
  • Who thought that Open AI was intelligent? God help anyone who has to go through this to get it to do something useful.

    @petercrossley1069@petercrossley10695 күн бұрын
  • its a good tutorial but its for open ai assistants v1

    @kylesmith8187@kylesmith81875 күн бұрын
  • OpenAI ASMR API

    @stianchrister@stianchrister19 күн бұрын
  • though isnt it paid?

    @sajeevnv4179@sajeevnv41793 ай бұрын
    • Yes still it's

      @MrDip0007@MrDip00073 ай бұрын
  • why does bro look like steve jobs

    @YG-wk7qm@YG-wk7qm2 ай бұрын
  • в одной рекламе ии ассистент напоминал пациенту принимать таблетки. сейчас вряд ли любой ии ассистент имеет право советовать информацию медицинского характера

    @user-xv3zh4km1n@user-xv3zh4km1n3 ай бұрын
  • sorry your python codding is confusion

    @user-nz3wi5ig3v@user-nz3wi5ig3v2 ай бұрын
  • He repeatedly misspells "assist" as "assis". I don't know what he is getting at, but it's unprofessional and also borderline offensive.

    @vcool@vcoolАй бұрын
    • Your free to leaves if you don't like it buddy🤣🤣

      @rohitkochikkatfrancis@rohitkochikkatfrancisАй бұрын
  • Nice

    @mahdiabbasinourabadi8554@mahdiabbasinourabadi85542 ай бұрын
  • 👍🏻

    @mondoshigua@mondoshigua3 ай бұрын
  • Thanks

    @stephenoluwafemiodoji3520@stephenoluwafemiodoji35203 ай бұрын
  • Thanks

    @ashrafalsharafi7674@ashrafalsharafi76743 ай бұрын
  • Thanks

    @rishiraj2548@rishiraj25483 ай бұрын
KZhead