Xây dựng ChatGPT cho video YouTube bằng Langchain
Ngày 19/01/2024 - 11:01Đôi khi việc xem một video để lấy được bất kỳ thông tin hữu ích nào từ video đó giống như một công việc. Vì vậy, tôi đã xây dựng một chatbot cho phép bạn trò chuyện với video YouTube hoặc bất kỳ video nào. Điều này được thực hiện nhờ mua tài khoản chat gpt plus, Langchain, ChromaDB, Whisper và Gradio. Vì vậy, trong bài viết này, tôi sẽ hướng dẫn mã cách xây dựng một chatbot chức năng cho video YouTube bằng Langchain.
Mục tiêu học tập
- Xây dựng giao diện web bằng Gradio
- Xử lý video YouTube và trích xuất dữ liệu văn bản từ chúng bằng Whisper
- Xử lý và định dạng văn bản phù hợp
- Tạo phần nhúng dữ liệu văn bản
- Định cấu hình Chroma DB để lưu trữ dữ liệu
- Khởi tạo chuỗi hội thoại Langchain với OpenAI chatGPT, ChromaDB và chức năng nhúng
- Cuối cùng là truy vấn và truyền tải câu trả lời tới chatbot Gradio
Trước khi chuyển sang phần viết mã, chúng ta hãy làm quen với các công cụ và công nghệ mà chúng ta sẽ sử dụng.
Bài viết này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.
chuỗi lang
Langchain là một công cụ mã nguồn mở được viết bằng Python giúp cho dữ liệu của Mô hình Ngôn ngữ Lớn trở nên có tính nhận thức và mang tính tác nhân. Vì vậy, điều đó thậm chí có nghĩa là gì? Hầu hết các LLM có sẵn trên thị trường, chẳng hạn như GPT-3.5 và GPT-4, đều có giới hạn về dữ liệu mà chúng được đào tạo. Ví dụ: ChatGPT chỉ có thể trả lời các câu hỏi mà nó đã xem. Bất cứ điều gì sau tháng 9 năm 2021 đều không được biết đến. Đây là vấn đề cốt lõi mà Langchain giải quyết. Dù là tài liệu Word hay bất kỳ tệp PDF cá nhân nào, chúng tôi có thể cung cấp dữ liệu cho LLM và nhận được phản hồi giống như con người. Nó có các trình bao bọc cho các công cụ như Vector DB, mô hình Trò chuyện và các chức năng nhúng, giúp dễ dàng xây dựng một ứng dụng AI chỉ bằng Langchain.
Langchain cũng cho phép chúng tôi xây dựng Đại lý – bot LLM. Các tác nhân tự trị này có thể được cấu hình cho nhiều tác vụ, bao gồm phân tích dữ liệu, truy vấn SQL và thậm chí viết mã cơ bản. Có rất nhiều thứ chúng ta có thể tự động hóa bằng cách sử dụng các tác nhân này. Điều này rất hữu ích vì chúng tôi có thể thuê LLM làm công việc kiến thức cấp thấp, giúp chúng tôi tiết kiệm thời gian và năng lượng.
Trong dự án này, chúng tôi sẽ sử dụng các công cụ Langchain để xây dựng ứng dụng trò chuyện cho video. Để biết thêm thông tin về Langchain, hãy truy cập trang web chính thức của họ .
Thì thầm
Whisper là một thế hệ con cháu khác của OpenAI. Đây là mô hình chuyển giọng nói thành văn bản có mục đích chung có thể chuyển đổi âm thanh hoặc video thành văn bản. Nó được đào tạo trên một lượng lớn âm thanh đa dạng để thực hiện dịch thuật đa ngôn ngữ, nhận dạng và phân loại giọng nói.
Mô hình này có sẵn ở năm kích cỡ khác nhau nhỏ, cơ sở, trung bình, nhỏ và lớn, với sự cân bằng về tốc độ và độ chính xác. Hiệu suất của các mô hình cũng phụ thuộc vào ngôn ngữ. Hình bên dưới hiển thị bảng phân tích WER (Tỷ lệ lỗi từ) theo ngôn ngữ trong tập dữ liệu của Fleur bằng mô hình v2 lớn.
XEM THÊM: Cách sử dụng tài khoản Chat GPT Plus.
Cơ sở dữ liệu vectơ
Hầu hết các thuật toán học máy không thể xử lý dữ liệu thô phi cấu trúc như hình ảnh, âm thanh, video và văn bản. Chúng phải được chuyển đổi thành ma trận nhúng vectơ. Các vectơ nhúng này biểu thị dữ liệu đã nói trong mặt phẳng đa chiều. Để có được các phần nhúng, chúng ta cần các mô hình học sâu hiệu quả cao có khả năng nắm bắt được ý nghĩa ngữ nghĩa của dữ liệu. Điều này rất quan trọng để tạo ra bất kỳ ứng dụng AI nào. Để lưu trữ và truy vấn dữ liệu này, chúng ta cần cơ sở dữ liệu có khả năng xử lý chúng một cách hiệu quả. Điều này dẫn đến việc tạo ra các cơ sở dữ liệu chuyên biệt gọi là cơ sở dữ liệu vector. Có nhiều cơ sở dữ liệu nguồn mở ở đó. Chroma, Milvus, Weaviate và FAISS là một số phổ biến nhất.
Một USP khác của cửa hàng vectơ là chúng ta có thể thực hiện các thao tác tìm kiếm tốc độ cao trên dữ liệu phi cấu trúc. Sau khi nhận được các phần nhúng, chúng tôi có thể sử dụng chúng để phân cụm, tìm kiếm, sắp xếp và phân loại. Vì các điểm dữ liệu nằm trong không gian vectơ nên chúng ta có thể tính khoảng cách giữa chúng để biết chúng có liên quan chặt chẽ với nhau như thế nào. Nhiều thuật toán như Độ tương tự Cosine, Khoảng cách Euclide, KNN và ANN (Hàng xóm gần gần nhất) được sử dụng để tìm các điểm dữ liệu tương tự.
Chúng tôi sẽ sử dụng kho lưu trữ vectơ Chroma – cơ sở dữ liệu vectơ nguồn mở. Chroma cũng có tích hợp Langchain, điều này sẽ rất hữu ích.
Gradio
Kỵ sĩ thứ tư trong ứng dụng Gradio của chúng tôi là một thư viện mã nguồn mở để chia sẻ các mô hình học máy một cách dễ dàng. Nó cũng có thể giúp xây dựng các ứng dụng web demo với các thành phần và sự kiện bằng Python.
Nếu bạn chưa quen với Gradio và Langchain, hãy đọc các bài viết sau trước khi tiếp tục.
- Hãy xây dựng ChatGPT với Gradio
- Xây dựng ChatGPT cho tệp PDF
Bây giờ chúng ta hãy bắt đầu xây dựng nó.
Thiết lập môi trường phát triển
Để thiết lập môi trường phát triển, hãy tạo môi trường ảo Python hoặc tạo môi trường nhà phát triển cục bộ bằng Docker.
Bây giờ cài đặt tất cả các phụ thuộc này
Nhập thư viện
Tạo giao diện web
Chúng tôi sẽ sử dụng Gradio Block và các thành phần để xây dựng giao diện người dùng của ứng dụng. Vì vậy, đây là cách bạn có thể tạo giao diện. Hãy thoải mái tùy chỉnh khi bạn thấy phù hợp.
Giao diện sẽ hiện ra như thế này
Ở đây, chúng ta có một hộp văn bản lấy khóa OpenAI làm đầu vào. Và còn có hai phím để thay đổi khóa API và xóa khóa. Chúng tôi cũng có giao diện người dùng trò chuyện ở bên trái và hộp hiển thị video cục bộ ở bên phải. Ngay bên dưới hộp video, chúng tôi có một hộp yêu cầu liên kết YouTube và các nút có nội dung “Bắt đầu phiên âm”.
Sự kiện Gradio
Bây giờ chúng ta sẽ xác định các sự kiện để làm cho ứng dụng có tính tương tác. Thêm mã bên dưới vào cuối gr.Blocks().
- start_video: Khi được nhấp vào sẽ kích hoạt quá trình lấy văn bản từ video và tạo chuỗi Hội thoại.
- start_ytvideo: Khi nhấp vào sẽ thực hiện tương tự nhưng bây giờ là từ video YouTube và khi hoàn tất sẽ hiển thị video YouTube ngay bên dưới video đó.
- truy vấn: Chịu trách nhiệm truyền phản hồi từ LLM đến giao diện người dùng trò chuyện.
Các sự kiện còn lại là để xử lý khóa API và đặt lại ứng dụng
Chúng tôi đã xác định các sự kiện nhưng chưa xác định các hàm chịu trách nhiệm kích hoạt các sự kiện.
XEM THÊM: Các bước để sở hữu tài khoản Chat GPT 4.
Phần phụ trợ
Để không làm cho nó phức tạp và lộn xộn, chúng tôi sẽ phác thảo các quy trình mà chúng tôi sẽ xử lý trong phần phụ trợ.
- Xử lý các khóa API.
- Xử lý video đã tải lên.
- Phiên âm video để nhận văn bản.
- Tạo các đoạn văn bản trong video.
- Tạo nội dung nhúng từ văn bản.
- Lưu trữ các phần nhúng vectơ trong kho vectơ ChromaDB.
- Tạo chuỗi Truy xuất hội thoại với Langchain.
- Gửi tài liệu liên quan đến mô hình trò chuyện OpenAI (gpt-3.5-turbo).
- Tìm nạp câu trả lời và phát trực tuyến trên giao diện người dùng trò chuyện.
Chúng tôi sẽ thực hiện tất cả những điều này cùng với một số cách xử lý ngoại lệ.
Xác định một vài biến môi trường.
Xử lý khóa API
Khi người dùng gửi khóa, khóa đó sẽ được đặt làm biến môi trường và chúng tôi cũng sẽ vô hiệu hóa hộp văn bản khỏi hoạt động nhập thêm. Nhấn phím thay đổi sẽ làm cho nó có thể thay đổi trở lại. Nhấp vào phím xóa sẽ xóa phím.
Xử lý video
Tiếp theo, chúng ta sẽ xử lý các video đã tải lên và liên kết YouTube. Chúng ta sẽ có hai hàm khác nhau xử lý từng trường hợp. Đối với các liên kết YouTube, chúng tôi sẽ tạo liên kết nhúng iframe. Đối với mỗi trường hợp, chúng ta sẽ gọi một hàm khác make_chain() chịu trách nhiệm tạo chuỗi.
Các chức năng này được kích hoạt khi ai đó tải video lên hoặc cung cấp liên kết YouTube và nhấn nút phiên âm.
Tạo chuỗi
Đây là một trong những bước quan trọng nhất của tất cả. Điều này liên quan đến việc tạo ra một cửa hàng vector Chroma và chuỗi Langchain. Chúng tôi sẽ sử dụng chuỗi truy xuất Hội thoại cho trường hợp sử dụng của mình. Chúng tôi sẽ sử dụng các phần nhúng OpenAI, nhưng để triển khai thực tế, hãy sử dụng mọi mô hình nhúng miễn phí như bộ mã hóa câu Huggingface, v.v.
- Nhận văn bản và siêu dữ liệu từ URL YouTube hoặc tệp video.
- Tạo kho lưu trữ vectơ Chroma từ văn bản và siêu dữ liệu.
- Xây dựng chuỗi bằng cách sử dụng kho lưu trữ vector sắc độ và gpt-3.5-turbo của OpenAI.
- Chuỗi trở lại.
Xử lý văn bản
Trong bước này, chúng tôi sẽ thực hiện cắt văn bản phù hợp từ video, đồng thời tạo đối tượng siêu dữ liệu mà chúng tôi đã sử dụng trong quy trình xây dựng chuỗi ở trên.
- Hàm process_text lấy URL hoặc đường dẫn Video. Sau đó, video này được sao chép bằng hàm process_video và chúng tôi nhận được văn bản cuối cùng.
- Sau đó, chúng tôi lấy thời gian bắt đầu của mỗi câu (từ Whisper) và nhóm chúng lại sau 30 giây.
- Cuối cùng chúng tôi trả lại các văn bản được nhóm và thời gian bắt đầu của mỗi nhóm.
Xử lý video
Trong bước này, chúng tôi chép lại các tệp video hoặc âm thanh và nhận văn bản. Chúng tôi sẽ sử dụng mô hình cơ sở Whisper để phiên âm.
Đối với video YouTube, vì chúng tôi không thể trực tiếp xử lý chúng nên chúng tôi sẽ phải xử lý chúng một cách riêng biệt. Chúng tôi sẽ sử dụng thư viện có tên Pytube để tải xuống âm thanh hoặc video của video YouTube. Vì vậy, đây là cách bạn có thể làm điều đó.
- Tạo đối tượng YouTube cho URL đã cho.
- Tạo đường dẫn thư mục đích tạm thời
- Kiểm tra xem đường dẫn có tồn tại không, tạo thư mục
- Tải xuống âm thanh của tập tin.
- Lấy thư mục đường dẫn của video
Đây là quá trình từ dưới lên từ việc lấy văn bản từ video đến tạo chuỗi. Bây giờ, tất cả những gì còn lại là cấu hình chatbot.
Định cấu hình Chatbot
Tất cả những gì chúng ta cần bây giờ là gửi một truy vấn và một chat_history tới nó để tìm câu trả lời. Vì vậy, chúng tôi sẽ xác định một hàm chỉ kích hoạt khi truy vấn được gửi.
Chúng tôi cung cấp lịch sử trò chuyện cùng với truy vấn để giữ bối cảnh của cuộc trò chuyện. Cuối cùng, chúng tôi truyền câu trả lời trở lại chatbot. Và đừng quên xác định chức năng đặt lại để đặt lại tất cả các giá trị.
Vì vậy, đây là tất cả về nó. Bây giờ, hãy khởi chạy ứng dụng của bạn và bắt đầu trò chuyện bằng video.
Đây là sản phẩm cuối cùng trông như thế nào
Video trình diễn:
Các trường hợp sử dụng thực tế
Một ứng dụng cho phép người dùng cuối trò chuyện bằng bất kỳ video hoặc âm thanh nào có thể có nhiều trường hợp sử dụng. Dưới đây là một số trường hợp sử dụng thực tế của chatbot này.
- Giáo dục : Học sinh thường xem các bài giảng video dài hàng giờ. Chatbot này có thể hỗ trợ sinh viên học tập từ video bài giảng và trích xuất thông tin hữu ích một cách nhanh chóng, tiết kiệm thời gian và năng lượng. Điều này sẽ cải thiện đáng kể trải nghiệm học tập.
- Pháp lý: Các chuyên gia luật thường trải qua các thủ tục pháp lý và lấy lời khai kéo dài để phân tích vụ việc, chuẩn bị tài liệu, nghiên cứu hoặc giám sát việc tuân thủ. Một chatbot như thế này có thể giúp ích rất nhiều trong việc giải quyết những nhiệm vụ như vậy.
- Tóm tắt nội dung: Ứng dụng này có thể phân tích nội dung video và tạo các phiên bản văn bản tóm tắt. Điều này cho phép người dùng nắm bắt được những điểm nổi bật của video mà không cần xem toàn bộ.
- Tương tác với khách hàng: Các thương hiệu có thể kết hợp tính năng chatbot video cho sản phẩm hoặc dịch vụ của họ. Điều này có thể hữu ích cho các doanh nghiệp bán sản phẩm hoặc dịch vụ có giá cao hoặc cần nhiều lời giải thích.
- Dịch video : Chúng tôi có thể dịch kho văn bản sang các ngôn ngữ khác. Điều này có thể tạo điều kiện thuận lợi cho giao tiếp đa ngôn ngữ, học ngôn ngữ hoặc khả năng tiếp cận cho những người không phải là người bản xứ.
Đây là một số trường hợp sử dụng tiềm năng mà tôi có thể nghĩ đến. Có thể có rất nhiều ứng dụng hữu ích hơn nữa của chatbot dành cho video.
Phần kết luận
Vì vậy, đây hoàn toàn là về việc xây dựng một ứng dụng web demo chức năng cho chatbot dành cho video. Chúng tôi đã đề cập đến rất nhiều khái niệm trong suốt bài viết. Dưới đây là những điểm chính từ bài viết.
- Chúng ta đã tìm hiểu về Langchain – một công cụ phổ biến để tạo các ứng dụng AI một cách dễ dàng.
- Whisper là một mô hình chuyển giọng nói thành văn bản mạnh mẽ của OpenAI. Một mô hình nguồn mở có thể chuyển đổi âm thanh và video thành văn bản.
- Chúng tôi đã tìm hiểu cách cơ sở dữ liệu vectơ tạo điều kiện thuận lợi cho việc lưu trữ và truy vấn hiệu quả các phần nhúng vectơ.
- Chúng tôi đã xây dựng một ứng dụng web hoàn chỉnh về chức năng ngay từ đầu bằng cách sử dụng các mô hình Langchain, Chroma và OpenAI.
- Chúng tôi cũng đã thảo luận về các trường hợp sử dụng chatbot tiềm năng trong đời thực.
Đây là tất cả về nó, hy vọng bạn thích nó và hãy cân nhắc theo dõi tôi trên Twitter để biết thêm những thứ liên quan đến sự phát triển.
Các câu hỏi thường gặp
A. LangChain là một framework mã nguồn mở giúp đơn giản hóa việc tạo ứng dụng bằng cách sử dụng các mô hình ngôn ngữ lớn. Nó có thể được sử dụng cho nhiều nhiệm vụ khác nhau, bao gồm chatbot, phân tích tài liệu, phân tích mã, trả lời câu hỏi và các nhiệm vụ tổng quát.
A. Chuỗi là một chuỗi các bước được thực hiện theo thứ tự. Chúng được sử dụng để xác định một nhiệm vụ hoặc quy trình cụ thể. Ví dụ: chuỗi có thể được sử dụng để tóm tắt tài liệu, trả lời câu hỏi hoặc tạo văn bản sáng tạo.
Đại lý phức tạp hơn chuỗi. Họ có thể đưa ra quyết định về những bước cần thực hiện và họ cũng có thể học hỏi từ kinh nghiệm của mình. Tác nhân thường được sử dụng cho các nhiệm vụ đòi hỏi nhiều sự sáng tạo hoặc lý luận, Ví dụ: phân tích dữ liệu và tạo mã.
A. 1. Hành động: Tác nhân hành động quyết định một hành động sẽ thực hiện và thực hiện hành động đó từng bước một. Chúng thông thường hơn và phù hợp cho các nhiệm vụ nhỏ.
2. Nhân viên lập kế hoạch và thực thi trước tiên quyết định kế hoạch hành động cần thực hiện và sau đó thực hiện từng hành động đó một. Chúng phức tạp hơn và phù hợp với các nhiệm vụ đòi hỏi phải lập kế hoạch và linh hoạt hơn.
A. Langchain có khả năng tích hợp LLM và mô hình trò chuyện. LLM là các mô hình nhận đầu vào chuỗi và trả về phản hồi chuỗi. Các mô hình trò chuyện lấy danh sách tin nhắn trò chuyện làm đầu vào và đầu ra tin nhắn trò chuyện.
Đáp: Có, Lagchain là một công cụ mã nguồn mở sử dụng miễn phí, nhưng hầu hết các hoạt động sẽ yêu cầu khóa API OpenAI và phát sinh phí.
Bài viết liên quan
20/02/2024
28/01/2024
27/02/2024
22/01/2024
21/01/2024
02/03/2024