Rasa là một khuôn khổ học máy mã nguồn mở sử dụng phương pháp tiếp cận theo câu chuyện để phát triển trợ lý trò chuyện bằng văn bản và giọng nói tự động. Rasa sử dụng một mô hình hiệu quả và dễ tiếp cận để tạo và đào tạo chatbot, và khuôn khổ này bao gồm nhiều điểm để tích hợp trợ lý tự động.

Trong hướng dẫn này, hãy tìm hiểu cách bắt đầu với Rasa. Từ việc cài đặt framework, làm việc với các mô hình, đến triển khai một phiên bản Rasa vào cụm Kubernetes, hãy tìm hiểu cách thực hiện tại đây.

Trước khi bạn bắt đầu

  1. Nếu bạn chưa thực hiện, hãy tạo một tài khoản Linode và Compute Instance. Xem hướng dẫn Bắt đầu với Linode và Tạo Compute Instance của chúng tôi .
  2. Làm theo hướng dẫn Thiết lập và Bảo mật Phiên bản Compute của chúng tôi để cập nhật hệ thống của bạn. Bạn cũng có thể muốn đặt múi giờ, cấu hình tên máy chủ, tạo tài khoản người dùng giới hạn và tăng cường quyền truy cập SSH.

Ghi chú: Hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo. Nếu bạn không quen với sudolệnh này, hãy xem hướng dẫn Người dùng và Nhóm .

Cách cài đặt Rasa Open Source

Rasa Open Source có thể được cài đặt bằng trình quản lý gói Pip cho Python 3. Một số phần tiếp theo sẽ hướng dẫn cách thiết lập các điều kiện tiên quyết và cài đặt Rasa.

Sau khi cài đặt phần mềm Rasa Open Source, các dự án Rasa có thể được tạo, xây dựng và chạy khi cần. Tiếp tục đọc để biết cách bắt đầu một dự án Rasa, hiểu các thành phần của nó và triển khai nó vào cụm Kubernetes.

Ghi chú: Tài liệu chính thức cho Rasa Open Source chỉ liệt kê Ubuntu là bản phân phối Linux được hỗ trợ. Tuy nhiên, các bước trong hướng dẫn này đã được sử dụng thành công để cài đặt Rasa Open Source trên AlmaLinux, CentOS Stream, Debian và Rocky Linux.

Thiết lập các điều kiện tiên quyết

Rasa chạy bằng Python 3, Pip và môi trường ảo Python. Để bắt đầu, hệ thống của bạn phải cài đặt các phiên bản được hỗ trợ của phần mềm cần thiết.

Các bước này hướng dẫn cài đặt và thiết lập môi trường ảo ban đầu.

  1. Cài đặt phiên bản tương thích của Python 3 và Pip 3 bằng lệnh thích hợp bên dưới. Hệ thống của bạn có thể đã cài đặt các gói này, trong trường hợp đó, các lệnh này chỉ cần cập nhật chúng.
    • Debian 11 và Ubuntu 22.04 LTS :sudo apt install python3-dev python3-pip python3-venv
    • AlmaLinux 9 , CentOS Stream 9 và Rocky Linux 9 :sudo dnf install python3-devel
  2. Tạo một môi trường ảo Python cho dự án Rasa và chuyển sang đó. Hướng dẫn này đặt tên cho môi trường ảo rasa-venvvà lưu trữ nó trong thư mục home của người dùng hiện tại.python3 -m venv ~/rasa-venv source ~/rasa-venv/bin/activateBây giờ chỉ (rasa-venv)báo sẽ xuất hiện ở đầu dòng lệnh.

Ghi chú :

Để tham khảo, hãy thoát khỏi môi trường ảo bằng lệnh được hiển thị ở đây:

deactivate

Để vào lại môi trường ảo, bạn chỉ cần lặp lại sourcelệnh trên.

Cài đặt Rasa Open Source

