Hãy xây dựng Chatbot GPT của bạn với Gradio
Ngày 21/01/2024 - 08:01ChatGPT đã nổi lên như một sản phẩm mang tính cách mạng có tiềm năng tác động đến hầu hết mọi lĩnh vực công việc của con người. OpenAI cũng đã phát hành API cho các mô hình cơ bản của chatGPT, “gpt-3.5-turbo” và “gpt-4” (hiện có trong danh sách chờ). Đối với các nhà phát triển, việc tích hợp các API này thể hiện một biên giới đổi mới mới. Trong bài viết này, chúng tôi sẽ xây dựng chatbot GPT với mô hình trò chuyện Gradio và OpenAI.
Mục tiêu học tập
- Hiểu các mô hình GPT và khả năng của chúng
- Các khối xây dựng cơ bản của Gradio
- Tích hợp mô hình trò chuyện OpenAI với chatbot Gradio
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
Mô hình GPT là gì?
GPT là viết tắt của “Máy biến áp được đào tạo trước sáng tạo”. Một mô hình học sâu tự hồi quy tạo ra văn bản bằng ngôn ngữ tự nhiên. Mô hình GPT là mô hình ngôn ngữ lớn có xác suất. Mỗi mã thông báo đầu ra có thể được gán một xác suất. Xác suất của mỗi mã thông báo đầu ra được điều chỉnh dựa trên mã thông báo trước đó, do đó làm cho các mô hình có tính hồi quy tự động. Những mô hình này đã được đào tạo về lượng lớn dữ liệu văn bản với các kỹ thuật học tập phức tạp cho phép chúng tạo ra văn bản giống con người và hiểu được ngữ cảnh.
OpenAI trước đây đã phát hành GPT 1, 2 và 3, nhưng các mô hình ngôn ngữ lớn hiện tại là tài khoản Chat GPT 4 vượt trội hơn nhiều so với phiên bản tiền nhiệm. Khả năng ngôn ngữ của những mô hình này đã khiến cả thế giới phải kinh ngạc. Họ có khả năng thực hiện vô số nhiệm vụ, bao gồm tóm tắt văn bản, dịch ngôn ngữ, hội thoại và phân tích tình cảm, v.v.
Gradio
Nó là một công cụ mã nguồn mở được viết bằng Python. Gradio cung cấp cho các nhà phát triển máy học một cách thuận tiện để chia sẻ mô hình của họ. Nó cung cấp giao diện web đơn giản, thân thiện với người dùng để chia sẻ các mô hình học máy với mọi người từ mọi nơi. Điểm đặc biệt của Gradio là nó không yêu cầu nhà phát triển viết Javascript, HTML hoặc CSS để xây dựng giao diện web. Nó cung cấp một số tính linh hoạt để thêm mã giao diện người dùng để tùy chỉnh. Điều này lý tưởng cho các nhà phát triển có ít kiến thức về giao diện người dùng để chia sẻ mô hình của họ với các thành viên trong nhóm hoặc khán giả của họ.
Để xây dựng một ứng dụng web cho mô hình machine learning của mình, bạn cần phải làm quen với các khối xây dựng cơ bản của Gradio. Nó cho phép bạn thiết kế ứng dụng web theo hai cách, Giao diện và Khối.
Giao diện Gradio
- Giao diện là một lớp cấp cao cho phép bạn xây dựng các thành phần chỉ với một vài dòng mã. Bạn có thể xây dựng các thành phần đầu vào/đầu ra cho văn bản, hình ảnh, âm thanh và video. Điều này có tính linh hoạt thiết kế thấp. Một ví dụ đơn giản về giao diện Gradio.
Điều này sẽ tạo ra một giao diện web đơn giản có bảng phác thảo làm thành phần đầu vào và nhãn là thành phần đầu ra. Hàm sketch_recognition chịu trách nhiệm về kết quả.
khối gradio
Khối Gradio cung cấp một cách xây dựng giao diện ở cấp độ thấp hơn. Với tính linh hoạt ngày càng tăng, điều này cho phép các nhà phát triển tiến sâu hơn vào việc xây dựng các giao diện web phức tạp. Block có các tính năng nâng cao cho phép bạn đặt các thành phần linh hoạt ở bất kỳ đâu trên màn hình, cải thiện khả năng kiểm soát luồng dữ liệu và trình xử lý sự kiện để mang lại trải nghiệm tương tác cho người dùng.
- Cần có mệnh đề “with” để xác định khối Gradio.
- Các thành phần bên trong mệnh đề with sẽ được thêm vào ứng dụng.
- Các thành phần sẽ hiển thị theo chiều dọc theo thứ tự chúng được xác định.
API OpenAI
Trước khi xây dựng giao diện trò chuyện, chúng ta cần có quyền truy cập vào các điểm cuối API OpenAI. Vì vậy, điều đầu tiên chúng ta cần làm là tạo một tài khoản OpenAi và tạo khóa API. Tài khoản OpenAI mới có giá 5 USD. Nếu bạn đã sử dụng chatGPT thì bạn phải có tài khoản. Bây giờ hãy truy cập trang web này để tạo khóa API.
Cất chìa khóa ở nơi nào đó an toàn. Bây giờ, việc tiếp theo là tạo một môi trường ảo. Chúng ta sẽ sử dụng Thơ; hãy thoải mái sử dụng bất kỳ công cụ môi trường ảo nào khác mà bạn muốn. Hãy theo dõi bài viết này để thiết lập môi trường dự án trong các công cụ môi trường ảo khác nhau.
Đây là những sự phụ thuộc của chúng tôi.
Cài đặt phụ thuộc với Thơ
thơ thêm gradio, openai
Trước khi xây dựng nó, chúng ta hãy xem cấu trúc phản hồi và yêu cầu API OpenAI.
Dưới đây là ví dụ về một yêu cầu điển hình tới điểm cuối API chatGPT để tìm nạp phản hồi.
Thông báo là danh sách các từ điển có vai trò tương ứng và nội dung của chúng. Vai trò hệ thống được cấu hình trước để cung cấp một số bối cảnh để mô hình hoạt động theo một cách cụ thể. Vai trò người dùng lưu trữ lời nhắc của người dùng và vai trò trợ lý giữ phản hồi từ mô hình. Và danh sách tin nhắn này có nhiệm vụ duy trì bối cảnh của cuộc trò chuyện.
Tham số mô hình có thể được đặt thành “gpt-3.5-turbo” hoặc “gpt-4” nếu bạn có quyền truy cập API.
Bây giờ hãy xem định dạng phản hồi của chúng tôi.
Phản hồi có định dạng JSON. Nó trả về tổng số mã thông báo đã sử dụng và phản hồi văn bản của mô hình. Chúng tôi sẽ sử dụng những dữ liệu này cho chatbot của mình.
Xây dựng Chatbot GPT
Tạo một tệp Python chính cho ứng dụng của bạn. Nhập các thư viện dưới đây.
Tạo tệp .env để lưu trữ khóa API của bạn.
OPENAI_API_KEY = “your_api_key”
Tải nó trong môi trường của bạn bằng thư viện python_dotenv và os.
Giao diện người dùng ứng dụng
Để linh hoạt hơn trong việc thiết kế ứng dụng web, chúng tôi sẽ sử dụng lớp Blocks của Gradio. Gradio có thành phần chatbot dựng sẵn để hiển thị giao diện trò chuyện.
Bây giờ, hãy chạy ứng dụng với “gradio app.py”. Điều này sẽ khởi động máy chủ tại “http://localhost:7860”. Bây giờ bạn có thể thấy một giao diện trò chuyện đơn giản. Bạn có thể điều chỉnh kiểu dáng bằng các thuộc tính kiểu dáng .
bước
Bây giờ, chúng ta cần một hộp văn bản để có thể chuyển lời nhắc. Gradio có các lớp Hàng và Cột cho phép bạn thêm các thành phần theo chiều dọc và chiều ngang. Những điều này rất hữu ích khi bạn muốn tùy chỉnh ứng dụng web của chúng tôi. Chúng tôi sẽ thêm một thành phần hộp văn bản nhận văn bản nhập từ người dùng cuối. Đây là cách chúng ta có thể làm điều đó.
Lưu và tải lại trang. Bạn sẽ thấy một hộp văn bản bên dưới giao diện trò chuyện.
- Với vùng chứa gr.Row(), chúng tôi đã tạo một khối bố cục. Điều này tạo ra một hàng để các thành phần khác được đặt bên trong nó theo chiều ngang trong một hàng duy nhất.
- Ở dòng thứ 2, chúng ta đã tạo một khối bố cục khác bên trong vùng chứa trước đó bằng gr.Column(). Ngược lại với Hàng, nó xếp chồng các thành phần hoặc khối khác theo chiều dọc.
- Bên trong vùng chứa cột, chúng tôi đã xác định thành phần hộp văn bản. Điều này sẽ lấy bất kỳ đầu vào văn bản nào từ người dùng. Có một số thông số chúng ta có thể cấu hình để làm cho nó thân thiện hơn với người dùng.
- Tham số tỷ lệ bên trong thùng chứa cột sẽ chia tỷ lệ cho các thành phần bên trong. Giá trị 0,85 có nghĩa là nó sẽ chiếm 85% màn hình trong một hàng.
Thêm các thành phần khác
Nếu bạn muốn thêm bất kỳ thành phần nào khác, bạn có thể sử dụng kết hợp các vùng chứa Hàng và Cột. Giả sử chúng ta thêm một nút radio để chuyển đổi giữa các mô hình. Điều này có thể được thực hiện như sau.
Đã thêm thành phần Radio có giá trị mặc định là 'gpt-3.5-turbo' và tham số lựa chọn với cả hai kiểu máy.
Bạn cũng có thể thêm một thành phần để hiển thị tổng lượng sử dụng. Chúng ta có thể thêm một thành phần hộp văn bản chỉ hiển thị số tiền sử dụng bằng đô la.
Phần cuối của ứng dụng
Với điều này, chúng tôi đã xây dựng thành công giao diện người dùng của ứng dụng web của mình. Bây giờ, phần còn lại là làm cho nó hoạt động. Điều đầu tiên chúng ta cần làm là xử lý trước các lời nhắc. Chúng ta cần định dạng lời nhắc và phản hồi theo cách phù hợp để API sử dụng và giao diện trò chuyện Gradio hiển thị.
Xác định hàm add_text(). Chức năng này sẽ chịu trách nhiệm định dạng tin nhắn theo cách thích hợp.
Ở đây, đối số lịch sử là danh sách các danh sách hoặc bộ dữ liệu và văn bản là giá trị lời nhắc của người dùng.
Tiếp theo, xác định hàm trả về phản hồi.
Như bạn có thể thấy ở trên, chúng tôi đang gửi điểm cuối API OpenAI kèm theo tên mẫu, thông báo và giá trị nhiệt độ. Chúng tôi nhận được phản hồi và số liệu thống kê sử dụng mã thông báo để tính tổng chi phí. Vòng lặp chịu trách nhiệm hiển thị văn bản một cách tuần tự khi chúng nhận được để cải thiện trải nghiệm người dùng.
Thêm chức năng kích hoạt các chức năng này khi người dùng gửi lời nhắc. Đây là cách bạn có thể làm điều đó.
Khi người dùng gửi văn bản, hàm add_user sẽ bắt đầu. Nó lấy một đối tượng chatbot và lời nhắc làm đầu vào. Đầu ra tương tự sau đó được gửi đến thành phần chatbot. Sau đó, hàm generate_response sẽ được kích hoạt. Điều này sẽ hiển thị các phản hồi một cách tuần tự trong chatbot. Cuối cùng, chi phí sẽ được tính toán và hiển thị trong hộp văn bản. Để hiển thị tuần tự, hãy bật demo.queue().
Bây giờ, ứng dụng web trò chuyện đã sẵn sàng.
Những cải tiến có thể có
Điều đó thật tuyệt. Nhưng có thể có thêm một vài cải tiến trong ứng dụng, chẳng hạn như
- Lưu trữ liên tục : Ứng dụng chỉ lưu giữ tin nhắn trong một phiên duy nhất. Để lưu trữ dữ liệu, hãy kết nối nó với cơ sở dữ liệu.
- Triển khai lên đám mây : Để chia sẻ chatbot của bạn, hãy triển khai nó trên máy chủ đám mây như AWS hoặc GCP .
- Xác thực : Bạn có thể thêm xác thực người dùng nếu bạn muốn có nhiều người dùng hơn sử dụng ứng dụng của mình.
- Đa phương thức : Vì GPT 4 là đa phương thức nên bạn cũng có thể thêm các tính năng để hiển thị hình ảnh làm đầu vào và đầu ra.
Phần kết luận
Chúng tôi đã đề cập đến rất nhiều thứ, từ mô hình tài khoản Chat GPT Plus đến các khối xây dựng cơ bản và tạo một chatbot. Đây là sự khởi đầu; với những công cụ và kiến thức này, bạn có thể xây dựng các ứng dụng thú vị hơn, chẳng hạn như bot trả lời câu hỏi, chatbot đa phương thức, v.v.
Vì vậy, hãy nhanh chóng tóm tắt bài viết
- GPT là viết tắt của Máy biến áp được đào tạo trước sáng tạo. Mô hình ngôn ngữ gpt-3.5-turbo và gpt-4 hỗ trợ Chatgpt.
- Đây là một công cụ nguồn mở cho phép chúng tôi nhanh chóng chia sẻ các mô hình học máy từ mọi nơi với mọi người.
- Lớp giao diện và khối cho phép chúng tôi xây dựng các ứng dụng web ML tương tác. Giao diện là sự trừu tượng hóa ở mức độ cao của các yếu tố thiết kế cơ bản và không có tính linh hoạt trong thiết kế. Lớp Block cho phép triển khai các vùng chứa ở mức độ thấp. Điều này làm tăng thêm tính linh hoạt.
- Thành phần chatbot GPT cho phép xây dựng nhanh giao diện trò chuyện.
Các câu hỏi thường gặp
Đáp: Có, GPT-3 có thể được sử dụng cho chatbot. Đó là một mô hình ngôn ngữ mạnh mẽ có thể tạo ra phản hồi giống con người dựa trên đầu vào.
A. Không, chatbot GPT-3 không miễn phí. Nó yêu cầu phí đăng ký và sử dụng dựa trên số lượng mã thông báo được xử lý.
Đáp. Mặc dù GPT-3 có thể tạo các đoạn mã nhưng bạn không nên chỉ dựa vào nó để viết mã cấp sản xuất. Nó phù hợp nhất để hỗ trợ tạo mã hoặc cung cấp ví dụ.
A. Bản thân GPT-3 không phải là chatbot nhưng có thể được sử dụng để tạo chatbot. Đó là một mô hình ngôn ngữ được thiết kế để hiểu và tạo ra văn bản, khiến nó trở thành một công cụ hữu ích để xây dựng các tác nhân đàm thoại.
Bài viết liên quan
24/02/2024
19/01/2024
21/02/2024
24/01/2024
06/02/2024
17/02/2024