Bây giờ là lúc cài đặt Rasa Open Source. Rasa được phân phối dưới dạng gói Pip và có thể được cài đặt sau khi trình quản lý gói được cài đặt.

  1. Nâng cấp cài đặt Pip để đảm bảo nó có các gói mới nhất hiện có:pip3 install --upgrade pip
  2. Cài đặt Rasa Open Source:pip3 install rasa

Cách xây dựng Chatbot với Rasa

Với Rasa Open Source đã cài đặt, bạn có thể tạo một dự án Rasa cơ bản. Phần này bao gồm các bước để tạo dự án và phân tích sâu về cấu trúc của dự án. Sau đó, hãy tìm hiểu cách chạy dự án bằng cách vận hành một chatbot Rasa đang hoạt động.

Tạo một dự án Rasa

  1. Chạy tập lệnh khởi tạo để tạo một dự án Rasa mới. Ví dụ này bắt đầu trong thư mục gốc của người dùng hiện tại, nhưng bất kỳ thư mục nào cũng có thể dùng để chứa thư mục con của dự án Rasa.cd ~/ rasa initLời nhắc đầu tiên hỏi vị trí đặt dự án Rasa. Hướng dẫn này sử dụng rasa-example, kết quả là một ~/rasa-examplethư mục. Vì thư mục này chưa tồn tại, hãy nhấn YYes) để tạo thư mục. Lời nhắc tiếp theo yêu cầu đào tạo mô hình ban đầu. Chọn nNo) tại đây, vì hướng dẫn này chỉ cách thực hiện đào tạo sau.
  2. Chuyển sang thư mục mới được tạo cho dự án Rasa. Sử dụng ví dụ trên, đây sẽ là thư ~/rasa-examplemục.cd ~/rasa-example

Hiểu về cấu trúc dự án Rasa

Thư mục của dự án mới chứa cấu trúc dự án Rasa cơ bản. Phần sau đây phân tích nội dung dự án mặc định để giúp hiểu cấu trúc và điều hướng các thành phần của Rasa.

Nội dung phải giống với phác thảo sau, ngoại trừ các tệp như __init__.pyvậy có thể không cần thiết khi phát triển trợ lý Rasa mẫu.

  • actions/
    • actions.pyxác định các hành động tùy chỉnh cho trợ lý Rasa bằng cách sử dụng mã Python có thể được kích hoạt theo các điều kiện nhất định.Tài liệu của Rasa đề cập đến các hành động và cung cấp bối cảnh sử dụng chúng.
  • data/chứa các mô hình cốt lõi cho trợ lý Rasa. Đây là nơi diễn ra hầu hết quá trình phát triển của trợ lý.
    • nlu.ymlđịnh nghĩa các mô hình Hiểu ngôn ngữ tự nhiên (NLU) cho trợ lý Rasa. Điều này cung cấp cho trợ lý các cấu trúc để sử dụng trong việc xác định ý định của người dùng và thông tin được truyền đạt.Xem trang tài liệu chính thức về Dữ liệu đào tạo NLU để biết thêm chi tiết về các mô hình này.
    • rules.ymlđịnh nghĩa một tập hợp các hành động cụ thể cần thực hiện trong các điều kiện cụ thể. Những hành động này phải định nghĩa hành vi giống như quy tắc hoặc các hành động luôn thực hiện khi người dùng cung cấp một số ý định hoặc thông tin nhất định.Xem trang Quy tắc của tài liệu chính thức để biết thêm thông tin.
    • stories.ymlmô hình các cuộc đối thoại mà trợ lý Rasa dự kiến ​​sẽ tham gia. Các mô hình này được sử dụng để đào tạo trợ lý cho cuộc trò chuyện và bao gồm ý định của người dùng và/hoặc chú thích thông tin, cùng với chuỗi hành động của trợ lý.Xem trang Câu chuyện trong tài liệu chính thức để biết thêm về vai trò và chi tiết của các câu chuyện.
  • tests/
    • test_stories.ymlxác định các câu chuyện thử nghiệm để xác minh rằng trợ lý Rasa phản hồi như mong đợi.Xem trang tài liệu chính thức về Kiểm tra Trợ lý của bạn để biết thông tin về cách xây dựng các câu chuyện thử nghiệm Rasa hiệu quả.
  • config.ymlchỉ định cấu hình để đào tạo trợ lý Rasa. Nếu không có chỉ định, Rasa sẽ sử dụng phương pháp mặc định.Tìm hiểu thêm trên trang Cấu hình mô hình của tài liệu chính thức.
  • credentials.ymllưu trữ thông tin xác thực được trợ lý Rasa sử dụng để giao tiếp với nền tảng trò chuyện bằng văn bản và giọng nói. Tệp mặc định bao gồm các trình giữ chỗ cho nhiều nền tảng, bao gồm Facebook, Slack và Socket.IO.Tài liệu chính thức có một trang về Kết nối với Kênh nhắn tin và kênh thoại cung cấp thêm thông tin.Ngoài ra, hãy tham khảo hướng dẫn của chúng tôi về Cách sử dụng WebSockets với Socket.IO để biết ví dụ về ứng dụng trò chuyện Socket.IO có thể tích hợp với trợ lý Rasa.
  • domain.ymlchỉ định những thành phần nào từ cấu hình sẽ bao gồm trong “thế giới” của trợ lý Rasa. Ví dụ, sử dụng điều này để bao gồm các ý định được xác định trong tệp nlu.ymlhoặc bất kỳ hành động nào được tạo. Tệp này cũng là nơi các phản hồi được xác định.Nhận lời giải thích đầy đủ hơn và ví dụ bổ sung thông qua tài liệu chính thức về Domains .
  • endpoints.ymlchỉ định các điểm cuối khác nhau mà trợ lý Rasa kết nối tới. Điều này bao gồm một điểm cuối để Rasa kéo mô hình định kỳ từ máy chủ từ xa.Hãy theo các liên kết được cung cấp trong nội dung tệp mặc định để xem các loại điểm cuối khác nhau có sẵn.

Chạy Trợ lý Rasa

Trước khi khám phá trợ lý, nó phải được đào tạo bằng một mô hình khả thi. Tại thời điểm này, các tệp trong data/thư mục con có thể được sửa đổi, nhưng dự án Rasa mặc định có đủ để lấy mẫu các khả năng của nó.

Tìm hiểu thêm về việc tạo ra các mô hình hiệu quả để xây dựng trợ lý Rasa thông qua các hướng dẫn thực hành tốt nhất của tài liệu chính thức. Bao gồm hướng dẫn về Phát triển theo hướng hội thoại và hướng dẫn về Tạo dữ liệu NLU sẵn sàng cho sản xuất.

Sử dụng các mô hình mặc định (hoặc mô hình tùy chỉnh) để đào tạo trợ lý bằng một lệnh duy nhất cho công cụ Rasa CLI:

rasa train

Rasa tiến hành quá trình đào tạo, chuẩn bị một mô hình máy học đầy đủ từ miền, NLU, câu chuyện và các mô hình quy tắc được cung cấp.

Sau khi hoàn tất quá trình đào tạo, người dùng có thể tương tác với trợ lý từ dòng lệnh. Sử dụng lệnh bên dưới để khởi tạo phiên trò chuyện dòng lệnh với trợ lý:

rasa shell

Khám phá cuộc trò chuyện để lấy mẫu về cách trợ lý phản hồi và xây dựng từ các câu chuyện. Sau đây là một ví dụ về trao đổi sử dụng các mô hình mặc định của Rasa:

Your input ->  Hello!
Hey! How are you?
Your input ->  Great!
Great, carry on!
Your input ->  Thanks!
Bye
Your input ->

Khi hoàn tất, hãy nhập /stopđể thoát khỏi cuộc trò chuyện.

Việc so sánh những phản hồi này với nội dung mô hình trong /datathư mục có thể chỉ ra cách Rasa diễn giải và huy động các mô hình này.

Cách triển khai Chatbot Rasa

Đối với một số trường hợp sử dụng, chạy Rasa cục bộ có thể đủ. Ví dụ về ứng dụng trò chuyện trong hướng dẫn Socket.IO được liên kết ở trên, chẳng hạn, có thể tận dụng một phiên bản Rasa cục bộ để tích hợp các tính năng trò chuyện Rasa.

Tuy nhiên, thông thường nhất, phải triển khai phiên bản Rasa. Có một số khả năng để thực hiện điều đó, một số trong đó được đề cập trong tài liệu của Rasa .

Phương pháp triển khai được đề xuất cho Rasa là thông qua Kubernetes. Để bắt đầu, các phần sau đây sẽ hướng dẫn cách thiết lập cụm Linode Kubernetes và triển khai một dự án Rasa đơn giản vào cụm đó.

Triển khai Rasa

Rasa yêu cầu một cụm Kubernetes, với kubectl được cấu hình để tương tác với cụm này. Helm cũng phải được cài đặt, vì triển khai Rasa sử dụng cấu hình Helm Chart.

Các bước sau đây hướng dẫn thiết lập các điều kiện tiên quyết này và triển khai một dự án Rasa mẫu.

  1. Hãy chắc chắn thoát khỏi môi trường ảo Python:deactivate
  2. Làm theo hướng dẫn Triển khai và quản lý cụm trên Linode Kubernetes Engine (LKE) của chúng tôi để thiết lập cụm Kubernetes và cấu hình kubectl.
  3. Tạo không gian tên cho cụm Rasa Kubernetes. Ví dụ này chỉ định không gian tên rasacluster.kubectl create namespace rasacluster
  4. Làm theo hướng dẫn Cài đặt ứng dụng trên Kubernetes bằng Helm 3 của chúng tôi để biết cách cài đặt ứng dụng khách Helm CLI.
    • Ghi chú :Người dùng AlmaLinux, CentOS Stream và Rocky Linux có thể cần phải cài đặt gitvà tartrước khi cài đặt Helm: sudo dnf install git tar
  5. Tạo một rasa-chartthư mục trong thư mục gốc của người dùng hiện tại và thay đổi vào đó:mkdir ~/rasa-chart cd ~/rasa-chart
  6. Tạo một rasa-values.yamltập tin trong thư mục mới được tạo ~/rasa-chart:nano ~/rasa-chart/rasa-values.yaml
  7. Cung cấp cho tập tin những nội dung sau:Tập tin: rasa-values.yaml1 2 3 4 5 6 7 applicationSettings: initialModel: "https://github.com/RasaHQ/rasa-x-demo/blob/master/models/model.tar.gz?raw=true" trainInitialModel: true credentials: enabled: true additionalChannelCredentials: rest:Để lưu tệp và thoát khỏi nanotrình soạn thảo văn bản, hãy nhấn CTRLXrồi nhấn Yvà Enter.Cấu hình trên tạo ra một phiên bản Rasa với mô hình và cấu hình ví dụ cơ bản. Nó tải xuống mô hình đào tạo ban đầu với triển khai Rasa, đào tạo mô hình đó và kích hoạt các điểm cuối REST API của Rasa.Để biết thêm về cấu hình Helm của Rasa, hãy xem cấu hình Rasa Chart mặc định của Rasa . Cấu hình này bao gồm hầu hết các thiết lập để tùy chỉnh triển khai Rasa, cùng với các bình luận hữu ích.Để có cách tiếp cận nâng cao và thực tế hơn để có được mô hình ban đầu, hãy tham khảo một trong các cấu hình Helm Chart mẫu của Rasa . Cấu hình này tải xuống các tệp mô hình từ kho lưu trữ Git và đào tạo mô hình ban đầu từ các tệp đó. Một cách tiếp cận tương tự có thể được sử dụng để triển khai một mô hình được phát triển tùy chỉnh.
  8. Thêm kho lưu trữ Rasa vào Helm:helm repo add rasa https://helm.rasa.com"rasa" has been added to your repositories
  9. Triển khai cấu hình Rasa Helm Chart vào không gian tên của cụm. Phần rasareleaselệnh ví dụ cung cấp tên cho triển khai. Triển khai sau đó có thể được truy cập bằng cách sử dụng chỉ định này.helm install --namespace rasacluster --values rasa-values.yaml rasarelease rasa/rasa[...] rasa 3.2.6 has been deployed! [...]

Truy cập Trợ lý Rasa

Một phiên bản Rasa với mô hình cơ bản hiện đang chạy trên cụm Kubernetes. Để truy cập phiên bản, hãy sử dụng các lệnh được hiển thị ở đây để chuyển tiếp cổng của phiên bản:

export SERVICE_PORT=$(kubectl get --namespace rasacluster -o jsonpath="{.spec.ports[0].port}" services rasarelease)
kubectl port-forward --namespace rasacluster svc/rasarelease ${SERVICE_PORT}:${SERVICE_PORT}
Forwarding from 127.0.0.1:5005 -> 5005
Forwarding from [::1]:5005 -> 5005

Đầu ra cho biết cổng nào mà phiên bản Rasa khả dụng. Mở một cửa sổ terminal mới và xem nó hoạt động bằng lệnh như sau:

curl localhost:5005
Hello from Rasa: 3.2.6

Cấu hình Helm Chart được sử dụng ở trên cũng cho phép REST API của trợ lý Rasa. Điều này cho phép dễ dàng truy cập vào mô hình từ các ứng dụng khác. Sau đây là ví dụ về việc sử dụng API với cURL:

curl -X POST localhost:5005/webhooks/rest/webhook -d '{ "sender": "A User", "message": "Hello, Rasa!" }'
[{"recipient_id":"A User","text":"Hey! How are you?"}]

Sử dụng /webhooks/rest/webhookđiểm cuối cho phép trò chuyện với trợ lý như bạn sẽ làm thông qua dòng lệnh. Cấu trúc dữ liệu được chấp nhận cho phép chỉ định người gửi tin nhắn, cho phép trợ lý theo dõi các cuộc trò chuyện giữa nhiều người dùng.

Cập nhật triển khai Rasa

Khi thiết lập này phát triển, bạn có thể cần điều chỉnh cấu hình Biểu đồ Rasa Helm. Ví dụ trên sử dụng một mô hình mẫu, nhưng API Rasa có thể được sử dụng để tạo và đào tạo mô hình theo cách thủ công. URL mẫu có thể được thay thế bằng URL cho một mô hình khác và sau đó có thể điều chỉnh việc triển khai để sử dụng máy chủ mô hình .

Trong những trường hợp như vậy, hãy sử dụng lệnh Helm upgradeđể đẩy các bản cập nhật dựa trên các thay đổi đối với rasa-values.yamltệp. Sử dụng các chỉ định ví dụ được cung cấp trong hướng dẫn này, lệnh sẽ trông như sau:

helm upgrade --namespace rasacluster --reuse-values -f rasa-values.yaml rasarelease rasa/rasa

Phần kết luận

Điều này bao gồm mọi thứ cần thiết để bắt đầu xây dựng trợ lý tự động và chatbot với Rasa. Các mô hình của Rasa có khả năng cao, phát triển và thích ứng với nhu cầu cá nhân. Lên kế hoạch cho những điều này, tìm hiểu khả năng của các mô hình và làm việc thông qua các phương pháp hay nhất của Rasa có thể giúp ích. Các liên kết trong hướng dẫn này và các tài nguyên trong tài liệu Rasa được liên kết bên dưới có thể giúp khởi động quá trình phát triển trợ lý AI được thiết kế chính xác.

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.

Nguồn : https://www.linode.com/docs/guides/getting-started-with-rasa/