> This is part 1 of 2 of the full documentation (pages 1–100 of 182).
> The content is paginated: fetch every part to see all of it.
> Next part: https://developer.chatx.vn/llms-full.txt/1
> Page index: https://developer.chatx.vn/llms.txt

# Tạo ứng dụng ChatX

<table data-card-size="large" data-view="cards"><thead><tr><th data-card-target data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th><th data-hidden><select></select></th><th data-hidden data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/bat-dau-nhanh">Bắt đầu nhanh</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/tong-quan">Tổng quan</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/tao-ai-bot">Tạo AI Bot</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/cau-hoi-thuong-gap">Câu hỏi thường gặp</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/truong-hop-su-dung">Trường hợp sử dụng</a></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>


# Bắt đầu nhanh

## Các loại ứng dụng

ChatX cung cấp hai loại ứng dụng: tạo văn bản và hội thoại. Trong tương lai, có thể sẽ xuất hiện nhiều mô hình ứng dụng hơn (chúng ta cần cập nhật thường xuyên), và mục tiêu cuối cùng của ChatX là bao phủ hơn 80% các kịch bản ứng dụng điển hình của LLM. Sự khác biệt giữa ứng dụng tạo văn bản và ứng dụng hội thoại được thể hiện trong bảng dưới đây:

## Các bước để tạo một ứng dụng

Sau khi đăng nhập với tư cách quản trị viên trong ChatX, hãy chuyển đến trang ứng dụng điều hướng chính Nhấp vào 'Tạo ứng dụng mới' Chọn ứng dụng tạo cuộc trò chuyện hoặc văn bản và đặt tên cho nó (có thể sửa đổi sau)

<div data-full-width="false"><figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FW08ygocrRcIPELTDozwR%2Fcreate.JPG?alt=media&amp;token=d63b3787-b2b9-4de1-8a65-801047b2f77f" alt=""><figcaption><p>Tạo một ứng dụng mới</p></figcaption></figure></div>

Chúng tôi cung cấp một số mẫu trong giao diện tạo ứng dụng, và bạn có thể nhấp để tạo từ một mẫu trong cửa sổ bật lên khi tạo ứng dụng. Những mẫu này sẽ cung cấp cảm hứng và tham khảo cho ứng dụng bạn muốn phát triển.

## Tạo từ tệp cấu hình

Nếu bạn đã nhận được một mẫu từ cộng đồng hoặc từ ai đó, bạn có thể nhấp để tạo từ một tệp cấu hình ứng dụng. Việc tải lên tệp này sẽ tải hầu hết các cài đặt từ ứng dụng của bên kia (nhưng hiện tại không bao gồm kiến thức).

## Ứng dụng của bạn

Nếu bạn sử dụng lần đầu, bạn sẽ được nhắc nhập khóa API OpenAI của mình. Một khóa LLM hoạt động đúng là điều kiện tiên quyết để sử dụng ChatX. Nếu bạn chưa có, vui lòng đăng ký một khóa.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FzwXOQOF2ZlpzpeVFZjWy%2Fapikey.JPG?alt=media&amp;token=90bc5fa7-d437-4c30-b335-dd86ba8930dc" alt=""><figcaption><p><strong>Nhập khóa API OpenAI của bạn</strong></p></figcaption></figure>

Sau khi tạo một ứng dụng hoặc chọn một ứng dụng đã tồn tại, bạn sẽ đến trang tổng quan ứng dụng hiển thị hồ sơ của ứng dụng. Bạn có thể truy cập trực tiếp vào WebApp của bạn hoặc kiểm tra trạng thái API ở đây, cũng như bật hoặc tắt chúng.

Các thống kê cho thấy việc sử dụng, số lượng người dùng hoạt động và tiêu thụ cuộc gọi LLM của ứng dụng trong một khoảng thời gian—giúp bạn liên tục cải thiện hiệu quả chi phí của các hoạt động ứng dụng. Chúng tôi sẽ dần dần cung cấp nhiều khả năng trực quan hóa hữu ích hơn; vui lòng cho chúng tôi biết những gì bạn muốn.

1. Tổng số tin nhắn: Số lượng tương tác trí tuệ nhân tạo hàng ngày; không bao gồm kỹ thuật định dạng/nhập thông tin.
2. Người dùng hoạt động: Người dùng duy nhất tham gia trò chuyện với trí tuệ nhân tạo; không bao gồm kỹ thuật định dạng/nhập thông tin.
3. Trung bình Số lượng Tương tác trong Phiên: Số lượng tương tác liên tục giữa người dùng và trí tuệ nhân tạo; dành cho các ứng dụng dựa trên trò chuyện.
4. Tỉ lệ Hài lòng của Người dùng: Số lượt thích trên mỗi 1.000 tin nhắn; chỉ định sự hài lòng với câu trả lời của trí tuệ nhân tạo.
5. Trung bình Thời gian Phản hồi: Thời gian (ms) để trí tuệ nhân tạo xử lý/phản hồi; cho các ứng dụng dựa trên văn bản.
6. Sử dụng Token: Sử dụng mã thông tin ngôn ngữ hàng ngày của mô hình; cho việc kiểm soát chi phí.

## Tiếp theo:

* Thử nghiệm ứng dụng Web của bạn
* Tham quan các trang Cấu hình, Phát triển và Nhật ký ở bên trái
* Thử cấu hình một ứng dụng bằng cách sử dụng một trường hợp tham khảo
* Nếu bạn có khả năng phát triển ứng dụng frontend, vui lòng tham khảo tài liệu API


# Tổng quan

Các ứng dụng web dành cho người tiêu dùng ứng dụng. Khi một nhà phát triển ứng dụng tạo một ứng dụng trong ChatX, anh ấy sẽ nhận được một ứng dụng web tương ứng. Người dùng của ứng dụng web có thể sử dụng nó mà không cần đăng nhập. Ứng dụng web được điều chỉnh để phù hợp với các kích thước thiết bị khác nhau: Máy tính cá nhân, máy tính bảng và điện thoại di động.

Nội dung của ứng dụng web là nhất quán với cấu hình được xuất bản bởi ứng dụng. Khi cấu hình của ứng dụng được sửa đổi và nút "Xuất bản" được nhấp vào trên trang bố trí từ khóa gợi ý của ứng dụng để xuất bản, nội dung của ứng dụng web cũng sẽ được cập nhật theo cấu hình của ứng dụng hiện tại.

Chúng tôi có thể kích hoạt và vô hiệu hóa quyền truy cập vào ứng dụng web trên trang tổng quan ứng dụng và sửa đổi thông tin trang web của ứng dụng web:

* Biểu tượng
* Tên
* Mô tả ứng dụng
* Ngôn ngữ giao diện
* Thông tin bản quyền
* Liên kết Chính sách Bảo mật

Hiệu suất chức năng của ứng dụng web phụ thuộc vào việc nhà phát triển có kích hoạt chức năng này khi biên soạn ứng dụng hay không, ví dụ:

* Ghi chú trò chuyện
* Biến được điền vào trước khi trò chuyện
* Theo dõi
* Chuyển đổi giọng nói thành văn bản
* Các câu trả lời khác như thế này (Ứng dụng Sinh văn bản)
* ...

Trong các chương sau, chúng tôi sẽ giới thiệu hai loại ứng dụng web một cách riêng biệt:

* Trình tạo văn bản
* Trò chuyện


# Tạo AI Bot

Thạo việc sử dụng ChatX để điều phối các ứng dụng và thực hành Kỹ thuật Câu gợi ý, và xây dựng các ứng dụng trí tuệ nhân tạo có giá trị cao với hai loại ứng dụng tích hợp sẵn.

Khái niệm cốt lõi của ChatX là định nghĩa tự động của các ứng dụng trí tuệ nhân tạo. Mọi thứ bao gồm Câu gợi ý, ngữ cảnh, plugin, v.v. có thể được mô tả trong một tệp YAML (đó là lý do tại sao nó được gọi là ChatX). Cuối cùng, nó cung cấp một API duy nhất hoặc WebApp sẵn có.

Đồng thời, ChatX cung cấp một giao diện điều phối Câu gợi ý dễ sử dụng, nơi các nhà phát triển có thể điều phối một cách trực quan các tính năng ứng dụng khác nhau dựa trên Câu gợi ý. Nghe có vẻ đơn giản phải không?

Đối với cả ứng dụng trí tuệ nhân tạo đơn giản và phức tạp, Câu gợi ý tốt có thể cải thiện hiệu suất đầu ra của mô hình, giảm tỷ lệ lỗi và đáp ứng nhu cầu của các tình huống cụ thể. Hiện tại, ChatX cung cấp hai dạng ứng dụng phổ biến: trò chuyện và trình tạo văn bản. Phần này sẽ hướng dẫn bạn qua việc điều phối trực quan các ứng dụng trí tuệ nhân tạo.

## Các bước Điều Phối Ứng Dụng:

1. Xác định các kịch bản ứng dụng và yêu cầu chức năng
2. Thiết kế và kiểm thử Câu gợi ý và tham số mô hình
3. Điều phối Câu gợi ý
4. Xuất bản ứng dụng
5. Quan sát và liên tục lặp lại

## Thực hành thực tế

TODO

## Các Sự Khác Biệt giữa Các Loại Ứng Dụng

Các ứng dụng tạo văn bản và trò chuyện trong ChatX có những sự khác biệt nhỏ trong việc điều phối câu gợi ý. Các ứng dụng trò chuyện yêu cầu tích hợp "conversation lifecycle" để đáp ứng các tình huống người dùng phức tạp hơn và các nhu cầu quản lý ngữ cảnh.

Kỹ thuật Câu gợi ý đã phát triển thành một lĩnh vực có tiềm năng lớn, đáng để liên tục khám phá. Vui lòng tiếp tục đọc để tìm hiểu về các hướng dẫn điều phối cho cả hai loại ứng dụng.

## Đọc Thêm

1. [Learn Prompting](https://learnprompting.org/)
2. [ChatGPT Prompt Engineering for Developers](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)
3. [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts)


# Agent Assistant

## Định Nghĩa

Một Agent Assistant có thể tận dụng khả năng lập luận của các mô hình ngôn ngữ lớn (LLM). Nó đặt mục tiêu một cách độc lập, đơn giản hóa các nhiệm vụ phức tạp, vận hành các công cụ và tinh chỉnh các quy trình để hoàn thành nhiệm vụ tự động.

## Hướng Dẫn Sử Dụng

Để giúp việc học và sử dụng nhanh chóng, các mẫu ứng dụng cho Agent Assistant có sẵn trong phần 'khám phá'. Bạn có thể tích hợp các mẫu này vào không gian làm việc của mình. Studio mới của ChatX cũng cho phép tạo ra một Agent Assistant tùy chỉnh để phù hợp với các yêu cầu cá nhân. Trợ lý này có thể hỗ trợ trong việc phân tích báo cáo tài chính, soạn thảo báo cáo, thiết kế logo và tổ chức kế hoạch du lịch.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FQUX8UJ3gStFrqwlhl9zn%2Fassit%20agent.JPG?alt=media&amp;token=ed67057a-a510-4f63-ab95-36538bd4df38" alt=""><figcaption><p><strong>Khám Phá - Mẫu Ứng Dụng Agent Assistant</strong></p></figcaption></figure>

Sau khi nhập 'Studio-Assistant', bạn có thể bắt đầu điều phối bằng cách chọn Agent Assistant.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fm1uNfIni8VhbylPyvNz9%2Forches.JPG?alt=media&amp;token=0b8e170d-3816-4ebb-a8c4-0323c3f44f16" alt=""><figcaption><p><strong>Agent Assistant tạo Studio</strong></p></figcaption></figure>

Khả năng hoàn thành nhiệm vụ của Agent Assistant phụ thuộc vào khả năng suy luận của mô hình được chọn. Chúng tôi khuyên bạn nên sử dụng các dòng mô hình mạnh mẽ hơn như GPT-4 khi sử dụng Agent Assistant để đạt được kết quả hoàn thành nhiệm vụ ổn định hơn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FF0Y74OezEynZPTBDw1GW%2Fgpt4.JPG?alt=media&amp;token=fb780d1e-a84f-4978-b3bd-2f5600ccf321" alt=""><figcaption><p><strong>Chọn Mô Hình Lập Luận cho Agent Assistant</strong></p></figcaption></figure>

Bạn có thể viết lời nhắc cho Agent Assistant trong phần 'Hướng dẫn'. Để đạt được kết quả tối ưu, bạn có thể xác định rõ ràng mục tiêu nhiệm vụ, quy trình làm việc, nguồn lực và các giới hạn trong hướng dẫn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fy17w2ukdjo00ddmmwzCt%2Fhuongdan.JPG?alt=media&amp;token=e6c3eca6-8fad-4571-b681-23e1b182bfdc" alt=""><figcaption><p><strong>Sắp xếp lời nhắc cho Agent Assistant</strong></p></figcaption></figure>

## Thêm công cụ cho Agent Assistant <a href="#adding-tools-for-the-agent-assistant" id="adding-tools-for-the-agent-assistant"></a>

Trong phần "Ngữ cảnh", bạn có thể tích hợp các công cụ cơ sở kiến thức mà Agent Assistant có thể sử dụng để truy xuất thông tin. Điều này sẽ giúp cung cấp cho nó kiến thức nền bên ngoài.&#x20;

Trong phần "Công cụ", bạn có thể thêm các công cụ cần thiết để sử dụng. Những công cụ này có thể cải thiện khả năng của các mô hình ngôn ngữ lớn, như tìm kiếm trên internet, tính toán khoa học, hoặc tạo hình ảnh, từ đó làm phong phú hơn khả năng tương tác của các mô hình ngôn ngữ lớn với thế giới thực. ChatX cung cấp hai loại công cụ: **công cụ tích hợp sẵn và công cụ tùy chỉnh.**&#x20;

Bạn có thể lựa chọn sử dụng trực tiếp các công cụ tích hợp sẵn trong ChatX, hoặc bạn có thể dễ dàng nhập các công cụ API tùy chỉnh (hiện đang hỗ trợ tiêu chuẩn OpenAPI/Swagger và Plugin của OpenAI).

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FOHlKtG7nULBNUpPEeuKg%2Ftool.JPG?alt=media&amp;token=266f6372-1454-4400-9257-40f6040aa7cb" alt=""><figcaption><p><strong>Thêm công cụ cho Trợ lý</strong></p></figcaption></figure>

Công cụ cho phép bạn tạo ra các ứng dụng trí tuệ nhân tạo mạnh mẽ hơn trên ChatX. Ví dụ, bạn có thể tổ chức các công cụ phù hợp cho Agent Assistant, cho phép nó hoàn thành các nhiệm vụ phức tạp thông qua lập luận, phân rã các bước và triệu gọi công cụ. Ngoài ra, công cụ cũng giúp tích hợp ứng dụng của bạn với các hệ thống hoặc dịch vụ khác, cho phép tương tác với môi trường bên ngoài, chẳng hạn như thực thi mã và truy cập vào các nguồn thông tin độc quyền.

## Thiết lập Tác nhân

Trên ChatX, có hai chế độ suy luận được cung cấp cho Agent Assistant: Gọi Hàm và ReAct. Các dòng mô hình như GPT-3.5 và GPT-4 hỗ trợ Gọi Hàm đã chứng minh được hiệu suất tốt hơn và ổn định hơn. Đối với các loại mô hình không hỗ trợ Gọi Hàm, chúng tôi đã triển khai khung suy luận ReAct để đạt được các hiệu ứng tương tự.&#x20;

Trong thiết lập Tác nhân, bạn có thể điều chỉnh số lần lặp tối đa của Agent.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FUHKXpVpUXHQ0WSnOjosr%2Fsetting%20agent.JPG?alt=media&amp;token=24891493-0a3f-4856-ab09-5395c2c5ac4e" alt=""><figcaption><p><strong>Chế độ gọi hàm</strong></p></figcaption></figure>

## Configuring the Conversation Opener <a href="#configuring-the-conversation-opener" id="configuring-the-conversation-opener"></a>

Bạn có thể thiết lập phần mở đầu cuộc trò chuyện và các câu hỏi ban đầu cho Agent Assistant của mình. Công cụ mở cuộc trò chuyện đã định cấu hình sẽ được hiển thị khi bắt đầu tương tác đầu tiên của mỗi người dùng, hiển thị các loại nhiệm vụ mà Agent có thể thực hiện, cùng với các ví dụ về các câu hỏi có thể được hỏi.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FrahnIdMvNiJXp3HEtvOF%2Fchat.JPG?alt=media&amp;token=1875d8e6-568a-4bb4-be25-269285b292bb" alt=""><figcaption><p><strong>Định cấu hình phần mở đầu cuộc trò chuyện và câu hỏi ban đầu</strong></p></figcaption></figure>

## Gỡ Lỗi và Xem Trước

Sau khi sắp xếp Agent Assistant, bạn có tùy chọn gỡ lỗi và xem trước nó trước khi xuất bản dưới dạng ứng dụng. Điều này cho phép bạn đánh giá hiệu quả của tác nhân trong việc hoàn thành nhiệm vụ.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FtYQa6FWEc8LH4EB6rIt3%2Fdebug.JPG?alt=media&amp;token=f75fe957-0a86-4541-801e-acd3341f3f17" alt=""><figcaption><p><strong>Gỡ Lỗi và Xem Trước</strong></p></figcaption></figure>

## Xuất bản ứng dụng

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FsA4s4BRsrKm7yZFa9vuS%2F0.png?alt=media&amp;token=36128871-0cf3-4dc1-a0d5-8fa99dcdee2e" alt=""><figcaption><p><strong>Xuất bản ứng dụng dưới dạng ứng dụng web</strong></p></figcaption></figure>


# Chatbot

Ứng dụng trò chuyện sử dụng chế độ một câu hỏi - một câu trả lời để duy trì cuộc trò chuyện liên tục với người dùng.

## Các tình huống áp dụng

Ứng dụng trò chuyện có thể được sử dụng trong các lĩnh vực như dịch vụ khách hàng, giáo dục trực tuyến, chăm sóc sức khỏe, dịch vụ tài chính, v.v. Những ứng dụng này có thể giúp tổ chức cải thiện hiệu suất làm việc, giảm chi phí lao động và cung cấp trải nghiệm người dùng tốt hơn.

## Cách soạn thảo

Ứng dụng trò chuyện hỗ trợ: lời nhắc, biến số, ngữ cảnh, lời chào mừng và gợi ý cho câu hỏi tiếp theo.

Ở đây, chúng ta sử dụng một ứng dụng phỏng vấn viên làm ví dụ để giới thiệu cách soạn thảo một ứng dụng trò chuyện.

#### Bước 1 Tạo một ứng dụng

Nhấp vào nút "Tạo từ Trắng" trên trang chủ để tạo một ứng dụng. Điền tên ứng dụng và chọn "Chatbot" làm loại ứng dụng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FyA6rxqCtQljQjDmzpafe%2Fcreate.JPG?alt=media&amp;token=9defa168-c246-4d31-9db9-a457c25628f2" alt=""><figcaption><p><strong>Tạo ứng dụng</strong></p></figcaption></figure>

#### Bước 2: Soạn ứng dụng

Sau khi ứng dụng được tạo thành công, nó sẽ tự động chuyển hướng đến trang tổng quan ứng dụng. Nhấp vào menu bên trái: "Orchestrate" để soạn ứng dụng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fzw4VOjDrScmlgapYMwgb%2FCapture.JPG?alt=media&amp;token=7e2438a3-1c18-401a-8701-1e84177d491c" alt=""><figcaption></figcaption></figure>

#### **2.1** Điền vào lời nhắc

Lời nhắc được sử dụng để đưa ra một loạt hướng dẫn và ràng buộc đối với phản hồi của AI. Các biến biểu mẫu có thể được chèn vào, chẳng hạn như `{{input}}`. Giá trị của các biến trong lời nhắc sẽ được thay thế bằng giá trị do người dùng điền vào.

Lời nhắc chúng tôi đang điền ở đây là:

> I want you to be the interviewer for the {{jobName}} position. I will be the candidate, and you will ask me interview questions for the position of {{jobName}} developer. I hope you will only answer as the interviewer. Don't write all the questions at once. I wish for you to only interview me. Ask me questions and wait for my answers. Don't write explanations. Ask me one by one like an interviewer and wait for my answer.
>
> When I am ready, you can start asking questions.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Ff6s3Qw5rYlhAYORJUpiN%2F0.png?alt=media&amp;token=bafe7ab6-b68b-45d8-a0f7-ea51608beb2a" alt=""><figcaption></figcaption></figure>

Để có trải nghiệm tốt hơn, chúng tôi sẽ thêm đoạn hội thoại mở đầu: `"Hello, {{name}}. I'm your interviewer, Bob. Are you ready?"`

Để thêm đoạn hội thoại mở đầu, hãy nhấp vào nút 'Add Feature' ở góc trên bên trái và bật tính năng 'Conversation remarkers':

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F4vvmY4UnaZsQlssxDKv7%2F0.png?alt=media&amp;token=35158c53-9a4a-4915-82d4-1606085bf10f" alt=""><figcaption></figcaption></figure>

Và sau đó chỉnh sửa lời mở đầu:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FCBkct4Ec8iwaqFPdxYQi%2FCapture.JPG?alt=media&amp;token=e14d8df2-4479-4b49-870b-d448f84e9bf2" alt=""><figcaption></figcaption></figure>

**2.2 Thêm Ngữ cảnh**

Nếu một ứng dụng muốn tạo nội dung dựa trên các cuộc hội thoại theo ngữ cảnh riêng tư, thì ứng dụng đó có thể sử dụng tính năng [kiến ​​thức](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/tinh-nang/knowledge-import-nhap-kien-thuc) của chúng tôi. Nhấp vào nút 'Thêm' trong ngữ cảnh để thêm cơ sở kiến ​​thức.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FQTPB6OJ6CIbjDanxoRwy%2FCapture.JPG?alt=media&amp;token=fdf57ac1-4186-4004-88c1-70285b51118f" alt=""><figcaption></figcaption></figure>

**2.3 Gỡ lỗi**

Chúng tôi điền thông tin đầu vào của người dùng ở phía bên phải và gỡ lỗi nội dung đầu vào.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FuvnPxFnxN5uWtoGOw8qj%2F0.png?alt=media&amp;token=d075bc0a-9aff-4fcc-aa5f-6a74d0db9078" alt=""><figcaption></figcaption></figure>

Nếu kết quả không đạt được như mong đợi, bạn có thể điều chỉnh các lời nhắc và tham số của mô hình. Nhấp vào tên mô hình ở góc trên bên phải để thiết lập các tham số của mô hình:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FtdZrflWCXqnbN977Lwqf%2FCapture.JPG?alt=media&amp;token=eb5ac643-249f-4cce-92e4-418b4c083a4b" alt=""><figcaption></figcaption></figure>

Chúng tôi hỗ trợ mô hình GPT-4.

**2.4 Xuất bản**

Sau khi gỡ lỗi ứng dụng, hãy nhấp vào nút '**Xuất bản**' ở góc trên bên phải để lưu cài đặt hiện tại.

## Chia sẻ ứng dụng

Trên trang tổng quan, bạn có thể tìm thấy địa chỉ chia sẻ của ứng dụng. Nhấn vào nút "Xem trước" để xem trước ứng dụng đã được chia sẻ. Nhấp vào nút "Chia sẻ" để lấy địa chỉ liên kết chia sẻ. Nhấp vào nút "Cài đặt" để thiết lập thông tin của ứng dụng đã chia sẻ.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FbcjySDZir9fMSSnyKOeI%2FCapture.JPG?alt=media&amp;token=96a02d0e-e15f-4d04-a235-2656843361b0" alt=""><figcaption></figcaption></figure>

Nếu muốn tùy chỉnh ứng dụng mà mình chia sẻ, bạn có thể Fork mẫu WebApp nguồn mở của chúng tôi. Dựa trên mẫu, bạn có thể sửa đổi ứng dụng để đáp ứng nhu cầu cụ thể và yêu cầu về phong cách của mình.


# Máy tạo văn bản

Ứng dụng máy tạo văn bản là những ứng dụng có thể tự động tạo văn bản chất lượng cao dựa trên lời nhắc do người dùng cung cấp. Họ có thể tạo ra nhiều loại văn bản khác nhau, chẳng hạn như tóm tắt bài viết, bản dịch, v.v.

## Các tình huống áp dụng

Các ứng dụng tạo văn bản phù hợp với các tình huống yêu cầu tạo ra một lượng lớn văn bản, như truyền thông tin tức, quảng cáo, SEO, tiếp thị, v.v. Chúng có thể cung cấp dịch vụ tạo văn bản hiệu quả và nhanh chóng cho những ngành công nghiệp này, giảm chi phí lao động và cải thiện hiệu suất sản xuất.

## Cách soạn thảo

Ứng dụng tạo văn bản hỗ trợ: các từ khởi đầu, biến số, ngữ cảnh và tạo ra nhiều nội dung tương tự.&#x20;

Ở đây, chúng ta sử dụng một ứng dụng dịch làm ví dụ để giới thiệu cách soạn thảo các ứng dụng tạo văn bản.

Here, we use a translation application as an example to introduce the way to compose a text generation applications.

#### Bước 1: Tạo ứng dụng

Nhấp vào nút "Tạo từ Trắng" trên trang chủ để tạo một ứng dụng. Điền tên ứng dụng và chọn "Máy tạo văn bản" làm loại ứng dụng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FIpPW2vrlZFBXM5LatPUP%2FCapture.JPG?alt=media&amp;token=c6d61106-968a-4f7f-ae01-358d305e0c1e" alt=""><figcaption><p><strong>Tạo ứng dụng</strong></p></figcaption></figure>

#### Bước 2: Soạn ứng dụng

Sau khi ứng dụng được tạo thành công, nó sẽ tự động chuyển hướng đến trang tổng quan ứng dụng. Nhấp vào menu bên trái: "**Orchestrate**" để soạn ứng dụng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F7y0Nqy96ko35vWCLgqTt%2FCapture.JPG?alt=media&amp;token=67f83c44-d917-4d71-aaeb-dae14071933a" alt=""><figcaption></figcaption></figure>

**2.1 Điền vào Tiền Tố Lời Nhắc**

Lời nhắc được sử dụng để đưa ra một loạt hướng dẫn và ràng buộc đối với phản hồi của AI. Các biến biểu mẫu có thể được chèn vào, chẳng hạn như `{{input}}`. Giá trị của các biến trong lời nhắc sẽ được thay thế bằng giá trị do người dùng điền vào.

Lời nhắc chúng tôi đang điền ở đây là: `Translate the content to: {{language}}. The content is as follows:`

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fr1e2FRoNSdF86W5F9NP0%2FCapture.JPG?alt=media&amp;token=1c623c5a-1390-4258-b625-784ce12703f7" alt=""><figcaption></figcaption></figure>

**2.2 Thêm Ngữ cảnh**

Nếu một ứng dụng muốn tạo nội dung dựa trên các cuộc hội thoại theo ngữ cảnh riêng tư, thì ứng dụng đó có thể sử dụng tính năng [kiến ​​thức](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/tinh-nang/knowledge-import-nhap-kien-thuc) của chúng tôi. Nhấp vào nút 'Thêm' trong ngữ cảnh để thêm cơ sở kiến ​​thức.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FYXsYWpelBY6lXh2O0fVD%2FCapture.JPG?alt=media&amp;token=c4f6b749-d1ad-4264-bfa7-5ee8d77e7215" alt=""><figcaption></figcaption></figure>

**2.3** Thêm tính năng: Tạo thêm nhiều hơn như vậy

Việc tạo nhiều văn bản tương tự hơn cho phép bạn tạo nhiều văn bản cùng một lúc mà bạn có thể chỉnh sửa và tiếp tục tạo từ đó. Nhấp vào nút 'Thêm tính năng' ở góc trên bên trái để bật tính năng này.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F8rXfLmTpygsLh5XkiAZA%2FCapture.JPG?alt=media&amp;token=5044ac54-96bd-4f20-a11a-4e0534d5a793" alt=""><figcaption></figcaption></figure>

**2.4 Gỡ lỗi**

Chúng tôi gỡ lỗi ở phía bên phải bằng cách nhập các biến và nội dung truy vấn. Nhấp vào nút 'Chạy' để xem kết quả của thao tác.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F5IhmGLA7s1C8drG0K2Eu%2FCapture.JPG?alt=media&amp;token=25ba2b4e-0cff-45da-a4e3-4ff27cca9666" alt=""><figcaption></figcaption></figure>

Nếu kết quả không đạt được như mong đợi, bạn có thể điều chỉnh các lời nhắc và tham số của mô hình. Nhấp vào tên mô hình ở góc trên bên phải để thiết lập các tham số của mô hình:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FNaI0VriRYU7JlKR3JGEx%2FCapture.JPG?alt=media&amp;token=1fe1e100-4585-4c00-ba22-d5b387f19721" alt=""><figcaption></figcaption></figure>

**2.5 Xuất bản**

Sau khi gỡ lỗi ứng dụng, hãy nhấp vào nút '**Xuất bản**' ở góc trên bên phải để lưu cài đặt hiện tại.

## Chia sẻ ứng dụng

Trên trang tổng quan, bạn có thể tìm thấy địa chỉ chia sẻ của ứng dụng. Nhấn vào nút "Xem trước" để xem trước ứng dụng đã được chia sẻ. Nhấp vào nút "Chia sẻ" để lấy địa chỉ liên kết chia sẻ. Nhấp vào nút "Cài đặt" để thiết lập thông tin của ứng dụng đã chia sẻ.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FtXNRGbATAOc4Y9ZOjfz3%2FCapture.JPG?alt=media&amp;token=b6bf598a-12b9-474c-80db-190d2aa99c64" alt=""><figcaption></figcaption></figure>

Nếu muốn tùy chỉnh ứng dụng mà mình chia sẻ, bạn có thể Fork mẫu WebApp nguồn mở của chúng tôi. Dựa trên mẫu, bạn có thể sửa đổi ứng dụng để đáp ứng nhu cầu cụ thể và yêu cầu về phong cách của mình.


# Câu hỏi thường gặp

## 1. Làm thế nào để chọn một mô hình cơ bản? <a href="#id-1.-how-to-choose-a-basic-model" id="id-1.-how-to-choose-a-basic-model"></a>

**gpt-3.5-turbo** •gpt-3.5-turbo là một phiên bản nâng cấp của dòng mô hình GPT-3. Nó mạnh mẽ hơn GPT-3 và có thể xử lý các nhiệm vụ phức tạp hơn. Nó có những cải tiến đáng kể trong việc hiểu văn bản dài và tư duy liên văn bản. GPT-3.5 Turbo có thể tạo ra văn bản mạch lạc và thuyết phục hơn. Nó cũng có cải tiến lớn trong việc tóm tắt, dịch và viết sáng tạo. **Tốt ở: Hiểu văn bản dài, tư duy liên văn bản, tóm tắt, dịch, viết sáng tạo.**

**gpt-4** •gpt-4 là mô hình ngôn ngữ Transformer mạnh mẽ nhất và mới nhất. Nó có gần 200 tỷ tham số được huấn luyện trước, khiến cho nó tiên tiến nhất trong tất cả các nhiệm vụ ngôn ngữ, đặc biệt là những nhiệm vụ đòi hỏi sự hiểu biết sâu sắc và tạo ra các phản ứng dài, phức tạp. GPT-4 có thể xử lý mọi khía cạnh của ngôn ngữ con người, bao gồm việc hiểu các khái niệm trừu tượng và tư duy qua các trang văn bản. GPT-4 là hệ thống hiểu ngôn ngữ tổng quát đầu tiên thực sự có thể xử lý bất kỳ nhiệm vụ xử lý ngôn ngữ tự nhiên nào trong lĩnh vực trí tuệ nhân tạo. **Tốt ở: Tất cả các nhiệm vụ xử lý ngôn ngữ, hiểu ngôn ngữ, tạo ra văn bản dài, tư duy liên văn bản, hiểu các khái niệm trừu tượng.**

Vui lòng tham khảo: <https://platform.openai.com/docs/models/overview>

## 2. Tại sao nên đặt max\_tokens nhỏ hơn? <a href="#id-2.-why-is-it-recommended-to-set-max_tokens-smaller" id="id-2.-why-is-it-recommended-to-set-max_tokens-smaller"></a>

Trong xử lý ngôn ngữ tự nhiên, đầu ra văn bản dài thường đòi hỏi thời gian tính toán và tài nguyên máy tính nhiều hơn. Do đó, việc giới hạn độ dài của văn bản đầu ra có thể giảm thiểu chi phí tính toán và thời gian một phần nào đó. Ví dụ, đặt: max\_tokens=500, có nghĩa là chỉ có 500 token đầu tiên của văn bản đầu ra được xem xét, và phần vượt quá độ dài này sẽ bị loại bỏ. Mục đích của việc này là đảm bảo rằng độ dài của văn bản đầu ra không vượt quá phạm vi chấp nhận được của LLM, đồng thời tận dụng đầy đủ tài nguyên tính toán để cải thiện hiệu suất của mô hình. Tuy nhiên, việc giới hạn max\_tokens thường cũng tạo ra sự giới hạn về độ dài của lời nhắc, ví dụ như giới hạn của gpt-3.5-turbo là 4097 token, nếu bạn đặt max\_tokens=4000, thì chỉ còn lại 97 token cho lời nhắc, và sẽ báo lỗi nếu vượt quá.

## 3. Làm thế nào để phân chia dữ liệu văn bản dài trong kiến ​​thức một cách hợp lý? <a href="#id-3.-how-to-split-long-text-data-in-the-knowledge-reasonably" id="id-3.-how-to-split-long-text-data-in-the-knowledge-reasonably"></a>

Trong một số ứng dụng xử lý ngôn ngữ tự nhiên, văn bản thường được chia thành các đoạn văn hoặc câu để tăng cường việc xử lý và hiểu thông tin ý nghĩa và cấu trúc trong văn bản. Đơn vị chia nhỏ nhất phụ thuộc vào nhiệm vụ cụ thể và cách thực hiện kỹ thuật. Ví dụ:

* Đối với các nhiệm vụ phân loại văn bản, văn bản thường được chia thành các câu hoặc đoạn văn.
* Đối với các nhiệm vụ dịch máy, cần sử dụng toàn bộ các câu hoặc đoạn văn làm đơn vị chia nhỏ.

Cuối cùng, các thí nghiệm và đánh giá vẫn cần được thực hiện để xác định công nghệ nhúng và đơn vị chia nhỏ phù hợp nhất. Hiệu suất của các công nghệ và đơn vị chia nhỏ khác nhau có thể được so sánh trên tập kiểm tra để chọn ra kế hoạch tối ưu nhất.

## 4. Chúng ta đã sử dụng hàm khoảng cách nào khi phân đoạn kiến ​​thức? <a href="#id-4.-what-distance-function-did-we-use-when-getting-knowledge-segmentation" id="id-4.-what-distance-function-did-we-use-when-getting-knowledge-segmentation"></a>

Chúng tôi sử dụng [độ tương tự cosin](https://en.wikipedia.org/wiki/Cosine_similarity). Sự lựa chọn của hàm khoảng cách thường không quan trọng. Các vectơ nhúng của OpenAI được chuẩn hóa thành độ dài 1, điều này có nghĩa là:

* Sử dụng tích vô hướng để tính toán độ tương tự cosin có thể nhanh hơn một chút.
* Độ tương tự cosin và khoảng cách Euclid sẽ dẫn đến cùng một sắp xếp.

Sau khi các vectơ nhúng được chuẩn hóa thành độ dài 1, việc tính độ tương tự cosin giữa hai vectơ có thể được đơn giản hóa thành tích vô hướng của chúng. Bởi vì các vectơ được chuẩn hóa có độ dài bằng 1, kết quả của tích vô hướng bằng với kết quả của độ tương tự cosin.

Vì việc tính toán tích vô hướng nhanh hơn so với các phương pháp tương tự khác (như khoảng cách Euclid), việc sử dụng các vectơ được chuẩn hóa để tính toán tích vô hướng có thể làm tăng hiệu suất tính toán một cách nhẹ nhàng.

## 5. Khi điền khóa OpenAI, xảy ra lỗi '**Validation failed: You exceeded your current quota, please check your plan and billing details**'. Điều gì gây ra lỗi này? <a href="#id-5.-when-filling-in-the-openai-key-the-error-validation-failed-you-exceeded-your-current-quota-ple" id="id-5.-when-filling-in-the-openai-key-the-error-validation-failed-you-exceeded-your-current-quota-ple"></a>

Thông báo này cho biết số dư tài khoản khóa của OpenAI đã được sử dụng hết. Vui lòng nạp tiền vào tài khoản OpenAI tại openai.com. Tham khảo [OpenAI](https://openai.com/pricing) để biết thông tin chi tiết về các gói dịch vụ và hóa đơn của họ.

## 6. Khi sử dụng key của OpenAI để hội thoại trong ứng dụng sẽ xuất hiện thông báo lỗi như sau. Nguyên nhân là gì? <a href="#id-6.-when-using-openais-key-for-dialogue-in-the-application-there-is-an-error-prompt-as-follows.-wh" id="id-6.-when-using-openais-key-for-dialogue-in-the-application-there-is-an-error-prompt-as-follows.-wh"></a>

Lỗi 1：

```
The server encountered an internal error and was unable to complete your request。Either the server is overloaded or there is an error in the application
```

Lỗi 2：

```
Rate limit reached for default-gpt-3.5-turboin organization org-wDrZCxxxxxxxxxissoZb on requestsper min。 Limit: 3 / min. Please try again in 20s. Contact us through our help center   at help.openai.com   if you continue to haveissues. Please add a payment method toyour account to increase your rate limit.Visit https://platform.openai.com/account/billingto add a payment method.
```

Vui lòng kiểm tra xem đã đạt đến giới hạn tốc độ cuộc gọi giao diện chính thức hay chưa. Vui lòng tham khảo [tài liệu chính thức](https://platform.openai.com/docs/guides/rate-limits) để biết chi tiết.

## 7. Sau khi triển khai cục bộ, Explore-Chat trả về lỗi 'Unrecognized request argument supplied: functions'. Vấn đề đó được giải quyết như thế nào? <a href="#id-7.-after-local-deployment-explore-chat-returns-an-error-unrecognized-request-argument-supplied-fu" id="id-7.-after-local-deployment-explore-chat-returns-an-error-unrecognized-request-argument-supplied-fu"></a>

Đầu tiên, hãy kiểm tra rằng phiên bản frontend và backend đã được cập nhật và phù hợp với nhau. Lỗi này cũng có thể xảy ra nếu một khóa Azure OpenAI được sử dụng mà không thành công trong việc triển khai mô hình. Xác minh rằng tài nguyên Azure OpenAI đã triển khai một mô hình - phiên bản mô hình gpt-3.5-turbo phải là 0613 trở lên, vì các phiên bản trước đó không hỗ trợ các tính năng gọi chức năng được yêu cầu bởi Explore-Chat.

## 8. Khi chuyển đổi mô hình trong ứng dụng, gặp phải lỗi sau: <a href="#id-8.-when-switching-models-in-the-app-the-following-error-is-encountered" id="id-8.-when-switching-models-in-the-app-the-following-error-is-encountered"></a>

```
Anthropic: Error code: 400 - f'error': f'type': "invalid request error, 'message': 'temperature: range: -1 or 0..1)
```

Lỗi này xảy ra vì mỗi mô hình có các phạm vi hợp lệ khác nhau cho các tham số của nó. Đảm bảo cấu hình giá trị tham số theo phạm vi được cho phép cho mô hình hiện tại.

## 9. Làm thế nào để giải quyết lỗi nhắc nhở sau đây? <a href="#id-9.-how-to-solve-the-following-error-prompt" id="id-9.-how-to-solve-the-following-error-prompt"></a>

```
Query or prefix prompt is too long, you can reduce the preix prompt, or shrink the max token, or switch to a llm with a larger token limit size
```

Bạn có thể giảm giá trị của "Max token" trong cài đặt tham số của Orchestrate.

## 10. Các mô hình mặc định trong ChatX là gì và có thể sử dụng LLM nguồn mở không? <a href="#id-10.-what-are-the-default-models-in-dify-and-can-open-source-llms-be-used" id="id-10.-what-are-the-default-models-in-dify-and-can-open-source-llms-be-used"></a>

A: Các mô hình mặc định có thể được cấu hình trong **Cài đặt - Nhà cung cấp Mô hình**. Các mô hình LLM (Máy học Sâu Ngôn ngữ) hỗ trợ hiện tại bao gồm OpenAI, Azure OpenAI, Anthropic, v.v. Đồng thời, các LLM mã nguồn mở được lưu trữ trên Hugging Face, Replicate, xinference, v.v. cũng có thể được tích hợp.

## 11. Kiến thức trong Phiên bản cộng đồng bị kẹt trong 'Queued' khi chế độ phân đoạn Hỏi & Đáp được bật. <a href="#id-11.-the-knowledge-in-community-edition-gets-stuck-in-queued-when-q-and-a-segmentation-mode-is-ena" id="id-11.-the-knowledge-in-community-edition-gets-stuck-in-queued-when-q-and-a-segmentation-mode-is-ena"></a>

Vui lòng kiểm tra xem khóa API mô hình nhúng đã đạt đến giới hạn tốc độ hay chưa.

## 12. Lỗi 'Invalid token' xuất hiện khi sử dụng ứng dụng. <a href="#id-12.-the-error-invalid-token-appears-when-using-the-app" id="id-12.-the-error-invalid-token-appears-when-using-the-app"></a>

Có hai giải pháp tiềm năng nếu xuất hiện lỗi "Invalid token":

* Xóa bộ nhớ cache trình duyệt (cookie, bộ nhớ phiên và bộ nhớ cục bộ) hoặc bộ nhớ cache ứng dụng trên thiết bị di động. Sau đó, truy cập lại ứng dụng.
* Tạo lại URL của ứng dụng và truy cập lại ứng dụng với URL mới. Điều này có thể giải quyết lỗi "Invalid token".

## 13. Giới hạn kích thước để tải lên tài liệu kiến ​​thức là gì? <a href="#id-13.-what-are-the-size-limits-for-uploading-knowledge-documents" id="id-13.-what-are-the-size-limits-for-uploading-knowledge-documents"></a>

Kích thước tối đa cho một lần tải lên tài liệu hiện là 15MB. Ngoài ra còn có giới hạn tổng cộng 100 tài liệu. Những giới hạn này có thể được điều chỉnh nếu bạn đang sử dụng triển khai cục bộ. Tham khảo [tài liệu](broken://pages/x3RI7la4r6sOZeJA0Exp) để biết chi tiết về việc thay đổi giới hạn.

## 14. Tại sao Claude vẫn sử dụng tín dụng OpenAI khi sử dụng mô hình Claude? <a href="#id-14.-why-does-claude-still-consume-openai-credits-when-using-the-claude-model" id="id-14.-why-does-claude-still-consume-openai-credits-when-using-the-claude-model"></a>

Mô hình Claude không có mô hình nhúng riêng của nó. Do đó, quá trình nhúng và các quá trình tạo đoạn văn tiếp theo như gợi ý câu hỏi mặc định sẽ sử dụng các khóa OpenAI. Điều này có nghĩa là vẫn sử dụng tín dụng OpenAI. Bạn có thể thiết lập các mô hình suy luận và nhúng mặc định khác nhau trong Cài đặt > Nhà cung cấp Mô hình.

## 15. Có cách nào để kiểm soát việc sử dụng nhiều hơn dữ liệu tri thức thay vì khả năng tạo ra của chính mô hình không? <a href="#id-15.-is-there-any-way-to-control-the-greater-use-of-knowledge-data-rather-than-the-models-own-gene" id="id-15.-is-there-any-way-to-control-the-greater-use-of-knowledge-data-rather-than-the-models-own-gene"></a>

Việc sử dụng cơ sở tri thức có liên quan đến việc mô tả tri thức đó hay không. Hãy viết phần mô tả kiến ​​thức càng rõ ràng càng tốt. Vui lòng tham khảo [tài liệu](/ii-tinh-nang-co-ban/knowledge-import-nhap-kien-thuc) để biết chi tiết.

## 16. Làm cách nào để phân đoạn tốt hơn tài liệu kiến ​​thức đã tải lên trong Excel? <a href="#id-16.-how-to-better-segment-the-uploaded-knowledge-document-in-excel" id="id-16.-how-to-better-segment-the-uploaded-knowledge-document-in-excel"></a>

Đặt tiêu đề ở hàng đầu tiên và hiển thị nội dung ở mỗi hàng tiếp theo. Không có bất kỳ cài đặt tiêu đề bổ sung hoặc nội dung bảng được định dạng phức tạp nào.

## 17. Tôi đã mua ChatGPT plus, tại sao tôi vẫn không thể sử dụng GPT4 trong ChatX? <a href="#id-17.-i-have-already-purchased-chatgpt-plus-why-cant-i-still-use-gpt4-in-dify" id="id-17.-i-have-already-purchased-chatgpt-plus-why-cant-i-still-use-gpt4-in-dify"></a>

ChatGPT Plus và API của mô hình GPT-4 của OpenAI là hai sản phẩm riêng biệt với cấu trúc giá cả riêng. Các API mô hình có cấu trúc giá cả riêng, xem [tài liệu giá của OpenAI](https://openai.com/pricing) để biết chi tiết. Để truy cập vào API của mô hình GPT-4, bạn cần thanh toán cho một chu kỳ thanh toán - việc chỉ có một phương thức thanh toán trên tệp và truy cập vào GPT-3.5 thông qua ChatGPT Plus không đủ. Vui lòng tham khảo [tài liệu chính thức của OpenAI](https://platform.openai.com/account/billing/overview) để biết đầy đủ chi tiết về cách truy cập GPT-4.

## 18. Làm cách nào để thêm các mô hình nhúng khác? <a href="#id-18.-how-to-add-other-embedding-models" id="id-18.-how-to-add-other-embedding-models"></a>

ChatX hỗ trợ sử dụng các nhà cung cấp được liệt kê dưới đây như là nhà cung cấp mô hình nhúng, chỉ cần chọn loại `Embedding` trong hộp cấu hình

* Azure
* LocalAI
* MiniMax
* OpenAI
* Replicate
* XInference

## 19. Làm cách nào tôi có thể đặt ứng dụng do chính mình tạo làm mẫu ứng dụng? <a href="#id-19.-how-can-i-set-my-own-created-app-as-an-app-template" id="id-19.-how-can-i-set-my-own-created-app-as-an-app-template"></a>

Khả năng đặt ứng dụng mà bạn tạo ra làm mẫu hiện tại không được hỗ trợ. Các mẫu hiện có được ChatX cung cấp chính thức để tham khảo cho người dùng phiên bản đám mây. Nếu bạn đang sử dụng phiên bản đám mây, bạn có thể thêm ứng dụng vào không gian làm việc của mình hoặc tùy chỉnh chúng để tạo ra ứng dụng của riêng mình sau khi chỉnh sửa. Nếu bạn đang sử dụng phiên bản cộng đồng và cần tạo thêm mẫu ứng dụng cho nhóm của mình, bạn có thể tham khảo với nhóm kinh doanh của chúng tôi để nhận được hỗ trợ kỹ thuật trả phí: <business@chatx.ai>

## 20. 502 Bad Gateway <a href="#id-20.502-bad-gateway" id="id-20.502-bad-gateway"></a>

Lỗi này xuất hiện do Nginx chuyển hướng dịch vụ đến vị trí sai. Đầu tiên, đảm bảo rằng container đang chạy, sau đó chạy lệnh sau với quyền root:

```
docker ps -q | xargs -n 1 docker inspect --format '{{ .Name }}: {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
```

Tìm hai dòng sau trong output:

```
/docker-web-1: 172.19.0.5
/docker-api-1: 172.19.0.7
```

Ghi nhớ các địa chỉ IP ở cuối. Sau đó, mở thư mục nơi bạn lưu mã nguồn của ChatX, mở chatx/docker/nginx/conf.d, thay thế <http://api:5001> bằng <http://172.19.0.7:5001> và thay thế <http://web:3000> bằng <http://172.19.0.5:3000>. Sau đó, khởi động lại container Nginx hoặc tải lại cấu hình.&#x20;

Các địa chỉ IP này là ***ví dụ***, bạn phải thực hiện lệnh để lấy địa chỉ IP của riêng bạn, đừng điền trực tiếp.

Bạn có thể cần phải cấu hình lại dựa trên địa chỉ IP khi khởi động lại các container liên quan.


# Trường hợp sử dụng

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/truong-hop-su-dung/tro-ly-notion-ai-dua-tren-ghi-chu-cua-rieng-ban">Trợ lý Notion AI dựa trên ghi chú của riêng bạn</a></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/truong-hop-su-dung/chatbot-ai-voi-du-lieu-doanh-nghiep">ChatBot AI với dữ liệu doanh nghiệp</a></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/tao-ung-dung-chatx/truong-hop-su-dung/bot-yeu-cau-giua-hanh-trinh">Bot Yêu Cầu Giữa Hành Trình</a></td><td></td><td></td><td></td></tr></tbody></table>


# Trợ lý Notion AI dựa trên ghi chú của riêng bạn

### Phần giới thiệu

Notion là một công cụ mạnh mẽ để quản lý kiến thức. Sự linh hoạt và khả năng mở rộng của nó làm cho nó trở thành một thư viện kiến thức cá nhân và không gian làm việc chia sẻ tuyệt vời. Nhiều người sử dụng nó để lưu trữ kiến thức của họ và làm việc phối hợp với người khác, tạo điều kiện thuận lợi cho việc trao đổi ý kiến và tạo ra kiến thức mới.

Tuy nhiên, kiến thức này vẫn còn tĩnh lặng, vì người dùng phải tìm kiếm thông tin mà họ cần và đọc qua nó để tìm câu trả lời mà họ đang tìm kiếm. Quá trình này không đặc biệt hiệu quả hoặc thông minh.

Bạn đã từng mơ về việc có một trợ lý trí tuệ nhân tạo dựa trên thư viện Notion của bạn chưa? Trợ lý này không chỉ hỗ trợ bạn trong việc xem xét cơ sở kiến thức của bạn, mà còn tham gia vào giao tiếp như một người hầu lễ có kinh nghiệm, thậm chí trả lời các câu hỏi của người khác như thể bạn là chủ sở hữu của thư viện Notion cá nhân của mình.

### Làm cách nào để biến trợ lý AI trong khái niệm của bạn thành hiện thực?​

Bây giờ, bạn có thể biến ước mơ này thành hiện thực thông qua [ChatX](https://app.chatx.vn/signin). ChatX là một nền tảng LLMOps (Large Language Models Ops) mã nguồn mở.

Các mô hình ngôn ngữ lớn như ChatGPT và Claude đã sử dụng khả năng ấn tượng của họ để định hình lại thế giới. Khả năng học mạnh mẽ của họ chủ yếu là do dữ liệu huấn luyện mạnh mẽ. May mắn thay, chúng đã tiến hóa đến mức đủ thông minh để học từ nội dung bạn cung cấp, từ đó làm cho quá trình tạo ra ý tưởng từ thư viện Notion cá nhân của bạn trở thành hiện thực.

Nếu không có ChatX, bạn có thể cần làm quen với langchain, một trừu tượng hóa giúp tối ưu hóa quá trình tổ chức các phần này.

### Làm cách nào để sử dụng ChatX để xây dựng Trợ lý AI quan niệm cá nhân của bạn?

Cách sử dụng ChatX để xây dựng Trợ lý AI cá nhân cho Notion của bạn là tương đối đơn giản. Chỉ cần tuân theo các bước sau:

1. Đăng nhập vào ChatX.
2. Tạo một bộ dữ liệu mới.
3. Kết nối với Notion và bộ dữ liệu của bạn.
4. Bắt đầu quá trình huấn luyện.
5. Tạo ứng dụng trí tuệ nhân tạo của riêng bạn.

**1.** Đăng nhập vào ChatX.[**​**](https://wsyfin.com/notion-dify#1-login-to-dify)

Click [vào đây](https://app.chatx.vn/signin) để đăng nhập vào ChatX. Bạn có thể dễ dàng đăng nhập bằng tài khoản GitHub hoặc Google của bạn.

> Nếu bạn đang sử dụng tài khoản GitHub để đăng nhập, làm thế nào về việc cho dự án này một ngôi sao? Điều đó thực sự giúp đỡ chúng tôi rất nhiều!

**2. Tạo bộ dữ liệu mới**[**​**](https://wsyfin.com/notion-dify#2-create-a-new-datasets)[**​**](https://wsyfin.com/notion-dify#2-create-a-new-datasets)

Click vào nút `Knowledge` trên thanh bên trên, tiếp theo là nút `Create Knowledge.`

**3.** Kết nối với Notion và kiến ​​thức của bạn[**​**](https://wsyfin.com/notion-dify#3-connect-with-notion-and-datasets)

Chọn "Đồng bộ từ Notion" và sau đó nhấp vào nút "Kết nối".

Sau đó, bạn sẽ được chuyển hướng đến trang đăng nhập Notion. Đăng nhập bằng tài khoản Notion của bạn.

Kiểm tra các quyền cần thiết bởi ChatX, sau đó nhấp vào nút "Chọn trang".

Chọn các trang bạn muốn đồng bộ với ChatX, và nhấn nút "Cho phép truy cập".

**4. Bắt đầu đào tạo**[**​**](https://wsyfin.com/notion-dify#4-start-training)

Chỉ định các trang để cho trí tuệ nhân tạo nghiên cứu, giúp nó hiểu được nội dung trong phần này của Notion. Sau đó nhấp vào nút "tiếp theo".

Chúng tôi đề xuất chọn các tùy chọn "Tự động" và "Chất lượng cao" để huấn luyện trợ lý trí tuệ nhân tạo của bạn. Sau đó nhấp vào nút "Lưu & Xử lý".

Thưởng thức cà phê của bạn trong khi đợi quá trình huấn luyện hoàn thành.

**5. Tạo ứng dụng AI của bạn**[**​**](https://wsyfin.com/notion-dify#5-create-your-ai-application)

Bạn phải tạo một ứng dụng trí tuệ nhân tạo và liên kết nó với kiến thức bạn vừa tạo.

Quay lại bảng điều khiển và nhấp vào nút "Tạo ứng dụng mới". Đề xuất sử dụng Ứng dụng Chat trực tiếp.

Chọn "Orchestrate" và liên kết các bộ dữ liệu Notion của bạn trong "Ngữ cảnh".

Tôi đề xuất thêm một 'Hướng dẫn' vào ứng dụng trí tuệ nhân tạo của bạn. Giống như các phép màu là thiết yếu đối với Harry Potter, tương tự, một số công cụ hoặc tính năng cụ thể có thể tăng cường đáng kể khả năng của ứng dụng trí tuệ nhân tạo.

Ví dụ, nếu các ghi chú Notion của bạn tập trung vào việc giải quyết vấn đề trong phát triển phần mềm, bạn có thể viết trong một trong các gợi ý như sau:

*Tôi muốn bạn hành động như một Chuyên gia Công nghệ thông tin trong không gian làm việc Notion của tôi, sử dụng kiến thức của bạn về khoa học máy tính, cơ sở hạ tầng mạng, ghi chú Notion và bảo mật CNTT để giải quyết các vấn đề.*

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FZFhKCIfInNa2uZVXKiKu%2FCapture.JPG?alt=media&amp;token=5aff7c68-d381-4e8e-b289-a40e8bdf61e1" alt=""><figcaption></figcaption></figure>

Đề xuất ban đầu kích hoạt trí tuệ nhân tạo để tự động cung cấp cho người dùng một câu khởi đầu, cung cấp một gợi ý về những gì họ có thể hỏi. Hơn nữa, việc kích hoạt tính năng 'Chuyển đổi Văn bản thành Giọng nói' có thể cho phép người dùng tương tác với trợ lý trí tuệ của bạn bằng cách sử dụng giọng nói của họ.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FXFAE6T7j94dyiqNHHoKv%2FCapture.JPG?alt=media&amp;token=5d4bc77e-38ec-47b2-af4c-ec23d2a67860" alt=""><figcaption></figcaption></figure>

Cuối cùng, nhấp vào nút "Xuất bản" ở phía trên bên phải của trang. Bây giờ bạn có thể nhấp vào URL công khai trong phần "Tổng quan" để trò chuyện với trợ lý trí tuệ cá nhân của bạn!

### Sử dụng API để tích hợp với Dự án của bạn

Mỗi ứng dụng trí tuệ nhân tạo được tạo bởi ChatX đều có thể được truy cập thông qua API của nó. Phương pháp này cho phép các nhà phát triển truy cập trực tiếp vào các đặc điểm mạnh mẽ của các mô hình ngôn ngữ lớn (LLMs) trong các ứng dụng frontend, mang lại trải nghiệm "Backend-as-a-Service" (BaaS) thực sự.

Với tích hợp API một cách dễ dàng, bạn có thể gọi ứng dụng trí tuệ Notion của mình một cách thuận tiện mà không cần phải cấu hình phức tạp.

Nhấp vào nút "Truy cập API" trên trang Tổng quan. Bạn có thể tham khảo nó như là Tài liệu API của ứng dụng của mình.

**1. Tạo mã khóa bí mật API**[**​**](https://wsyfin.com/notion-dify#1-generate-api-secret-key)

Vì lý do bảo mật, nên khuyến nghị tạo mã khóa bí mật API mới để truy cập vào ứng dụng trí tuệ của bạn.

**2. Lấy ID Cuộc trò chuyện**[**​**](https://wsyfin.com/notion-dify#2-retrieve-conversation-id)

Sau khi trò chuyện với ứng dụng trí tuệ của bạn, bạn có thể lấy ID phiên từ các trang "Nhật ký & Thông báo".

**3. Gọi API**[**​**](https://wsyfin.com/notion-dify#3-invoke-api)

Bạn có thể chạy mã yêu cầu ví dụ trên tài liệu API để gọi ứng dụng trí tuệ của bạn trong terminal.

Nhớ thay thế `YOUR SECRET KEY` và`conversation_id` trong mã của bạn.

> Bạn có thể nhập `conversation_id` trống vào lần đầu tiên, và sau đó thay thế nó sau khi bạn nhận được phản hồi chứa `conversation_id`.

```
curl --location --request POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "inputs": {},
    "query": "eh",
    "response_mode": "streaming",
    "conversation_id": "",
    "user": "abc-123"
}'
```

Gửi yêu cầu trong terminal và bạn sẽ nhận được một phản hồi thành công.

Nếu bạn muốn tiếp tục cuộc trò chuyện này, hãy điều chỉnh `conversation_id` của mã yêu cầu thành `conversation_id` bạn nhận được từ phản hồi.

Và bạn có thể kiểm tra tất cả lịch sử trò chuyện trên trang "Nhật ký & Thông báo".

### Đồng bộ với Notion định kỳ

Nếu các trang Notion của bạn đã được cập nhật, bạn có thể đồng bộ với ChatX định kỳ để giữ cho trợ lý trí tuệ của bạn luôn được cập nhật. Trợ lý trí tuệ của bạn sẽ học từ nội dung mới.

### Tóm lại[​](https://wsyfin.com/notion-dify#summary) <a href="#summary" id="summary"></a>

Trong hướng dẫn này, chúng ta đã học không chỉ cách nhập dữ liệu Notion của bạn vào ChatX, mà còn biết cách sử dụng API để tích hợp nó với dự án của bạn.

[ChatX](https://app.chatx.vn/signin) là một nền tảng LLMOps thân thiện với người dùng, nhằm mục tiêu tăng cường khả năng tạo ra các ứng dụng AI bền vững cho nhiều cá nhân hơn. Với sự điều hành hình ảnh được thiết kế cho các loại ứng dụng khác nhau, ChatX cung cấp các ứng dụng sẵn sàng sử dụng có thể hỗ trợ bạn trong việc sử dụng dữ liệu để tạo ra trợ lý trí tuệ độc đáo của bạn. Đừng ngần ngại liên hệ với chúng tôi nếu bạn có bất kỳ yêu cầu thông tin nào.


# ChatBot AI với dữ liệu doanh nghiệp

Dịch vụ khách hàng được hỗ trợ bởi AI có thể là một tính năng tiêu chuẩn cho mọi trang web doanh nghiệp và dịch vụ này ngày càng trở nên dễ thực hiện hơn với mức độ tùy chỉnh cao hơn. Nội dung sau đây sẽ hướng dẫn bạn cách tạo dịch vụ khách hàng hỗ trợ AI cho trang web của bạn chỉ trong vài phút bằng ChatX.

## Điều kiện tiên quyết

#### Đăng ký hoặc Triển khai ChatX.AI

ChatX là một sản phẩm mã nguồn mở mà bạn có thể tìm thấy trên GitHub và triển khai nó vào môi trường cục bộ hoặc mạng nội bộ của công ty. Đồng thời, nó cung cấp phiên bản SaaS trên đám mây, truy cập [ChatX.AI](https://app.chatx.vn/signin) để đăng ký và sử dụng nó.

#### Đăng ký cho mã API từ OpenAI và các nhà cung cấp mô hình khác.

ChatX cung cấp hạn mức sử dụng cuộc gọi tin nhắn miễn phí cho các mô hình trí tuệ nhân tạo OpenAI GPT series (200 lần) và Antropic Claude (1000 lần), đòi hỏi token để tiêu thụ. Trước khi bạn hết hạn, bạn cần đăng ký cho riêng mình một mã API thông qua kênh chính thức của nhà cung cấp mô hình. Bạn có thể nhập mã vào "Cài đặt" - "Nhà cung cấp mô hình" của ChatX.

## Tải lên tài liệu sản phẩm hoặc cơ sở kiến thức của bạn.

Nếu bạn muốn xây dựng một Chatbot trí tuệ nhân tạo dựa trên cơ sở kiến thức hiện có của công ty và tài liệu sản phẩm, sau đó bạn cần tải lên nhiều tài liệu liên quan đến sản phẩm nhất có thể vào kiến thức của ChatX. ChatX giúp bạn **hoàn thành phân đoạn và làm sạch dữ liệu**. Kiến thức của ChatX hỗ trợ hai chế độ chỉ mục: chất lượng cao và kinh tế. Chúng tôi khuyến nghị sử dụng chế độ chất lượng cao, mà tiêu thụ token nhưng cung cấp độ chính xác cao hơn.

1. Tạo một cơ sở kiến thức mới
2. tải lên dữ liệu kinh doanh của bạn (hỗ trợ tải lên hàng loạt nhiều văn bản)
3. chọn phương pháp làm sạch
4. Nhấp vào \[Lưu và Xử lý], và nó sẽ mất chỉ vài giây để hoàn thành quá trình.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FsWnysNaCGEosyxKHJsxv%2FCapture.JPG?alt=media&amp;token=61b29ef4-4139-4d93-8d50-fa142d653f50" alt=""><figcaption></figcaption></figure>

#### Tạo một ứng dụng trí tuệ nhân tạo và gán hướng dẫn:

Tạo một ứng dụng trò chuyện trên trang \[Studio]. Sau đó, bắt đầu thiết lập câu hỏi và các tương tác trải nghiệm người dùng phía trước.

1. Giao hẹn cho trí tuệ nhân tạo: Nhấp vào "Hướng dẫn" bên trái để chỉnh sửa Câu hỏi của bạn, để nó có thể đóng vai trò của dịch vụ khách hàng và giao tiếp với người dùng. Bạn có thể xác định âm điệu, phong cách và giới hạn nó để trả lời hoặc không trả lời một số câu hỏi cụ thể.
2. Đưa kiến thức kinh doanh của bạn cho trí tuệ nhân tạo: thêm kiến thức mục tiêu bạn vừa tải lên vào \[ngữ cảnh].
3. Thiết lập lời chào mừng: nhấp vào "Thêm tính năng" để bật tính năng. Mục đích là thêm một câu chào đầu cho ứng dụng trí tuệ nhân tạo, để khi người dùng mở cửa sổ dịch vụ khách hàng, nó sẽ chào đón người dùng trước và tăng tính gắn kết.
4. Thiết lập "Đề xuất câu hỏi tiếp theo": bật tính năng này lên "Thêm tính năng". Mục đích là cung cấp cho người dùng một hướng dẫn cho câu hỏi tiếp theo của họ sau khi họ đã hỏi một câu.
5. Chọn một mô hình phù hợp và điều chỉnh các tham số: các mô hình khác nhau có thể được chọn ở góc phải phía trên của trang. Hiệu suất và số lượng token tiêu thụ của các mô hình khác nhau cũng khác nhau. Trong ví dụ này, chúng tôi sử dụng mô hình GPT3.5.

Trong trường hợp này, chúng ta giao nhiệm vụ cho trí tuệ nhân tạo:

> Hướng dẫn: Bạn là Bob, trợ lý trí tuệ nhân tạo của ChatX, chuyên trả lời các câu hỏi về sản phẩm, nhóm hoặc LLMOps của ChatX cho người dùng. Vui lòng từ chối trả lời khi người dùng hỏi "câu hỏi không phù hợp", tức là nội dung vượt ra khỏi phạm vi của tài liệu này.

> Mở đầu Trò chuyện: Hey {{tên người dùng}}, Tôi là Bob ☀️, thành viên trí tuệ nhân tạo đầu tiên của ChatX. Bạn có thể thảo luận với tôi bất kỳ câu hỏi nào liên quan đến sản phẩm ChatX, nhóm và thậm chí cả LLMOps.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FgFXkIfoFJFbpFBcqtXpR%2FCapture.JPG?alt=media&amp;token=050a7ac8-388e-411e-bca4-4c5dcaa4d646" alt=""><figcaption></figcaption></figure>

### Gỡ lỗi hiệu suất của AI Chatbot và xuất bản.

Sau khi hoàn tất thiết lập, bạn có thể gửi tin nhắn đến nó ở phía bên phải của trang hiện tại để gỡ lỗi xem hiệu suất của nó có đáp ứng mong đợi không. Sau đó nhấn "Xuất bản". và sau đó bạn sẽ có một AI Chatbot.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fr4Pn7WBU81JQVJdQgo6C%2FCapture.JPG?alt=media&amp;token=fb82c8c2-0b7d-4bde-be43-9789652a542b" alt=""><figcaption></figcaption></figure>

### Nhúng ứng dụng AI Chatbot vào trang frontend của bạn.

Bước này là để nhúng AI chatbot đã chuẩn bị vào trang web chính thức của bạn. Nhấp vào \[Tổng quan] -> \[Nhúng], chọn phương pháp thẻ script, và sao chép mã script vào thẻ hoặc của trang web của bạn. Nếu bạn không phải là người kỹ thuật, bạn có thể yêu cầu nhà phát triển chịu trách nhiệm cho trang web chính thức để dán và cập nhật trang.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F7d5xKPezba8opcMs75bY%2FCapture.JPG?alt=media&amp;token=730483ab-3b95-47e3-aed9-1ec66fa6a7de" alt=""><figcaption></figcaption></figure>

1. Dán mã đã sao chép vào vị trí mục tiêu trên trang web của bạn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FBrZMhlvMemN0fvHVluqT%2F0.png?alt=media&amp;token=bbca3e11-42d0-46d4-864b-20716859fdd7" alt=""><figcaption></figcaption></figure>

1. Cập nhật trang web chính thức của bạn và bạn sẽ có một dịch vụ khách hàng thông minh AI với dữ liệu kinh doanh của bạn. Hãy thử nghiệm để xem hiệu quả.

Trên đây là một ví dụ về cách nhúng ChatX vào trang web chính thức thông qua trợ lý trí tuệ nhân tạo Bob của trang web chính thức ChatX. Tất nhiên, bạn cũng có thể sử dụng nhiều tính năng hơn được cung cấp bởi ChatX để tăng hiệu suất của chatbot, chẳng hạn như thêm một số cài đặt biến, để người dùng có thể điền vào thông tin đánh giá cần thiết trước khi tương tác, như tên, sản phẩm cụ thể sử dụng và như vậy.

Chào mừng bạn khám phá ChatX cùng nhau!


# Bot Yêu Cầu Giữa Hành Trình

qua [@op7418](https://twitter.com/op7418) trên Twitter

Gần đây, tôi đã thử nghiệm một công cụ lập trình ngôn ngữ tự nhiên có tên là ChatX, được phát triển bởi [@goocarlos](https://twitter.com/goocarlos). Nó cho phép người không có kiến thức về lập trình tạo ra một ứng dụng web chỉ bằng cách viết các câu hỏi. Thậm chí nó còn tạo ra API cho bạn, giúp việc triển khai ứng dụng của bạn trên nền tảng ưa thích trở nên dễ dàng.

Ứng dụng tôi tạo bằng ChatX chỉ mất cho tôi khoảng 20 phút, và kết quả là ấn tượng. Nếu không có ChatX, có thể tôi sẽ mất nhiều thời gian hơn để đạt được cùng một kết quả. Chức năng cụ thể của ứng dụng là tạo ra các yêu cầu Giữa Hành Trình dựa trên các chủ đề ngắn gọn, hỗ trợ người dùng nhanh chóng điền vào các lệnh Giữa Hành Trình phổ biến. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn qua quá trình tạo ra ứng dụng này để làm quen với nền tảng.

ChatX cung cấp hai loại ứng dụng: ứng dụng trò chuyện tương tự như ChatGPT, liên quan đến đối thoại nhiều lượt, và các ứng dụng tạo văn bản trực tiếp tạo ra nội dung văn bản chỉ với một cú nhấp chuột. Vì chúng tôi muốn tạo một bot Yêu Cầu Giữa Hành Trình, nên chúng tôi sẽ chọn ứng dụng tạo văn bản.

Bạn có thể truy cập ChatX tại đây: [https://chatx.ai/](https://app.chatx.vn/signin)

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F7ORypEsfcn6zarAAeWHI%2FCapture.JPG?alt=media&amp;token=34cfe70a-78e1-4eca-ba50-32d4caa3f2fb" alt=""><figcaption></figcaption></figure>

Sau khi bạn đã tạo ứng dụng của mình, trang tổng quan sẽ hiển thị một số dữ liệu giám sát và cài đặt ứng dụng. Nhấp vào "Orchestrate" ở phía bên trái, đây là trang làm việc chính.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FjRI9Z2JnE1BirTPFsPUJ%2FCapture.JPG?alt=media&amp;token=28aedad9-eaa3-400c-98bd-8b7c81803463" alt=""><figcaption></figcaption></figure>

Trên trang này, phía bên trái là các cài đặt về prompt và các chức năng khác, trong khi phía bên phải cung cấp các xem trước thời gian thực và việc sử dụng nội dung bạn đã tạo. Các prefix prompt là các kích hoạt mà người dùng nhập sau mỗi nội dung, và chúng chỉ dẫn cho mô hình GPT cách xử lý thông tin đầu vào của người dùng.

Hãy xem cấu trúc prefix prompt của tôi: phần đầu tiên chỉ dẫn GPT xuất một mô tả về một bức ảnh theo cấu trúc sau đây. Cấu trúc thứ hai phục vụ như mẫu để tạo ra prompt, chủ yếu bao gồm các yếu tố như 'Bức ảnh màu về chủ đề,' 'Mẫu hoa văn phức tạp,' 'Sự tương phản rõ ràng,' 'Mô tả môi trường,' 'Mô hình máy ảnh,' 'Mô tả tiêu cự ống kính liên quan đến nội dung đầu vào,' 'Mô tả sự sắp xếp tương đối đối với nội dung đầu vào,' và 'Tên của bốn nhiếp ảnh gia hàng đầu.' Điều này tạo nên nội dung chính của prompt. Lý thuyết là bạn có thể lưu nó vào khu vực xem trước ở bên phải, nhập chủ đề bạn muốn tạo, và prompt tương ứng sẽ được tạo ra.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FQPfkW4ZYQ47si9KHtDQq%2F0.png?alt=media&amp;token=04e2b33b-aa1f-43b5-9a75-a31b787276fc" alt=""><figcaption></figcaption></figure>

Bạn có thể đã chú ý đến "{{proportion}}" và "{{version}}" ở cuối. Đây là các biến được sử dụng để truyền thông tin do người dùng chọn. Ở phía bên phải, người dùng được yêu cầu chọn tỷ lệ hình ảnh và phiên bản mô hình, và hai biến này giúp mang thông tin đó đến cuối của prompt. Hãy xem cách thiết lập chúng.

Mục tiêu của chúng ta là điền thông tin người dùng đã chọn vào cuối của prompt, giúp người dùng dễ dàng sao chép mà không cần phải viết lại hoặc ghi nhớ các lệnh này. Để làm điều này, chúng tôi sử dụng chức năng biến.

Biến cho phép chúng tôi động đối nhập nội dung được điền vào biểu mẫu hoặc được chọn của người dùng vào trong prompt. Ví dụ, tôi đã tạo hai biến: một biểu diễn tỷ lệ hình ảnh, và biến kia đại diện cho phiên bản của mô hình. Nhấp vào nút "Thêm" để tạo các biến.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FHJirTcdGuWiy6wS4u0NT%2F0.png?alt=media&amp;token=1c1280c6-5c57-49a2-a823-df5888034a78" alt=""><figcaption></figcaption></figure>

Sau khi tạo, bạn sẽ cần điền vào khóa biến và tên trường. Khóa biến nên ở dạng tiếng Anh. Cài đặt tùy chọn có nghĩa là trường sẽ không bắt buộc khi người dùng điền vào. Tiếp theo, nhấp vào "Cài đặt" trong thanh hành động để thiết lập nội dung của biến.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FVxnHF0qs23L2z6qW3Bzy%2F0.png?alt=media&amp;token=51b5e26a-df46-40db-a01d-f461b04ce961" alt=""><figcaption></figcaption></figure>

Có hai loại biến: biến văn bản, nơi người dùng nhập nội dung bằng tay, và lựa chọn, nơi người dùng chọn từ các lựa chọn đã cho. Vì chúng tôi muốn tránh các lệnh thủ công, chúng tôi sẽ chọn tùy chọn thả xuống và thêm các lựa chọn cần thiết.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F2Zfs69JmYiaX7IT4P0ZD%2F0.png?alt=media&amp;token=ab05e913-8dd9-4c83-843f-1d1ecff10714" alt=""><figcaption></figcaption></figure>

Bây giờ, hãy sử dụng các biến. Chúng ta cần đặt khóa biến trong dấu ngoặc nhọn kép {} và thêm nó vào prompt tiền tố. Vì chúng tôi muốn GPT xuất nội dung được chọn bởi người dùng nguyên vẹn, chúng tôi sẽ bao gồm cụm từ "Producing the following English photo description based on user input" trong prompt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FoIdwBr5OPUj5z7qbqIE7%2F0.png?alt=media&amp;token=8c629191-ccca-409c-849f-f644fbd30df6" alt=""><figcaption></figcaption></figure>

Tuy nhiên, vẫn có khả năng là GPT có thể sửa đổi nội dung của biến của chúng tôi. Để giải quyết vấn đề này, chúng ta có thể giảm độ đa dạng trong việc chọn mô hình ở bên phải, giảm nhiệt độ và làm cho nó ít có khả năng thay đổi nội dung của biến của chúng tôi. Bạn có thể kiểm tra chú thích cho ý nghĩa của các thông số khác.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FmM44j8smJaaw0DQtu5p0%2F0.png?alt=media&amp;token=d39a37d2-1cb7-43fa-8c99-4c220e0baf75" alt=""><figcaption></figcaption></figure>

Với những bước này, ứng dụng của bạn đã hoàn thành. Sau khi kiểm tra và đảm bảo không có vấn đề gì với kết quả, nhấp vào nút "Xuất bản" ở góc trên bên phải để phát hành ứng dụng của bạn. Bạn và người dùng có thể truy cập vào ứng dụng của bạn thông qua URL công khai. Bạn cũng có thể tùy chỉnh tên ứng dụng, giới thiệu, biểu tượng và các chi tiết khác trong cài đặt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F1doOANr9hVfyUm1mmra9%2FCapture.JPG?alt=media&amp;token=3d6e42d4-48ad-4ef4-a185-59726f52c59a" alt=""><figcaption></figcaption></figure>

Đó là cách bạn tạo một ứng dụng AI đơn giản bằng cách sử dụng ChatX. Bạn cũng có thể triển khai ứng dụng của mình trên các nền tảng khác hoặc sửa đổi giao diện người dùng của nó bằng cách sử dụng API được tạo ra. Ngoài ra, ChatX hỗ trợ tải lên dữ liệu của riêng bạn, như xây dựng một bot dịch vụ khách hàng để hỗ trợ các yêu cầu liên quan đến sản phẩm. Đây là kết thúc của bài hướng dẫn, và một lời cảm ơn đặc biệt đến @goocarlos đã tạo ra một sản phẩm tuyệt vời như vậy.


# Phát hành ứng dụng ChatX

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/i.-thiet-lap-co-ban/phat-hanh-ung-dung-chatx/bat-dau-nhanh">Bắt đầu nhanh</a></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/phat-hanh-ung-dung-chatx/phat-trien-voi-api">Phát triển với API</a></td><td></td><td></td><td></td></tr></tbody></table>


# Bắt đầu nhanh

Một trong những lợi ích của việc tạo ứng dụng AI với ChatX là bạn có thể khởi chạy một ứng dụng Web thân thiện với người dùng chỉ trong vài phút, dựa trên sắp xếp Prompt của bạn.

* Nếu bạn đang sử dụng phiên bản mã nguồn mở tự lưu trữ, ứng dụng sẽ chạy trên máy chủ của bạn.
* Nếu bạn đang sử dụng phiên bản trên đám mây, ứng dụng sẽ được lưu trữ trên uchatx.app.

### Khởi chạy ứng dụng Web

Trong trang tổng quan ứng dụng, bạn có thể tìm thấy một thẻ cho trang AI (WebApp). Đơn giản bật truy cập WebApp để có được một liên kết có thể chia sẻ cho người dùng của bạn.

Chúng tôi cung cấp một giao diện WebApp mượt mà cho cả hai ứng dụng sau:

* Tạo văn bản (đi đến xem trước)
* Trò chuyện (đi đến xem trước)

### Cấu hình ứng dụng WebApp của bạn

Nhấp vào nút cài đặt trên thẻ WebApp để cấu hình một số tùy chọn cho trang AI. Những điều này sẽ được hiển thị cho người dùng cuối:

* Biểu tượng
* Tên
* Mô tả ứng dụng
* Ngôn ngữ giao diện
* Thông tin bản quyền
* Liên kết Chính sách Bảo mật

### Nhúng ứng dụng WebApp của bạn

ChatX hỗ trợ nhúng ứng dụng AI của bạn vào trang web kinh doanh của bạn. Với khả năng này, bạn có thể tạo ứng dụng dịch vụ khách hàng AI và câu hỏi & trả lời kiến thức doanh nghiệp với dữ liệu doanh nghiệp trên trang web chính thức của mình trong vài phút. Nhấp vào nút nhúng trên thẻ WebApp, sao chép mã nhúng và dán vào vị trí mong muốn trên trang web của bạn.

* Đối với thẻ iframe:

  Sao chép mã iframe và dán vào các thẻ (như `<div>`, `<section>`, vv.) trên trang web của bạn được sử dụng để hiển thị ứng dụng AI.
* Đối với thẻ script:

  Sao chép mã script và dán vào các thẻ `<head>` hoặc `<body>` trên trang web của bạn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FRhyuMrbXG1RTkeNSc1wH%2FCapture.JPG?alt=media&amp;token=5a67255b-8922-4fab-a35a-de87b638a213" alt=""><figcaption></figcaption></figure>

Ví dụ, nếu bạn dán mã script vào phần section của trang web chính thức của bạn, bạn sẽ có một chatbot AI trên trang web của mình.


# Phát triển với API

ChatX cung cấp một API "Backend-as-a-Service", mang lại nhiều lợi ích đến các nhà phát triển ứng dụng AI. Phương pháp này cho phép các nhà phát triển truy cập vào các khả năng mạnh mẽ của các mô hình ngôn ngữ lớn (LLMs) trực tiếp trong các ứng dụng frontend mà không cần phải đối mặt với sự phức tạp của kiến trúc backend và quy trình triển khai.

### Các lợi ích của việc sử dụng API ChatX:

* Cho phép ứng dụng frontend truy cập an toàn vào các khả năng của LLM mà không cần phát triển backend.
* Thiết kế ứng dụng một cách trực quan với cập nhật thời gian thực trên tất cả các client.
* API gốc của LLM được bao gồm một cách rõ ràng và rành mạch.
* Dễ dàng chuyển đổi giữa các nhà cung cấp LLM và quản lý tập trung các khóa API.
* Vận hành các ứng dụng một cách trực quan, bao gồm phân tích log, chú thích và quan sát hoạt động của người dùng.
* Liên tục cung cấp nhiều công cụ, plugin và kiến thức hơn.

### Cách sử dụng:

Chọn một ứng dụng và tìm API Access trong điều hướng bên trái của phần Ứng dụng. Trên trang này, bạn có thể xem tài liệu API được cung cấp bởi ChatX và quản lý thông tin xác thực để truy cập vào API.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FCDBamou42LDNSPwC1gGy%2F0.png?alt=media&amp;token=c192f9db-a06d-4354-a56e-54bdc65d9f6b" alt=""><figcaption><p>Tài liệu API</p></figcaption></figure>

Bạn có thể tạo nhiều thông tin xác thực truy cập cho một ứng dụng để cung cấp cho các người dùng hoặc nhà phát triển khác nhau. Điều này có nghĩa là người dùng API có thể sử dụng các khả năng AI do nhà phát triển ứng dụng cung cấp, nhưng các thiết lập Prompt, kiến thức và công cụ cơ bản được đóng gói.

{% hint style="info" %}
Trong các phương pháp tốt nhất, các khóa API nên được gọi thông qua backend, thay vì được hiển thị trực tiếp dưới dạng văn bản thô trong mã frontend hoặc các yêu cầu. Điều này giúp ngăn chặn ứng dụng của bạn bị lạm dụng hoặc tấn công.
{% endhint %}

Ví dụ, nếu bạn là một nhà phát triển trong một công ty tư vấn, bạn có thể cung cấp các khả năng AI dựa trên cơ sở dữ liệu riêng của công ty cho người dùng hoặc nhà phát triển cuối mà không cần phải tiết lộ dữ liệu và thiết kế logic AI của mình. Điều này đảm bảo một dịch vụ cung cấp an toàn và bền vững đáp ứng các mục tiêu kinh doanh.

### Ứng dụng máy tạo văn bản:

Các ứng dụng này được sử dụng để tạo ra văn bản chất lượng cao, như bài viết, tóm tắt, bản dịch, vv., bằng cách gọi API completion-messages và gửi đầu vào của người dùng để nhận kết quả văn bản được tạo ra. Các tham số mô hình và mẫu prompt được sử dụng để tạo văn bản phụ thuộc vào cài đặt của nhà phát triển trong trang ChatX Prompt Arrangement.

Bạn có thể tìm thấy tài liệu API và các yêu cầu mẫu cho ứng dụng này trong **Ứng dụng -> Truy cập API.**

Ví dụ, đây là một cuộc gọi mẫu cho API tạo văn bản:

{% tabs %}
{% tab title="cURL" %}

```
curl --location --request POST 'https://api.dify.ai/v1/completion-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "inputs": {},
    "response_mode": "streaming",
    "user": "abc-123"
}'
```

{% endtab %}

{% tab title="Python" %}

```
import requests
import json

url = "https://api.dify.ai/v1/completion-messages"

headers = {
    'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
    'Content-Type': 'application/json',
}

data = {
    "inputs": {"text": 'Hello, how are you?'},
    "response_mode": "streaming",
    "user": "abc-123"
}

response = requests.post(url, headers=headers, data=json.dumps(data))

print(response.text)
```

{% endtab %}
{% endtabs %}

### Ứng dụng trò chuyện:

Phù hợp cho hầu hết các kịch bản, các ứng dụng trò chuyện tham gia vào cuộc trò chuyện liên tục với người dùng theo định dạng câu hỏi và trả lời. Để bắt đầu một cuộc trò chuyện, gọi API chat-messages và duy trì phiên bằng cách liên tục truyền vào conversation\_id đã trả về.

Bạn có thể tìm thấy tài liệu API và các yêu cầu mẫu cho ứng dụng này trong **Ứng dụng -> Truy cập API.**

Ví dụ, đây là một cuộc gọi mẫu cho API trò chuyện:

{% tabs %}
{% tab title="cURL" %}

```
curl --location --request POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "inputs": {},
    "query": "eh",
    "response_mode": "streaming",
    "conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276"
    "user": "abc-123"
}'
```

{% endtab %}

{% tab title="Python" %}

```
import requests
import json

url = 'https://api.dify.ai/v1/chat-messages'
headers = {
    'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
    'Content-Type': 'application/json',
}
data = {
    "inputs": {},
    "query": "eh",
    "response_mode": "streaming",
    "conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276",
    "user": "abc-123"
}

response = requests.post(url, headers=headers, data=json.dumps(data))

print(response.json())
```

{% endtab %}
{% endtabs %}


# Câu hỏi thường gặp

## 1. Bearer Token là gì? <a href="#id-1.-what-is-a-bearer-token" id="id-1.-what-is-a-bearer-token"></a>

Bearer authentication là một phương thức xác thực HTTP (còn được gọi là xác thực token) mà liên quan đến các token bảo mật được gọi là bearer tokens. Tên "Bearer authentication" có thể hiểu là "cho phép truy cập cho người mang mã thông báo này." Token bearer là một chuỗi mật mã, thường được tạo ra bởi máy chủ trong phản hồi cho một yêu cầu đăng nhập. Khách hàng phải gửi mã thông báo này trong tiêu đề Authorization khi gửi các yêu cầu đến các tài nguyên được bảo vệ:

```
Authorization: Bearer <token>
```

Phương pháp xác thực Bearer ban đầu được tạo ra như một phần của OAuth 2.0 trong RFC 6750, nhưng đôi khi cũng được sử dụng riêng lẻ. Tương tự như xác thực Basic, xác thực Bearer chỉ nên được sử dụng trên HTTPS (SSL).


# Sử dụng ứng dụng ChatX

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/i.-thiet-lap-co-ban/su-dung-ung-dung-chatx/may-tao-van-ban">Máy tạo văn bản</a></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/su-dung-ung-dung-chatx/chatbot">Chatbot</a></td><td></td><td></td><td></td></tr><tr><td><a href="/i.-thiet-lap-co-ban/su-dung-ung-dung-chatx/cai-dat-ung-dung-tro-chuyen-khac">Cài đặt ứng dụng trò chuyện khác</a></td><td></td><td></td><td></td></tr></tbody></table>


# Máy tạo văn bản

Ứng dụng máy tạo văn bản là một ứng dụng tự động tạo ra văn bản chất lượng cao theo các yêu cầu được cung cấp bởi người dùng. Nó có thể tạo ra các loại văn bản khác nhau, như tóm tắt bài viết, bản dịch, v.v.

Ứng dụng máy tạo văn bản hỗ trợ các tính năng sau:

1. Chạy một lần.
2. Chạy hàng loạt.
3. Lưu kết quả chạy.
4. Tạo thêm kết quả tương tự.

Hãy giới thiệu chúng một cách riêng biệt.

### Chạy một lần

Nhập nội dung truy vấn, nhấn nút chạy, và kết quả sẽ được tạo ra bên phải, như trong hình dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F6TAPrnZ3zDBXm9D4xusl%2F0.png?alt=media&amp;token=a671dc8e-6e3f-47f1-84ea-05693bcb267b" alt=""><figcaption></figcaption></figure>

Ở phần kết quả được tạo ra, nhấp vào nút "Copy" để sao chép nội dung vào clipboard. Nhấp vào nút "Lưu" để lưu nội dung. Bạn có thể xem nội dung đã lưu trong tab "Đã Lưu". Bạn cũng có thể "thích" và "không thích" nội dung được tạo ra.

### Chạy hàng loạt

Đôi khi, chúng ta cần chạy một ứng dụng nhiều lần. Ví dụ: Có một ứng dụng web có thể tạo ra các bài viết dựa trên các chủ đề. Bây giờ chúng ta muốn tạo ra 100 bài viết về các chủ đề khác nhau. Sau đó, công việc này phải được thực hiện 100 lần, điều này rất phiền toái. Ngoài ra, bạn phải chờ đợi cho đến khi một công việc hoàn thành trước khi bắt đầu công việc tiếp theo.

Trong tình huống trên, chúng ta sử dụng chức năng thực hiện hàng loạt, điều này tiện lợi để thực hiện (nhập chủ đề vào một tệp csv, chỉ cần thực hiện một lần), và cũng tiết kiệm thời gian tạo ra (nhiều công việc chạy cùng một lúc). Cách sử dụng như sau:

#### Bước 1: Nhập trang chạy hàng loạt

Nhấp vào tab "Chạy Hàng Loạt" để vào trang chạy hàng loạt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FT6EGkIMgLHb31EfIsZiq%2F0.png?alt=media&amp;token=a3e23e2b-ca6b-420e-9e70-b57fdce822c0" alt=""><figcaption></figcaption></figure>

#### Bước 2: Tải xuống mẫu và điền nội dung

Nhấp vào nút Tải xuống Mẫu để tải xuống mẫu. Chỉnh sửa mẫu, điền nội dung, và lưu thành một tệp`.csv.`

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FdpvxSps6itUQZlYkso2M%2F0.png?alt=media&amp;token=9c8dbdd3-5851-4042-8575-54177b561717" alt=""><figcaption></figcaption></figure>

#### Bước 3: Tải lên tệp và chạy

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FPpR3daOLJ8BaePlKvZL4%2F0.png?alt=media&amp;token=1ce7b916-3b8b-4b0f-a415-998396d36159" alt=""><figcaption></figcaption></figure>

Nếu bạn cần xuất nội dung đã tạo ra, bạn có thể nhấp vào nút "tải xuống" ở góc phải trên cùng để xuất ra dưới dạng tệp `csv`.

**Ghi chú**: Mã hóa của tệp `csv` đã tải lên phải là `Unicode`. Nếu không, kết quả sẽ thất bại. Giải pháp: Khi xuất ra tệp `csv` với Excel, WPS, vv., chọn `Unicode` cho mã hóa.

### Lưu kết quả chạy

Nhấn vào nút "Lưu" ở dưới phần kết quả được tạo ra để lưu kết quả chạy. Trong tab "Đã Lưu", bạn có thể xem tất cả các nội dung đã lưu.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F09gOedYD358xJPMh65xG%2F0.png?alt=media&amp;token=75fedc40-68ba-4898-9874-288361e545a2" alt=""><figcaption></figcaption></figure>

### Tạo thêm kết quả tương tự

Nếu chức năng "tương tự hơn" được bật khi áp dụng sắp xếp. Nhấp vào nút "tương tự hơn" trong ứng dụng web sẽ tạo ra nội dung tương tự với kết quả hiện tại. Như hình dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FeVSG5vC5PeWLYyFWOC30%2F0.png?alt=media&amp;token=96b07db4-1c58-4eea-8ffb-3212e330749a" alt=""><figcaption></figcaption></figure>


# Chatbot

Ứng dụng trò chuyện sử dụng một mô hình câu hỏi và trả lời để duy trì một cuộc trò chuyện với người dùng. Các ứng dụng trò chuyện hỗ trợ các khả năng sau (xin xác nhận rằng các chức năng sau đã được kích hoạt khi ứng dụng được lập trình):

* Các biến để điền trước khi bắt đầu đối thoại. Tạo, ghim và xóa cuộc trò chuyện.
* Nhận xét về cuộc trò chuyện.
* Theo dõi.
* Chuyển giọng nói thành văn bản.
* Trích dẫn và ghi chú nguồn

## Các biến được điền trước khi bắt đầu đối thoại

Nếu bạn có yêu cầu điền vào các biến khi áp dụng bố cục, bạn cần điền thông tin theo các gợi ý trước khi vào cửa sổ trò chuyện:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FdybAgr36PhQRxblhvsne%2F0.png?alt=media&amp;token=5efe290a-e5eb-426d-bc4e-82cfffc98483" alt=""><figcaption></figcaption></figure>

Điền nội dung cần thiết và nhấp vào nút "Start Chat" để bắt đầu trò chuyện.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F8bDV7h4hnKAbJ4lMUy77%2F0.png?alt=media&amp;token=491462f7-e983-44ed-8b67-b13c5860f842" alt=""><figcaption></figcaption></figure>

Di chuyển đến câu trả lời của AI, bạn có thể sao chép nội dung của cuộc trò chuyện và đánh giá câu trả lời bằng cách "thích" và "không thích".

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FVOjlhie0DsgxRGaGlHje%2F0.png?alt=media&amp;token=2ea0e8c8-1473-471d-ad58-52d53269d536" alt=""><figcaption></figcaption></figure>

## Tạo, ghim và xóa cuộc trò chuyện

Nhấp vào nút "Cuộc trò chuyện Mới" để bắt đầu một cuộc trò chuyện mới. Di chuyển đến một phiên và phiên có thể "ghim" và "xóa".

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FeI11Nr1xET8IAxDl6EJh%2F0.png?alt=media&amp;token=926127db-4fa1-4884-9c06-d2cbb273d903" alt=""><figcaption></figcaption></figure>

## Nhận xét về cuộc trò chuyện

Nếu chức năng "Nhận xét cuộc trò chuyện" được kích hoạt khi ứng dụng được lập trình, ứng dụng AI sẽ tự động bắt đầu câu đầu tiên của cuộc trò chuyện khi tạo một cuộc trò chuyện mới:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FKVSxxZeQFXqCrhBbvCVE%2F0.png?alt=media&amp;token=c520368c-150d-4c8e-96cc-9e001ef30bcf" alt=""><figcaption></figcaption></figure>

## Theo dõi

Nếu chức năng "Theo dõi" được kích hoạt trong quá trình sắp xếp ứng dụng, hệ thống sẽ tự động tạo ra 3 gợi ý câu hỏi liên quan sau cuộc trò chuyện:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Foxc0JxlKUDdYVjc2qMCx%2FCapture.JPG?alt=media&amp;token=9f9a484f-2121-4fdc-abc2-facdd04cbd8f" alt=""><figcaption></figcaption></figure>

## Chuyển giọng nói thành văn bản

Nếu chức năng "Chuyển giọng nói thành văn bản" được kích hoạt trong quá trình lập trình ứng dụng, bạn sẽ thấy biểu tượng đầu vào giọng nói trong hộp nhập trên phía ứng dụng web, nhấp vào biểu tượng để chuyển đổi giọng nói thành văn bản:

*Vui lòng đảm bảo rằng môi trường thiết bị bạn đang sử dụng được cấp quyền sử dụng microphone.*

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FHX9M1alIATkqTBR1D49p%2FCapture.JPG?alt=media&amp;token=746ca8a8-7755-43ce-89bb-bb1f73bd736a" alt=""><figcaption></figcaption></figure>

## Trích dẫn và ghi chú nguồn

Nếu tính năng "Trích dẫn và Ghi chú nguồn" được kích hoạt trong quá trình sắp xếp ứng dụng, các câu trả lời của cuộc trò chuyện sẽ tự động hiển thị nguồn tài liệu kiến thức được trích dẫn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Ftsb1iADXFzAr8vcZuJaz%2FCapture.JPG?alt=media&amp;token=ba637dfc-b87e-4e1a-a974-d4da26be5e70" alt=""><figcaption></figcaption></figure>


# Cài đặt ứng dụng trò chuyện khác

Chat trong explore là một ứng dụng trò chuyện được sử dụng để khám phá các giới hạn của khả năng của ChatX.

Khi chúng ta nói chuyện với các mô hình ngôn ngữ tự nhiên lớn, chúng ta thường gặp phải các tình huống mà câu trả lời là lỗi thời hoặc không hợp lệ. Điều này là do dữ liệu huấn luyện cũ của mô hình lớn và thiếu khả năng kết nối mạng. Dựa trên mô hình lớn, Chat sử dụng các tác nhân và một số công cụ để trao cho mô hình lớn khả năng truy vấn trực tuyến theo thời gian thực.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F4BCgSVspln028iWjiZ5a%2F0.png?alt=media&amp;token=0e833ddd-4128-44fb-83fd-5c0eb2593998" alt=""><figcaption></figcaption></figure>

Chat hỗ trợ việc sử dụng các plugin và kiến thức.

## Sử dụng plugin

Mô hình ngôn ngữ lớn (LLM) không thể kết nối mạng và gọi các công cụ bên ngoài. Nhưng điều này không thể đáp ứng các kịch bản sử dụng thực tế, chẳng hạn như:

* Khi chúng ta muốn biết thời tiết hôm nay, chúng ta cần kết nối Internet.
* Khi chúng ta muốn tóm tắt nội dung của một trang web, chúng ta cần sử dụng một công cụ bên ngoài để đọc nội dung của trang web.

Vấn đề trên có thể được giải quyết bằng cách sử dụng chế độ tác nhân: khi LLM không thể trả lời câu hỏi của người dùng, nó sẽ cố gắng sử dụng các plugin hiện có để trả lời câu hỏi.

{% hint style="info" %}
Trong ChatX, chúng tôi sử dụng các chiến lược proxy khác nhau cho các mô hình khác nhau. Chiến lược proxy được sử dụng bởi mô hình của OpenAI là **GPT function call**. Một mô hình khác được sử dụng là **ReACT**. Kinh nghiệm thử nghiệm hiện tại cho thấy hiệu quả của **GPT function call** là tốt hơn. Để biết thêm, bạn có thể đọc các liên kết dưới đây:

* [Function calling and other API updates](https://openai.com/blog/function-calling-and-other-api-updates)
* [ReAct: Synergizing Reasoning and Acting in Language Models](https://arxiv.org/abs/2210.03629)
  {% endhint %}

Hiện tại chúng tôi hỗ trợ các plugin sau:

* Google Search. Plugin này tìm kiếm câu trả lời trên Google.
* Web Reader. Plugin này đọc nội dung của các trang web liên kết.
* Wikipedia. Plugin này tìm kiếm câu trả lời trên Wikipedia.

Chúng ta có thể chọn các plugin cần thiết cho cuộc trò chuyện này trước khi bắt đầu cuộc trò chuyện.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F3zYQ3Tl0zMMrnIDTHS4T%2F0.png?alt=media&amp;token=f35d4045-2d80-4327-8a0a-b88ebb1936ed" alt=""><figcaption></figcaption></figure>

Nếu bạn sử dụng plugin tìm kiếm Google, bạn cần cấu hình khóa SerpAPI.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fh6BrIRB9mVr9qrDyvx43%2F0.png?alt=media&amp;token=bbde2e2c-00f0-4266-bdb3-02b9a3e78adc" alt=""><figcaption></figcaption></figure>

Mục cấu hình:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FiO4h58s7wzdDcxh1rKVx%2F0.png?alt=media&amp;token=f811badb-116f-4575-8934-9a931e7a2538" alt=""><figcaption></figcaption></figure>

## Sử dụng kiến thức

Chat hỗ trợ kiến thức. Sau khi chọn kiến thức, các câu hỏi được người dùng hỏi sẽ liên quan đến nội dung của tập dữ liệu, và mô hình sẽ tìm câu trả lời từ tập dữ liệu.

Chúng ta có thể chọn kiến thức cần thiết cho cuộc trò chuyện này trước khi bắt đầu cuộc trò chuyện.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FGUicE5CAa22tT0w4h56q%2F0.png?alt=media&amp;token=62314dbd-83db-4481-9d29-68bf68e745f8" alt=""><figcaption></figcaption></figure>

## Quá trình suy nghĩ

Quá trình suy nghĩ đề cập đến quá trình mô hình sử dụng các plugin và kiến thức. Chúng ta có thể thấy quá trình suy nghĩ trong mỗi câu trả lời.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F2cMgIDT4nn2WPCUuTZcM%2F0.png?alt=media&amp;token=1615beac-508a-421a-a260-2b176234e3d7" alt=""><figcaption></figcaption></figure>


# Chế độ chuyên gia nhắc nhở

Hiện tại, việc sắp xếp để tạo ứng dụng trong ChatX được đặt ở **Chế độ Cơ bản** theo mặc định. Điều này lý tưởng cho những người không có kỹ thuật muốn nhanh chóng tạo một ứng dụng. Ví dụ, nếu bạn muốn tạo một ChatBot cơ sở tri thức công ty hoặc một trình tạo tóm tắt bài viết, bạn có thể sử dụng **Chế độ Cơ bản** để thiết kế các từ `Pre-prompt`, add `Query`, tích hợp `Context` và các bước đơn giản khác để khởi chạy một ứng dụng hoàn chỉnh. Để biết thêm chi tiết, hãy truy cập 👉 [Máy tạo văn bản](/i.-thiet-lap-co-ban/tao-ung-dung-chatx/tao-ai-bot/may-tao-van-ban) and [Chatbot](/i.-thiet-lap-co-ban/tao-ung-dung-chatx/tao-ai-bot/chatbot).

💡Tuy nhiên, bạn chắc chắn muốn thiết kế các lời nhắc theo cách tùy chỉnh hơn nếu bạn là một nhà phát triển đã nghiên cứu sâu về lời nhắc, thì bạn nên chọn **Chế độ Chuyên gia**. Trong chế độ này, bạn được cấp phép để tùy chỉnh các lời nhắc toàn diện thay vì sử dụng các lời nhắc được đóng gói sẵn từ ChatX. Bạn có thể chỉnh sửa các lời nhắc tích hợp sẵn, sắp xếp lại vị trí của `Context` và `History` , thiết lập các tham số cần thiết và nhiều hơn nữa. Nếu bạn quen thuộc với Playground của OpenAI, bạn có thể làm quen với chế độ này nhanh hơn.

***

Trước khi bạn thử chế độ mới, bạn nên biết một số yếu tố cần thiết trong đó:

* **Hoàn thành (Complete)**

  Khi chọn một mô hình, nếu bạn thấy "COMPLETE" ở bên phải tên mô hình, điều đó cho thấy đây là mô hình hoàn thành văn bản, ví dụ: ![](https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FFD8goajvqeqza4zn1pNY%2F0.png?alt=media\&token=fa7a0a7a-2a03-46bd-9bd9-9fea47bff6dc)

  Loại mô hình này chấp nhận một chuỗi văn bản tự do và tạo ra một đoạn văn bản hoàn chỉnh, cố gắng khớp với bất kỳ ngữ cảnh hoặc mẫu nào bạn cung cấp. Ví dụ, nếu bạn viết lời nhắc `As René Descartes said, "I think, therefore"`, có khả năng cao mô hình sẽ trả về `"I am."` như là phần hoàn thành.
* **Trò chuyện (Chat)**

  Khi chọn một mô hình, nếu bạn thấy "CHAT" ở bên phải tên mô hình, điều đó cho thấy đây là mô hình hoàn thành cuộc trò chuyện, ví dụ: <img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FaZb9BLKbuE4g8I6XvGu4%2F0.png?alt=media&amp;token=e2012f07-5031-4009-98f5-6d709234d5cb" alt="" data-size="line">

  Loại mô hình này lấy danh sách các tin nhắn làm đầu vào và trả về một tin nhắn được tạo bởi mô hình như là đầu ra. Nó bao gồm ba loại tin nhắn: `SYSTEM`, `USER`, và `ASSISTANT`.

  * `SYSTEM`

    Các tin nhắn hệ thống giúp hướng dẫn hành vi của trợ lý AI. Ví dụ, bạn có thể thay đổi tính cách của trợ lý AI hoặc cung cấp các hướng dẫn cụ thể về cách nó nên thực hiện trong suốt cuộc trò chuyện. Các tin nhắn hệ thống là tùy chọn. Nếu không có các tin nhắn hệ thống, trợ lý AI có thể hành xử như thể nó đang sử dụng các tin nhắn chung như `"you are a helpful assistant."`
  * `USER`

    Các tin nhắn người dùng cung cấp các yêu cầu hoặc bình luận để trợ lý AI phản hồi.
  * `ASSISTANT`

    Các tin nhắn trợ lý lưu trữ các phản hồi trước đó của trợ lý, nhưng chúng cũng có thể được viết bởi bạn để cung cấp các ví dụ về hành vi mong muốn.
* **Stop\_Sequences**

  Stop\_Sequences đề cập đến các từ, cụm từ hoặc ký tự cụ thể được sử dụng để gửi tín hiệu cho mô hình ngôn ngữ lớn (LLM) ngừng tạo văn bản.
* **Blocks**

  <img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FK40DqRs74841vx6cOOYS%2F0.png?alt=media&amp;token=8f1e9783-73d8-4065-b5c5-23dbdfc50eda" alt="" data-size="line">

  Khi người dùng nhập một truy vấn, ứng dụng sẽ xử lý truy vấn đó như là tiêu chí tìm kiếm cho kiến thức. Các kết quả được tổ chức từ tìm kiếm sau đó sẽ thay thế biến `Context`, cho phép LLM tham khảo nội dung để đưa ra phản hồi.

  <img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FqiXPNNO2OmRcBOJ4ofrH%2F0.png?alt=media&amp;token=7118f0f8-8987-46da-8689-aad461996164" alt="" data-size="line">

  Nội dung truy vấn chỉ có sẵn trong các mô hình hoàn thành văn bản của các ứng dụng trò chuyện. Nội dung được nhập bởi người dùng trong suốt cuộc trò chuyện sẽ thay thế biến này, khởi tạo một lượt trò chuyện mới.

  <img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FcDucZHbwmcI8jxA9FJkA%2F0.png?alt=media&amp;token=65fcb3de-45e9-4039-a205-3e2d8d5d4b0f" alt="" data-size="line">

  Lịch sử cuộc trò chuyện chỉ có sẵn trong mô hình hoàn thành văn bản của các ứng dụng trò chuyện. Khi tham gia vào nhiều cuộc trò chuyện trong các ứng dụng đối thoại, ChatX sẽ tập hợp và nối các bản ghi cuộc trò chuyện lịch sử theo các quy tắc tích hợp sẵn và thay thế biến 'Lịch sử Cuộc trò chuyện'. Các tiền tố `Human` và `Assistant` có thể được sửa đổi bằng cách nhấp vào `...` sau "Lịch sử Cuộc trò chuyện".
* **Mẫu lời nhắc**

  Trong chế độ này, trước khi sắp xếp chính thức, một mẫu ban đầu được cung cấp trong hộp lời nhắc. Chúng ta có thể trực tiếp sửa đổi mẫu này để có nhiều yêu cầu tùy chỉnh hơn cho LLM. Các loại ứng dụng khác nhau sẽ có các biến thể trong các chế độ khác nhau.

  Để biết thêm chi tiết, hãy truy cập 👉 [Mẫu nhắc nhở](/ii-tinh-nang-co-ban/che-do-chuyen-gia-nhac-nho/mau-nhac-nho)

***

## So sánh giữa hai chế độ

| Comparison Dimension           | Chế độ Cơ bản  | Chế độ Chuyên gia |
| ------------------------------ | -------------- | ----------------- |
| **Hiển thị Lời nhắc Tích hợp** | Không hiển thị | Hiển thị          |
| Thiết kế Tự động               | Có             | Không             |
| **Chèn Biến**                  | Có             | Có                |
| **Xác thực Khối**              | Không          | Có                |
| SYSTEM / USER / ASSISTANT      | Không hiển thị | Hiển thị          |
| **Cài đặt tham số Ngữ cảnh**   | Có             | Có                |
| **NHẬT KÝ LỜI NHẮC**           | Có             | Có                |
| Stop\_Sequences                | Không          | Có                |

## **Hướng dẫn Hoạt động**

### 1. **Cách vào Chế độ Chuyên gia** <a href="#id-1.-how-to-enter-the-expert-mode" id="id-1.-how-to-enter-the-expert-mode"></a>

Sau khi tạo ứng dụng, bạn có thể chuyển sang **Chế độ Chuyên gia** trên trang thiết kế prompt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F05jUvI0cfXR0ElOOz9Hd%2FCapture.JPG?alt=media&amp;token=864e80bd-7f45-401d-a490-fccb3fa60ce5" alt=""><figcaption><p><strong>Truy cập Chế độ Chuyên gia</strong></p></figcaption></figure>

{% hint style="info" %}
Sau khi sửa đổi các prompt trong **Chế độ Chuyên gia** và xuất bản ứng dụng, bạn sẽ không thể quay lại **Chế độ Cơ bản**.
{% endhint %}

### 2. **Chỉnh sửa các tham số Ngữ cảnh** <a href="#id-2.-modify-context-parameters" id="id-2.-modify-context-parameters"></a>

Trong cả hai chế độ, bạn có thể chỉnh sửa các tham số để chèn bối cảnh, bao gồm **TopK** và Ngưỡng Điểm.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FUjhrdHZfs8lPGRWnzwok%2FCapture.JPG?alt=media&amp;token=73c7fb05-c319-494f-9550-bbe1b590ced2" alt=""><figcaption><p><strong>Tham số Ngữ cảnh</strong></p></figcaption></figure>

{% hint style="info" %}
Lưu ý rằng chỉ sau khi tải lên bối cảnh, các prompt tích hợp chứa <img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FDuM0xakeD70MGW1qzKwQ%2F0.png?alt=media&amp;token=8aeace1e-b6dd-4a0a-92b7-84173815b599" alt="" data-size="line"> mới được hiển thị trên trang thiết kế prompt.
{% endhint %}

**TopK:** Giá trị là một số nguyên từ 1 đến 10.

Giá trị này dùng để lọc các đoạn văn bản có độ tương đồng cao nhất với truy vấn của người dùng. Hệ thống cũng sẽ tự động điều chỉnh số lượng đoạn văn bản dựa trên kích thước cửa sổ bối cảnh của mô hình được chọn. Giá trị mặc định của hệ thống là 2. Giá trị này nên được đặt từ 2 đến 5, vì chúng ta mong đợi nhận được câu trả lời phù hợp hơn với bối cảnh đã nhúng.

**Ngưỡng Điểm**: Giá trị là một số thập phân từ 0 đến 1, với hai chữ số thập phân.

Giá trị này dùng để đặt ngưỡng tương đồng cho việc chọn đoạn văn bản, tức là chỉ nhớ lại các đoạn văn bản vượt qua điểm số được đặt. Theo mặc định, hệ thống tắt cài đặt này, nghĩa là không có lọc dựa trên giá trị tương đồng của các đoạn văn bản được nhớ lại. Khi được kích hoạt, giá trị mặc định là 0.7. Chúng tôi khuyến nghị giữ cài đặt này ở trạng thái tắt theo mặc định. Nếu bạn có yêu cầu nghiêm ngặt hơn về phản hồi, bạn có thể đặt giá trị cao hơn, mặc dù không nên đặt quá cao.

### 3. **Stop\_Sequences** <a href="#id-3.-stop_sequences" id="id-3.-stop_sequences"></a>

Chúng tôi không mong muốn LLM tạo ra quá nhiều nội dung. Do đó, cần thiết phải đặt các từ, cụm từ hoặc ký tự cụ thể để báo hiệu cho LLM ngừng tạo văn bản. Cài đặt mặc định là `Human:` .Ví dụ, nếu bạn đã viết đoạn Few-Shot dưới đây:

```
Human1: What color is the sky?

Assistant1: The sky is blue.

Human1: What color is the fire?

Assistant1: The fire is red.

Human1: What color is the soil?

Assistant1: 
```

Sau đó, trong các tham số mô hình, bạn cần tìm `Stop_Sequences` và nhập `Human1:`. Đừng quên nhấn phím `Tab`. Bằng cách này, LLM sẽ chỉ trả lời bằng một câu khi phản hồi thay vì tạo ra bất kỳ đoạn hội thoại thừa nào khác.

```
The soil is yellow.
```

Vì LLM ngừng tạo nội dung trước `Human1:` Vì LLM ngừng tạo nội dung trước

### 4. **Sử dụng "/" để chèn Biến và Khối** <a href="#id-4.use-to-insert-variables-and-blocks" id="id-4.use-to-insert-variables-and-blocks"></a>

Bạn có thể nhập "/" trong trình soạn thảo văn bản để nhanh chóng hiển thị các Khối để chèn vào prompt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fiz6c6zFNE6P1OWNwmOxZ%2F0.png?alt=media&amp;token=8f76a685-4c4f-458b-850c-c650ee66b14a" alt=""><figcaption><p><strong>Phím tắt "/"</strong></p></figcaption></figure>

{% hint style="info" %}
Ngoài `Variables`, các Khối khác không thể được chèn lặp lại. Trong các ứng dụng và mô hình khác nhau, các Khối có thể được chèn sẽ thay đổi dựa trên cấu trúc mẫu prompt khác nhau.
{% endhint %}

### 5. **Nhập Prompt Trước** <a href="#id-5.-input-pre-prompt" id="id-5.-input-pre-prompt"></a>

Mẫu Prompt ban đầu của hệ thống cung cấp các tham số và yêu cầu cần thiết cho phản hồi của LLM. Để biết thêm chi tiết, hãy truy cập 👉 [Prompt Template](/ii-tinh-nang-co-ban/che-do-chuyen-gia-nhac-nho/mau-nhac-nho).

Lõi của phát triển giai đoạn đầu bởi các nhà phát triển là Prompt Trước cho cuộc trò chuyện. Nó yêu cầu thiết kế các prompt tích hợp, với vị trí chèn được đề xuất dưới đây:

```
When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.

You are a customer service assistant for Apple Inc., and you can provide iPhone consultation services to users.
When answering, you need to list the detailed specifications of the iPhone, and you must output this information in a vertical {{Format}} table. If the list is too long, it should be transposed.
You are allowed to take a long time to think to generate a more reasonable output.
Note: You currently have knowledge of only a subset of iPhone models, not all of them.
```

Bạn cũng có thể tùy chỉnh và chỉnh sửa mẫu prompt ban đầu. Ví dụ, nếu bạn muốn phản hồi của LLM bằng tiếng Anh, bạn có thể chỉnh sửa các prompt tích hợp như sau:

```
When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language English.
```

### 6. **Kiểm tra Nhật ký Prompt** <a href="#id-6.-check-the-prompt-log" id="id-6.-check-the-prompt-log"></a>

Trong quá trình gỡ lỗi, bạn không chỉ có thể kiểm tra đầu vào của người dùng và phản hồi của LLM mà còn có thể xem các prompt hoàn chỉnh bằng cách nhấp vào biểu tượng ở góc trên bên trái của nút gửi tin nhắn. Điều này thuận tiện cho các nhà phát triển xác nhận xem nội dung Biến đầu vào, Ngữ cảnh, Lịch sử Cuộc trò chuyện và nội dung Truy vấn có đáp ứng kỳ vọng hay không.

**6.1 Truy cập Nhật ký Prompt**

Trong giao diện xem trước gỡ lỗi, sau khi tham gia vào cuộc trò chuyện với AI, chỉ cần di chuyển con trỏ chuột qua bất kỳ phiên người dùng nào, bạn sẽ thấy biểu tượng "Log" ở góc trên bên trái. Nhấp vào đó để xem Nhật ký Prompt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FGpHrIifJ6PyWCdWkBj22%2F0.png?alt=media&amp;token=29fed08b-8d7e-4cbc-a7c3-321ffeaafaf4" alt=""><figcaption><p><strong>Truy cập Nhật ký Prompt</strong></p></figcaption></figure>

Trong Nhật ký Prompt, chúng ta có thể thấy rõ:

1. Các prompt tích hợp hoàn chỉnh.
2. Các đoạn văn bản liên quan được tham chiếu trong phiên hiện tại.
3. Các bản ghi phiên lịch sử.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FRtajCPpAzw6RHl4d0Yvo%2F0.png?alt=media&amp;token=78daa662-352d-4fa1-9952-f150ac775107" alt=""><figcaption><p><strong>Nhật ký Prompt</strong></p></figcaption></figure>

Từ nhật ký, chúng ta có thể xem các prompt hoàn chỉnh đã được hệ thống lắp ráp và gửi đến LLM, và chúng ta có thể liên tục cải thiện đầu vào prompt dựa trên kết quả gỡ lỗi.

**6.2 Theo dõi Lịch sử Gỡ lỗi**

Trong giao diện chính của ứng dụng ban đầu, bạn có thể tìm thấy "Nhật ký & Ghi chú" trong thanh điều hướng bên trái. Nhấp vào đó sẽ cho phép bạn xem các nhật ký hoàn chỉnh. Trong giao diện chính "Nhật ký & Ghi chú", bạn có thể nhấp vào bất kỳ mục nhật ký cuộc trò chuyện nào. Trong hộp thoại bên phải hiện ra, chỉ cần di chuyển con trỏ chuột qua cuộc trò chuyện và sau đó nhấp vào nút "Nhật ký" để kiểm tra Nhật ký Prompt.

Để biết thêm chi tiết, hãy truy cập 👉 [Logs & Annotations](/ii-tinh-nang-co-ban/nhat-ky-and-thong-bao).

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FDDCkSGwaUdWbFUFmSJxE%2F0.png?alt=media&amp;token=8fe427f2-4f38-4992-9497-f1d2068fd687" alt=""><figcaption><p>Logs &#x26; Ann.</p></figcaption></figure>


# Mẫu nhắc nhở

Để đáp ứng các yêu cầu tùy chỉnh hơn của các nhà phát triển đối với LLM, ChatX đã hoàn toàn mở các gợi ý tích hợp hoàn chỉnh trong **Chế độ Chuyên gia** và cung cấp các mẫu ban đầu trong giao diện soạn thảo. Dưới đây là bốn mẫu ban đầu để tham khảo:

## 1. Sử dụng các mô hình Chat để xây dựng ứng dụng Hội thoại <a href="#id-1.-using-chat-models-to-build-conversational-apps" id="id-1.-using-chat-models-to-build-conversational-apps"></a>

* **SYSTEM**

```
Use the following context as your learned knowledge, inside <context></context> XML tags.

<context>
{{#context#}}
</context>

When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.
{{pre_prompt}}
```

* **USER**

```
{{Query}} //Enter the Query variables here.
```

* **ASSITANT**

```
""
```

#### **Cấu trúc Prompt:**

* `Context`
* `Pre-prompt`
* `Query`

## 2. Sử dụng các mô hình Chat để xây dựng ứng dụng Tạo văn bản <a href="#id-2.-using-chat-models-to-build-text-generator-apps" id="id-2.-using-chat-models-to-build-text-generator-apps"></a>

* **SYSTEM**

```
Use the following context as your learned knowledge, inside <context></context> XML tags.

<context>
{{#context#}}
</context>

When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.
{{pre_prompt}}
```

* **USER**

```
{{Query}} //Enter the Query variables here.
```

* **ASSITANT**

```
""
```

#### **Cấu trúc Prompt:**

* `Context`
* `Pre-prompt`
* `Query`

## 3. Sử dụng các mô hình Hoàn chỉnh để xây dựng ứng dụng Hội thoại <a href="#id-3.-using-complete-models-to-build-conversational-apps" id="id-3.-using-complete-models-to-build-conversational-apps"></a>

```
Use the following context as your learned knowledge, inside <context></context> XML tags.

<context>
{{#context#}}
</context>

When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.

{{pre_prompt}}

Here is the chat histories between human and assistant, inside <histories></histories> XML tags.

<histories>
{{#histories#}}
</histories>


Human: {{#query#}}

Assistant: 
```

#### **Cấu trúc Prompt:**

* `Context`
* `Pre-prompt`
* `History`
* `Query`

## 4. Sử dụng các mô hình Hoàn chỉnh để xây dựng ứng dụng Tạo văn bản <a href="#id-4.-using-complete-models-to-build-text-generator-apps" id="id-4.-using-complete-models-to-build-text-generator-apps"></a>

```
Use the following context as your learned knowledge, inside <context></context> XML tags.

<context>
{{#context#}}
</context>

When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.

{{pre_prompt}}
{{query}}
```

#### **Cấu trúc Prompt:**

* `Context`
* `Pre-prompt`
* `Query`

{% hint style="info" %}
ChatX đã hợp tác với một số nhà cung cấp mô hình để tối ưu hóa sâu hệ thống nhắc nhở, và các mẫu ban đầu cho một số mô hình có thể khác so với các ví dụ được cung cấp ở trên.
{% endhint %}

## Định nghĩa tham số:

* **Ngữ cảnh**: Được sử dụng để chèn văn bản liên quan từ kiến thức vào các gợi ý hoàn chỉnh.
* **Tiền nhắc nhở**: Tiền nhắc nhở được sắp xếp trong Chế độ Cơ bản được chèn vào các gợi ý hoàn chỉnh.
* **Lịch sử**: Khi xây dựng một ứng dụng chat sử dụng các mô hình tạo văn bản, hệ thống chèn lịch sử cuộc trò chuyện của người dùng làm ngữ cảnh vào các gợi ý hoàn chỉnh. Vì một số mô hình có thể phản hồi khác nhau với các tiền tố vai trò, bạn cũng có thể thay đổi tên tiền tố vai trò trong cài đặt lịch sử cuộc trò chuyện, ví dụ, thay đổi tên "Assistant" thành "AI".
* **Câu hỏi**: Nội dung câu hỏi đại diện cho các giá trị biến được sử dụng để chèn các câu hỏi mà người dùng nhập trong cuộc trò chuyện.


# Quy trình làm việc

<table data-card-size="large" data-view="cards" data-full-width="false"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/gioi-thieu">Giới thiệu</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/khai-niem-chinh">Khái niệm chính</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes">Nodes</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/preview-and-run">Preview&amp;Run</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/publish-xuat-ban">Publish (Xuất bản)</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/export-import">Export/Import</a></td><td></td><td></td><td></td></tr></tbody></table>


# Giới thiệu

## Giới thiệu

Workflow giảm sự phức tạp của hệ thống bằng cách chia các nhiệm vụ phức tạp thành các bước nhỏ hơn (nút), giảm sự phụ thuộc vào công nghệ từ khóa và khả năng suy luận của mô hình, nâng cao hiệu suất của các ứng dụng LLM đối với các nhiệm vụ phức tạp và cải thiện khả năng giải thích, ổn định và chịu lỗi của hệ thống. Các workflow của ChatX được chia thành hai loại dựa trên các kịch bản ứng dụng:

* **Chatflow**: Dành cho các kịch bản hội thoại, bao gồm dịch vụ khách hàng, tìm kiếm ngữ nghĩa và các ứng dụng hội thoại khác đòi hỏi logic nhiều bước trong việc xây dựng phản hồi.
* **Workflow**: Dành cho các kịch bản tự động hóa và xử lý hàng loạt, phù hợp cho dịch thuật chất lượng cao, phân tích dữ liệu, tạo nội dung, tự động hóa email, v.v.

Để giải quyết sự phức tạp của việc nhận diện ý định người dùng trong các đầu vào ngôn ngữ tự nhiên, Chatflow cung cấp các nút hiểu vấn đề, chẳng hạn như phân loại câu hỏi, viết lại câu hỏi, chia nhỏ câu hỏi phụ, v.v. Ngoài ra, nó cũng cung cấp cho LLM khả năng tương tác với môi trường bên ngoài, tức là khả năng gọi công cụ, chẳng hạn như tìm kiếm trực tuyến, tính toán toán học, truy vấn thời tiết, vẽ, v.v.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F4kLEnHPg6HMvL0DiEfPO%2FCapture.JPG?alt=media&amp;token=da7f1b77-3aed-49e0-8317-708a87d6b99d" alt=""><figcaption></figcaption></figure>

Để giải quyết logic kinh doanh phức tạp trong các kịch bản tự động hóa và xử lý hàng loạt, Workflow cung cấp một loạt các nút logic phong phú, chẳng hạn như các nút mã, nút IF/ELSE, nút hợp nhất, nút chuyển đổi mẫu, v.v. Ngoài ra, nó cũng cung cấp khả năng kích hoạt theo thời gian và sự kiện, tạo điều kiện cho việc xây dựng các quy trình tự động.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FaHorNUi5ibG0xUzarjIg%2FCapture.JPG?alt=media&amp;token=ea96ea2b-ffb4-4b61-8b3e-176b0255a5e4" alt=""><figcaption></figcaption></figure>

## Các trường hợp phổ biến

**Dịch vụ Khách hàng**: Bằng cách tích hợp LLM vào hệ thống dịch vụ khách hàng của bạn, bạn có thể tự động hóa việc trả lời các câu hỏi thường gặp, giảm khối lượng công việc của đội ngũ hỗ trợ. LLM có thể hiểu ngữ cảnh và ý định của các truy vấn khách hàng và tạo ra các phản hồi hữu ích và chính xác theo thời gian thực.

**Tạo Nội dung**: Cho dù bạn cần tạo các bài viết blog, mô tả sản phẩm, hay tài liệu tiếp thị, LLM có thể hỗ trợ bạn bằng cách tạo ra nội dung chất lượng cao. Chỉ cần cung cấp một dàn ý hoặc chủ đề, và LLM sẽ sử dụng cơ sở kiến thức phong phú của mình để tạo ra nội dung hấp dẫn, thông tin và có cấu trúc tốt.

**Tự động hóa Nhiệm vụ**: Có thể tích hợp với các hệ thống quản lý nhiệm vụ khác nhau, chẳng hạn như Trello, Slack, Lark, để tự động hóa việc quản lý dự án và nhiệm vụ. Bằng cách sử dụng xử lý ngôn ngữ tự nhiên, LLM có thể hiểu và diễn giải các đầu vào của người dùng, tạo nhiệm vụ, cập nhật trạng thái và gán mức độ ưu tiên mà không cần can thiệp thủ công.

**Phân tích và Báo cáo Dữ liệu**: Có thể được sử dụng để phân tích các tập dữ liệu lớn và tạo ra các báo cáo hoặc tóm tắt. Bằng cách cung cấp thông tin liên quan cho LLM, nó có thể xác định các xu hướng, mẫu và thông tin chi tiết, chuyển đổi dữ liệu thô thành thông tin hành động. Điều này đặc biệt có giá trị cho các doanh nghiệp muốn đưa ra quyết định dựa trên dữ liệu.

**Tự động hóa Email**: LLM có thể được sử dụng để soạn thảo email, cập nhật trên mạng xã hội và các hình thức giao tiếp khác. Bằng cách cung cấp một dàn ý hoặc các điểm chính, LLM có thể tạo ra một thông điệp có cấu trúc tốt, mạch lạc và phù hợp với ngữ cảnh. Điều này có thể tiết kiệm một lượng thời gian đáng kể và đảm bảo rằng các phản hồi của bạn rõ ràng và chuyên nghiệp.

## Cách Bắt đầu

* Bắt đầu xây dựng từ một workflow trống hoặc sử dụng các mẫu hệ thống để giúp bạn bắt đầu.
* Làm quen với các thao tác cơ bản, bao gồm tạo các nút trên canvas, kết nối và cấu hình các nút, gỡ lỗi workflow, xem lịch sử chạy, v.v.
* Lưu và xuất bản một workflow.
* Chạy ứng dụng đã xuất bản hoặc gọi workflow thông qua API.


# Khái niệm chính

## **Node (Nút)**

Các nút là các thành phần chính của một workflow. Bằng cách kết nối các nút với các chức năng khác nhau, một loạt các hoạt động trong workflow được thực hiện. Các nút được phân loại theo loại:

* Các Nút Cơ Bản: Bắt đầu, Kết thúc, Trả lời, LLM, Truy xuất Kiến thức, Ứng dụng (sắp ra mắt)
* Hiểu Vấn Đề: Phân loại Câu hỏi, Viết lại Câu hỏi (sắp ra mắt), Chia nhỏ Câu hỏi phụ (sắp ra mắt)
* Xử Lý Logic: Nếu/Nếu không, Hợp nhất (sắp ra mắt), Vòng lặp (sắp ra mắt)
* Biến Đổi: Mã, Mẫu, Gán Biến, Trích xuất Hàm (sắp ra mắt)
* Khác: Yêu cầu HTTP
* Công Cụ: Công Cụ Tích Hợp Sẵn, Công Cụ Tùy Chỉnh

## **Biến**

Biến là rất quan trọng để liên kết đầu vào và đầu ra của các nút trong một workflow, giúp thực hiện logic xử lý phức tạp trong quá trình.

* Các workflow cần xác định các biến đầu vào để khởi tạo thực hiện hoặc cuộc trò chuyện.
* Các nút yêu cầu các biến đầu vào để khởi tạo; ví dụ, biến đầu vào cho một bộ phân loại câu hỏi thường bao gồm câu hỏi của người dùng.
* Các biến được tham chiếu trong một nút chỉ có thể là những biến từ các nút quy trình trước đó để đảm bảo tính nhất quán và tránh sao chép.
* Để ngăn chặn trùng tên biến, tên nút phải là duy nhất.
* Các biến đầu ra của một nút được cố định bởi hệ thống và không thể sửa đổi.

## Sự Khác Biệt Giữa Chatflow và Workflow

#### **Sự Khác Biệt về Kịch Bản Ứng Dụng**

* **Chatflow**: Hướng đến các kịch bản hội thoại và đại diện cho một chế độ chỉ đạo tiên tiến cho các loại ứng dụng Chatbot.
* **Workflow**: Hướng đến các kịch bản tự động hóa và xử lý hàng loạt.

**Sự Khác Biệt trong Các Nút**

| <h4>Node (Nút)</h4> | **Chatflow**                                                                                                  | **Workflow**                                                                                                              |
| ------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| Start               | Sử dụng biến được xây dựng bởi hệ thống cho đầu vào người dùng và tải lên tệp.                                | Sử dụng biến được xây dựng bởi hệ thống cho tải lên tệp.                                                                  |
| End                 | Không hỗ trợ nút Kết thúc.                                                                                    | Sử dụng nút Kết thúc để đầu ra văn bản có cấu trúc khi kết thúc thực hiện, không được thiết kế cho đầu ra giữa quá trình. |
| Answer              | Nút Trả lời được sử dụng cho đầu ra trực tiếp hoặc câu trả lời cố định và có thể được sử dụng giữa quá trình. | Không hỗ trợ nút Trả lời                                                                                                  |
| LLM                 | Bộ nhớ được tự động kích hoạt để lưu trữ và truyền tiếp lịch sử của các cuộc trò chuyện đa bước.              | Không hỗ trợ cấu hình Bộ nhớ.                                                                                             |
| Question Classifier | Bộ nhớ được tự động kích hoạt để lưu trữ và truyền tiếp lịch sử của các cuộc trò chuyện đa bước.              | Không hỗ trợ cấu hình Bộ nhớ.                                                                                             |

#### Phân Chia Điểm Nhập Ứng Dụng

* **Chatflow Entry**:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FhO7zKNYr79y6D9yM7SJ6%2FCapture.JPG?alt=media&amp;token=1cb2e93e-a0d3-4d71-8758-9767929e0ebb" alt=""><figcaption></figcaption></figure>

* **Workflow Entry**:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FwzFPQia3iUZZPnUfFcHo%2FCapture.JPG?alt=media&amp;token=efa59f34-76f9-48a6-91e0-3d3d0133abb1" alt=""><figcaption></figcaption></figure>


# Nodes

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/start">Start</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/end">End</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/answer">Answer</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/llm">LLM</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/truy-van-co-so-kien-thuc">Truy Vấn Cơ Sở Kiến Thức</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/question-classifier-phan-loai-cau-hoi">Question Classifier(Phân Loại Câu Hỏi)</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/if-else">IF/ELSE</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/code-ma">Code (Mã)</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/template">Template</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/variable-assigner">Variable Assigner</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/http-reques">HTTP Reques</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/nodes/tools">Tools</a></td><td></td><td></td><td></td></tr></tbody></table>


# Start

Định nghĩa các tham số ban đầu cho quá trình khởi tạo workflow cho phép tùy chỉnh tại nút Bắt đầu, nơi bạn nhập các biến để khởi động quy trình làm việc. Mỗi workflow đều cần có một nút Bắt đầu, đóng vai trò là điểm nhập và nền tảng cho con đường thực thi của quy trình làm việc.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FHYZaIBSAfv2MsdN2tq3m%2FCapture.JPG?alt=media&amp;token=d0e65657-73cb-4f6e-916b-220607c04969" alt=""><figcaption></figcaption></figure>

Trong nút "Bắt đầu", bạn có thể định nghĩa các biến đầu vào của bốn loại:

* **Văn bản**: Cho các đầu vào văn bản ngắn, đơn giản như tên, định danh hoặc bất kỳ dữ liệu nào ngắn gọn khác.
* **Đoạn văn**: Hỗ trợ các đầu vào văn bản dài hơn, phù hợp cho mô tả, các truy vấn chi tiết hoặc bất kỳ dữ liệu văn bản mở rộng nào khác.
* **Tùy chọn Dropdown**: Cho phép lựa chọn từ một danh sách các tùy chọn được xác định trước, cho phép người dùng chọn từ một tập hợp các giá trị đã được xác định trước.
* **Số**: Cho các đầu vào số, có thể là số nguyên hoặc số thập phân, được sử dụng trong các tính toán, lượng, định danh, v.v.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FURl3d67cuKkXL2bowtQD%2FCapture.JPG?alt=media&amp;token=8e1b6db0-2dd7-4e59-8532-1a8aa688fb09" alt=""><figcaption></figcaption></figure>

Sau khi hoàn tất cấu hình, quá trình thực thi của workflow sẽ yêu cầu các giá trị của các biến được định nghĩa trong nút Bắt đầu. Bước này đảm bảo rằng quy trình làm việc có đủ thông tin cần thiết để tiếp tục với các quy trình được chỉ định của mình.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FakviNDbLGu3KbloLSrKB%2FCapture.JPG?alt=media&amp;token=c43be7d8-6ce1-44e2-8812-89ec1e1a15e1" alt=""><figcaption></figcaption></figure>

**Mẹo**: Trong Chatflow, nút Bắt đầu cung cấp các biến được xây dựng sẵn bởi hệ thống: `sys.query` và`sys.files`. `sys.query` được sử dụng cho đầu vào câu hỏi của người dùng trong các ứng dụng hội thoại, cho phép hệ thống xử lý và phản hồi các truy vấn của người dùng. `sys.files` được sử dụng cho việc tải lên tệp trong cuộc trò chuyện, chẳng hạn như tải lên một hình ảnh để hiểu nội dung của nó. Điều này đòi hỏi tích hợp các mô hình hoặc công cụ hiểu hình ảnh được thiết kế để xử lý đầu vào hình ảnh, cho phép quy trình làm việc giải mã và thực hiện hành động đối với các tệp được tải lên một cách hiệu quả.


# End

Định nghĩa Nội dung Đầu ra Cuối cùng của một Quy trình làm việc. Mỗi quy trình làm việc cần ít nhất một nút "End" để xuất kết quả cuối cùng sau khi thực thi đầy đủ.

Nút "End" đóng vai trò như điểm kết thúc của quy trình, vượt ra ngoài đó không thể thêm các nút nào khác. Trong các ứng dụng quy trình làm việc, kết quả thực thi chỉ được đầu ra khi quy trình đạt đến nút "End". Nếu quy trình liên quan đến nhánh có điều kiện, cần xác định nhiều nút "End".

Ví dụ về Thực thi Đơn luồng:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FtUVQgXL0hUQZqSQ8lONI%2FCapture.JPG?alt=media&amp;token=60e53873-6acd-4d89-b4b9-6f69b032bdce" alt=""><figcaption></figcaption></figure>

Ví dụ về Thực thi Đa luồng:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FchlxoLHPoksqfqUjBCTu%2FCapture.JPG?alt=media&amp;token=49564fae-4b94-40d1-bb9e-189abbf5bec3" alt=""><figcaption></figcaption></figure>


# Answer

Answer

Định nghĩa Nội dung Phản hồi trong một Quy trình Chatflow. Trong một trình soạn thảo văn bản, bạn có linh hoạt để xác định định dạng phản hồi. Điều này bao gồm việc tạo ra một khối văn bản cố định, sử dụng các biến đầu ra từ các bước trước đó làm nội dung phản hồi, hoặc kết hợp văn bản tùy chỉnh với biến để tạo ra phản hồi.

Nút Answer có thể được tích hợp một cách mượt mà tại bất kỳ điểm nào để đưa nội dung động vào các phản hồi trong cuộc đối thoại. Thiết lập này hỗ trợ chế độ cấu hình chỉnh sửa trực tiếp, cho phép cả văn bản và hình ảnh được sắp xếp cùng nhau. Các cấu hình bao gồm:

1. Xuất nội dung phản hồi từ một nút Mô hình Ngôn ngữ (LLM).
2. Xuất hình ảnh được tạo ra.
3. Xuất văn bản thuần túy.

Ví dụ 1: Xuất văn bản thuần túy.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FsSazVelRvVr0DKQlnuQQ%2FCapture.JPG?alt=media&amp;token=8e2e2199-7fa9-4fcf-bc01-c897fdeabb09" alt=""><figcaption></figcaption></figure>

Ví dụ 2: Xuất hình ảnh và phản hồi từ LLM.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FoPzvBCY7ZNmMFHRzPnYD%2F0.png?alt=media&amp;token=941445e9-97f0-4aae-afb5-6baaadb40a2a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FNeh1zSlHWkW9PUecER46%2F0.png?alt=media&amp;token=1007d7be-390a-4a28-8585-066544d220d9" alt=""><figcaption></figcaption></figure>


# LLM

Gọi một Mô hình Ngôn ngữ Lớn (LLM) để trả lời câu hỏi hoặc xử lý ngôn ngữ tự nhiên. Trong một nút LLM, bạn có thể chọn một mô hình phù hợp, soạn các đoạn gợi ý, đặt ngữ cảnh được tham chiếu trong các đoạn gợi ý, cấu hình các thiết lập bộ nhớ và điều chỉnh kích thước cửa sổ bộ nhớ.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FmHmjEPz4bHn9sysuKqE3%2FCapture.JPG?alt=media&amp;token=eb1bae9d-8668-46d6-ba67-9f09d65538b6" alt=""><figcaption></figcaption></figure>

Cấu hình một nút LLM chủ yếu bao gồm hai bước:

1. Lựa chọn một mô hình
2. Soạn các đoạn gợi ý hệ thống

#### **Cấu hình Mô hình**

Trước khi chọn một mô hình phù hợp cho nhiệm vụ của bạn, bạn phải hoàn thành cấu hình mô hình trong "Cài đặt Hệ thống - Nhà cung cấp Mô hình". Phương pháp cấu hình cụ thể có thể được tham khảo trong [hướng dẫn cấu hình mô hình](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-mo-hinh-khac-nhau#cai-dat-tich-hop-mo-hinh). Sau khi chọn một mô hình, bạn có thể cấu hình các tham số của nó.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FU2Fmeu1VAE4SK5lFhd6d%2FCapture.JPG?alt=media&amp;token=7188d21e-dcb5-40d4-b8d3-a944cabbd298" alt=""><figcaption></figcaption></figure>

#### **Viết các Gợi Ý**

Trong một nút LLM, bạn có thể tùy chỉnh các gợi ý đầu vào cho mô hình. Nếu bạn chọn một mô hình trò chuyện, bạn có thể tùy chỉnh nội dung của các gợi ý hệ thống, tin nhắn của người dùng và tin nhắn của trợ lý.

Ví dụ, trong một tình huống tra cứu cơ sở kiến thức Q\&A, sau khi liên kết biến "Kết quả" từ nút truy xuất cơ sở kiến thức vào "Ngữ cảnh", việc chèn biến đặc biệt "Ngữ cảnh" vào các gợi ý sẽ sử dụng văn bản được truy xuất từ cơ sở kiến thức làm thông tin nền cho đầu vào mô hình.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fs45jca7tJyYJ9GSGDIac%2FCapture.JPG?alt=media&amp;token=9cfbca4b-103f-4ba3-9790-a8b35ff948b8" alt=""><figcaption></figcaption></figure>

Trong trình soạn thảo gợi ý, bạn có thể mở menu chèn biến bằng cách gõ "/" hoặc "{" để chèn các khối biến đặc biệt hoặc các biến từ các nút dòng trước vào các gợi ý như nội dung ngữ cảnh.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FMKLXKXvzc7jlrtriyTGT%2F0.png?alt=media&amp;token=146f0fcb-df38-4375-b337-75aa367575da" alt="" width="375"><figcaption></figcaption></figure>

Nếu bạn chọn một mô hình hoàn chỉnh, hệ thống cung cấp các mẫu gợi ý được thiết lập trước cho các ứng dụng trò chuyện. Bạn có thể tùy chỉnh nội dung của các gợi ý và chèn các khối biến đặc biệt như "Lịch sử Đối thoại" và "Ngữ cảnh" vào vị trí phù hợp bằng cách gõ "/" hoặc "{", cho phép chức năng trò chuyện phong phú hơn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F4e3qsonJh5d61W6h4bXV%2FCapture.JPG?alt=media&amp;token=35ce038b-e122-4e06-842e-320ae4488bc7" alt=""><figcaption></figcaption></figure>

#### Cấu hình Chuyển Đổi Bộ Nhớ

Trong các ứng dụng trò chuyện (Chatflow), nút LLM mặc định được bật cài đặt bộ nhớ hệ thống. Trong các cuộc đối thoại đa bước, hệ thống lưu trữ các tin nhắn đối thoại lịch sử và truyền chúng vào mô hình. Trong các ứng dụng quy trình làm việc (Workflow), bộ nhớ hệ thống được tắt mặc định và không cung cấp tùy chọn cài đặt bộ nhớ.

#### Cấu hình Cửa Sổ Bộ Nhớ

Nếu cài đặt cửa sổ bộ nhớ bị tắt, hệ thống sẽ truyền động các tin nhắn đối thoại lịch sử theo cửa sổ ngữ cảnh của mô hình. Khi cài đặt cửa sổ bộ nhớ được bật, bạn có thể cấu hình số lượng tin nhắn đối thoại lịch sử được truyền dựa trên nhu cầu của bạn.

#### Cài đặt Tên Vai Trò Đối Thoại

Do sự khác biệt trong các giai đoạn huấn luyện mô hình, các mô hình khác nhau tuân theo các lệnh tên vai trò ở mức độ khác nhau, chẳng hạn như Human/Assistant, Human/AI, 人类/助手, v.v. Để điều chỉnh hiệu ứng phản hồi gợi ý của nhiều mô hình, hệ thống cho phép thiết lập tên vai trò đối thoại, sửa đổi tiền tố vai trò trong lịch sử đối thoại.


# Truy Vấn Cơ Sở Kiến Thức

Nút Truy Vấn Cơ Sở Kiến Thức được thiết kế để truy vấn nội dung văn bản liên quan đến câu hỏi của người dùng từ Cơ Sở Kiến Thức của ChatX, sau đó có thể được sử dụng như ngữ cảnh cho các câu trả lời tiếp theo bởi Mô hình Ngôn ngữ Lớn (LLM).

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FRdUif1Unppw2s4NX04z7%2FCapture.JPG?alt=media&amp;token=2a614b17-859d-41a6-9307-6c2407e6219d" alt=""><figcaption></figcaption></figure>

Cấu hình Nút Truy Vấn Cơ Sở Kiến Thức bao gồm ba bước chính:

1. **Lựa Chọn Biến Truy Vấn**
2. **Chọn Cơ Sở Kiến Thức để Truy Vấn**
3. **Cấu Hình Chiến lược Truy Vấn**

### **Lựa Chọn Biến Truy Vấn**

Trong các kịch bản truy xuất cơ sở kiến thức, biến truy vấn thường đại diện cho câu hỏi đầu vào của người dùng. Trong nút "Start" của các ứng dụng trò chuyện, hệ thống được thiết lập sẵn "sys.query" như là biến đầu vào của người dùng. Biến này có thể được sử dụng để truy vấn cơ sở kiến thức cho các đoạn văn bản liên quan nhất đến câu hỏi của người dùng.

### **Chọn Cơ Sở Kiến Thức để Truy Vấn**

Trong nút truy vấn cơ sở kiến thức, bạn có thể thêm một cơ sở kiến thức hiện có từ ChatX. Để biết hướng dẫn về cách tạo một cơ sở kiến thức trong ChatX, vui lòng tham khảo [tài liệu trợ giúp](/ii-tinh-nang-co-ban/knowledge-import-nhap-kien-thuc) cơ sở kiến thức.

### **Cấu Hình Chiến lược Truy Vấn**

Bạn có thể điều chỉnh chiến lược lập chỉ mục và chế độ truy vấn cho mỗi cơ sở kiến thức trong nút. Để biết giải thích chi tiết về các thiết lập này, vui lòng tham khảo [tài liệu trợ giúp](/ii-tinh-nang-co-ban/rag-tao-tang-cuong-truy-xuat/hybrid-search-tim-kiem-ket-hop) về cơ sở kiến thức.

<div align="left"><figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F6ulL3mqtPrjoaNbdTiGo%2FCapture.JPG?alt=media&amp;token=61cda7f0-6ea4-42b5-af59-834e0172e7af" alt=""><figcaption></figcaption></figure></div>

ChatX cung cấp hai chiến lược gợi lại cho các kịch bản truy xuất cơ sở kiến thức khác nhau: "Gợi lại lựa chọn N-choose-1" và "Gợi lại đa hướng". Trong chế độ N-choose-1, các truy vấn cơ sở kiến thức được thực thi thông qua gọi hàm, đòi hỏi lựa chọn một mô hình lập luận hệ thống. Trong chế độ gợi lại đa hướng, một mô hình Rerank cần được cấu hình cho việc sắp xếp lại kết quả. Để biết giải thích chi tiết về hai chiến lược gợi lại này, vui lòng tham khảo giải thích về chế độ truy vấn trong [tài liệu trợ giúp](/ii-tinh-nang-co-ban/rag-tao-tang-cuong-truy-xuat/retrieval-truy-xuat).

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Flq8Rep735OUFhAXkTtAo%2FCapture.JPG?alt=media&amp;token=39d26af9-48dd-42a3-861d-1e22c9211a89" alt=""><figcaption></figcaption></figure>


# Question Classifier(Phân Loại Câu Hỏi)

Nút Question Classifier xác định các điều kiện phân loại cho các truy vấn của người dùng, cho phép LLM quyết định sự tiến triển của cuộc đối thoại dựa trên các phân loại này. Như minh họa trong một kịch bản robot dịch vụ khách hàng điển hình, bộ phân loại câu hỏi có thể phục vụ như một bước sơ bộ đến việc truy xuất cơ sở kiến thức, xác định ý định của người dùng. Phân loại ý định của người dùng trước khi truy xuất có thể cải thiện đáng kể hiệu suất gợi lại của cơ sở kiến thức.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FheQtie2MKTg2nyTazc2x%2FCapture.JPG?alt=media&amp;token=5cf0a04d-f089-47ef-811f-948596bf30e1" alt=""><figcaption></figcaption></figure>

Cấu Hình Nút Phân Loại Câu Hỏi bao gồm ba thành phần chính:

1. **Lựa Chọn Biến Đầu Vào**
2. **Cấu Hình Mô Hình Suy Luận**
3. **Viết Phương Pháp Phân Loại**

**Lựa Chọn Biến Đầu Vào** Trong các tình huống dịch vụ khách hàng trò chuyện, bạn có thể sử dụng biến đầu vào của người dùng từ "Start Node" (sys.query) như là đầu vào cho bộ phân loại câu hỏi. Trong các tình huống xử lý tự động/thu thập hàng loạt, phản hồi từ khách hàng hoặc nội dung email có thể được sử dụng làm biến đầu vào.

**Cấu Hình Mô Hình Suy Luận** Bộ phân loại câu hỏi dựa vào khả năng xử lý ngôn ngữ tự nhiên của LLM để phân loại văn bản. Bạn sẽ cần cấu hình một mô hình suy luận cho bộ phân loại. Trước khi cấu hình mô hình này, bạn có thể cần hoàn thành cài đặt mô hình trong "Cài Đặt Hệ Thống - Nhà Cung Cấp Mô Hình". Phương pháp cấu hình cụ thể có thể được tìm thấy trong [hướng dẫn cấu hình mô hình](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-mo-hinh-khac-nhau#cai-dat-tich-hop-mo-hinh). Sau khi chọn một mô hình phù hợp, bạn có thể cấu hình các tham số của nó.

**Viết Các Điều Kiện Phân Loại** Bạn có thể thêm nhiều phân loại bằng cách thêm các từ khóa hoặc câu mô tả phù hợp với mỗi phân loại. Dựa trên mô tả của những điều kiện này, bộ phân loại câu hỏi có thể định tuyến cuộc đối thoại vào con đường xử lý phù hợp theo ngữ nghĩa của đầu vào của người dùng.


# IF/ELSE

Nút IF/ELSE cho phép bạn phân nhánh một quy trình làm việc thành hai nhánh dựa trên các điều kiện if/else. Trong nút này, bạn có thể thiết lập một hoặc nhiều điều kiện IF. Khi các điều kiện IF được thỏa mãn, quy trình làm việc tiếp tục đến bước tiếp theo dưới nhánh "IS TRUE". Nếu các điều kiện IF không được thỏa mãn, quy trình sẽ kích hoạt bước tiếp theo dưới nhánh "IS FALSE".

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FlSEcu5NMpYrqTtOcOriU%2FCapture.JPG?alt=media&amp;token=5e0bb8c4-701b-4667-96c8-2569a1326318" alt=""><figcaption></figcaption></figure>


# Code (Mã)

## **Giới Thiệu**

Nút mã hỗ trợ việc thực thi mã Python/NodeJS để thực hiện các biến đổi dữ liệu trong các quy trình làm việc. Nó giúp đơn giản hóa các quy trình làm việc của bạn, phù hợp cho các tình huống tính toán, biến đổi JSON, xử lý văn bản và nhiều tình huống khác.

Nút này đáng kể tăng cường tính linh hoạt của các nhà phát triển, cho phép họ nhúng các kịch bản Python hoặc Javascript tùy chỉnh vào các quy trình làm việc của họ và thao tác với biến theo cách mà các nút đã được thiết lập trước không thể đạt được. Thông qua các tùy chọn cấu hình, bạn có thể chỉ định các biến đầu vào và đầu ra cần thiết và viết mã thực thi tương ứng:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fq4NvDXGqt44NP5A0C8n6%2F0.png?alt=media&amp;token=673fc4fa-23ca-4558-8bdb-e81a2def0f84" alt="" width="375"><figcaption></figcaption></figure>

## **Cấu Hình**

Nếu bạn cần sử dụng các biến từ các nút khác trong nút mã, bạn cần xác định tên biến trong `input variables` và tham chiếu các biến này, xem Tham Chiếu Biến để biết chi tiết.

## **Các Trường Hợp Sử Dụng**

Với nút code, bạn có thể thực hiện các thao tác thông thường sau đây:

### **Xử Lý Dữ Liệu Cấu Trúc**

Trong các quy trình làm việc, thường cần phải xử lý dữ liệu không cấu trúc, chẳng hạn như phân tích, trích xuất và biến đổi chuỗi JSON. Một ví dụ điển hình là xử lý dữ liệu trong nút HTTP, nơi dữ liệu có thể được lồng trong nhiều lớp đối tượng JSON, và chúng ta cần trích xuất một số trường nhất định. Nút mã có thể giúp bạn hoàn thành các nhiệm vụ này. Dưới đây là một ví dụ đơn giản trích xuất trường `data.name` từ một chuỗi JSON được trả về bởi một nút HTTP:

```
def main(http_response: str) -> str:
    import json
    data = json.loads(http_response)
    return {
        # do not forget to declare 'result' in the output variables
        'result': data['data']['name']
    }
```

### **Tính Toán Toán Học**

Khi cần thực hiện các phép tính toán toán học phức tạp trong các quy trình làm việc, nút mã cũng có thể được sử dụng. Ví dụ, để tính toán một công thức toán học phức tạp hoặc thực hiện một số phân tích thống kê trên dữ liệu. Dưới đây là một ví dụ đơn giản tính phương sai của một danh sách:

```
def main(x: list) -> float:
    return {
        # do not forget to declare 'result' in the output variables
        'result': sum([(i - sum(x) / len(x)) ** 2 for i in x]) / len(x)
    }
```

### **Nối Dữ Liệu**

Đôi khi, bạn có thể cần nối nhiều nguồn dữ liệu, chẳng hạn như nhiều truy xuất cơ sở kiến thức, tìm kiếm dữ liệu, cuộc gọi API, v.v. Nút code có thể giúp bạn tích hợp những nguồn dữ liệu này. Dưới đây là một ví dụ đơn giản gộp dữ liệu từ hai cơ sở kiến thức:

```
def main(knowledge1: list, knowledge2: list) -> list:
    return {
        # do not forget to declare 'result' in the output variables
        'result': knowledge1 + knowledge2
    }
```

## **Triển Khai Cục Bộ**

Nếu bạn là người dùng triển khai cục bộ, bạn cần bắt đầu một dịch vụ sandbox, đảm bảo rằng mã độc hại không được thực thi. Ngoài ra, việc khởi chạy dịch vụ này yêu cầu Docker, và bạn có thể tìm thông tin cụ thể về dịch vụ Sandbox ở đây. Bạn cũng có thể trực tiếp bắt đầu dịch vụ bằng cách sử dụng docker-compose.

```
docker-compose -f docker-compose.middleware.yaml up -d
```

## **Chính Sách Bảo Mật**

Môi trường thực thi được tạo ra là một môi trường sandboxed cho cả Python và Javascript, nghĩa là một số chức năng yêu cầu tài nguyên hệ thống mở rộng hoặc gây ra rủi ro bảo mật không có sẵn. Điều này bao gồm, nhưng không giới hạn


# Template

Template cho phép bạn định dạng động và kết hợp các biến từ các nút trước đó thành một đầu ra dạng văn bản duy nhất bằng cách sử dụng Jinja2, một cú pháp mẫu mạnh mẽ cho Python. Nó hữu ích để kết hợp dữ liệu từ nhiều nguồn thành một cấu trúc cụ thể được yêu cầu bởi các nút tiếp theo. Ví dụ đơn giản dưới đây cho thấy cách lắp ráp một bài báo bằng cách ghép các đầu ra trước đó lại với nhau:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fl8lwxEcWjOXlsWYmJ2YA%2F0.png?alt=media&amp;token=483da8be-e96f-4905-907c-f5487e78e200" alt="" width="375"><figcaption></figcaption></figure>

Vượt ra ngoài các trường hợp sử dụng ngây thơ, bạn có thể tạo ra các mẫu phức tạp hơn theo [tài liệu](https://jinja.palletsprojects.com/en/3.1.x/templates/) của Jinja cho nhiều nhiệm vụ khác nhau. Dưới đây là một mẫu cấu trúc các đoạn được truy xuất và siêu dữ liệu liên quan từ một nút truy xuất cơ sở kiến thức thành một định dạng markdown được định dạng:

```
{% for item in chunks %}
### Chunk {{ loop.index }}. 
### Similarity: {{ item.metadata.score | default('N/A') }}

#### {{ item.title }}

##### Content
{{ item.content | replace('\n', '\n\n') }}

---
{% endfor %}
```

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FI7PEcCh1HJbc7oYiRD0L%2F0.png?alt=media&amp;token=ebeb5eec-5d6c-4c6e-9863-ce8685e01e8f" alt=""><figcaption></figcaption></figure>

Nút template này sau đó có thể được sử dụng trong một Chatflow để trả lại đầu ra trung gian cho người dùng cuối, trước khi một phản hồi LLM được khởi tạo.

> Nút `Answer` trong một Chatflow không phải là cuối cùng. Nó có thể được chèn bất kỳ đâu để đầu ra các phản hồi tại nhiều điểm trong luồng.


# Variable Assigner

Nút Variable Assigner hoạt động như một trung tâm để thu thập đầu ra của các nhánh trong quy trình làm việc, đảm bảo rằng bất kể nhánh nào được chọn, đầu ra có thể được tham chiếu bằng một biến duy nhất. Đầu ra sau đó có thể được thao tác bởi các nút ở dưới dòng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FpmyRp2mf0OJlimqyjv2p%2F0.png?alt=media&amp;token=cc202050-fa1c-4242-a617-007afbae33bd" alt=""><figcaption></figcaption></figure>

Nút Variable Assigner hỗ trợ nhiều loại biến đầu ra bao gồm `String`,`Number`, `Object`, và `Array`. Dựa trên loại đầu ra đã chỉ định, bạn có thể thêm các biến đầu vào từ danh sách thả xuống của các biến vào nút. Danh sách các biến được phát sinh từ các đầu ra nhánh trước đó và tự động lọc dựa trên loại được chỉ định.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FFZNjEfls8hznUEvlvo1G%2F0.png?alt=media&amp;token=69c2b3bc-3561-475d-b828-894f0c6c14d7" alt="" width="375"><figcaption></figcaption></figure>

Nút Variable Assigner cung cấp một biến `output` duy nhất của loại được chỉ định cho việc sử dụng ở dưới dòng.


# HTTP Reques

Nút HTTP Request cho phép bạn tạo và gửi các yêu cầu HTTP đến các điểm cuối được chỉ định, cho phép một loạt các tích hợp và trao đổi dữ liệu với các dịch vụ bên ngoài. Nút hỗ trợ tất cả các phương thức yêu cầu HTTP thông thường và cho phép bạn tùy chỉnh hoàn toàn URL, tiêu đề, tham số truy vấn, nội dung thân, và chi tiết xác thực của yêu cầu.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Faox82czRbJuyoRZQN0Am%2F0.png?alt=media&amp;token=88a05d1c-8b65-4192-af1c-56f90ceaa8a4" alt="" width="375"><figcaption></figcaption></figure>

Một tính năng rất tiện lợi với yêu cầu HTTP là khả năng xây dựng động yêu cầu bằng cách chèn biến vào các trường khác nhau. Ví dụ, trong một tình huống hỗ trợ khách hàng, các biến như tên người dùng hoặc ID khách hàng có thể được sử dụng để cá nhân hóa các phản hồi tự động được gửi qua một yêu cầu POST, hoặc truy xuất thông tin cụ thể liên quan đến khách hàng. Yêu cầu HTTP trả về `body`, `status_code`, `headers`, và `files` như đầu ra. Nếu phản hồi bao gồm các tệp tin của loại [MIME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) (hiện giới hạn chỉ là hình ảnh), nút tự động lưu chúng dưới dạng `files` cho việc sử dụng ở dưới dòng.


# Tools

Trong một quy trình làm việc, ChatX cung cấp cả các công cụ tích hợp sẵn và có thể tùy chỉnh. Trước khi sử dụng các công cụ này, bạn cần "authorize" chúng. Nếu các công cụ tích hợp sẵn không đáp ứng được yêu cầu của bạn, bạn có thể tạo các công cụ tùy chỉnh trong "ChatX—Công Cụ".

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FCRLJYvFfRANDbzIvscNG%2FCapture.JPG?alt=media&amp;token=3c4153e1-6b93-4f16-a123-a7781c9c7b79" alt=""><figcaption></figcaption></figure>

Việc cấu hình một nút công cụ nói chung bao gồm hai bước:

1. **Xác thực Công Cụ/Tạo Công Cụ Tùy Chỉnh**
2. **Cấu Hình Các Đầu Và Tham Số Công Cụ**

Để biết hướng dẫn về cách tạo các công cụ tùy chỉnh và cấu hình chúng, vui lòng tham khảo [hướng dẫn cấu hình công cụ](/iv-huong-dan-tich-hop-nang-cao/tich-hop-cong-cu-nhanh).


# Preview\&Run

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/preview-and-run/preview-and-run">Preview&amp;Run</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/preview-and-run/step-test-buoc-kiem-tra">Step Test (Bước Kiểm Tra)</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/preview-and-run/log-nhat-ky">Log (Nhật ký)</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/preview-and-run/checklist-danh-muc">Checklist (Danh mục)</a></td><td></td><td></td><td></td></tr><tr><td><a href="/ii-tinh-nang-co-ban/quy-trinh-lam-viec/preview-and-run/history-lich-su">History (Lịch sử)</a></td><td></td><td></td><td></td></tr></tbody></table>


# Preview\&Run

Dịch vụ ChatX cung cấp một bộ tính năng thực thi và gỡ lỗi toàn diện. Trong các ứng dụng trò chuyện, nhấp vào "Xem trước" để vào chế độ gỡ lỗi.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FQCjMNFcFe6NxbSOeRse7%2FCapture.JPG?alt=media&amp;token=08ba99b7-797a-428b-986e-85bbb7d8967f" alt=""><figcaption></figcaption></figure>

Trong các ứng dụng quy trình làm việc, nhấp vào "Chạy" để vào chế độ gỡ lỗi.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FqmOlF8xTmYYrZ119wq8R%2FCapture.JPG?alt=media&amp;token=44e917ea-6c6d-407a-a433-18421fb4a3ea" alt=""><figcaption></figcaption></figure>

Một khi đã ở chế độ gỡ lỗi, bạn có thể gỡ lỗi quy trình đã được cấu hình bằng cách sử dụng giao diện ở phía bên phải màn hình.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FusL8PYZtsnHLXmGLmyuk%2FCapture.JPG?alt=media&amp;token=444351f8-6cb5-492c-b37f-c2156d5b23f9" alt=""><figcaption></figcaption></figure>


# Step Test (Bước Kiểm Tra)

Quy trình hỗ trợ gỡ lỗi từng bước của các nút, nơi bạn có thể lặp đi lặp lại kiểm tra xem việc thực thi của nút hiện tại có đáp ứng được mong đợi hay không.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FXVp2DHl5fEfxld7FS7nQ%2FCapture.JPG?alt=media&amp;token=db4f1c62-1ee6-470f-b37d-c23ceb6ff560" alt=""><figcaption></figcaption></figure>

Sau khi chạy một bước kiểm tra, bạn có thể xem lại trạng thái thực thi, đầu vào/đầu ra và thông tin siêu dữ liệu.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FZAsUNwDmfwzxgXZheOWZ%2FCapture.JPG?alt=media&amp;token=d2f40e2f-075c-4fce-a5bc-219b39f1c8ad" alt=""><figcaption></figcaption></figure>


# Log (Nhật ký)

Log

Nhấp vào "View Log—Details" cho phép bạn xem một cái nhìn tổng quan toàn diện về quá trình chạy, bao gồm thông tin về đầu vào/đầu ra, siêu dữ liệu, và nhiều hơn nữa, trong phần chi tiết.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Ft4hDM8Du310BqBsAQ4V8%2FCapture.JPG?alt=media&amp;token=2dacdf10-f29b-4866-ab24-3a22293255ce" alt=""><figcaption></figcaption></figure>

Nhấp vào "View Log—Trace" cho phép bạn xem lại đầu vào/đầu ra, tiêu thụ mã thông báo, thời lượng thực thi, vv., của mỗi nút trong suốt quá trình thực thi hoàn chỉnh của quy trình làm việc.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fk42ydrUQ8vuCeMWbuQRH%2FCapture.JPG?alt=media&amp;token=ce1b9826-053d-44d0-8dbb-895637143c58" alt=""><figcaption></figcaption></figure>


# Checklist (Danh mục)

Checklist

Trước khi vào chế độ gỡ lỗi, bạn có thể kiểm tra danh sách kiểm tra để xem có bất kỳ nút nào có cấu hình chưa hoàn chỉnh hoặc chưa được kết nối không.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F85sF8cIDRhDOUUAsTAMz%2FCapture.JPG?alt=media&amp;token=71336bef-922d-4a1f-9815-54ec4b2f01e6" alt=""><figcaption></figcaption></figure>


# History (Lịch sử)

History

Trong "Lịch Sử Chạy", bạn có thể xem kết quả chạy và thông tin nhật ký từ việc gỡ lỗi lịch sử của quy trình làm việc hiện tại.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FriJ3VGTUVeHCSp6XhMj0%2FCapture.JPG?alt=media&amp;token=6170db43-8a0e-41ce-9916-cc19a3430436" alt=""><figcaption></figcaption></figure>


# Publish (Xuất bản)

Sau khi hoàn thành gỡ lỗi, nhấp vào "Xuất Bản" ở góc phải phía trên cho phép bạn lưu và nhanh chóng phát hành quy trình làm việc dưới dạng các loại ứng dụng khác nhau.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FR70WSLqidHoc6ObWmQLg%2FCapture.JPG?alt=media&amp;token=d99424ab-b484-41a3-ae49-a4e7ad6889b1" alt=""><figcaption></figcaption></figure>

Các ứng dụng trò chuyện có thể được xuất bản dưới dạng:

* Chạy Ứng Dụng
* Nhúng vào Trang web
* Truy Cập Tài liệu API

Các ứng dụng quy trình làm việc có thể được xuất bản dưới dạng:

* Chạy Ứng Dụng
* Chạy Ứng Dụng hàng loạt
* Truy Cập Tài liệu API

Bạn cũng có thể nhấn "Khôi Phục" để xem trước phiên bản đã được xuất bản cuối cùng của ứng dụng. Xác nhận khôi phục sẽ sử dụng phiên bản quy trình làm việc đã được xuất bản cuối cùng để ghi đè lên phiên bản quy trình làm việc hiện tại.


# Export/Import

Bạn có thể xuất/nhập các mẫu ứng dụng dưới dạng tệp DSL (Ngôn ngữ dành riêng cho miền) định dạng YAML trong studio để chia sẻ ứng dụng với các thành viên trong nhóm của bạn.

Để nhập tệp DSL vào danh sách ứng dụng studio:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FSAAmsu0RCLyB73bGsIIt%2FCapture.JPG?alt=media&amp;token=4e8b3e50-8303-41be-aaf4-1cf25135b00e" alt=""><figcaption></figcaption></figure>

Để xuất tệp DSL từ danh sách ứng dụng studio:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F2b9sSGRB0KxjbwwWQH1D%2FCapture.JPG?alt=media&amp;token=9aff13e7-fa3d-49cb-b872-156ec0b84036" alt=""><figcaption></figcaption></figure>

Để xuất tệp DSL từ trang điều phối quy trình công việc:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FF8YAGXvwwTl6GHfQr60G%2FCapture.JPG?alt=media&amp;token=cc03fa1d-6e29-4bcc-b3ad-8e7de7090cc2" alt=""><figcaption></figcaption></figure>


# RAG (Tạo tăng cường truy xuất)

## Khái niệm về RAG

Kiến trúc RAG (Retreival-Augmented Generation), với cốt lõi là tìm kiếm vector, đã trở thành khung công nghệ hàng đầu để giải quyết hai thách thức lớn của các mô hình lớn: thu thập kiến thức bên ngoài mới nhất và giảm thiểu các vấn đề liên quan đến việc tạo ra thông tin không chính xác. Kiến trúc này đã được triển khai rộng rãi trong nhiều tình huống ứng dụng thực tế.

Các nhà phát triển có thể sử dụng công nghệ này để xây dựng các bot dịch vụ khách hàng được hỗ trợ bởi AI, các cơ sở tri thức doanh nghiệp, công cụ tìm kiếm AI, v.v. Những hệ thống này tương tác với các hình thức kiến thức được tổ chức thông qua đầu vào ngôn ngữ tự nhiên. Một ví dụ tiêu biểu về ứng dụng RAG là như sau:

Trong sơ đồ dưới đây, khi người dùng hỏi, "Ai là Tổng thống của Hoa Kỳ?", hệ thống không trực tiếp chuyển câu hỏi này đến mô hình lớn để lấy câu trả lời. Thay vào đó, nó trước tiên tiến hành tìm kiếm vector trong cơ sở tri thức (như Wikipedia, được thể hiện trong sơ đồ) cho câu hỏi của người dùng. Nó tìm thấy nội dung liên quan thông qua việc đối sánh ngữ nghĩa (ví dụ: "Biden là Tổng thống thứ 46 hiện tại của Hoa Kỳ…"), sau đó cung cấp câu hỏi của người dùng cùng với kiến thức tìm được cho mô hình lớn. Điều này cho phép mô hình có đủ và hoàn thiện kiến thức để trả lời câu hỏi, từ đó đưa ra câu trả lời đáng tin cậy hơn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FohhCZC5LuDo1hjlxP85R%2F0.png?alt=media&amp;token=713ac91b-1ca0-4647-8989-f46aedb479b2" alt=""><figcaption><p><strong>Kiến trúc cơ bản của RAG</strong></p></figcaption></figure>

## Tại sao điều này là cần thiết?

Chúng ta có thể ví một mô hình lớn như một chuyên gia siêu đẳng, hiểu biết về nhiều lĩnh vực của con người. Tuy nhiên, chuyên gia này cũng có những giới hạn; ví dụ, họ không biết tình huống cá nhân của bạn, vì những thông tin đó là riêng tư và không có sẵn công khai trên internet, do đó họ không có cơ hội học nó từ trước.

Khi bạn muốn thuê chuyên gia siêu đẳng này làm cố vấn tài chính gia đình của mình, bạn cần cho phép họ xem xét các hồ sơ đầu tư, chi tiêu gia đình, và các dữ liệu liên quan khác trước khi họ có thể trả lời các câu hỏi của bạn. Điều này cho phép họ cung cấp lời khuyên chuyên nghiệp phù hợp với hoàn cảnh cá nhân của bạn.

**Đây là điều mà hệ thống RAG làm: nó giúp mô hình lớn tạm thời tiếp cận kiến thức bên ngoài mà nó không sở hữu, cho phép nó tìm kiếm câu trả lời trước khi phản hồi câu hỏi.**

Dựa trên ví dụ này, rõ ràng rằng yếu tố quan trọng nhất của hệ thống RAG là việc truy xuất kiến thức bên ngoài. Khả năng của chuyên gia cung cấp lời khuyên tài chính chuyên nghiệp phụ thuộc vào việc tìm kiếm chính xác thông tin cần thiết. Nếu chuyên gia truy xuất thông tin không liên quan đến đầu tư tài chính, như kế hoạch giảm cân của gia đình, ngay cả chuyên gia tài giỏi nhất cũng sẽ trở nên không hiệu quả.


# Hybrid Search (Tìm kiếm kết hợp)

## Tại sao tìm kiếm kết hợp lại cần thiết?

Phương pháp chính trong giai đoạn truy xuất của RAG là Vector Search, dựa trên đối sánh liên quan ngữ nghĩa. Nguyên lý kỹ thuật bao gồm việc chia các tài liệu từ các cơ sở tri thức bên ngoài thành các đoạn văn hoặc câu hoàn chỉnh về ngữ nghĩa, sau đó chuyển đổi chúng qua một quá trình gọi là nhúng vào một loạt các biểu thức số (vector đa chiều) mà máy tính có thể hiểu được. Truy vấn của người dùng cũng trải qua một quá trình chuyển đổi tương tự.

Máy tính có thể phát hiện ra các mối quan hệ ngữ nghĩa tinh tế giữa các truy vấn của người dùng và các câu. Ví dụ, sự liên quan ngữ nghĩa giữa "một con mèo đuổi bắt một con chuột" và "một con mèo con săn một con chuột" cao hơn so với giữa "một con mèo đuổi bắt một con chuột" và "tôi thích ăn giăm bông." Sau khi xác định được văn bản có độ liên quan cao nhất, hệ thống RAG cung cấp nó như là ngữ cảnh cùng với truy vấn của người dùng cho mô hình lớn, giúp trả lời câu hỏi.

Ngoài các tìm kiếm văn bản ngữ nghĩa phức tạp, Vector Search còn có những ưu điểm khác:

* Hiểu các ngữ nghĩa tương tự (ví dụ: mouse/mousetrap/cheese, Google/Bing/search engine)
* Hiểu đa ngôn ngữ (ví dụ: đối sánh đầu vào tiếng Trung với nội dung tiếng Anh)
* Hiểu đa phương thức (hỗ trợ đối sánh văn bản, hình ảnh, âm thanh và video)
* Chịu lỗi (xử lý các lỗi chính tả, mô tả mơ hồ)

Tuy nhiên, Vector Search có thể kém hiệu quả trong một số tình huống nhất định, như:

* Tìm kiếm tên người hoặc vật (ví dụ: Elon Musk, iPhone 15)
* Tìm kiếm từ viết tắt hoặc cụm từ ngắn (ví dụ: RAG, RLHF)
* Tìm kiếm ID (ví dụ: `gpt-3.5-turbo`, `titan-xlarge-v1.01`)

Những hạn chế này là nơi mà tìm kiếm từ khóa truyền thống phát huy ưu thế, với khả năng:

* Đối sánh chính xác (ví dụ: tên sản phẩm, tên người, số sản phẩm)
* Đối sánh số lượng ký tự nhỏ (vector search hoạt động kém với ít ký tự, nhưng người dùng thường nhập chỉ vài từ khóa)
* Đối sánh từ vựng tần suất thấp (thường mang ý nghĩa quan trọng hơn, như trong câu "Bạn có muốn đi uống cà phê với tôi không?", các từ như "uống" và "cà phê" mang trọng số lớn hơn "bạn", "muốn", "tôi")

Trong hầu hết các tình huống tìm kiếm văn bản, điều quan trọng là đảm bảo rằng các kết quả liên quan nhất xuất hiện trong danh sách ứng viên. Tìm kiếm Vector và Tìm kiếm từ khóa mỗi phương pháp đều có những điểm mạnh trong lĩnh vực tìm kiếm. Hybrid Search kết hợp các ưu điểm của cả hai kỹ thuật trong khi bù đắp cho những thiếu sót tương ứng của chúng.

Trong Hybrid Search, các chỉ mục vector và từ khóa được thiết lập trước trong cơ sở dữ liệu. Khi người dùng nhập truy vấn, hệ thống sẽ tìm kiếm văn bản liên quan nhất trong các tài liệu bằng cả hai phương pháp tìm kiếm.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FpUspUy2zUMKouF8IK2hA%2F0.png?alt=media&amp;token=e9128042-9f4c-4007-8700-a136f77df51d" alt=""><figcaption><p>Hybrid Search</p></figcaption></figure>

"Hybrid Search" không có một định nghĩa xác định; bài viết này mô tả nó như là sự kết hợp giữa Vector Search và Keyword Search. Tuy nhiên, thuật ngữ này cũng có thể áp dụng cho các kết hợp khác của các thuật toán tìm kiếm. Ví dụ, chúng ta có thể kết hợp công nghệ đồ thị tri thức, được sử dụng để lấy các mối quan hệ thực thể, với Vector Search.

Các hệ thống tìm kiếm khác nhau mỗi hệ thống đều xuất sắc trong việc khám phá các mối quan hệ tinh tế khác nhau trong văn bản (đoạn văn, câu, từ), bao gồm các mối quan hệ chính xác, mối quan hệ ngữ nghĩa, mối quan hệ chủ đề, mối quan hệ cấu trúc, mối quan hệ thực thể, mối quan hệ thời gian, và mối quan hệ sự kiện. Có thể nói rằng không có một chế độ tìm kiếm đơn lẻ phù hợp cho tất cả các tình huống. **Hybrid Search, bằng cách tích hợp nhiều hệ thống tìm kiếm, đạt được sự bổ sung lẫn nhau giữa các công nghệ tìm kiếm khác nhau.**

## Vector Search <a href="#vector-search" id="vector-search"></a>

Định nghĩa: Vector Search liên quan đến việc tạo ra các nhúng truy vấn và sau đó tìm kiếm các đoạn văn chứa các nhúng này nhất có thể trong thuật ngữ biểu diễn vector.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FoZs762BGrBz5eeJExT9v%2F0.png?alt=media&amp;token=1c84cf8c-732d-4f2d-95a8-b803b862b59b" alt=""><figcaption><p>Cài đặt cho Vector Search</p></figcaption></figure>

**TopK:** Cài đặt này được sử dụng để lọc các đoạn văn có độ tương đồng cao nhất với truy vấn của người dùng. Hệ thống cũng tự động điều chỉnh số lượng đoạn dựa trên kích thước cửa sổ ngữ cảnh của mô hình được chọn. Giá trị mặc định cho cài đặt này là 3.

**Ngưỡng điểm**: Cài đặt này được sử dụng để thiết lập ngưỡng tương đồng cho việc chọn các đoạn văn. Điều này có nghĩa là chỉ có các đoạn văn vượt qua điểm số được thiết lập mới được trả về. Theo mặc định, cài đặt này được tắt, nghĩa là hệ thống không lọc các giá trị tương đồng của các đoạn văn đã được trả về. Khi kích hoạt, giá trị mặc định được thiết lập là 0.5.

**Rerank Model:** Sau khi cấu hình khóa API của mô hình sắp xếp lại trên trang "Nhà cung cấp Mô hình", bạn có thể kích hoạt "Mô hình sắp xếp lại" trong cài đặt tìm kiếm. Hệ thống sau đó thực hiện sắp xếp lại ngữ nghĩa của các kết quả tài liệu đã được truy xuất sau tìm kiếm ngữ nghĩa, tối ưu hóa thứ tự của các kết quả này. Một khi mô hình sắp xếp lại được thiết lập, các cài đặt TopK và ngưỡng điểm số chỉ có hiệu lực trong bước sắp xếp lại.

## **Tìm kiếm Toàn văn bản**

Định nghĩa: Tìm kiếm Toàn văn bản liên quan đến việc tạo chỉ mục cho tất cả các từ trong một tài liệu, cho phép người dùng truy vấn bất kỳ thuật ngữ nào và lấy các đoạn văn chứa các thuật ngữ đó.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FmzzQgsj9caLx3xbrPwBT%2F0.png?alt=media&amp;token=91f5874c-fee9-49dd-800b-eb67937226aa" alt=""><figcaption><p>Cài đặt cho tìm kiếm toàn văn bản</p></figcaption></figure>

**TopK**: Cài đặt này được sử dụng để lựa chọn các đoạn văn có độ tương đồng cao nhất với truy vấn của người dùng. Hệ thống cũng tự động điều chỉnh số lượng đoạn văn dựa trên kích thước cửa sổ ngữ cảnh của mô hình được chọn. Giá trị mặc định cho TopK được thiết lập là 3.

**Rerank Model:** Sau khi cấu hình khóa API cho mô hình Rerank trên trang "Nhà cung cấp Mô hình", bạn có thể kích hoạt "Rerank Model" trong cài đặt tìm kiếm. Hệ thống sau đó thực hiện sắp xếp lại ngữ nghĩa của kết quả tài liệu được truy xuất thông qua tìm kiếm toàn văn bản, tối ưu hóa thứ tự của các kết quả này. Một khi mô hình Rerank được cấu hình, các cài đặt TopK và bất kỳ cài đặt ngưỡng điểm số nào chỉ có hiệu lực trong bước Rerank.

## Hybrid Search <a href="#hybrid-search" id="hybrid-search"></a>

Hybrid Search hoạt động bằng cách thực hiện đồng thời Tìm kiếm Toàn văn bản và Tìm kiếm Vector. Sau đó, nó áp dụng một bước sắp xếp lại để chọn ra các kết quả tốt nhất phù hợp với truy vấn của người dùng từ cả hai loại kết quả tìm kiếm. Để sử dụng tính năng này một cách hiệu quả, cần thiết phải cấu hình API của Mô hình Rerank.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FHeqyTOT4WmBL9fboehj9%2Fimage%20(2).png?alt=media&amp;token=e59c93d8-9618-41f6-8aeb-d8b944226b5c" alt=""><figcaption><p>Cài đặt cho Hybrid Search</p></figcaption></figure>

* **TopK**: Cài đặt này được sử dụng để lọc các đoạn văn có độ tương đồng cao nhất với truy vấn của người dùng. Hệ thống sẽ tự động điều chỉnh số lượng đoạn văn dựa trên kích thước cửa sổ ngữ cảnh của mô hình đang sử dụng. Giá trị mặc định cho TopK được thiết lập là 3.
* **Rerank Model**: Sau khi cấu hình khóa API của mô hình Rerank trên trang "Nhà cung cấp Mô hình", bạn có thể kích hoạt "Rerank Model" trong cài đặt tìm kiếm. Hệ thống sẽ thực hiện sắp xếp lại ngữ nghĩa của kết quả tài liệu được truy xuất thông qua tìm kiếm hỗn hợp, tối ưu hóa thứ tự của các kết quả này. Một khi mô hình Rerank được cấu hình, các cài đặt TopK và bất kỳ cài đặt ngưỡng điểm số nào cũng chỉ có hiệu lực trong bước Rerank.

## Cài đặt Chế độ Tìm kiếm Khi Tạo Kiến thức:

Để thiết lập chế độ tìm kiếm khi tạo cơ sở kiến thức, điều hướng đến trang "Kiến thức -> Tạo Kiến thức". Tại đó, bạn có thể cấu hình các chế độ tìm kiếm khác nhau trong phần cài đặt truy xuất.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F6jZnMup2YdrCn4gOxPCt%2F0.png?alt=media&amp;token=d53ed95b-28df-472f-a0f0-4b89b6e28562" alt=""><figcaption><p>Đặt chế độ tìm kiếm khi tạo cơ sở kiến ​​thức</p></figcaption></figure>

## Thay đổi Chế độ Tìm kiếm trong Kỹ thuật Kích thích:

Bạn có thể thay đổi chế độ tìm kiếm trong quá trình tạo ứng dụng bằng cách điều hướng đến trang "Kỹ thuật Kích thích -> Ngữ cảnh -> Chọn Kiến thức -> Cài đặt". Điều này cho phép điều chỉnh các chế độ tìm kiếm khác nhau trong giai đoạn sắp xếp kích thích.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FE1BixTCINsKprbTKRokv%2F0.png?alt=media&amp;token=f2fe35da-9c27-474d-afa1-af68bb3c4e45" alt=""><figcaption><p>Sửa đổi Chế độ tìm kiếm trong Kỹ thuật nhắc nhở</p></figcaption></figure>


# Rerank (Sắp xếp lại)

## Tại sao cần phải Rerank?

Hybrid Search kết hợp các lợi ích của các công nghệ tìm kiếm khác nhau để đạt được kết quả gợi nhớ tốt hơn. Tuy nhiên, kết quả từ các chế độ tìm kiếm khác nhau cần được hợp nhất và chuẩn hóa (chuyển đổi dữ liệu thành một phạm vi hoặc phân phối chuẩn đồng nhất để so sánh, phân tích và xử lý tốt hơn) trước khi được cung cấp cùng nhau cho mô hình lớn. Điều này đòi hỏi sự giới thiệu của hệ thống điểm số: Rerank Model.

Mô hình Rerank hoạt động bằng cách sắp xếp lại danh sách các tài liệu ứng cử viên dựa trên sự phù hợp ngữ nghĩa với câu hỏi của người dùng, từ đó cải thiện kết quả của việc sắp xếp ngữ nghĩa. Điều này được thực hiện bằng cách tính toán một điểm số liên quan giữa câu hỏi của người dùng và mỗi tài liệu ứng cử viên, trả về một danh sách tài liệu được sắp xếp theo mức độ liên quan từ cao đến thấp. Các mô hình Rerank phổ biến bao gồm Cohere rerank, bge-reranker và các mô hình khác.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F19FZRUkTidwOmdiaouFq%2F0.png?alt=media&amp;token=335548ee-eb14-45d0-8d32-855517516db7" alt=""><figcaption><p>Hybrid Search + Rerank</p></figcaption></figure>

Trong hầu hết các trường hợp, có một tìm kiếm ban đầu trước khi sắp xếp lại vì việc tính điểm số liên quan giữa một truy vấn và hàng triệu tài liệu là rất không hiệu quả. **Do đó, sắp xếp lại thường được đặt ở cuối quá trình tìm kiếm, làm cho nó rất phù hợp để hợp nhất và sắp xếp kết quả từ các hệ thống tìm kiếm khác nhau.**

Tuy nhiên, sắp xếp lại không chỉ áp dụng để hợp nhất kết quả từ các hệ thống tìm kiếm khác nhau. Ngay cả trong một chế độ tìm kiếm duy nhất, việc giới thiệu một bước sắp xếp lại có thể cải thiện hiệu suất gợi nhớ của các tài liệu, chẳng hạn như việc thêm sắp xếp lại ngữ nghĩa sau tìm kiếm từ khóa.

Trong thực tế, ngoài việc chuẩn hóa kết quả từ nhiều truy vấn, chúng ta thường giới hạn số lượng đoạn văn được chuyển đến mô hình lớn trước khi cung cấp các đoạn văn liên quan (tức là TopK, có thể được đặt trong các tham số mô hình rerank). Điều này làm vì cửa sổ đầu vào của mô hình lớn có giới hạn kích thước (thông thường là 4K, 8K, 16K, 128K lượt Token), và bạn cần chọn một chiến lược phân đoạn và giá trị TopK phù hợp dựa trên giới hạn kích thước của cửa sổ đầu vào của mô hình được chọn.

Cần lưu ý rằng ngay cả khi cửa sổ ngữ cảnh của mô hình đủ lớn, quá nhiều đoạn văn được gợi nhớ có thể đưa ra nội dung có mức độ liên quan thấp hơn, do đó làm giảm chất lượng của câu trả lời. Do đó, tham số TopK cho rerank không nhất thiết phải tốt hơn khi lớn hơn.

Rerank không phải là một phương tiện thay thế cho công nghệ tìm kiếm mà là một công cụ hỗ trợ để tăng cường các hệ thống tìm kiếm hiện có. **Ưu điểm lớn nhất của nó là không chỉ cung cấp một phương pháp đơn giản và ít phức tạp để cải thiện kết quả tìm kiếm mà còn cho phép người dùng tích hợp mức độ liên quan ngữ nghĩa vào các hệ thống tìm kiếm hiện có mà không cần phải thay đổi cơ sở hạ tầng đáng kể.**

## Làm thế nào để có được Mô hình Cohere Rerank?

Truy cập vào <https://cohere.com/rerank>, đăng ký trên trang web và đăng ký quyền sử dụng cho mô hình Rerank để nhận API key.

## Thiết lập Mô hình Rerank trong Chế độ Knowledge Search

Truy cập vào cài đặt Rerank bằng cách điều hướng đến “Kiến thức -> Tạo kiến thức -> Cài đặt Lấy lại”. Ngoài việc thiết lập Rerank trong quá trình tạo kiến thức, bạn cũng có thể sửa đổi cấu hình Rerank trong cài đặt của một cơ sở kiến thức đã tạo và thay đổi cấu hình Rerank trong các cài đặt chế độ gợi nhớ kiến thức của sắp xếp ứng dụng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FRQPTMnElEQVWrCT4nfp4%2F0.png?alt=media&amp;token=ecca58ac-cb9b-4ca5-8fb1-d9f82dc2e83a" alt=""><figcaption><p>Thiết lập Mô hình Rerank trong Chế độ Knowledge Search</p></figcaption></figure>

**TopK**: Dùng để thiết lập số lượng tài liệu có liên quan được trả về sau Rerank.

**Ngưỡng Điểm**: Dùng để thiết lập ngưỡng điểm số tối thiểu cho các tài liệu có liên quan được trả về sau Rerank. Sau khi thiết lập mô hình Rerank, các thiết lập TopK và Ngưỡng Điểm số chỉ có hiệu lực trong bước Rerank.

Thiết lập Mô hình Rerank trong truy xuất đa hướng

Bật mô hình Rerank bằng cách thiết lập nó vào chế độ truy xuất đa hướng trong trang “Orchestrate -> Ngữ cảnh -> Cài đặt”.

Giải thích về Chế độ truy xuất đa hướng: 🔗

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fv6sPJmsDO32rF4R5Goks%2FCapture.JPG?alt=media&amp;token=dd9f1bdc-7b50-4624-9c87-825117aac64a" alt=""><figcaption><p>Thiết lập Mô hình Rerank trong truy xuất đa hướng</p></figcaption></figure>


# Retrieval (Truy xuất)

Khi người dùng xây dựng các ứng dụng trí tuệ nhân tạo câu hỏi và trả lời dựa trên cơ sở kiến thức, nếu nhiều cơ sở kiến thức được liên kết trong ứng dụng, ChatX hỗ trợ hai chế độ truy xuất: N-to-1 Truy xuất và Truy xuất đa hướng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FTKcvJbOWN7tkCs6Nf5EU%2FCapture.JPG?alt=media&amp;token=2b3ba862-1a02-4182-b2f6-e935ce39e323" alt=""><figcaption><p>Cài đặt truy xuất</p></figcaption></figure>

## Cài đặt Truy xuất <a href="#headlessui-dialog-title-rko" id="headlessui-dialog-title-rko"></a>

### **N-to-1** Truy xuất <a href="#n-to-1-retrieval" id="n-to-1-retrieval"></a>

Dựa trên ý định của người dùng và mô tả của kiến thức, Agent tự độc lập xác định và chọn ra cơ sở kiến thức phù hợp nhất để truy vấn văn bản liên quan. Chế độ này phù hợp cho các ứng dụng có kiến thức khác biệt và một số lượng nhỏ cơ sở kiến thức. N-to-1 Truy xuất dựa vào khả năng suy luận của mô hình để chọn ra cơ sở kiến thức phù hợp nhất dựa trên ý định của người dùng. Khi suy luận kiến thức, kiến thức phục vụ như một công cụ cho Agent, được chọn thông qua suy luận ý định; mô tả công cụ về cơ bản là mô tả kiến thức.

Khi người dùng tải lên kiến thức, hệ thống tự động tạo ra một mô tả tóm tắt cho mỗi cơ sở kiến thức. Để đạt được kết quả truy xuất tốt nhất trong chế độ này, bạn có thể xem mô tả tóm tắt được tạo ra bởi hệ thống dưới “Kiến thức -> Cài đặt -> Mô tả kiến thức” và kiểm tra xem nội dung này có tóm tắt rõ ràng nội dung của kiến thức không.

Dưới đây là sơ đồ kỹ thuật cho N-to-1 Truy xuất:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FSrst1m2RuXJeXCQ2c9fq%2F0.png?alt=media&amp;token=6ec8e86c-0403-44a0-8fed-8ce6ce4273fe" alt=""><figcaption><p>N-to-1 Retrieval Truy xuất</p></figcaption></figure>

Do đó, hiệu quả thu hồi của chế độ này có thể bị ảnh hưởng khi có quá nhiều cơ sở kiến thức hoặc khi các mô tả kiến thức thiếu sự phân biệt đủ. Chế độ này phù hợp hơn cho các ứng dụng với ít cơ sở kiến thức hơn.

Mẹo: Gọi hàm OpenAI hiện đã hỗ trợ nhiều công cụ gọi, và ChatX dự định nâng cấp chế độ này thành "N-to-M Truy xuất " trong các phiên bản tương lai.

## Truy xuất đa hướng

Dựa trên ý định của người dùng, chế độ này kết hợp tất cả các cơ sở kiến thức đồng thời, truy vấn các phần văn bản liên quan từ nhiều cơ sở kiến thức, và sau một bước sắp xếp lại, lựa chọn kết quả tốt nhất phù hợp với câu hỏi của người dùng từ các kết quả truy vấn đa hướng. Yêu cầu cấu hình API cho mô hình Rerank. Trong chế độ Truy xuất đa hướng, hệ thống truy xuất nội dung văn bản liên quan đến câu hỏi của người dùng từ tất cả các cơ sở kiến thức liên kết với ứng dụng, kết hợp các kết quả từ việc thu hồi đa hướng và sắp xếp lại các tài liệu thu được một cách ngữ nghĩa bằng mô hình Rerank.

Trong chế độ Truy xuất đa hướng, việc cấu hình mô hình Rerank là cần thiết. Cách cấu hình mô hình Rerank: 🔗

Dưới đây là sơ đồ kỹ thuật cho Truy xuất đa hướng:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fr6pALVmRJfk4OJTsPsY3%2F0.png?alt=media&amp;token=270aabd0-4f93-4aac-a07d-8c21b765cc78" alt=""><figcaption><p>Truy xuất đa hướng</p></figcaption></figure>

Vì Truy xuất đa hướng không phụ thuộc vào khả năng suy luận của mô hình hoặc các mô tả kiến thức, chế độ này có thể đạt được kết quả thu hồi chất lượng cao hơn trong các tìm kiếm đa cơ sở kiến thức. Ngoài ra, việc tích hợp bước Rerank có thể hiệu quả cải thiện thu hồi tài liệu. Do đó, khi tạo một ứng dụng câu hỏi và trả lời cơ sở kiến thức liên kết với nhiều cơ sở kiến thức, chúng tôi khuyên bạn nên định cấu hình chế độ truy xuất là Truy xuất đa hướng.


# Knowledge Import ( Nhập kiến thức)

Hầu hết các mô hình ngôn ngữ sử dụng dữ liệu huấn luyện lỗi thời và có giới hạn độ dài cho ngữ cảnh của mỗi yêu cầu. Ví dụ, GPT-3.5 được huấn luyện trên các tập dữ liệu từ năm 2021 và có giới hạn khoảng 4k token cho mỗi yêu cầu. Điều này có nghĩa là các nhà phát triển muốn ứng dụng AI của họ dựa trên các cuộc trò chuyện ngữ cảnh mới nhất và riêng tư phải sử dụng các kỹ thuật như embedding.

Tính năng kiến thức của ChatX cho phép các nhà phát triển (và thậm chí cả người dùng không kỹ thuật) dễ dàng quản lý kiến thức và tự động tích hợp chúng vào các ứng dụng AI. Tất cả những gì bạn cần làm là chuẩn bị nội dung văn bản, chẳng hạn như:

* Nội dung văn bản dài (tệp TXT, Markdown, DOCX, HTML, JSONL, hoặc thậm chí PDF)
* Dữ liệu có cấu trúc (CSV, Excel, v.v.)

Ngoài ra, chúng tôi đang dần hỗ trợ đồng bộ dữ liệu từ các nguồn dữ liệu khác nhau vào kiến thức, bao gồm:

* GitHub
* Cơ sở dữ liệu
* Trang web
* ...

{% hint style="info" %}
**Thực hành**: Nếu công ty của bạn muốn xây dựng một trợ lý dịch vụ khách hàng AI dựa trên các cơ sở kiến thức và tài liệu sản phẩm hiện có, bạn có thể tải lên các tài liệu này vào một cơ sở kiến thức trong ChatX và tạo một ứng dụng trò chuyện. Điều này có thể mất vài tuần trước đây và khó duy trì liên tục.
{% endhint %}

## Kiến thức và Tài liệu

Trong ChatX, các cơ sở kiến thức là tập hợp các tài liệu. Một cơ sở kiến thức có thể được tích hợp toàn bộ vào một ứng dụng để sử dụng làm ngữ cảnh. Các tài liệu có thể được tải lên bởi các nhà phát triển hoặc nhân viên vận hành, hoặc được đồng bộ từ các nguồn dữ liệu khác (thường tương ứng với một đơn vị tệp trong nguồn dữ liệu).

#### **Các bước để tải lên một tài liệu:**

1. Tải lên tệp của bạn, thường là tệp văn bản dài hoặc bảng tính
2. Phân đoạn, làm sạch và xem trước
3. ChatX gửi nó đến nhà cung cấp LLM để embedding thành dữ liệu vector và lưu trữ
4. Đặt metadata cho tài liệu
5. Sẵn sàng sử dụng trong ứng dụng!

#### Cách viết một mô tả kiến thức tốt

Khi nhiều cơ sở kiến thức được tham chiếu trong một ứng dụng, AI sử dụng mô tả của kiến thức và câu hỏi của người dùng để xác định cơ sở kiến thức nào sẽ sử dụng để trả lời câu hỏi của người dùng. Do đó, một mô tả kiến thức được viết tốt có thể cải thiện độ chính xác của AI trong việc chọn kiến thức.

Chìa khóa để viết một mô tả kiến thức tốt là mô tả rõ ràng nội dung và đặc điểm của kiến thức. Đề xuất rằng mô tả kiến thức bắt đầu với điều này: **`Chỉ hữu ích khi câu hỏi bạn muốn trả lời là về: mô tả cụ thể`**. Dưới đây là một ví dụ về mô tả kiến thức bất động sản:

> Chỉ hữu ích khi câu hỏi bạn muốn trả lời là về dữ liệu thị trường bất động sản toàn cầu từ năm 2010 đến năm 2020. Dữ liệu này bao gồm các thông tin như giá nhà trung bình, khối lượng bán bất động sản, và các loại hình nhà ở cho mỗi thành phố. Ngoài ra, cơ sở kiến thức này còn bao gồm một số chỉ số kinh tế như GDP và tỷ lệ thất nghiệp, cũng như một số chỉ số xã hội như dân số và trình độ giáo dục. Những chỉ số này có thể giúp phân tích các xu hướng và yếu tố ảnh hưởng đến thị trường bất động sản. Với dữ liệu này, chúng ta có thể hiểu được các xu hướng phát triển của thị trường bất động sản toàn cầu, phân tích sự thay đổi của giá nhà ở các thành phố khác nhau, và hiểu được tác động của các yếu tố kinh tế và xã hội lên thị trường bất động sản.

## Tạo một kiến thức

1. Click vào "Kiến thức" trong thanh điều hướng chính của ChatX. Trên trang này, bạn có thể thấy các cơ sở kiến thức hiện có. Click vào "Tạo Kiến thức" để vào trình hướng dẫn tạo.
2. Nếu bạn đã chuẩn bị sẵn các tệp của mình, bạn có thể bắt đầu bằng cách tải các tệp lên.
3. Nếu bạn chưa chuẩn bị sẵn tài liệu, bạn có thể tạo một cơ sở kiến thức trống trước.

## Tải lên Tài liệu **bằng cách tải lên tệp**

1. Chọn tệp bạn muốn tải lên. Chúng tôi hỗ trợ tải lên hàng loạt.
2. Xem trước toàn văn bản.
3. Thực hiện phân đoạn và làm sạch.
4. Đợi ChatX xử lý dữ liệu cho bạn; bước này thường tiêu thụ token của nhà cung cấp LLM.

## Tiền xử lý và Làm sạch Văn bản

Tiền xử lý và làm sạch văn bản đề cập đến việc ChatX tự động phân đoạn và vector hóa tài liệu dữ liệu của bạn để câu hỏi của người dùng (đầu vào) có thể khớp với các đoạn văn liên quan (Q đến P) và tạo ra kết quả.

Khi tải lên một cơ sở kiến thức, bạn cần chọn một **chế độ lập chỉ mục** để chỉ định cách dữ liệu được khớp. Điều này ảnh hưởng đến độ chính xác của câu trả lời AI.

Ở **chế độ Chất lượng cao**, API embedding của OpenAI được sử dụng để tăng độ chính xác trong các truy vấn của người dùng.

Ở **chế độ Kinh tế**, các động cơ vector ngoại tuyến, lập chỉ mục từ khóa, v.v. được sử dụng để giảm chi phí với sự giảm độ chính xác.

Ở **chế độ Phân đoạn theo định dạng Hỏi & Đáp**, thay vì khớp "Q đến P" (câu hỏi khớp với đoạn văn), nó sử dụng "Q đến Q" (câu hỏi khớp với câu hỏi). Sau khi phân đoạn, các cặp Hỏi & Đáp được tạo ra cho mỗi đoạn văn. Khi người dùng đặt câu hỏi, hệ thống tìm câu hỏi tương tự nhất và trả lại đoạn văn tương ứng như là câu trả lời. Điều này chính xác hơn vì nó trực tiếp khớp với câu hỏi của người dùng và truy xuất thông tin họ cần.

> Câu hỏi có cú pháp đầy đủ trong khi từ khóa thiếu ngữ nghĩa và ngữ cảnh. Vì vậy, Q to Q cải thiện sự rõ ràng và xử lý các câu hỏi có tần suất cao tương tự tốt hơn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F3wabfND5Sp21DvDBYS3g%2F0.png?alt=media&amp;token=403b6c17-eadd-470f-93e4-ecba549a0301" alt=""><figcaption><p>Trong chế độ Phân đoạn theo định dạng Hỏi &#x26; Đáp, văn bản được tóm tắt thành nhiều cặp Hỏi &#x26; Đáp.</p></figcaption></figure>

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FDjx6ev259OyNNUxe7tav%2F0.png?alt=media&amp;token=a6cc5093-310f-43ef-ae26-fbea0809973f" alt=""><figcaption><p><strong>Sự khác biệt giữa các chế độ lập chỉ mục Q đến P và Q đến Q</strong></p></figcaption></figure>

## Chỉnh sửa Tài liệu

Vì lý do kỹ thuật, nếu nhà phát triển thực hiện các thay đổi sau đối với tài liệu, ChatX sẽ tạo ra một tài liệu mới cho bạn, và tài liệu cũ sẽ được lưu trữ và ngừng hoạt động:

1. Điều chỉnh các thiết lập phân đoạn và làm sạch.
2. Tải lại tệp.

ChatX hỗ trợ tùy chỉnh văn bản đã phân đoạn và làm sạch bằng cách thêm, xóa và chỉnh sửa các đoạn văn. Bạn có thể điều chỉnh phân đoạn của mình để làm cho kiến thức của bạn chính xác hơn. Click vào "Document" -> "paragraph" -> "Edit" trong kiến thức để chỉnh sửa nội dung đoạn văn và từ khóa tùy chỉnh. Click vào "Document" -> "paragraph" -> "Add segment" -> "Add a segment" để thêm đoạn văn mới thủ công. Hoặc click vào "Document" -> "paragraph" -> "Add segment" -> "Batch add" để thêm nhiều đoạn văn mới hàng loạt.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FaXtvLvqaQhCwQQ5AvYfY%2FCapture.JPG?alt=media&amp;token=9beaa3d1-a999-4c15-9b60-a292b35e9b11" alt=""><figcaption><p>Chỉnh sửa</p></figcaption></figure>

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fm00z9NvtAWkNrKMZ5vxY%2FCapture.JPG?alt=media&amp;token=aebaf0f4-27a8-41a2-99bf-c9c214435fa3" alt=""><figcaption><p>Thêm</p></figcaption></figure>

## Tắt và Lưu trữ Tài liệu

* **Tắt, hủy tắt**: Kiến thức hỗ trợ tắt các tài liệu hoặc đoạn văn mà bạn tạm thời không muốn lập chỉ mục. Trong danh sách tài liệu của kiến thức, click vào nút "Disable" và tài liệu sẽ bị tắt. Bạn cũng có thể click vào nút "Disable" trong chi tiết tài liệu để tắt toàn bộ tài liệu hoặc một đoạn. Các tài liệu bị tắt sẽ không được lập chỉ mục. Để hủy tắt, click vào "Enable" trên một tài liệu bị tắt.
* **Lưu trữ, hủy lưu trữ**: Một số dữ liệu tài liệu cũ không sử dụng có thể được lưu trữ nếu bạn không muốn xóa chúng. Sau khi lưu trữ, dữ liệu chỉ có thể được xem hoặc xóa, không thể chỉnh sửa. Trong danh sách tài liệu của kiến thức, click vào nút "Archive" để lưu trữ tài liệu. Tài liệu cũng có thể được lưu trữ trong trang chi tiết tài liệu. Các tài liệu đã lưu trữ sẽ không được lập chỉ mục. Tài liệu đã lưu trữ cũng có thể được hủy lưu trữ bằng cách click vào nút "Unarchive".

## Duy trì Kiến thức qua API

Đi tới "[Duy trì Kiến thức qua API](/ii-tinh-nang-co-ban/knowledge-import-nhap-kien-thuc/duy-tri-kien-thuc-qua-api)".

## Cài đặt Kiến thức

Click vào "**Settings**" trong điều hướng bên trái của kiến thức. Bạn có thể thay đổi các cài đặt sau cho kiến thức:

* **Tên** kiến thức để nhận diện cơ sở kiến thức.
* **Mô tả** kiến thức để cho phép AI sử dụng kiến thức một cách hợp lý hơn. Nếu mô tả trống, chiến lược lập chỉ mục tự động của ChatX sẽ được sử dụng.
* **Quyền** truy cập có thể được đặt thành "Only Me" hoặc "All Team Members". Những người không có quyền không thể xem và chỉnh sửa kiến thức.
* **Chế độ lập chỉ mục**: Ở chế độ Chất lượng cao, giao diện embedding của OpenAI sẽ được gọi để xử lý và cung cấp độ chính xác cao hơn khi người dùng truy vấn. Ở chế độ Kinh tế, các động cơ vector ngoại tuyến, lập chỉ mục từ khóa, v.v. sẽ được sử dụng để giảm độ chính xác mà không tiêu thụ token.

Note: Upgrading the indexing mode from Economic to High Quality will incur additional token consumption. Downgrading from High Quality to Economic will not consume tokens.

## Tích hợp vào Ứng dụng

Khi cơ sở kiến thức đã sẵn sàng, nó cần được tích hợp vào ứng dụng. Khi ứng dụng AI xử lý, nó sẽ tự động sử dụng nội dung kiến thức liên quan làm ngữ cảnh tham chiếu.

1. Đi tới trang "Prompt Arrangement" của ứng dụng.
2. Trong tùy chọn ngữ cảnh, chọn kiến thức bạn muốn tích hợp.
3. Lưu cài đặt để hoàn tất tích hợp.

## Hỏi & Đáp

**Q: Tôi nên làm gì nếu tải lên PDF bị lỗi?**

A: Nếu việc phân tích PDF của bạn bị lỗi dưới một số nội dung định dạng nhất định, bạn có thể xem xét chuyển đổi PDF sang định dạng Markdown, hiện cung cấp độ chính xác cao hơn, hoặc bạn có thể giảm việc sử dụng hình ảnh, bảng và các nội dung định dạng khác trong PDF. Chúng tôi đang nghiên cứu các cách để tối ưu hóa trải nghiệm sử dụng PDF.

**Q: Cơ chế tiêu thụ ngữ cảnh hoạt động như thế nào?** A: Với một cơ sở kiến thức được thêm vào, mỗi truy vấn sẽ tiêu thụ nội dung phân đoạn (hiện tại là embedding hai đoạn) + câu hỏi + prompt + lịch sử trò chuyện kết hợp. Tuy nhiên, nó sẽ không vượt quá giới hạn mô hình, chẳng hạn như 4096.

**Q: Kiến thức được nhúng xuất hiện ở đâu khi đặt câu hỏi?** A: Nó sẽ được nhúng làm ngữ cảnh trước câu hỏi.

**Q: Có bất kỳ sự ưu tiên nào giữa kiến thức được thêm và câu trả lời của OpenAI không?** A: Kiến thức đóng vai trò như ngữ cảnh và được sử dụng cùng với câu hỏi để LLM hiểu và trả lời; không có mối quan hệ ưu tiên.

**Q: Tại sao tôi có thể truy cập trong thử nghiệm nhưng không phải trong ứng dụng?** A: Bạn có thể khắc phục sự cố bằng cách làm theo các bước sau:

1. Đảm bảo bạn đã thêm văn bản trên trang prompt và nhấn vào nút lưu ở góc trên bên phải.
2. Kiểm tra xem nó có phản hồi bình thường trong giao diện gỡ lỗi prompt không.
3. Thử lại trong cửa sổ phiên WebApp mới.
4. Tối ưu hóa định dạng và chất lượng dữ liệu của bạn. Nếu không có bước nào trong số này giải quyết được vấn đề của bạn, vui lòng tham gia cộng đồng của chúng tôi để được trợ giúp.

**Q: Các API liên quan đến thử nghiệm truy cập sẽ được mở ra để ChatX có thể truy cập các cơ sở kiến thức và thực hiện tạo hội thoại bằng cách sử dụng các mô hình tùy chỉnh không?** A: Chúng tôi dự định mở Webhooks sau này; tuy nhiên, hiện tại chưa có kế hoạch cho tính năng này. Bạn có thể đạt được yêu cầu của mình bằng cách kết nối với bất kỳ cơ sở dữ liệu vector nào.

**Q: Làm thế nào để tôi thêm nhiều cơ sở kiến thức?** A: Do cân nhắc hiệu suất ngắn hạn, hiện tại chúng tôi chỉ hỗ trợ một cơ sở kiến thức. Nếu bạn có nhiều bộ dữ liệu, bạn có thể tải chúng lên trong cùng một cơ sở kiến thức để sử dụng.


# Đồng bộ từ Notion

Dify knowledge supports importing from Notion and setting up **Sync** so that data is automatically synced to Dify after updates in Notion.

## Xác minh quyền truy cập

1. Khi tạo cơ sở kiến thức, chọn nguồn dữ liệu, click "**Đồng bộ từ Notion" - "Đi đến kết nối**", và hoàn thành xác minh quyền truy cập theo hướng dẫn.
2. Bạn cũng có thể: click **Cài đặt--Nguồn dữ liệu--Thêm nguồn dữ liệu**, click **Thêm không gian làm việc** để hoàn thành xác minh quyền truy cập.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FksNySjXuHbt0BT0EXySH%2FCapture.JPG?alt=media&amp;token=396ff576-3b01-4778-8cb2-7eadb6616e6e" alt=""><figcaption><p>Kết nối Notion</p></figcaption></figure>

## **Nhập dữ liệu từ Notion**

Sau khi hoàn thành xác minh quyền truy cập, vào trang tạo kiến thức, click "**Đồng bộ từ Notion**", và chọn trang có quyền truy cập cần thiết để nhập dữ liệu.

## Phân đoạn và làm sạch

Tiếp theo, chọn **cài đặt phân đoạn** và **phương pháp lập chỉ mục** của bạn, **lưu và xử lý**. Đợi ChatX xử lý dữ liệu này, bước này thường cần tiêu thụ token từ các nhà cung cấp LLM. ChatX không chỉ hỗ trợ nhập các loại trang thông thường mà còn tóm tắt và lưu các thuộc tính trang dưới dạng loại cơ sở dữ liệu.

***Lưu ý: Hình ảnh và tệp hiện không được hỗ trợ nhập. Dữ liệu bảng sẽ được chuyển đổi thành văn bản.***

## **Đồng bộ dữ liệu từ Notion**

Nếu nội dung Notion của bạn đã được sửa đổi, bạn có thể click "Sync" trực tiếp trên trang danh sách tài liệu của ChatX để đồng bộ hóa dữ liệu chỉ với một lần click (Lưu ý rằng mỗi lần click, nội dung hiện tại sẽ được đồng bộ hóa). Bước này yêu cầu tiêu thụ token.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fklj2GhmbSdPC4TX8FjBP%2FCapture.JPG?alt=media&amp;token=8e28f428-88a9-471d-9742-404a8df75d6a" alt=""><figcaption><p><strong>Đồng bộ dữ liệu từ Notion</strong></p></figcaption></figure>

## (Phiên bản Cộng đồng) Hướng dẫn cấu hình tích hợp Notion

Tích hợp Notion được chia thành hai cách: **tích hợp nội bộ** và **tích hợp công khai**. Nó có thể được cấu hình trong ChatX theo nhu cầu.

Để biết sự khác biệt cụ thể giữa hai phương pháp tích hợp, vui lòng tham khảo [tài liệu chính thức của Notion](https://developers.notion.com/docs/authorization).

### **1. Sử dụng tích hợp nội bộ**

Tạo một tích hợp trong trang [cài đặt của tích hợp](https://www.notion.so/my-integrations) của bạn. Theo mặc định, tất cả các tích hợp bắt đầu bằng tích hợp nội bộ; tích hợp nội bộ sẽ được liên kết với một không gian làm việc mà bạn chọn, vì vậy bạn cần phải là chủ sở hữu không gian làm việc để tạo một tích hợp.

### **Các bước cụ thể:**

Click nút "**New integration**", loại mặc định là Internal (không thể thay đổi), chọn không gian liên kết, nhập tên và tải lên logo, và click "**Submit**" để tạo tích hợp thành công.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F7StsUjJEXZs8ZRNGf3tC%2F0.png?alt=media&amp;token=e224a43e-90f0-4a0b-8259-6b2a3f5c6af0" alt=""><figcaption></figcaption></figure>

Sau khi tích hợp được tạo, bạn có thể cập nhật cài đặt của nó khi cần thiết dưới tab **Capabilities** và click nút "**Show**" dưới **Secrets** và sau đó sao chép Secrets.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FGdNI208jgTApJ5s4QHoT%2F0.png?alt=media&amp;token=1147fb84-8dd2-44f7-9c61-3ecb27eed10f" alt=""><figcaption></figcaption></figure>

Sao chép nó và quay lại mã nguồn của ChatX, trong tệp .**env** cấu hình các biến môi trường liên quan, các biến môi trường như sau:

**NOTION\_INTEGRATION\_TYPE** = internal or **NOTION\_INTEGRATION\_TYPE** = public

**NOTION\_INTERNAL\_SECRET**=you-internal-secret

### **2. Sử dụng tích hợp công khai**

**Bạn cần nâng cấp tích hợp nội bộ lên tích hợp công khai**, điều hướng đến trang phân phối tích hợp và bật công tắc để hiển thị tích hợp.

Để bật công tắc cài đặt công khai, bạn cần **điền thông tin bổ sung trong mẫu Thông tin Tổ chức** bên dưới, bao gồm tên công ty, trang web và URL Retargeting, và click nút "Submit".

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FK31HiGNuwsAUhS8eswlP%2F0.png?alt=media&amp;token=755c6936-196a-41f6-b0da-0dd5effe76fe" alt=""><figcaption></figcaption></figure>

Sau khi tích hợp của bạn đã được công khai thành công trong [trang cài đặt tích hợp](https://www.notion.so/my-integrations) của bạn, bạn sẽ có thể truy cập các secrets của tích hợp trong tab Secrets.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FHzGS2MEa02r8GOvOZIeL%2F0.png?alt=media&amp;token=d832f68a-6b9f-4f7b-ac44-c22902a01b13" alt=""><figcaption></figcaption></figure>

Quay lại mã nguồn của ChatX, trong tệp .**env** cấu hình các biến môi trường liên quan, các biến môi trường như sau:

**NOTION\_INTEGRATION\_TYPE**=public

**NOTION\_CLIENT\_SECRET**=you-client-secret

**NOTION\_CLIENT\_ID**=you-client-id

Sau khi cấu hình, bạn sẽ có thể sử dụng các chức năng nhập và đồng bộ hóa dữ liệu Notion trong phần kiến thức.


# Duy trì kiến ​​thức qua Api

> Xác thực, phương thức gọi và API dịch vụ ứng dụng vẫn nhất quán. Sự khác biệt là mã thông báo API kiến ​​thức có thể hoạt động trên tất cả các cơ sở kiến ​​thức.

## Lợi ích của việc Sử dụng API Kiến Thức

* Đồng bộ hóa hệ thống dữ liệu của bạn với ChatX để tạo ra các quy trình làm việc mạnh mẽ.
* Cung cấp API danh sách kiến thức và danh sách tài liệu cũng như giao diện truy vấn chi tiết, để hỗ trợ xây dựng trang quản lý dữ liệu riêng của bạn.
* Hỗ trợ tải lên/cập nhật tài liệu dưới dạng văn bản thuần và tệp, cũng như thêm và sửa đổi hàng loạt, để đơn giản hóa quá trình đồng bộ hóa của bạn.
* Giảm thời gian xử lý và đồng bộ hóa tài liệu thủ công, cải thiện khả năng hiển thị phần mềm và dịch vụ của ChatX.

## Cách sử dụng

Hãy truy cập trang kiến thức, bạn có thể chuyển đổi tab sang trang API trong thanh điều hướng bên trái. Trên trang này, bạn có thể xem tài liệu API được cung cấp bởi ChatX và quản lý thông tin xác thực để truy cập API Kiến Thức.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FCSAaa0epUOPOcRgxOgDu%2FCapture.JPG?alt=media&amp;token=25f41f16-3dbf-49f3-93ee-787d64c35b8d" alt=""><figcaption><p>Tài liệu API Kiến Thức</p></figcaption></figure>

## **Tạo Kiến Thức Trống**

**`POST /datasets`**

{% hint style="info" %}
Dùng để tạo một tập dữ liệu trống.
{% endhint %}

```
curl --location --request POST 'https://api.dify.ai/v1/datasets' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "name"}'
```

#### Danh sách kiến ​​thức

```
curl --location --request GET 'https://api.dify.ai/v1/datasets?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'
```

#### Tạo tài liệu từ văn bản

```
curl --location --request POST '<https://api.dify.ai/v1/datasets/<uuid:dataset_id>/document/create_by_text>' \\
--header 'Authorization: Bearer {api_key}' \\
--header 'Content-Type: application/json' \\
--data-raw '{
    "name": "Dify",
    "text": "Dify means Do it for you...",
    "indexing_technique": "high_quality",
    "process_rule": {
        "rules": {
                "pre_processing_rules": [{
                        "id": "remove_extra_spaces",
                        "enabled": true
                }, {
                        "id": "remove_urls_emails",
                        "enabled": true
                }],
                "segmentation": {
                        "separator": "###",
                        "max_tokens": 500
                }
        },
        "mode": "custom"
    }
}'
```

#### Tạo một tài liệu từ tập tin

```
curl --location POST 'https://api.dify.ai/v1/datasets/{dataset_id}/document/create_by_file' \
--header 'Authorization: Bearer {api_key}' \
--form 'data="{
	"name": "Dify",
	"indexing_technique": "high_quality",
	"process_rule": {
		"rules": {
			"pre_processing_rules": [{
				"id": "remove_extra_spaces",
				"enabled": true
			}, {
				"id": "remove_urls_emails",
				"enabled": true
			}],
			"segmentation": {
				"separator": "###",
				"max_tokens": 500
			}
		},
		"mode": "custom"
	}
    }";
    type=text/plain' \
--form 'file=@"/path/to/file"'
```

#### Lấy trạng thái nhúng tài liệu

```
curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents/{batch}/indexing-status' \
--header 'Authorization: Bearer {api_key}'
```

#### Xóa tài liệu

```
curl --location --request DELETE 'https://api.dify.ai/v1/datasets/{dataset_id}/documents/{document_id}' \
--header 'Authorization: Bearer {api_key}'
```

#### Nhận danh sách tài liệu

```
curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents' \
--header 'Authorization: Bearer {api_key}'
```

#### Thêm phân đoạn mới

```
curl 'https://api.dify.ai/v1/datasets/aac47674-31a8-4f12-aab2-9603964c4789/documents/2034e0c1-1b75-4532-849e-24e72666595b/segment' \
  --header 'Authorization: Bearer {api_key}' \
  --header 'Content-Type: application/json' \
  --data-raw $'"segments":[
  {"content":"Dify means Do it for you",
  "keywords":["Dify","Do"]
  }
  ]'
  --compressed
```

### Thông báo lỗi

* `document_indexing`，tài liệu đang ở trạng thái lập chỉ mục
* `provider_not_initialize`， Mô hình nhúng chưa được định cấu hình
* `not_found`，tài liệu không tồn tại
* `dataset_name_duplicate` ，tên kiến ​​​​thức đã tồn tại
* `provider_quota_exceeded`，mô hình quota đã vượt quá giới hạn
* `dataset_not_initialized`，Kiến thức chưa được khởi tạo
* `unsupported_file_type`，Loại tập tin không được hỗ trợ
  * support file type：txt, markdown, md, pdf, html, htm, xlsx, docx, csv
* `too_many_files`，Số lượng tệp quá lớn và chỉ hỗ trợ tải lên một tệp tạm thời
* `file_too_large`，File quá lớn, hỗ trợ file dưới 15M


# Công cụ dữ liệu ngoài

Trước đây, [Việc Nhập Kiến Thức](/ii-tinh-nang-co-ban/knowledge-import-nhap-kien-thuc) cho phép các nhà phát triển tải trực tiếp các văn bản dài dưới nhiều định dạng khác nhau và dữ liệu có cấu trúc để xây dựng kiến thức, cho phép các ứng dụng AI trò chuyện dựa trên ngữ cảnh mới nhất được tải lên bởi người dùng. Với bản cập nhật này, công cụ dữ liệu bên ngoài giúp các nhà phát triển sử dụng khả năng tìm kiếm của riêng họ hoặc dữ liệu bên ngoài như các cơ sở kiến thức nội bộ làm ngữ cảnh cho các mô hình ngôn ngữ lớn (LLMs). Điều này được thực hiện bằng cách mở rộng API để truy xuất dữ liệu bên ngoài và nhúng nó vào các Prompt. So với việc tải kiến thức lên đám mây, sử dụng công cụ dữ liệu bên ngoài mang lại lợi ích đáng kể trong việc đảm bảo an ninh cho dữ liệu riêng tư, tùy chỉnh tìm kiếm và nhận dữ liệu thời gian thực.

## Nó hoạt động như thế nào?

Khi người dùng cuối gửi yêu cầu đến hệ thống trò chuyện, nền tảng backend sẽ kích hoạt công cụ dữ liệu bên ngoài (tức là gọi API của chính nó), truy vấn thông tin bên ngoài liên quan đến câu hỏi của người dùng, chẳng hạn như hồ sơ nhân viên, bản ghi thời gian thực, v.v. Công cụ sau đó sẽ trả về các phần liên quan đến yêu cầu hiện tại thông qua API. Nền tảng backend sẽ lắp ráp các kết quả trả về thành văn bản làm ngữ cảnh được nhúng vào Prompt, để tạo ra các phản hồi cá nhân hóa hơn và đáp ứng nhu cầu của người dùng một cách chính xác hơn.

## Bắt đầu nhanh

1. Trước khi sử dụng công cụ dữ liệu bên ngoài, bạn cần chuẩn bị một API và một API Key để xác thực. Truy cập [External\_data\_tool](/ii-tinh-nang-co-ban/extension-tien-ich/mo-rong-dua-tren-api/external_data_tool).
2. ChatX cung cấp quản lý API tập trung; Sau khi thêm cấu hình mở rộng API trong giao diện cài đặt, chúng có thể được sử dụng trực tiếp trên các ứng dụng khác nhau trên ChatX.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FTdWnrCo2ZJSzHDNXYQEs%2FCapture.JPG?alt=media&amp;token=89c8e968-2231-43f4-b988-7d4a07d9f525" alt=""><figcaption><p>Tiện ích mở rộng dựa trên API</p></figcaption></figure>

3. Lấy ví dụ "Truy vấn Thời tiết", nhập tên, điểm cuối API và API Key vào hộp thoại "Thêm Phần mở rộng API mới". Sau khi lưu, chúng ta có thể gọi API.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FgdhTN5gY8tL1ZdV1LVAm%2FCapture.JPG?alt=media&amp;token=fd7701c8-ce6a-4a29-bcc5-3b0b53e838a0" alt=""><figcaption><p>Truy vấn Thời tiết</p></figcaption></figure>

4. Trên trang sắp xếp prompt, nhấp vào nút "+ Thêm" bên phải "Tools", và trong hộp thoại "Thêm Công cụ" mở ra, điền tên và tên biến (tên biến sẽ được tham chiếu trong Prompt, vì vậy hãy sử dụng tiếng Anh), cũng như chọn mở rộng dựa trên API đã thêm ở Bước 2.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FYJfDE6i81anW67omkztt%2FCapture.JPG?alt=media&amp;token=4b4ff143-d41d-4efd-ace8-515dc8d0c762" alt=""><figcaption><p>External_data_tool</p></figcaption></figure>

5. Trong hộp sắp xếp prompt, chúng ta có thể lắp ráp dữ liệu bên ngoài đã truy vấn vào Prompt. Ví dụ, nếu chúng ta muốn truy vấn thời tiết hôm nay ở London, chúng ta có thể thêm một biến tên là location, nhập "London", và kết hợp nó với tên biến mở rộng của công cụ dữ liệu bên ngoài là `weather_data`. Đầu ra gỡ lỗi sẽ như sau:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FiKxb5l7Q6MAtAEUdgnhB%2F0.png?alt=media&amp;token=5cba173e-ab16-40f8-b96a-7a5ba2eb48e1" alt=""><figcaption><p>Weather_search_tool</p></figcaption></figure>

Trong Nhật ký Prompt, chúng ta cũng có thể thấy dữ liệu thời gian thực được trả về bởi API:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F7BC2X3KXIPlh86EyKZIo%2F0.png?alt=media&amp;token=d0991afc-0721-4703-9b3a-411239e3c4d3" alt=""><figcaption><p>Nhật kí Prompt</p></figcaption></figure>


# Annotation Reply (Phản hồi chú thích)

## Tổng Quan Tính Năng

Tính năng Phản hồi chú thích cung cấp các phản hồi tùy chỉnh và chất lượng cao cho các ứng dụng khác nhau, đạt được thông qua việc chú thích thủ công.

### Các Sử Dụng Chính:

1. **Phản Hồi Chuyên Biệt Cho Các Ngành Cụ Thể:** Điều này đặc biệt có giá trị trong dịch vụ khách hàng hoặc các cơ sở kiến thức trong kinh doanh, chính phủ, v.v. Nó cho phép trả lời chính xác các câu hỏi cụ thể bằng cách chú thích các phản hồi, chẳng hạn như đặt "chú thích tiêu chuẩn" cho một số hoặc đánh dấu những câu hỏi không thể trả lời.
2. **Thích Nghi Nhanh Cho Nguyên Mẫu:** Sử dụng tính năng Phản hồi chú thích có thể cải thiện đáng kể chất lượng phản hồi trong quá trình phát triển nhanh chóng của các sản phẩm nguyên mẫu, nâng cao sự hài lòng của khách hàng.

### Hoạt Động Thế Nào:

Tính năng này cung cấp một hệ thống thay thế để nâng cao việc truy xuất, bỏ qua giai đoạn tạo ra của Các Mô Hình Ngôn Ngữ Lớn (LLMs) và tránh những phức tạp của Quy Trình Tạo Bổ Sung Truy Xuất (RAG).

1. Khi được kích hoạt, bạn có thể chú thích các phản hồi đối thoại của LLM. Các chú thích có thể là các câu trả lời chất lượng cao được lấy trực tiếp từ LLM hoặc các chú thích chỉnh sửa của bạn. Những nội dung chú thích này được lưu lại để sử dụng trong tương lai.
2. Khi các câu hỏi tương tự được hỏi lại, hệ thống xác định các câu hỏi chú thích phù hợp.
3. Nếu tìm thấy sự phù hợp, câu trả lời chú thích sẽ được trả lại trực tiếp, bỏ qua quy trình LLM hoặc RAG.
4. Nếu không tìm thấy sự phù hợp, truy vấn sẽ theo quy trình LLM hoặc RAG tiêu chuẩn.
5. Việc hủy kích hoạt Tính Năng Phản hồi chú thích sẽ ngừng việc trả lời từ các chú thích.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FMB9xUb2nLiVGtzG9pfFw%2F0.png?alt=media&amp;token=94dc7e6e-3352-4662-9a67-b218c3b3c40a" alt=""><figcaption><p>Quá trình trả lời chú thích</p></figcaption></figure>

## **Kích Hoạt**

* Điều hướng đến “Studio -> Add Feature” để bật tính năng Phản hồi chú thích.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FE7amu6WpLDal8Vgpt3Jb%2FCapture.JPG?alt=media&amp;token=c1e47055-0f23-4064-a3d4-84a5083d13aa" alt=""><figcaption></figcaption></figure>

Bắt đầu bằng cách đặt các tham số cho Tính Năng Phản hồi chú thích. Bao gồm Ngưỡng điểm và Mô hình nhúng.

* **Ngưỡng Điểm:** Đặt điểm tương đồng tối thiểu để một chú thích được coi là phù hợp và được gọi lại.
* **Mô Hình Nhúng:** Dùng để chuyển đổi văn bản chú thích thành vector. Thay đổi mô hình dẫn đến việc tạo lại các vector nhúng.

Chọn 'Lưu' để áp dụng ngay các cài đặt này. Hệ thống sau đó tạo và lưu trữ các vector nhúng cho tất cả các chú thích hiện có.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FSVBDb2F5pttAVEaVbBKm%2FCapture.JPG?alt=media&amp;token=d73a1736-7224-4c3f-82cc-5b3ca091c4af" alt=""><figcaption></figcaption></figure>

## **Thêm Chú Thích Trong Chế Độ Gỡ Lỗi**

Các chú thích có thể được thêm hoặc chỉnh sửa trực tiếp trên các phản hồi của mô hình trong giao diện gỡ lỗi và xem trước.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FKKbVcLcy53CHEHqUUsYh%2FCapture.JPG?alt=media&amp;token=8144e1b0-b036-4f6f-9963-c7f92d352ab7" alt=""><figcaption></figcaption></figure>

Chỉnh sửa và lưu các phản hồi này để đảm bảo chất lượng cao.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FJpzX0zu7Eac9GKneeozh%2FCapture.JPG?alt=media&amp;token=75fa25d0-de0a-4ead-813f-a3a9bf7a1b58" alt=""><figcaption></figcaption></figure>

Khi người dùng lặp lại truy vấn, hệ thống sẽ sử dụng chú thích liên quan đã lưu để trả lời trực tiếp.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FXSAhWP2qAcwbnYVdqfzL%2FCapture.JPG?alt=media&amp;token=53fb0975-4fcf-44d6-8dab-3251df634373" alt=""><figcaption></figcaption></figure>

## **Kích Hoạt Chú Thích Trong Nhật Ký & Thông Báo**

Bật tính năng Chú thích cho câu Trả lời dưới “Studio -> Nhật Ký & Thông Báo -> Chú thích”

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FShmRrqSDWhmGmeoBVTnI%2FCapture.JPG?alt=media&amp;token=b2cc5fb0-dd9f-4068-a393-b1abad108b9f" alt=""><figcaption></figcaption></figure>

## **Điều Chỉnh Tham Số Backend Cho Chú Thích**

**Cài Đặt Tham Số:** Bao gồm Ngưỡng Điểm và Mô Hình Gán Nhúng, giống như trong cấu hình ban đầu.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fb4kbYl2JiwqqZHtqfJ4R%2FCapture.JPG?alt=media&amp;token=1e05b483-305b-474b-8d12-261a1e3a7ae6" alt=""><figcaption></figcaption></figure>

## **Nhập hàng loạt Q\&A Đã Chú Thích**

**Quy Trình Nhập:** Sử dụng mẫu cung cấp để định dạng các cặp Q\&A cho các chú thích, sau đó tải chúng lên số lượng lớn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FjvkBreSwZm13XcbWQdPN%2FCapture.JPG?alt=media&amp;token=f2c6bbd4-9b6e-40ff-be5a-5dff6f0cf817" alt=""><figcaption></figcaption></figure>

## **Xuất hàng loạt Q\&A Đã Chú Thích**

**Chức Năng Xuất:** Cho phép xuất một lần tất cả các cặp Q\&A đã chú thích được lưu trữ trong hệ thống.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FqyCtT3D8I6yqTQIGJh5L%2FCapture.JPG?alt=media&amp;token=df54f117-6ce5-4465-83bb-24322044f870" alt=""><figcaption></figcaption></figure>

## Xem Lịch sử truy cập **Chú Thích**

Xem lịch sử sử dụng từng chú thích, bao gồm chỉnh sửa, truy vấn, phản hồi, nguồn, điểm tương đồng và dấu thời gian. Thông tin này có giá trị cho việc cải thiện liên tục các chú thích của bạn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FLD7zEGIUByqMbKPDe9lL%2FCapture.JPG?alt=media&amp;token=fc47e247-0f0e-4388-a52d-b8843be44bf5" alt=""><figcaption></figcaption></figure>


# Nhật ký & Thông báo

{% hint style="info" %}
Hãy đảm bảo rằng ứng dụng của bạn tuân thủ các quy định địa phương khi thu thập dữ liệu người dùng. Thực hành thông thường là công bố chính sách quyền riêng tư và thu thập sự đồng ý của người dùng.
{% endhint %}

Tính năng **Nhật Ký** được thiết kế để quan sát và chú thích hiệu suất của các ứng dụng ChatX. ChatX ghi lại nhật ký cho tất cả các tương tác với ứng dụng, dù thông qua WebApp hay API. Nếu bạn là Kỹ Sư Prompt hoặc nhà vận hành LLM, tính năng này sẽ cung cấp cho bạn trải nghiệm hình ảnh về hoạt động của ứng dụng LLM.

## Sử Dụng Bảng Điều Khiển Nhật Ký

Bạn có thể tìm thấy Nhật Ký trong điều hướng bên trái của ứng dụng. Trang này thường hiển thị:

* Các bản ghi tương tác giữa người dùng và AI trong khoảng thời gian đã chọn.
* Kết quả của đầu vào người dùng và đầu ra AI, đối với các ứng dụng hội thoại, thường là một chuỗi các luồng tin nhắn.
* Đánh giá từ người dùng và nhà vận hành, cũng như các chú thích cải thiện từ nhà vận hành.

Hiện tại, nhật ký không bao gồm các bản ghi tương tác từ quá trình gỡ lỗi Prompt.

## Cải thiện Chú Thích

{% hint style="info" %}
Những chú thích này sẽ được sử dụng để tinh chỉnh mô hình trong các phiên bản ChatX tương lai nhằm cải thiện độ chính xác và phong cách phản hồi của mô hình. Phiên bản xem trước hiện tại chỉ hỗ trợ chú thích.
{% endhint %}

Nhấp vào một mục nhật ký sẽ mở ra bảng chi tiết nhật ký ở phía bên phải của giao diện. Trong bảng này, nhà vận hành có thể chú thích một tương tác:

* **Like** cho các tin nhắn hoạt động tốt
* **Dislike** cho các tin nhắn hoạt động kém
* Đánh dấu các phản hồi cải thiện, đại diện cho văn bản bạn mong đợi AI trả lời

Lưu ý rằng nếu nhiều quản trị viên trong nhóm chú thích cùng một mục nhật ký, chú thích cuối cùng sẽ ghi đè các chú thích trước đó.


# Plugins

{% hint style="info" %}
Plugins là một tính năng sắp ra mắt của ChatX. Bạn có thể tích hợp plugins vào việc sắp xếp ứng dụng của mình và truy cập các ứng dụng AI với khả năng plugin thông qua API hoặc WebApp. ChatX tương thích với tiêu chuẩn Plugins của ChatGPT và cung cấp một số plugins gốc.
{% endhint %}


# Dựa Trên Mẫu WebApp

Nếu các nhà phát triển đang phát triển sản phẩm mới từ đầu hoặc trong giai đoạn thiết kế nguyên mẫu sản phẩm, bạn có thể nhanh chóng khởi chạy các trang web AI sử dụng ChatX. Đồng thời, ChatX hy vọng rằng các nhà phát triển có thể tự do tạo ra các ứng dụng front-end khác nhau. Vì lý do này, chúng tôi cung cấp:

* **SDK** để truy cập nhanh vào API ChatX bằng các ngôn ngữ khác nhau
* **Mẫu WebApp** cho các công cụ phát triển WebApp cho mỗi loại ứng dụng

Các Mẫu WebApp được mã nguồn mở dưới giấy phép MIT. Bạn có thể tự do chỉnh sửa và triển khai chúng để đạt được tất cả các khả năng của ChatX hoặc làm mã tham khảo để triển khai ứng dụng của riêng bạn.

Bạn có thể tìm thấy các Mẫu này trên GitHub:

* [Ứng dụng hội thoại](https://github.com/langgenius/webapp-conversation)
* [Ứng dụng tạo văn bản](https://github.com/langgenius/webapp-text-generator)

Cách nhanh nhất để sử dụng Mẫu WebApp là nhấp vào "Use this template" trên GitHub, tương đương với việc tạo một kho lưu trữ mới từ mẫu. Sau đó, bạn cần cấu hình App ID và API Key của ChatX như sau:

```
export const APP_ID = ''
export const API_KEY = ''
```

Cấu hình thêm trong `config/index.ts`:

```
export const APP_INFO: AppInfo = {
  "title": 'Chat APP',
  "description": '',
  "copyright": '',
  "privacy_policy": '',
  "default_language": 'zh-Hans'
}

export const isShowPrompt = true
export const promptTemplate = ''
```

Mỗi Mẫu WebApp cung cấp tệp README chứa hướng dẫn triển khai. Thông thường, Mẫu WebApp chứa một dịch vụ backend nhẹ để đảm bảo rằng khóa API của nhà phát triển không bị lộ trực tiếp cho người dùng.

Những Mẫu WebApp này có thể giúp bạn nhanh chóng xây dựng nguyên mẫu của các ứng dụng AI và sử dụng tất cả các khả năng của ChatX. Nếu bạn phát triển ứng dụng của riêng bạn hoặc các mẫu mới dựa trên chúng, hãy chia sẻ với chúng tôi.


# Tích hợp nhiều hơn

TODO


# Extension (Tiện ích)

Trong quá trình tạo ứng dụng AI, các nhà phát triển đối mặt với nhu cầu kinh doanh thay đổi liên tục và các thách thức kỹ thuật phức tạp. Tận dụng hiệu quả khả năng mở rộng có thể không chỉ nâng cao tính linh hoạt và chức năng của ứng dụng mà còn đảm bảo an toàn và tuân thủ của dữ liệu doanh nghiệp. ChatX cung cấp hai phương pháp mở rộng sau đây:

[Mở rộng Dựa trên API](/ii-tinh-nang-co-ban/extension-tien-ich/mo-rong-dua-tren-api)

[Mở rộng Dựa trên Mã lập trình](/ii-tinh-nang-co-ban/extension-tien-ich/tien-ich-mo-rong-dua-tren-ma)


# Mở rộng Dựa trên API

Các nhà phát triển có thể mở rộng khả năng của các module thông qua module mở rộng API. Các module mở rộng hiện được hỗ trợ bao gồm:

* `moderation`
* `external_data_tool`

Trước khi mở rộng khả năng của module, chuẩn bị một API và một Khóa API để xác thực, có thể cũng tự động được tạo ra bởi ChatX. Ngoài việc phát triển các khả năng tương ứng của module, hãy tuân theo các đặc tả dưới đây để ChatX có thể gọi API của bạn một cách chính xác.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FKYwdaOp2DPYg0otRHhMo%2F0.png?alt=media&amp;token=fad55ed5-b7ec-4ba8-aefd-5b8aabc1da1f" alt=""><figcaption><p>Thêm tiện ích mở rộng API</p></figcaption></figure>

## Thông số kỹ thuật API

ChatX sẽ gọi API của bạn theo các đặc tả sau đây:

```
POST {Your-API-Endpoint}
```

### Header <a href="#header" id="header"></a>

| Header          | Giá trị           | Mô tả                                                                                                                                                   |
| --------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`  | application/json  | Nội dung yêu cầu được trình bày dưới dạng JSON.                                                                                                         |
| `Authorization` | Bearer {api\_key} | API Key được chuyển đổi thành token. Bạn cần phân tích `api_key` và xác minh xem nó có khớp với API Key được cung cấp không để đảm bảo an ninh của API. |

### Request Body <a href="#request-body" id="request-body"></a>

```
{
    "point":  string, // Extension point, different modules may contain multiple extension points
    "params": {
        ...  // Parameters passed to each module's extension point
    }
}
```

### API Response <a href="#api-response" id="api-response"></a>

```
{
    ...  // For the content returned by the API, see the specific module's design specifications for different extension points.
}
```

## Kiểm tra

Khi cấu hình Phần mở rộng dựa trên API trong ChatX, ChatX sẽ gửi một yêu cầu đến Điểm cuối API để xác minh tính khả dụng của API. Khi Điểm cuối API nhận được `point=ping`, API nên trả về `result=pong`, như sau:

### Header <a href="#header-1" id="header-1"></a>

```
Content-Type: application/json
Authorization: Bearer {api_key}
```

### Request Body <a href="#request-body-1" id="request-body-1"></a>

```
{
    "point": "ping"
}
```

### Phản hồi API dự kiến

```
{
    "result": "pong"
}
```

\\

## Ví dụ

Ở đây, chúng tôi lấy công cụ dữ liệu ngoại vi làm ví dụ, trong đó kịch bản là lấy thông tin thời tiết từ bên ngoài dựa trên vùng miền làm ngữ cảnh.

### Các đặc tả API

`POST https://fake-domain.com/api/dify/receive`

### **Header** <a href="#header-2" id="header-2"></a>

```
Content-Type: application/json
Authorization: Bearer 123456
```

### **Request Body** <a href="#request-body-2" id="request-body-2"></a>

```
{
    "point": "app.external_data_tool.query",
    "params": {
        "app_id": "61248ab4-1125-45be-ae32-0ce91334d021",
        "tool_variable": "weather_retrieve",
        "inputs": {
            "location": "London"
        },
        "query": "How's the weather today?"
    }
}
```

### Phản hồi API

```
{
    "result": "City: London\nTemperature: 10°C\nRealFeel®: 8°C\nAir Quality: Poor\nWind Direction: ENE\nWind Speed: 8 km/h\nWind Gusts: 14 km/h\nPrecipitation: Light rain"
}
```

### Mã thử nghiệm <a href="#code-demo" id="code-demo"></a>

Mã nguồn dựa trên framework Python FastAPI.

#### Cài đặt các phụ thuộc.

```
pip install 'fastapi[all]' uvicorn
```

#### Viết mã theo các đặc tả giao diện.

```
from fastapi import FastAPI, Body, HTTPException, Header
from pydantic import BaseModel

app = FastAPI()


class InputData(BaseModel):
    point: str
    params: dict


@app.post("/api/dify/receive")
async def dify_receive(data: InputData = Body(...), authorization: str = Header(None)):
    """
    Receive API query data from Dify.
    """
    expected_api_key = "123456"  # TODO Your API key of this API
    auth_scheme, _, api_key = authorization.partition(' ')

    if auth_scheme.lower() != "bearer" or api_key != expected_api_key:
        raise HTTPException(status_code=401, detail="Unauthorized")

    point = data.point

    # for debug
    print(f"point: {point}")

    if point == "ping":
        return {
            "result": "pong"
        }
    if point == "app.external_data_tool.query":
        return handle_app_external_data_tool_query(params=data.params)
    # elif point == "{point name}":
        # TODO other point implementation here

    raise HTTPException(status_code=400, detail="Not implemented")


def handle_app_external_data_tool_query(params: dict):
    app_id = params.get("app_id")
    tool_variable = params.get("tool_variable")
    inputs = params.get("inputs")
    query = params.get("query")

    # for debug
    print(f"app_id: {app_id}")
    print(f"tool_variable: {tool_variable}")
    print(f"inputs: {inputs}")
    print(f"query: {query}")

    # TODO your external data tool query implementation here, 
    #  return must be a dict with key "result", and the value is the query result
    if inputs.get("location") == "London":
        return {
            "result": "City: London\nTemperature: 10°C\nRealFeel®: 8°C\nAir Quality: Poor\nWind Direction: ENE\nWind "
                      "Speed: 8 km/h\nWind Gusts: 14 km/h\nPrecipitation: Light rain"
        }
    else:
        return {"result": "Unknown city"}
```

#### Khởi chạy dịch vụ API.

Cổng mặc định là 8000. Địa chỉ hoàn chỉnh của API là: `http://127.0.0.1:8000/api/chatx/receive`với Khóa API được định cấu hình '123456'.

```
uvicorn main:app --reload --host 0.0.0.0
```

#### Cấu hình API này trong ChatX.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FtxW6zgx9R1xpWIjixTRH%2FCapture.JPG?alt=media&amp;token=dd2fd3c8-76e5-4fe1-afc3-41e23ce8cdc1" alt=""><figcaption></figcaption></figure>

#### Chọn phần mở rộng API này trong ứng dụng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fq055WGxCUDuglM7efs8S%2FCapture.JPG?alt=media&amp;token=4ec0bb68-4433-4e6d-994b-93ade418afc1" alt=""><figcaption></figcaption></figure>

Khi gỡ lỗi ứng dụng, ChatX sẽ yêu cầu API được cấu hình và gửi nội dung sau (ví dụ):

```
{
    "point": "app.external_data_tool.query",
    "params": {
        "app_id": "61248ab4-1125-45be-ae32-0ce91334d021",
        "tool_variable": "weather_retrieve",
        "inputs": {
            "location": "London"
        },
        "query": "How's the weather today?"
    }
}
```

Phản hồi API:

```
{
    "result": "City: London\nTemperature: 10°C\nRealFeel®: 8°C\nAir Quality: Poor\nWind Direction: ENE\nWind Speed: 8 km/h\nWind Gusts: 14 km/h\nPrecipitation: Light rain"
}
```

### Gỡ lỗi cục bộ

Vì phiên bản đám mây của ChatX không thể truy cập vào các dịch vụ API mạng nội bộ, bạn có thể sử dụng Ngrok để tiết lộ điểm cuối dịch vụ API cục bộ của mình cho internet công cộng để gỡ lỗi mã cục bộ dựa trên đám mây. Các bước là:

1. Truy cập trang web chính thức của Ngrok tại [https://ngrok.com](https://ngrok.com/), đăng ký và tải xuống tệp Ngrok.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F4a82aaUuB8X1IOa7Rbf5%2F0.png?alt=media&amp;token=47f88877-7fe6-49f3-b1a9-6794c09c25a0" alt=""><figcaption></figcaption></figure>

2. Sau khi tải xuống, đi đến thư mục tải xuống. Giải nén gói và chạy tập lệnh khởi tạo theo hướng dẫn:

```
$ unzip /path/to/ngrok.zip
$ ./ngrok config add-authtoken 你的Token
```

3. Kiểm tra cổng dịch vụ API cục bộ của bạn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FZ41FR7O95bVgxVdPiRSz%2F0.png?alt=media&amp;token=5123d203-4642-40db-8167-74ea996cd0d0" alt=""><figcaption></figcaption></figure>

Chạy lệnh sau để bắt đầu:

```
$ ./ngrok http [port number]
```

Khi khởi động thành công, bạn sẽ thấy một cái gì đó giống như sau:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FTK7NApEmzG83nnZT7PSf%2F0.png?alt=media&amp;token=d21e2394-1b49-4a1e-a423-33e63dc08426" alt=""><figcaption></figcaption></figure>

4. Tìm địa chỉ 'Forwarding', như tên miền mẫu [`https://177e-159-223-41-52.ngrok-free.app`](https://177e-159-223-41-52.ngrok-free.app/), và sử dụng nó như là tên miền công cộng của bạn.

* Ví dụ, để tiết lộ dịch vụ đang chạy cục bộ của bạn, thay thế URL ví dụ `http://127.0.0.1:8000/api/chatx/receive` với `https://177e-159-223-41-52.ngrok-free.app/api/chatx/receive`.

Bây giờ, điểm cuối API này có thể truy cập công cộng. Bạn có thể cấu hình điểm cuối này trong ChatX để gỡ lỗi cục bộ. Đối với các bước cấu hình, hãy tham khảo tài liệu hoặc hướng dẫn thích hợp.

### Triển khai phần mở rộng API với Cloudflare Workers

Chúng tôi khuyến nghị bạn sử dụng Cloudflare Workers để triển khai phần mở rộng API của mình, vì Cloudflare Workers có thể dễ dàng cung cấp một địa chỉ công cộng và có thể sử dụng miễn phí.

[Tiết lộ Phần mở rộng API trên Internet công cộng bằng Cloudflare Workers](/iv-huong-dan-tich-hop-nang-cao/hien-thi-tien-ich-mo-rong-api-tren-internet-cong-cong-bang-cach-su-dung-cloudflare-workers)


# External\_data\_tool

Khi tạo ứng dụng AI, các nhà phát triển có thể sử dụng các phần mở rộng API để tích hợp dữ liệu bổ sung từ các công cụ bên ngoài vào các lời nhắc như thông tin bổ sung cho các mô hình ngôn ngữ lớn (LLM).

Vui lòng đọc [Phần Mở rộng Dựa trên API](/ii-tinh-nang-co-ban/extension-tien-ich/mo-rong-dua-tren-api) để hoàn thành việc phát triển và tích hợp các khả năng dịch vụ API cơ bản.

## Extension Point <a href="#extension-point" id="extension-point"></a>

`app.external_data_tool.query`: Áp dụng các công cụ dữ liệu bên ngoài để điểm mở rộng truy vấn.

Điểm mở rộng này lấy nội dung biến ứng dụng được truyền vào bởi người dùng cuối và nội dung đầu vào (các tham số cố định cho ứng dụng hội thoại) như là các tham số cho API. Các nhà phát triển cần triển khai logic truy vấn cho công cụ tương ứng và trả kết quả truy vấn dưới dạng chuỗi.

#### **Request Body**

```
{
    "point": "app.external_data_tool.query", 
    "params": {
        "app_id": string,  
        "tool_variable": string,  
        "inputs": {  
            "var_1": "value_1",
            "var_2": "value_2",
            ...
        },
        "query": string | null  
    }
}
```

* Ví dụ

```
{
    "point": "app.external_data_tool.query",
    "params": {
        "app_id": "61248ab4-1125-45be-ae32-0ce91334d021",
        "tool_variable": "weather_retrieve",
        "inputs": {
            "location": "London"
        },
        "query": "How's the weather today?"
    }
}
```

#### Phản hồi API

```
{
    "result": string
}
```

* Ví dụ

```
{
    "result": "City: London\nTemperature: 10°C\nRealFeel®: 8°C\nAir Quality: Poor\nWind Direction: ENE\nWind Speed: 8 km/h\nWind Gusts: 14 km/h\nPrecipitation: Light rain"
}
```


# Tiện ích mở rộng kiểm duyệt

Module này được sử dụng để xem xét nội dung được nhập bởi người dùng cuối và đầu ra từ các mô hình ngôn ngữ lớn (LLMs) trong ứng dụng, chia thành hai loại điểm mở rộng.

Vui lòng đọc [Phần Mở rộng Dựa trên API](/ii-tinh-nang-co-ban/extension-tien-ich/mo-rong-dua-tren-api) để hoàn thành việc phát triển và tích hợp các khả năng dịch vụ API cơ bản.

## Extension Point <a href="#extension-point" id="extension-point"></a>

`app.moderation.input`: Điểm mở rộng xem xét nội dung đầu vào của người dùng cuối. Nó được sử dụng để xem xét nội dung của các biến được truyền vào bởi người dùng cuối và nội dung đầu vào của cuộc trò chuyện trong các ứng dụng hội thoại.

`app.moderation.output`: Điểm mở rộng xem xét nội dung đầu ra từ LLMs. Nó được sử dụng để xem xét nội dung được đầu ra bởi LLM. Khi đầu ra của LLM đang phát ra, nội dung sẽ được yêu cầu bằng cách gửi API theo từng phần có 100 ký tự để tránh trễ trong quá trình xem xét khi nội dung đầu ra dài.

### `app.moderation.input` <a href="#app.moderation.input" id="app.moderation.input"></a>

#### **Request Body**

```
{
    "point": "app.moderation.input", 
        "app_id": string,  
        "inputs": {  
            "var_1": "value_1",
            "var_2": "value_2",
            ...
        },
        "query": string | null  
    }
}
```

* Ví dụ

```
{
    "point": "app.moderation.input",
    "params": {
        "app_id": "61248ab4-1125-45be-ae32-0ce91334d021",
        "inputs": {
            "var_1": "I will kill you.",
            "var_2": "I will fuck you."
        },
        "query": "Happy everydays."
    }
}
```

#### Phản hồi API

```
{
    "flagged": bool,  
    "action": string, 
    "preset_response": string,  
    "inputs": {  
        "var_1": "value_1",
        "var_2": "value_2",
        ...
    },
    "query": string | null  
}
```

* Ví dụ

`action=direct_output`

```
{
    "flagged": true,
    "action": "direct_output",
    "preset_response": "Your content violates our usage policy."
}
```

`action=overrided`

```
{
    "flagged": true,
    "action": "overrided",
    "inputs": {
        "var_1": "I will *** you.",
        "var_2": "I will *** you."
    },
    "query": "Happy everydays."
}
```

### `app.moderation.output` <a href="#app.moderation.output" id="app.moderation.output"></a>

#### **Request Body**

```
{
    "point": "app.moderation.output", 
    "params": {
        "app_id": string,  
        "text": string  
    }
}
```

* Ví dụ

```
{
    "point": "app.moderation.output",
    "params": {
        "app_id": "61248ab4-1125-45be-ae32-0ce91334d021",
        "text": "I will kill you."
    }
}
```

#### Phản hồi API

```
{
    "flagged": bool,  
    "action": string, 
    "preset_response": string,  
    "text": string  
```

* Ví dụ

`action=direct_output`

```
{
    "flagged": true,
    "action": "direct_output",
    "preset_response": "Your content violates our usage policy."
}
```

`action=overrided`

```
{
    "flagged": true,
    "action": "overrided",
    "text": "I will *** you."
}
```


# Tiện ích mở rộng dựa trên mã

Đối với những nhà phát triển triển khai ChatX trên máy cục bộ và muốn triển khai khả năng mở rộng, không cần phải viết lại dịch vụ API. Thay vào đó, họ có thể sử dụng Phần mở rộng dựa trên mã nguồn, cho phép mở rộng hoặc cải thiện các khả năng của chương trình dưới dạng mã nguồn (ví dụ: khả năng plugin) trên nền tảng của các tính năng hiện có của ChatX, mà không làm gián đoạn mã logic gốc của ChatX. Các phần mở rộng này tuân theo các giao diện hoặc quy định cụ thể để đảm bảo tính tương thích và khả năng cắm và chạy với chương trình chính. Hiện nay, ChatX đã mở ra hai loại Phần mở rộng dựa trên mã nguồn, bao gồm:

* Thêm một loại công cụ dữ liệu ngoại vi mới
* Mở rộng các chính sách xem xét nội dung nhạy cảm

Bằng cách tuân theo các quy định của giao diện cấp mã nguồn, các nhà phát triển có thể đạt được sự mở rộng theo chiều ngang, nâng cao các khả năng của ChatX trong khi vẫn giữ nguyên tính năng cốt lõi của nó.


# Kiểm duyệt

Trong tương tác của chúng ta với các ứng dụng trí tuệ nhân tạo, chúng thường có các yêu cầu nghiêm ngặt về bảo mật nội dung, trải nghiệm người dùng và các quy định pháp lý. Tại thời điểm này, chúng ta cần tính năng "Xem Xét Từ Nhạy Cảm" để tạo ra một môi trường tương tác tốt hơn cho người dùng cuối. Trên trang điều phối câu hỏi, nhấp vào "Thêm Tính Năng" và tìm "Hộp công cụ Xem Xét Nội Dung" ở dưới cùng:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FZwDgJ6hxcB8NClxTmpZC%2FCapture.JPG?alt=media&amp;token=661cd804-b9c4-4ac3-b859-74f1f8d5c10a" alt=""><figcaption><p>Kiểm duyệt nội dung</p></figcaption></figure>

## Gọi API Kiểm Duyệt của OpenAI

OpenAI, cùng với hầu hết các công ty cung cấp Mô hình Ngôn ngữ Học sâu (LLMs), bao gồm các tính năng kiểm duyệt nội dung trong các mô hình của họ để đảm bảo rằng các đầu ra không chứa nội dung gây tranh cãi, chẳng hạn như bạo lực, nội dung tình dục và các hoạt động bất hợp pháp. Ngoài ra, OpenAI đã làm cho tính năng kiểm duyệt nội dung này có sẵn, mà bạn có thể tham khảo tại <https://platform.openai.com/docs/guides/moderation/overview>.

Bây giờ bạn cũng có thể gọi trực tiếp API Kiểm Duyệt của OpenAI trên ChatX; bạn có thể xem xét nội dung đầu vào hoặc đầu ra chỉ bằng cách nhập "phản hồi mẫu" tương ứng.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FBWEqA3PDdw75Kva70ozM%2F0.png?alt=media&amp;token=7ecd32c0-a8ba-4ca4-b14f-b82eae68fc7d" alt=""><figcaption><p>Kiểm Duyệt của OpenAI</p></figcaption></figure>

## Từ khóa

Các nhà phát triển có thể tùy chỉnh các từ nhạy cảm mà họ cần xem xét, chẳng hạn như sử dụng "giết" như một từ khóa để thực hiện hành động kiểm duyệt khi người dùng nhập vào. Nội dung phản hồi mẫu nên là "Nội dung vi phạm chính sách sử dụng." Có thể dự đoán rằng khi một người dùng nhập một đoạn văn bản chứa từ "giết" vào terminal, nó sẽ kích hoạt công cụ kiểm duyệt từ nhạy cảm và trả về nội dung phản hồi mẫu.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FoY16jQRuGT3FBn4azcRU%2F0.png?alt=media&amp;token=dc9c8abd-fa07-4c78-a209-94d139f9feb0" alt=""><figcaption><p>Từ khóa</p></figcaption></figure>

## Tiện ích kiểm duyệt

Các doanh nghiệp khác nhau thường có cơ chế riêng cho việc kiểm duyệt từ nhạy cảm. Khi phát triển các ứng dụng trí tuệ nhân tạo riêng, chẳng hạn như một ChatBot cơ sở kiến thức nội bộ, các doanh nghiệp cần kiểm duyệt nội dung truy vấn mà nhân viên nhập vào để tìm từ nhạy cảm. Với mục đích này, các nhà phát triển có thể viết một phần mở rộng API dựa trên cơ chế kiểm duyệt từ nhạy cảm nội bộ của doanh nghiệp của họ, cụ thể là [Thông Tin Mở Rộng Kiểm Duyệt](/ii-tinh-nang-co-ban/extension-tien-ich/mo-rong-dua-tren-api/tien-ich-mo-rong-kiem-duyet), sau đó có thể được gọi trên ChatX để đạt được mức độ tùy chỉnh cao và bảo vệ quyền riêng tư cho việc xem xét từ nhạy cảm.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fo6ybCrHQwSBbB2CK0PsF%2FCapture.JPG?alt=media&amp;token=619e2eb8-0191-4cec-b64f-2b635a22a556" alt=""><figcaption><p>Tiện ích kiểm duyệt</p></figcaption></figure>


# Khám phá

## Ứng dụng mẫu

Trong **Khám phá > Khám phá**, một số ứng dụng mẫu phổ biến được cung cấp. Các ứng dụng này bao gồm dịch, viết, lập trình và trợ lý.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FVxvYFNo5UMki7YqUTQWa%2FCapture.JPG?alt=media&amp;token=5d033f16-dc7a-4fa5-841b-1eda86904c09" alt=""><figcaption></figcaption></figure>

Nếu bạn muốn sử dụng một ứng dụng mẫu, hãy nhấp vào nút "Thêm vào kho lưu trữ" của mẫu ứng dụng đó. Trong không gian làm việc ở bên trái, ứng dụng sẽ được có sẵn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FbJ8OQkltcwSrPDy50Qka%2F0.png?alt=media&amp;token=5323b03e-0963-43cf-938b-093635496bdf" alt=""><figcaption></figcaption></figure>

Nếu bạn muốn sửa đổi một mẫu để tạo ra một ứng dụng mới, hãy nhấp vào nút "Tùy chỉnh" của mẫu.

## Kho lưu trữ <a href="#workspace" id="workspace"></a>

Kho lưu trữ là bảng điều khiển của ứng dụng. Nhấp vào một ứng dụng trong không gian làm việc để sử dụng ứng dụng trực tiếp.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FqygFHVz0ED7kfzphJDm0%2F0.png?alt=media&amp;token=a75dc3d2-4b0a-4dc7-a6e8-a931216b157a" alt=""><figcaption></figcaption></figure>

Các ứng dụng trong không gian làm việc bao gồm: các ứng dụng của bạn và các ứng dụng được thêm vào không gian làm việc bởi các nhóm khác.


# Thanh toán

Hãy tìm hiểu thêm về các gói thanh toán của ChatX để hỗ trợ mở rộng việc sử dụng của bạn.

## Thanh toán dựa trên Kho lưu trữ

Nền tảng ChatX có "kho lưu trữ" và "ứng dụng". Mỗi không gian làm việc có thể chứa nhiều ứng dụng. Mỗi ứng dụng có các khả năng như điều phối câu hỏi, triệu hồi LLM, kiểm tra kiến thức RAG, đăng nhập & chú thích, và giao phát API tiêu chuẩn. **Chúng tôi khuyến nghị một nhóm hoặc tổ chức sử dụng một không gian làm việc, vì hệ thống của chúng tôi tính giá dựa trên mỗi không gian làm việc (tính từ tổng lượng tài nguyên tiêu thụ trong một không gian làm việc)**. Ví dụ:

```

Workspace 1  
App 1(Prompt, RAG, LLM, Knowledge base, Logging & Annotation, API)
App 2(Prompt, RAG, LLM, Knowledge base, Logging & Annotation, API) 
App 3(Prompt, RAG, LLM, Knowledge base, Logging & Annotation, API)
...
Workspace 2
```

## Bảng Giá và Tính Năng Kế hoạch

Chúng tôi cung cấp một gói dịch vụ miễn phí cho tất cả người dùng để thử nghiệm ý tưởng ứng dụng trí tuệ nhân tạo của bạn, bao gồm 200 cuộc gọi thông điệp mô hình OpenAI. Sau khi sử dụng hết phần được cấp miễn phí, bạn cần thu được các khóa API LLM từ các nhà cung cấp mô hình khác nhau và thêm chúng dưới mục **Cài đặt** -> **Cung cấp Mô hình** để kích hoạt khả năng mô hình bình thường. Nâng cấp không gian làm việc của bạn lên một kế hoạch trả phí có nghĩa là mở khóa các tài nguyên trả phí cho không gian làm việc đó. Ví dụ: nâng cấp lên gói Professional cho phép tạo hơn 10 ứng dụng (lên đến 50) với lượng lưu trữ vector tổng cộng lên đến 200MB kết hợp trên các dự án trong không gian làm việc đó. Các phiên bản khác nhau của kế hoạch và các tính năng như sau:

<table><thead><tr><th width="130">Metric</th><th width="210">Sandbox</th><th width="222">Chuyên nghiệp</th><th>Nhóm</th></tr></thead><tbody><tr><td>Giá</td><td>Free</td><td>$59/tháng</td><td>$159/tháng</td></tr><tr><td><strong>Cung cấp Mô hình</strong></td><td>OpenAI,Anthropic,Azure OpenAI,Llama2,Hugging Face,Replicate</td><td>OpenAI,Anthropic,Azure OpenAI, Llama2,Hugging Face,Replicate</td><td>OpenAI,Anthropic,Azure OpenAI, Llama2,Hugging Face,Replicate</td></tr><tr><td><strong>Thành viên Nhóm</strong></td><td>1</td><td>3</td><td>Không giới hạn</td></tr><tr><td><strong>Ứng dụng</strong></td><td>10</td><td>50</td><td>Không giới hạn</td></tr><tr><td><strong>Lưu trữ Vector</strong></td><td>5MB</td><td>200MB</td><td>1GB</td></tr><tr><td><strong>Ưu tiên Xử lý Tài liệu</strong></td><td>Tiêu chuẩn</td><td>Ưu tiên</td><td>Ưu tiên</td></tr><tr><td><strong>Thay Đổi Logo</strong></td><td>/</td><td>/</td><td>√</td></tr><tr><td><strong>Yêu Cầu Tin Nhắn</strong></td><td>500 mỗi ngày</td><td>Không giới hạn</td><td>Không giới hạn</td></tr><tr><td><strong>Hạn Mức Yêu Cầu RAG API</strong></td><td>/</td><td>√ Sắp ra mắt</td><td>√ Sắp ra mắt</td></tr><tr><td><strong>Hạn Mức Chú Thích</strong></td><td>10</td><td>2000</td><td>5000</td></tr><tr><td><strong>Mô hình Agent</strong></td><td>/</td><td>√ Sắp ra mắt</td><td>√ Sắp ra mắt</td></tr><tr><td><strong>Lịch sử Nhật ký</strong></td><td>30 ngày</td><td>Không giới hạn</td><td>Không giới hạn</td></tr></tbody></table>

Kiểm tra trang giá để biết thêm thông tin.

> \*\*Lưu trữ Vector:\*\*Lưu trữ vector được sử dụng để lưu trữ các cơ sở tri thức dưới dạng vector để các LLM hiểu. Mỗi 1MB có thể lưu trữ khoảng 1,2 triệu ký tự dữ liệu đã vector hóa (ước lượng sử dụng Bảng Mã Nhúng OpenAI, thay đổi qua các mô hình).
>
> \*\*Hạn Mức Chú Thích:\*\*Chỉnh sửa và chú thích thủ công các phản hồi cung cấp khả năng trả lời câu hỏi tùy chỉnh chất lượng cao cho các ứng dụng.
>
> \*\*Yêu Cầu Tin Nhắn:\*\*Số lần API ChatX được gọi hàng ngày trong các phiên ứng dụng (thay vì việc sử dụng tài nguyên API LLM). Nó bao gồm tất cả các tin nhắn được tạo ra từ các ứng dụng của bạn thông qua các cuộc gọi API hoặc trong các phiên ứng dụng WebApp. **Lưu ý: Các hạn ngạch hàng ngày được làm mới vào lúc nửa đêm giờ Thái Bình Dương.**
>
> \*\*Hạn Mức Yêu Cầu RAG API:\*\*Đề cập đến số lần gọi API triệu hồi chỉ các khả năng xử lý cơ sở tri thức của ChatX.

## Theo dõi Việc Sử Dụng Tài Nguyên

Bạn có thể xem chi tiết việc sử dụng tài nguyên trên trang Thanh toán của không gian làm việc của bạn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FpM0WKVWE1yr6nubDNBfk%2Fca.png?alt=media&amp;token=8d86fedf-54a0-48ac-8f00-813472cd0292" alt=""><figcaption><p>giám sát việc sử dụng tài nguyên</p></figcaption></figure>

## Câu hỏi thường gặp

1. Nếu việc sử dụng tài nguyên của bạn vượt quá kế hoạch Miễn phí trước khi bạn nâng cấp lên một kế hoạch trả phí thì điều gì sẽ xảy ra?

   > Trong giai đoạn Beta của ChatX, các hạn ngạch dư thừa được cung cấp miễn phí cho các không gian làm việc của người dùng đầu tiên. Sau khi hệ thống thanh toán của ChatX được triển khai, dữ liệu hiện tại của bạn sẽ không bị mất, nhưng không gian làm việc của bạn sẽ không còn có khả năng xử lý thêm lưu trữ vector văn bản. Bạn sẽ cần nâng cấp lên một kế hoạch phù hợp để tiếp tục sử dụng ChatX.
2. Nếu cả kế hoạch Professional và Team đều không đáp ứng được nhu cầu sử dụng của tôi thì sao?

   > Nếu bạn là một doanh nghiệp lớn cần các kế hoạch tiên tiến hơn, vui lòng gửi email cho chúng tôi tại <business@chatx.ai>.
3. Trong những trường hợp nào tôi cần phải thanh toán khi sử dụng phiên bản CE?

   > Khi sử dụng phiên bản CE, vui lòng tuân theo các điều khoản giấy phép mã nguồn mở của chúng tôi. Nếu bạn cần sử dụng thương mại, như loại bỏ logo của ChatX hoặc yêu cầu nhiều không gian làm việc, sử dụng ChatX trong một mô hình SaaS, bạn sẽ cần liên hệ với chúng tôi tại <business@chatx.ai> để có giấy phép thương mại.


# Tích hợp công cụ nhanh

Ở đây, chúng tôi sẽ sử dụng GoogleSearch như một ví dụ để minh họa cách tích hợp một công cụ một cách nhanh chóng.

## 1. Chuẩn bị tệp yaml của Nhà cung cấp Công cụ <a href="#id-1.-prepare-the-tool-provider-yaml" id="id-1.-prepare-the-tool-provider-yaml"></a>

#### Giới thiệu

Tệp yaml này khai báo một nhà cung cấp công cụ mới và bao gồm thông tin như tên nhà cung cấp, biểu tượng, tác giả và các chi tiết khác được lấy từ frontend để hiển thị.

#### Ví dụ

Chúng ta cần tạo một mô-đun `google` (thư mục) trong `core/tools/provider/builtin`, và tạo `google.yaml`. Tên phải phù hợp với tên mô-đun.

Sau đó, tất cả các hoạt động liên quan đến công cụ này sẽ được thực hiện trong mô-đun này.

```
identity: # Basic information of the tool provider
  author: Dify # Author
  name: google # Name, unique, no duplication with other providers
  label: # Label for frontend display
    en_US: Google # English label
    zh_Hans: Google # Chinese label
  description: # Description for frontend display
    en_US: Google # English description
    zh_Hans: Google # Chinese description
  icon: icon.svg # Icon, needs to be placed in the _assets folder of the current module
```

* Trường `identity` là bắt buộc, nó chứa thông tin cơ bản của nhà cung cấp công cụ, bao gồm tác giả, tên, nhãn, mô tả, biểu tượng, v.v.
  * Biểu tượng cần được đặt trong thư mục `_assets` của mô-đun hiện tại, bạn có thể tham khảo: api/core/tools/provider/builtin/google/\_assets/icon.svg

    ```
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none">
      <path d="M22.501 12.7332C22.501 11.8699 22.4296 11.2399 22.2748 10.5865H12.2153V14.4832H18.12C18.001 15.4515 17.3582 16.9099 15.9296 17.8898L15.9096 18.0203L19.0902 20.435L19.3106 20.4565C21.3343 18.6249 22.501 15.9298 22.501 12.7332Z" fill="#4285F4"/>
      <path d="M12.214 23C15.1068 23 17.5353 22.0666 19.3092 20.4567L15.9282 17.8899C15.0235 18.5083 13.8092 18.9399 12.214 18.9399C9.38069 18.9399 6.97596 17.1083 6.11874 14.5766L5.99309 14.5871L2.68583 17.0954L2.64258 17.2132C4.40446 20.6433 8.0235 23 12.214 23Z" fill="#34A853"/>
      <path d="M6.12046 14.5766C5.89428 13.9233 5.76337 13.2233 5.76337 12.5C5.76337 11.7766 5.89428 11.0766 6.10856 10.4233L6.10257 10.2841L2.75386 7.7355L2.64429 7.78658C1.91814 9.20993 1.50146 10.8083 1.50146 12.5C1.50146 14.1916 1.91814 15.7899 2.64429 17.2132L6.12046 14.5766Z" fill="#FBBC05"/>
      <path d="M12.2141 6.05997C14.2259 6.05997 15.583 6.91163 16.3569 7.62335L19.3807 4.73C17.5236 3.03834 15.1069 2 12.2141 2C8.02353 2 4.40447 4.35665 2.64258 7.78662L6.10686 10.4233C6.97598 7.89166 9.38073 6.05997 12.2141 6.05997Z" fill="#EB4335"/>
    </svg>
    ```

## 2. Chuẩn bị Chứng chỉ Nhà cung cấp <a href="#id-2.-prepare-provider-credentials" id="id-2.-prepare-provider-credentials"></a>

Google, như một công cụ của bên thứ ba, sử dụng API được cung cấp bởi SerpApi, đòi hỏi một Khóa API để sử dụng. Điều này có nghĩa là công cụ này cần một chứng chỉ để sử dụng. Đối với các công cụ như `wikipedia`, không cần phải điền vào trường chứng chỉ, bạn có thể tham khảo: api/core/tools/provider/builtin/wikipedia/wikipedia.yaml

```
identity:
  author: Dify
  name: wikipedia
  label:
    en_US: Wikipedia
    zh_Hans: 维基百科
    pt_BR: Wikipedia
  description:
    en_US: Wikipedia is a free online encyclopedia, created and edited by volunteers around the world.
    zh_Hans: 维基百科是一个由全世界的志愿者创建和编辑的免费在线百科全书。
    pt_BR: Wikipedia is a free online encyclopedia, created and edited by volunteers around the world.
  icon: icon.svg
credentials_for_provider:
```

Sau khi cấu hình trường chứng chỉ, hiệu ứng như sau:

```
identity:
  author: Dify
  name: google
  label:
    en_US: Google
    zh_Hans: Google
  description:
    en_US: Google
    zh_Hans: Google
  icon: icon.svg
credentials_for_provider: # Credential field
  serpapi_api_key: # Credential field name
    type: secret-input # Credential field type
    required: true # Required or not
    label: # Credential field label
      en_US: SerpApi API key # English label
      zh_Hans: SerpApi API key # Chinese label
    placeholder: # Credential field placeholder
      en_US: Please input your SerpApi API key # English placeholder
      zh_Hans: 请输入你的 SerpApi API key # Chinese placeholder
    help: # Credential field help text
      en_US: Get your SerpApi API key from SerpApi # English help text
      zh_Hans: 从 SerpApi 获取您的 SerpApi API key # Chinese help text
    url: https://serpapi.com/manage-api-key # Credential field help link
```

* `type`: Loại trường chứng chỉ, hiện tại có thể là `secret-input`, `text-input`, hoặc `select`, tương ứng với hộp nhập mật khẩu, hộp nhập văn bản và hộp thả xuống, tương ứng. Nếu thiết lập thành `secret-input`, nó sẽ ẩn nội dung nhập trên frontend và backend sẽ mã hóa nội dung nhập.

## 3. Chuẩn bị Công cụ yaml <a href="#id-3.-prepare-tool-yaml" id="id-3.-prepare-tool-yaml"></a>

Một nhà cung cấp có thể có nhiều công cụ, mỗi công cụ cần một tệp yaml để mô tả, tệp này chứa thông tin cơ bản, tham số, đầu ra, v.v. của công cụ.

Vẫn tiếp tục sử dụng GoogleSearch làm ví dụ, chúng ta cần tạo một mô-đun `công cụ` trong mô-đun `google`, và tạo `tools/google_search.yaml`, nội dung như sau.

```
identity: # Basic information of the tool
  name: google_search # Tool name, unique, no duplication with other tools
  author: Dify # Author
  label: # Label for frontend display
    en_US: GoogleSearch # English label
    zh_Hans: 谷歌搜索 # Chinese label
description: # Description for frontend display
  human: # Introduction for frontend display, supports multiple languages
    en_US: A tool for performing a Google SERP search and extracting snippets and webpages.Input should be a search query.
    zh_Hans: 一个用于执行 Google SERP 搜索并提取片段和网页的工具。输入应该是一个搜索查询。
  llm: A tool for performing a Google SERP search and extracting snippets and webpages.Input should be a search query. # Introduction passed to LLM, in order to make LLM better understand this tool, we suggest to write as detailed information about this tool as possible here, so that LLM can understand and use this tool
parameters: # Parameter list
  - name: query # Parameter name
    type: string # Parameter type
    required: true # Required or not
    label: # Parameter label
      en_US: Query string # English label
      zh_Hans: 查询语句 # Chinese label
    human_description: # Introduction for frontend display, supports multiple languages
      en_US: used for searching
      zh_Hans: 用于搜索网页内容
    llm_description: key words for searching # Introduction passed to LLM, similarly, in order to make LLM better understand this parameter, we suggest to write as detailed information about this parameter as possible here, so that LLM can understand this parameter
    form: llm # Form type, llm means this parameter needs to be inferred by Agent, the frontend will not display this parameter
  - name: result_type
    type: select # Parameter type
    required: true
    options: # Drop-down box options
      - value: text
        label:
          en_US: text
          zh_Hans: 文本
      - value: link
        label:
          en_US: link
          zh_Hans: 链接
    default: link
    label:
      en_US: Result type
      zh_Hans: 结果类型
    human_description:
      en_US: used for selecting the result type, text or link
      zh_Hans: 用于选择结果类型，使用文本还是链接进行展示
    form: form # Form type, form means this parameter needs to be filled in by the user on the frontend before the conversation starts
```

* Trường `identity`là bắt buộc, nó chứa thông tin cơ bản của công cụ, bao gồm tên, tác giả, nhãn, mô tả, v.v.
* `parameters` Danh sách tham số
  * `name` Tên tham số, duy nhất, không trùng với các tham số khác
  * `type` Loại tham số, hiện tại hỗ trợ bốn loại: `string`, `number`, `boolean`, `select`, tương ứng với văn bản, số, boolean, hộp thả xuống
  * `required` Yêu cầu hoặc không
    * Trong chế độ `llm`, nếu tham số này là bắt buộc, Agent phải suy luận tham số này
    * Trong chế độ `form`, nếu tham số này là bắt buộc, người dùng phải điền vào tham số này trên frontend trước khi cuộc trò chuyện bắt đầu
  * `options` Các tùy chọn của tham số
    * Trong chế độ `llm`, ChatX sẽ truyền tất cả các tùy chọn này cho LLM, LLM có thể suy luận dựa trên các tùy chọn này
    * Trong chế độ `form`, khi `type` là `select`, frontend sẽ hiển thị các tùy chọn này
  * `default` Giá trị mặc định
  * `label` Nhãn tham số, cho việc hiển thị ở frontend
  * `human_description` Giới thiệu cho việc hiển thị ở frontend, hỗ trợ nhiều ngôn ngữ
  * `llm_description` Giới thiệu được truyền cho LLM, để LLM hiểu rõ hơn về tham số này, chúng tôi đề xuất viết thông tin chi tiết về tham số này càng nhiều càng tốt ở đây, để LLM có thể hiểu và sử dụng tham số này
  * `form` Loại biểu mẫu, hiện tại hỗ trợ `llm`, `form` hai loại, tương ứng với tự suy luận của Agent và điền trên frontend

## 4. Thêm Công cụ Logic <a href="#id-4.-add-tool-logic" id="id-4.-add-tool-logic"></a>

Sau khi hoàn thành cấu hình công cụ, chúng ta có thể bắt đầu viết mã công cụ xác định cách gọi nó.

Tạo `google_search.py` trong mô-đun `google/tools`, nội dung như sau.

```
from core.tools.tool.builtin_tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage

from typing import Any, Dict, List, Union

class GoogleSearchTool(BuiltinTool):
    def _invoke(self, 
                user_id: str,
               tool_parameters: Dict[str, Any], 
        ) -> Union[ToolInvokeMessage, List[ToolInvokeMessage]]:
        """
            invoke tools
        """
        query = tool_parameters['query']
        result_type = tool_parameters['result_type']
        api_key = self.runtime.credentials['serpapi_api_key']
        # TODO: search with serpapi
        result = SerpAPI(api_key).run(query, result_type=result_type)

        if result_type == 'text':
            return self.create_text_message(text=result)
        return self.create_link_message(link=result)
```

#### Tham số

Logic tổng thể của công cụ nằm trong phương thức `_invoke`, phương thức này chấp nhận hai tham số: `user_id` và `tool_parameters`, đại diện cho ID người dùng và các tham số công cụ tương ứng

#### Dữ liệu Trả về

Khi công cụ trả về, bạn có thể chọn trả về một tin nhắn hoặc nhiều tin nhắn, ở đây chúng ta trả về một tin nhắn, sử dụng `create_text_message` và `create_link_message` có thể tạo ra một tin nhắn văn bản hoặc một tin nhắn liên kết.

#### 5. Thêm Mã Nhà cung cấp <a href="#id-5.-add-provider-code" id="id-5.-add-provider-code"></a>

Cuối cùng, chúng ta cần tạo một lớp nhà cung cấp dưới mô-đun nhà cung cấp để triển khai logic xác minh chứng chỉ của nhà cung cấp. Nếu xác minh chứng chỉ thất bại, nó sẽ ném một ngoại lệ `ToolProviderCredentialValidationError`.

Tạo `google.py` trong mô-đun `google`, nội dung như sau.

```
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolProviderType
from core.tools.tool.tool import Tool
from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
from core.tools.errors import ToolProviderCredentialValidationError

from core.tools.provider.builtin.google.tools.google_search import GoogleSearchTool

from typing import Any, Dict

class GoogleProvider(BuiltinToolProviderController):
    def _validate_credentials(self, credentials: Dict[str, Any]) -> None:
        try:
            # 1. Here you need to instantiate a GoogleSearchTool with GoogleSearchTool(), it will automatically load the yaml configuration of GoogleSearchTool, but at this time it does not have credential information inside
            # 2. Then you need to use the fork_tool_runtime method to pass the current credential information to GoogleSearchTool
            # 3. Finally, invoke it, the parameters need to be passed according to the parameter rules configured in the yaml of GoogleSearchTool
            GoogleSearchTool().fork_tool_runtime(
                meta={
                    "credentials": credentials,
                }
            ).invoke(
                user_id='',
                tool_parameters={
                    "query": "test",
                    "result_type": "link"
                },
            )
        except Exception as e:
            raise ToolProviderCredentialValidationError(str(e))
```

## Hoàn thành

Sau khi hoàn thành các bước trên, chúng ta có thể thấy công cụ này trên frontend và nó có thể được sử dụng trong Agent.

Tất nhiên, vì google\_search cần một chứng chỉ, trước khi sử dụng nó, bạn cũng cần nhập chứng chỉ của mình trên frontend.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fux44kZHpdAdLc7Ao3KKM%2FCapture.JPG?alt=media&amp;token=991a5fc6-d2d6-4c2f-8dcc-eaa6e398f0d5" alt=""><figcaption></figcaption></figure>


# Tích hợp công cụ nâng cao

Trước khi bắt đầu với hướng dẫn nâng cao này, vui lòng đảm bảo rằng bạn đã hiểu cơ bản về quy trình tích hợp công cụ trong ChatX. Kiểm tra [Hướng Dẫn Nhanh](/iv-huong-dan-tich-hop-nang-cao/tich-hop-cong-cu-nhanh) để có một cái nhìn nhanh chóng.

## Giao diện Công cụ

Chúng tôi đã xác định một loạt các phương thức trợ giúp trong lớp `Tool` để giúp các nhà phát triển nhanh chóng xây dựng các công cụ phức tạp hơn.

### Trả lại Tin Nhắn

ChatX hỗ trợ các loại tin nhắn khác nhau như `văn bản`, `liên kết`, `hình ảnh` và tệp `BLOB`. Bạn có thể trả lại các loại tin nhắn khác nhau cho LLM và người dùng thông qua các giao diện sau đây.

Vui lòng lưu ý, một số tham số trong các giao diện sau sẽ được giới thiệu trong các phần sau.

### URL Hình Ảnh

Bạn chỉ cần chuyển URL của hình ảnh, và ChatX sẽ tự động tải xuống hình ảnh và trả lại cho người dùng.

```
    def create_image_message(self, image: str, save_as: str = '') -> ToolInvokeMessage:
        """
            create an image message

            :param image: the url of the image
            :return: the image message
        """
```

### Liên kết

Nếu bạn cần trả lại một liên kết, bạn có thể sử dụng giao diện sau đây.

```
    def create_link_message(self, link: str, save_as: str = '') -> ToolInvokeMessage:
        """
            create a link message

            :param link: the url of the link
            :return: the link message
        """
```

### Văn Bản

Nếu bạn cần trả lại một tin nhắn văn bản, bạn có thể sử dụng giao diện sau đây.

```
    def create_text_message(self, text: str, save_as: str = '') -> ToolInvokeMessage:
        """
            create a text message

            :param text: the text of the message
            :return: the text message
        """
```

### Tệp BLOB

Nếu bạn cần trả lại dữ liệu thô của một tệp, như hình ảnh, âm thanh, video, PPT, Word, Excel, v.v., bạn có thể sử dụng giao diện sau đây.

* `blob` Dữ liệu thô của tệp, kiểu bytes
* `meta` Thông tin siêu dữ liệu của tệp, nếu bạn biết loại tệp, tốt nhất là chuyển một `mime_type`, nếu không, ChatX sẽ sử dụng `octet/stream` làm loại mặc định

```
    def create_blob_message(self, blob: bytes, meta: dict = None, save_as: str = '') -> ToolInvokeMessage:
        """
            create a blob message

            :param blob: the blob
            :return: the blob message
        """
```

### Công Cụ Lối Tắt

Trong các ứng dụng mô hình lớn, chúng ta có hai nhu cầu phổ biến:

* Đầu tiên, tóm tắt một đoạn văn bản dài trước, sau đó chuyển nội dung tóm tắt cho LLM để tránh văn bản gốc quá dài để xử lý bởi LLM
* Nội dung thu được bởi công cụ là một liên kết, và thông tin trang web cần được lục trước khi có thể trả lại cho LLM

Để giúp các nhà phát triển nhanh chóng thực hiện hai nhu cầu này, chúng tôi cung cấp hai công cụ lối tắt sau đây.

### Công Cụ Tóm Tắt Văn Bản

Công cụ này nhận vào một user\_id và văn bản cần tóm tắt, và trả lại văn bản đã tóm tắt. ChatX sẽ sử dụng mô hình mặc định của không gian làm việc hiện tại để tóm tắt văn bản dài.

```
    def summary(self, user_id: str, content: str) -> str:
        """
            summary the content

            :param user_id: the user id
            :param content: the content
            :return: the summary
        """
```

### Công Cụ Lục Trang Web

Công cụ này nhận vào liên kết trang web cần lục và một user\_agent (có thể để trống), và trả lại một chuỗi chứa thông tin của trang web. `User_agent` là một tham số tùy chọn có thể được sử dụng để xác định công cụ. Nếu không chuyển, ChatX sẽ sử dụng `user_agent` mặc định.

```
    def get_url(self, url: str, user_agent: str = None) -> str:
        """
            get url
        """ the crawled result
```

### Vùng Biến

Chúng tôi đã giới thiệu một bể biến trong `Công cụ` để lưu trữ các biến, tệp, v.v. được tạo ra trong quá trình hoạt động của công cụ. Các biến này có thể được sử dụng bởi các công cụ khác trong quá trình hoạt động của công cụ.

Tiếp theo, chúng ta sẽ sử dụng `DallE3` và `Vectorizer.AI` làm ví dụ để giới thiệu cách sử dụng bể biến.

* `DallE3` là một công cụ tạo hình ảnh có thể tạo ra hình ảnh dựa trên văn bản. Ở đây, chúng tôi sẽ để `DallE3` tạo ra một logo cho một quán cà phê.
* `Vectorizer.AI` là một công cụ chuyển đổi hình ảnh vector có thể chuyển đổi hình ảnh thành hình ảnh vector, để hình ảnh có thể được phóng to vô hạn mà không bị méo mó. Ở đây, chúng tôi sẽ chuyển đổi biểu tượng PNG được tạo ra bởi `DallE3` thành một hình ảnh vector, để nó có thể được sử dụng thực sự bởi các nhà thiết kế.

### **DallE3**

Đầu tiên, chúng tôi sử dụng DallE3. Sau khi tạo hình ảnh, chúng tôi lưu hình ảnh vào bể biến. Mã như sau:

```
from typing import Any, Dict, List, Union
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.tool.builtin_tool import BuiltinTool

from base64 import b64decode

from openai import OpenAI

class DallE3Tool(BuiltinTool):
    def _invoke(self, 
                user_id: str, 
               tool_paramters: Dict[str, Any], 
        ) -> Union[ToolInvokeMessage, List[ToolInvokeMessage]]:
        """
            invoke tools
        """
        client = OpenAI(
            api_key=self.runtime.credentials['openai_api_key'],
        )

        # prompt
        prompt = tool_paramters.get('prompt', '')
        if not prompt:
            return self.create_text_message('Please input prompt')

        # call openapi dalle3
        response = client.images.generate(
            prompt=prompt, model='dall-e-3',
            size='1024x1024', n=1, style='vivid', quality='standard',
            response_format='b64_json'
        )

        result = []
        for image in response.data:
            # Save all images to the variable pool through the save_as parameter. The variable name is self.VARIABLE_KEY.IMAGE.value. If new images are generated later, they will overwrite the previous images.
            result.append(self.create_blob_message(blob=b64decode(image.b64_json), 
                                                   meta={ 'mime_type': 'image/png' },
                                                    save_as=self.VARIABLE_KEY.IMAGE.value))

        return result
```

Lưu ý rằng chúng tôi đã sử dụng `self.VARIABLE_KEY.IMAGE.value` như tên biến của hình ảnh. Để cho các công cụ của các nhà phát triển có thể hợp tác với nhau, chúng tôi đã định nghĩa `KEY` này. Bạn có thể sử dụng nó tự do, hoặc bạn có thể chọn không sử dụng `KEY` này. Việc chuyển một KEY tùy chỉnh cũng được chấp nhận.

### **Vectorizer.AI**

Tiếp theo, chúng ta sử dụng Vectorizer.AI để chuyển đổi biểu tượng PNG được tạo ra bởi DallE3 thành một hình ảnh vector. Hãy đi qua các chức năng mà chúng tôi đã định nghĩa ở đây. Mã như sau:

```
from core.tools.tool.builtin_tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParamter
from core.tools.errors import ToolProviderCredentialValidationError

from typing import Any, Dict, List, Union
from httpx import post
from base64 import b64decode

class VectorizerTool(BuiltinTool):
    def _invoke(self, user_id: str, tool_paramters: Dict[str, Any]) \
        -> Union[ToolInvokeMessage, List[ToolInvokeMessage]]:
        """
        Tool invocation, the image variable name needs to be passed in from here, so that we can get the image from the variable pool
        """
        
    
    def get_runtime_parameters(self) -> List[ToolParamter]:
        """
        Override the tool parameter list, we can dynamically generate the parameter list based on the actual situation in the current variable pool, so that the LLM can generate the form based on the parameter list
        """
        
    
    def is_tool_avaliable(self) -> bool:
        """
        Whether the current tool is available, if there is no image in the current variable pool, then we don't need to display this tool, just return False here
        """     
```

Tiếp theo, hãy thực hiện ba chức năng này

```
from core.tools.tool.builtin_tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParamter
from core.tools.errors import ToolProviderCredentialValidationError

from typing import Any, Dict, List, Union
from httpx import post
from base64 import b64decode

class VectorizerTool(BuiltinTool):
    def _invoke(self, user_id: str, tool_paramters: Dict[str, Any]) \
        -> Union[ToolInvokeMessage, List[ToolInvokeMessage]]:
        """
            invoke tools
        """
        api_key_name = self.runtime.credentials.get('api_key_name', None)
        api_key_value = self.runtime.credentials.get('api_key_value', None)

        if not api_key_name or not api_key_value:
            raise ToolProviderCredentialValidationError('Please input api key name and value')

        # Get image_id, the definition of image_id can be found in get_runtime_parameters
        image_id = tool_paramters.get('image_id', '')
        if not image_id:
            return self.create_text_message('Please input image id')

        # Get the image generated by DallE from the variable pool
        image_binary = self.get_variable_file(self.VARIABLE_KEY.IMAGE)
        if not image_binary:
            return self.create_text_message('Image not found, please request user to generate image firstly.')

        # Generate vector image
        response = post(
            'https://vectorizer.ai/api/v1/vectorize',
            files={ 'image': image_binary },
            data={ 'mode': 'test' },
            auth=(api_key_name, api_key_value), 
            timeout=30
        )

        if response.status_code != 200:
            raise Exception(response.text)
        
        return [
            self.create_text_message('the vectorized svg is saved as an image.'),
            self.create_blob_message(blob=response.content,
                                    meta={'mime_type': 'image/svg+xml'})
        ]
    
    def get_runtime_parameters(self) -> List[ToolParamter]:
        """
        override the runtime parameters
        """
        # Here, we override the tool parameter list, define the image_id, and set its option list to all images in the current variable pool. The configuration here is consistent with the configuration in yaml.
        return [
            ToolParamter.get_simple_instance(
                name='image_id',
                llm_description=f'the image id that you want to vectorize, \
                    and the image id should be specified in \
                        {[i.name for i in self.list_default_image_variables()]}',
                type=ToolParamter.ToolParameterType.SELECT,
                required=True,
                options=[i.name for i in self.list_default_image_variables()]
            )
        ]
    
    def is_tool_avaliable(self) -> bool:
        # Only when there are images in the variable pool, the LLM needs to use this tool
        return len(self.list_default_image_variables()) > 0
```

Đáng chú ý rằng chúng tôi thực sự không sử dụng `image_id` ở đây. Chúng tôi giả định rằng phải có một hình ảnh trong bể biến mặc định khi gọi công cụ này, vì vậy chúng tôi trực tiếp sử dụng `image_binary = self.get_variable_file(self.VARIABLE_KEY.IMAGE)` để lấy hình ảnh. Trong các trường hợp mà khả năng của mô hình yếu, chúng tôi khuyến nghị các nhà phát triển làm điều tương tự, điều này có thể hiệu quả cải thiện khả năng chịu lỗi và tránh việc mô hình truyền các tham số không chính xác.


# Hiển thị tiện ích mở rộng API trên Internet công cộng bằng cách sử dụng Cloudflare Workers

## Bắt đầu

Vì Phần Mở Rộng API của ChatX yêu cầu một địa chỉ internet công khai làm Điểm Cuối API, chúng ta cần triển khai phần mở rộng API của mình đến một địa chỉ internet công khai. Ở đây, chúng tôi sử dụng Cloudflare Workers để triển khai phần mở rộng API của chúng tôi.

Chúng ta sao chép Repository GitHub Mẫu, chứa một phần mở rộng API đơn giản. Chúng ta có thể sửa đổi điều này như là một cơ sở.

```
git clone https://github.com/crazywoola/dify-extension-workers.git
cp wrangler.toml.example wrangler.toml
```

Mở tệp `wrangler.toml` và sửa `tên` và `compatibility_date` thành tên ứng dụng của bạn và ngày tương thích của bạn.

Một cấu hình quan trọng ở đây là `TOKEN` trong `vars`, mà bạn sẽ cần cung cấp khi thêm phần mở rộng API vào ChatX. Vì lý do bảo mật, nên sử dụng một chuỗi ngẫu nhiên làm Token. Bạn không nên viết Token trực tiếp trong mã nguồn mà phải chuyển qua biến môi trường. Do đó, đừng commit wrangler.toml của bạn vào kho lưu trữ mã nguồn của bạn.

```
name = "dify-extension-example"
compatibility_date = "2023-01-01"

[vars]
TOKEN = "bananaiscool"
```

Phần mở rộng API này trả về một câu trích dẫn ngẫu nhiên từ Breaking Bad. Bạn có thể sửa đổi logic của phần mở rộng API này trong `src/index.ts`. Ví dụ này cho thấy cách tương tác với một API bên thứ ba.

```
// ⬇️ implement your logic here ⬇️
// point === "app.external_data_tool.query"
// https://api.breakingbadquotes.xyz/v1/quotes
const count = params?.inputs?.count ?? 1;
const url = `https://api.breakingbadquotes.xyz/v1/quotes/${count}`;
const result = await fetch(url).then(res => res.text())
// ⬆️ implement your logic here ⬆️
```

Repository này đơn giản hóa tất cả các cấu hình ngoại trừ logic kinh doanh. Bạn có thể trực tiếp sử dụng các lệnh `npm` để triển khai phần mở rộng API của bạn.

```
npm run deploy
```

Sau khi triển khai thành công, bạn sẽ nhận được một địa chỉ internet công khai, mà bạn có thể thêm vào ChatX làm `Điểm Cuối` API. Vui lòng lưu ý không bỏ lỡ đường dẫn điểm cuối.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FXEOMb6zcMPCNBh069n64%2Fca.png?alt=media&amp;token=0db5572c-49f1-4827-ac4d-6f942c72f099" alt=""><figcaption><p>Thêm Điểm Cuối API vào ChatX</p></figcaption></figure>

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fo9t0ycXEbzY5yl0X3sEJ%2FCapture.JPG?alt=media&amp;token=a6238054-6a0e-43fb-8970-68e37943c493" alt=""><figcaption><p>Thêm Công Cụ API trong trang chỉnh sửa Ứng dụng</p></figcaption></figure>

## Những Logic Khác TL;DR

### Về Bearer Auth

```
import { bearerAuth } from "hono/bearer-auth";

(c, next) => {
    const auth = bearerAuth({ token: c.env.TOKEN });
    return auth(c, next);
},
```

Logic xác thực Bearer của chúng tôi được hiển thị như trên. Chúng tôi sử dụng gói `hono/bearer-auth` cho xác thực Bearer. Bạn có thể sử dụng `c.env.TOKEN` trong `src/index.ts` để lấy Token.

### Về Xác Thực Tham Số

```
import { z } from "zod";
import { zValidator } from "@hono/zod-validator";

const schema = z.object({
  point: z.union([
    z.literal("ping"),
    z.literal("app.external_data_tool.query"),
  ]), // Restricts 'point' to two specific values
  params: z
    .object({
      app_id: z.string().optional(),
      tool_variable: z.string().optional(),
      inputs: z.record(z.any()).optional(),
      query: z.any().optional(),  // string or null
    })
    .optional(),
});
```

Chúng tôi sử dụng `zod` để định nghĩa các loại tham số. Bạn có thể sử dụng `zValidator` trong `src/index.ts` để kiểm tra tham số. Lấy các tham số được xác thực qua `const { point, params } = c.req.valid("json");`. Điểm của chúng tôi chỉ có hai giá trị, vì vậy chúng tôi sử dụng `z.union` cho định nghĩa. `params` là một tham số tùy chọn, được định nghĩa với `z.optional`. Nó bao gồm một tham số `inputs`, một loại `Record<string, any>` đại diện cho một đối tượng với khóa chuỗi và giá trị bất kỳ. Loại này có thể đại diện cho bất kỳ đối tượng nào. Bạn có thể lấy tham số `count` trong `src/index.ts` bằng cách sử dụng `params?.inputs?.count.`

### Truy Cập Nhật ký của Cloudflare Workers

```
wrangler tail
```

## Nội Dung Tham Khảo

* [Cloudflare Workers](https://workers.cloudflare.com/)
* [Cloudflare Workers CLI](https://developers.cloudflare.com/workers/cli-wrangler/install-update)


# Kết nối với các mô hình khác nhau

Tìm hiểu về các mô hình khác nhau được ChatX hỗ trợ.

ChatX hỗ trợ các nhà cung cấp mô hình lớn như loạt GPT của OpenAI và loạt Claude của Anthropic. Các khả năng và tham số của mỗi mô hình khác nhau, vì vậy hãy chọn một nhà cung cấp mô hình phù hợp với nhu cầu ứng dụng của bạn. **Lấy API key từ trang web chính thức của nhà cung cấp mô hình trước khi sử dụng trong ChatX.**

## Loại Mô Hình trong ChatX

ChatX phân loại mô hình thành 4 loại, mỗi loại cho các ứng dụng khác nhau:

1. **Mô Hình System Inference**: Được sử dụng trong các ứng dụng cho các nhiệm vụ như trò chuyện, tạo tên và đề xuất câu hỏi tiếp theo.

   > Các nhà cung cấp bao gồm [OpenAI](https://platform.openai.com/account/api-keys)、[Azure OpenAI Service](https://azure.microsoft.com/en-us/products/ai-services/openai-service/)、[Anthropic](https://console.anthropic.com/account/keys)、Hugging Face Hub、Replicate、Xinference、OpenLLM、[iFLYTEK SPARK](https://www.xfyun.cn/solutions/xinghuoAPI)、[WENXINYIYAN](https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application)、[TONGYI](https://dashscope.console.aliyun.com/api-key_management?spm=a2c4g.11186623.0.0.3bbc424dxZms9k)、[Minimax](https://api.minimax.chat/user-center/basic-information/interface-key)、ZHIPU(ChatGLM) [Ollama](https://docs.dify.ai/tutorials/model-configuration/ollama)、[LocalAI](https://github.com/mudler/LocalAI)、.
2. **Mô Hình Nhúng:** Được sử dụng để nhúng tài liệu đã phân đoạn vào kiến thức và xử lý các truy vấn của người dùng trong các ứng dụng.

   > Các nhà cung cấp bao gồm OpenAI, ZHIPU (ChatGLM), Jina AI([Jina Embeddings 2](https://jina.ai/embeddings/)).
3. [**Mô Hình Rerank**](/ii-tinh-nang-co-ban/rag-tao-tang-cuong-truy-xuat/rerank-sap-xep-lai)**:** Tăng cường khả năng tìm kiếm trong các LLM.

   > Nhà cung cấp: Cohere.
4. **Mô Hình Chuyển Đổi Giọng Nói thành Văn Bản:** Chuyển đổi từ ngữ nói thành văn bản trong các ứng dụng trò chuyện.

   > Nhà cung cấp: OpenAI.

ChatX dự định thêm nhiều nhà cung cấp LLM khác khi công nghệ và nhu cầu người dùng phát triển.

## Dịch Vụ Thử Nghiệm Mô Hình Được Lưu Trữ

ChatX cung cấp các hạn mức dùng thử cho người dùng dịch vụ đám mây để thử nghiệm các mô hình khác nhau. Thiết lập nhà cung cấp mô hình của bạn trước khi kết thúc thời gian dùng thử để đảm bảo việc sử dụng ứng dụng không bị gián đoạn.

* Dịch vụ Thử Nghiệm Mô Hình Được Lưu Trữ của OpenAI: Bao gồm 200 lời gọi cho các mô hình như GPT3.5-turbo, GPT3.5-turbo-16k, mô hình text-davinci-003.

## Thiết lập Mô Hình Mặc Định

ChatX tự động chọn mô hình mặc định dựa trên việc sử dụng. Cấu hình này trong `Cài Đặt > Nhà Cung Cấp Mô Hình.`

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fjl0ZVlAKlPGJLJlA5VWw%2FCapture.JPG?alt=media&amp;token=14a2b908-bdf3-40aa-a043-ca8c974be9f1" alt=""><figcaption></figcaption></figure>

## Cài Đặt Tích Hợp Mô Hình

Chọn mô hình của bạn trong `Cài Đặt > Nhà Cung Cấp Mô Hình` của ChatX .

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FqDndab7g0s5TiSaDKTg4%2FCapture.JPG?alt=media&amp;token=66a4fb01-d462-4f99-8d6e-ad82ff491dbf" alt=""><figcaption></figcaption></figure>

Các nhà cung cấp mô hình được chia thành hai loại:

1. Mô Hình Sở Hữu: Được phát triển bởi các nhà cung cấp như OpenAI và Anthropic.
2. Mô Hình Được Lưu Trữ: Cung cấp các mô hình của bên thứ ba, như Hugging Face và Replicate.

Phương pháp tích hợp khác nhau giữa các loại này.

**Nhà Cung Cấp Mô Hình Sở Hữu:** ChatX kết nối với tất cả các mô hình từ một nhà cung cấp tích hợp. Đặt API key của nhà cung cấp trong ChatX để tích hợp.

{% hint style="info" %}
ChatX sử dụng mã hóa PKCS1\_OAEP để bảo vệ API keys của bạn. Mỗi người dùng (tenant) có một cặp khóa duy nhất cho việc mã hóa, đảm bảo API keys của bạn được giữ bí mật.
{% endhint %}

**Nhà Cung Cấp Mô Hình Được Lưu Trữ:** Tích hợp các mô hình của bên thứ ba một cách riêng lẻ.

Các phương pháp tích hợp cụ thể không được mô tả ở đây.

* [Hugging Face](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-mo-hinh-khac-nhau/hugging-face)
* [Replicate](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-mo-hinh-khac-nhau/replicate)
* [Xinference](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-mo-hinh-khac-nhau/xinference)
* [OpenLLM](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-mo-hinh-khac-nhau/openllm)

## Các mô hình sử dụng <a href="#using-models" id="using-models"></a>

Sau khi được cấu hình, các mô hình này sẵn sàng cho việc sử dụng trong ứng dụng của bạn.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F0gIAfN9h5D3oRjpjWvjL%2Fca.png?alt=media&amp;token=bed09f73-a794-48e2-b6b2-7e3d71482915" alt=""><figcaption></figcaption></figure>


# Hugging Face

ChatX hỗ trợ Tạo Văn Bản và Nhúng. Dưới đây là các loại mô hình tương ứng trên Hugging Face:

* Tạo Văn Bản：[text-generation](https://huggingface.co/models?pipeline_tag=text-generation\&sort=trending)，[text2text-generation](https://huggingface.co/models?pipeline_tag=text2text-generation\&sort=trending)
* Nhúng：[feature-extraction](https://huggingface.co/models?pipeline_tag=feature-extraction\&sort=trending)

Các bước cụ thể như sau:

1. Bạn cần một tài khoản Hugging Face ([registered address](https://huggingface.co/join)).
2. Thiết lập API key của Hugging Face ([obtain address](https://huggingface.co/settings/tokens)).
3. Chọn một mô hình để truy cập vào [trang danh sách mô hình của Hugging Face](https://huggingface.co/models?pipeline_tag=text-generation\&sort=trending).

ChatX hỗ trợ truy cập vào các mô hình trên Hugging Face theo hai cách:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FpDPhFzlP4DuLvi7zteIn%2Fimage.png?alt=media&amp;token=4073a0b5-c5ad-4684-ab94-1de8dd9d1de0" alt=""><figcaption></figcaption></figure>

1. API Phân Đoán Được Lưu Trữ. Phương pháp này sử dụng mô hình được triển khai chính thức bởi Hugging Face. Không cần phí. Nhưng nhược điểm là chỉ một số ít mô hình hỗ trợ phương pháp này.
2. Điểm Kết Thúc Phân Đoán. Phương pháp này sử dụng tài nguyên như AWS được truy cập bởi Hugging Face để triển khai mô hình và yêu cầu thanh toán.

Các Mô Hình truy cập Hosted Inference API

### **1** Chọn một mô hình

API phân đoán được lưu trữ được hỗ trợ chỉ khi có một khu vực chứa API phân đoán được lưu trữ ở phía bên phải của trang chi tiết mô hình. Như hình dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fo0vz22e5fE3ShQpp25kD%2Fca.png?alt=media&amp;token=c38756a0-347e-482a-885d-5453b63127d1" alt=""><figcaption></figcaption></figure>

Trên trang chi tiết mô hình, bạn có thể nhận được tên của mô hình.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FCV5AFxc2bhAHkN0c9XQ4%2Fca.png?alt=media&amp;token=281b5797-fc38-446f-8071-d25339d2497d" alt=""><figcaption></figcaption></figure>

### **2 Sử dụng truy cập mô hình trong ChatX**

Chọn API Phân Đoán Được Lưu Trữ cho Loại Điểm Kết Thúc trong `Cài Đặt > Nhà Cung Cấp Mô Hình > Hugging Face > Model Type`. Như hình dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FYBFqLhzRZN9ugkEUAP9B%2FCapture.JPG?alt=media&amp;token=7561b94a-e8c7-4f98-a313-6714fae7214a" alt=""><figcaption></figcaption></figure>

API Token là API Key được thiết lập ở đầu bài viết. Tên mô hình là tên mô hình nhận được ở bước trước đó.

## Phương thức 2: Inference Endpoint

### **1** Chọn mô hình để triển khai

Inference Endpoint chỉ được hỗ trợ cho các mô hình có tùy chọn Inference Endpoint dưới nút Triển Khai ở phía bên phải của trang chi tiết mô hình. Như hình dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FG68EWwlejztCMFI0ChkR%2Fca.png?alt=media&amp;token=b1e33252-8394-4d45-a9a7-d772fa2fca44" alt=""><figcaption></figcaption></figure>

### **2** Triển khai mô hình

Nhấp vào nút Triển Khai cho mô hình và chọn tùy chọn Inference Endpoint. Nếu bạn chưa liên kết thẻ ngân hàng trước đó, bạn sẽ cần phải liên kết thẻ. Chỉ cần tuân theo quy trình. Sau khi liên kết thẻ, giao diện sau sẽ xuất hiện: chỉnh sửa cấu hình theo yêu cầu và nhấn vào Tạo Endpoint ở góc dưới bên trái để tạo một Inference Endpoint.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FfRsPHm330NZUtFixjk43%2Fca.png?alt=media&amp;token=f8de67c7-af52-4b03-b279-981f766201ad" alt=""><figcaption></figcaption></figure>

Sau khi mô hình được triển khai, bạn có thể thấy Endpoint URL.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FStI7s5Cvv4iQR6LHf2EV%2Fca.png?alt=media&amp;token=57cfde11-0e6d-491a-8564-07b3e539dc02" alt=""><figcaption></figcaption></figure>

### **3** Sử dụng truy cập mô hình trong ChatX

Chọn Inference Endpoints cho Endpoint Type trong `Cài Đặt > Nhà Cung Cấp Mô Hình > Hugging face > Model Type`. Như hình dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FEBsnSqGv4wEsLQv0oUY8%2FCapture.JPG?alt=media&amp;token=109313fd-04d1-4d59-91e0-2b5b6aae4ec8" alt=""><figcaption></figcaption></figure>

API Token là API Key được thiết lập ở đầu bài viết. `Tên của mô hình Tạo Văn Bản có thể là bất kỳ, nhưng tên của mô hình Nhúng cần phải phù hợp với Hugging Face`. URL Điểm Kết Thúc là URL Điểm Kết Thúc nhận được sau khi triển khai mô hình thành công ở bước trước đó.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FBYKv8UT6jEJLxcOJD14v%2Fca.png?alt=media&amp;token=b140eef1-3494-49a3-824e-76e5a0ffff9f" alt=""><figcaption></figcaption></figure>

> Lưu Ý: "Tên Người Dùng / Tên Tổ Chức" cho Nhúng cần phải điền theo phương pháp triển khai của bạn trên [Inference Endpoints](https://huggingface.co/docs/inference-endpoints/guides/access) của Hugging Face, với "[Tên Người Dùng](https://huggingface.co/login?next=%2Fsettings%2Faccount)" hoặc "[Tên Tổ Chức](https://ui.endpoints.huggingface.co/)".


# Replicate

ChatX hỗ trợ truy cập vào các [mô hình Ngôn ngữ](https://replicate.com/collections/language-models) và các [mô hình Nhúng](https://replicate.com/collections/embedding-models) trên Replicate. Các mô hình Ngôn ngữ tương ứng với mô hình lập luận của ChatX, và các mô hình Nhúng tương ứng với mô hình Nhúng của ChatX.

Các bước cụ thể như sau:

1. Bạn cần phải có một tài khoản Replicate ([registered address](https://replicate.com/signin?next=/docs)).
2. Lấy API Key ([get address](https://replicate.com/signin?next=/docs)).
3. Chọn một mô hình. Chọn mô hình trong phần [Mô hình Ngôn ngữ](https://replicate.com/collections/language-models) và [Mô hình Nhúng](https://replicate.com/collections/embedding-models).
4. Thêm mô hình trong `Cài đặt  > Nhà cung cấp Mô hình > Replicate` của ChatX.

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2Fxak4SeuNec8xiKQK1GiU%2FCapture.JPG?alt=media&amp;token=5b2ec6a2-d958-496c-9d20-111f2df630c4" alt=""><figcaption></figcaption></figure>

API Key là API Key được thiết lập ở bước 2. Tên Mô hình và Phiên bản Mô hình có thể được tìm thấy trên trang chi tiết của mô hình:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2F3Ioy5U6OvS8On0vyhsbm%2Fimage.png?alt=media&amp;token=3b01d8ce-aa1b-49db-8ff3-9239edfe89e8" alt=""><figcaption></figcaption></figure>


# Xinference

[Xorbits inference](https://github.com/xorbitsai/inference) là một thư viện mạnh mẽ và linh hoạt được thiết kế để phục vụ các mô hình ngôn ngữ, nhận dạng giọng nói và đa phương tiện, và thậm chí có thể được sử dụng trên laptop. Nó hỗ trợ nhiều mô hình tương thích với GGML, như chatglm, baichuan, whisper, vicuna, orca, vv. Và ChatX hỗ trợ kết nối với khả năng suy luận và nhúng mô hình ngôn ngữ lớn đã được triển khai của Xinference một cách cục bộ.

## Triển khai Xinference

Vui lòng lưu ý rằng thường bạn không cần phải tìm địa chỉ IP của container Docker một cách thủ công để truy cập dịch vụ, vì Docker cung cấp tính năng ánh xạ cổng. Điều này cho phép bạn ánh xạ các cổng container vào các cổng máy cục bộ, cho phép truy cập thông qua địa chỉ cục bộ của bạn. Ví dụ, nếu bạn sử dụng tham số `-p 80:80` khi chạy container, bạn có thể truy cập dịch vụ bên trong container bằng cách truy cập vào `http://localhost:80` hoặc `http://127.0.0.1:80`.

Nếu bạn thực sự cần sử dụng địa chỉ IP của container trực tiếp, các bước trên sẽ giúp bạn có thông tin này.

### Bắt đầu Xinference

Có hai cách triển khai Xinference, đó là [triển khai cục bộ](https://github.com/xorbitsai/inference/blob/main/README.md#local) và [triển khai phân tán](https://github.com/xorbitsai/inference/blob/main/README.md#distributed), ở đây chúng tôi lấy ví dụ về triển khai cục bộ.

1. Trước tiên, cài đặt Xinference qua PyPI:

   ```
   $ pip install "xinference[all]"
   ```
2. Bắt đầu Xinference cục bộ:

   ```
   $ xinference-local
   2023-08-20 19:21:05,265 xinference   10148 INFO     Xinference successfully started. Endpoint: http://127.0.0.1:9997
   2023-08-20 19:21:05,266 xinference.core.supervisor 10148 INFO     Worker 127.0.0.1:37822 has been added successfully
   2023-08-20 19:21:05,267 xinference.deploy.worker 10148 INFO     Xinference worker successfully started.
   ```

   Xinference sẽ mặc định bắt đầu một worker cục bộ, với điểm cuối: `http://127.0.0.1:9997`, và cổng mặc định là `9997`. Theo mặc định, truy cập được giới hạn chỉ đối với máy cục bộ, nhưng có thể được cấu hình với `-H 0.0.0.0` để cho phép truy cập từ bất kỳ client không phải là máy cục bộ. Để sửa đổi máy chủ hoặc cổng, bạn có thể tham khảo thông tin trợ giúp của xinference: `xinference-local --help`.

   > Nếu bạn sử dụng phương pháp triển khai Docker của ChatX, bạn cần chú ý đến cấu hình mạng để đảm bảo rằng container ChatX có thể truy cập vào điểm cuối của Xinference. Container ChatX không thể truy cập localhost bên trong, và bạn cần sử dụng địa chỉ IP máy chủ.
3. Tạo và triển khai mô hình

   Truy cập `http://127.0.0.1:9997`, chọn mô hình và thông số bạn cần triển khai, như được hiển thị dưới đây:

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FacWz6sJjhI4OCpGDyvfN%2Fimage.webp?alt=media&amp;token=5ad1aa97-333f-4d9c-a858-352b3a610dbb" alt=""><figcaption></figcaption></figure>

Do các mô hình khác nhau có sự tương thích khác nhau trên các nền tảng phần cứng khác nhau, vui lòng tham khảo các [mô hình tích hợp sẵn của Xinference](https://inference.readthedocs.io/en/latest/models/builtin/index.html) để đảm bảo mô hình tạo ra hỗ trợ nền tảng phần cứng hiện tại.

4. Nhận UID của mô hình

Sao chép ID mô hình từ trang `Running Models` , ví dụ: `2c886330-8849-11ee-9518-43b0b8f40bea`

5. Sau khi mô hình được triển khai, kết nối mô hình đã triển khai trong ChatX.

Trong `Cài đặt > Nhà cung cấp Mô hình > Xinference` của ChatX, nhập:

* Tên Mô hình: `vicuna-v1.3`
* URL Máy chủ: `http://<Machine_IP>:9997` Thay thế bằng địa chỉ IP máy của bạn
* UID Mô hình: `2c886330-8849-11ee-9518-43b0b8f40bea`

Nhấp vào "Lưu" để sử dụng mô hình trong ứng dụng của ChatX.

ChatX cũng hỗ trợ việc sử dụng các [mô hình tích hợp sẵn của Xinference](https://inference.readthedocs.io/en/latest/models/builtin/index.html) như là các mô hình Nhúng, chỉ cần chọn loại Nhúng trong hộp cấu hình.

Để biết thêm thông tin về Xinference, vui lòng tham khảo: [Xorbits Inference](https://github.com/xorbitsai/inference)


# OpenLLM

Với [OpenLLM](https://github.com/bentoml/OpenLLM), bạn có thể chạy suy luận với bất kỳ mô hình ngôn ngữ lớn mã nguồn mở nào, triển khai lên đám mây hoặc tại chỗ, và xây dựng các ứng dụng AI mạnh mẽ. Và ChatX hỗ trợ kết nối với các khả năng suy luận của mô hình ngôn ngữ lớn đã triển khai của OpenLLM một cách cục bộ.

## Triển khai Mô hình OpenLLM

### Bắt đầu OpenLLM

Mỗi OpenLLM Server có thể triển khai một mô hình, và bạn có thể triển khai nó theo cách sau:

```
docker run --rm -it -p 3333:3000 ghcr.io/bentoml/openllm start facebook/opt-1.3b --backend pt
```

> Lưu ý: Sử dụng mô hình facebook/opt-1.3b ở đây chỉ là để minh họa, và hiệu quả có thể không tốt. Vui lòng chọn mô hình phù hợp theo tình hình thực tế. Để biết thêm các mô hình, vui lòng tham khảo: [Supported Model List](https://github.com/bentoml/OpenLLM#-supported-models).

Sau khi mô hình được triển khai, sử dụng mô hình đã kết nối trong ChatX.

Điền vào trong `Cài đặt > Nhà cung cấp Mô hình > OpenLLM:`

* Tên Mô hình: `facebook/opt-1.3b`
* URL Máy chủ: `http://<Machine_IP>:3333` Thay thế bằng địa chỉ IP máy của bạn

Nhấp vào "Lưu" và mô hình có thể được sử dụng trong ứng dụng.

Hướng dẫn này chỉ để kết nối nhanh chóng như một ví dụ. Để biết thêm tính năng và thông tin về cách sử dụng OpenLLM, vui lòng tham khảo: [OpenLLM](https://github.com/bentoml/OpenLLM)


# LocalAI

[LocalAI](https://github.com/go-skynet/LocalAI) là một API thay thế có khả năng tương thích với các đặc tả API của OpenAI để suy luận cục bộ. Nó cho phép bạn chạy các mô hình ngôn ngữ lớn (và không chỉ) cục bộ hoặc tại chỗ với phần cứng cấp người tiêu dùng, hỗ trợ nhiều họ mô hình tương thích với định dạng ggml. Không yêu cầu GPU.

ChatX cho phép tích hợp với LocalAI để triển khai suy luận mô hình ngôn ngữ lớn và các khả năng nhúng cục bộ.

## Triển khai LocalAI

### Bắt đầu LocalAI

Bạn có thể tham khảo hướng dẫn [Bắt đầu](https://localai.io/basics/getting_started/) chính thức để triển khai, hoặc nhanh chóng tích hợp theo các bước dưới đây:

(Các bước này được lấy từ [ví dụ truy vấn dữ liệu LocalAI](https://github.com/go-skynet/LocalAI/blob/master/examples/langchain-chroma/README.md))

1. Đầu tiên, clone kho mã LocalAI và điều hướng đến thư mục được chỉ định.

   ```
   $ git clone https://github.com/go-skynet/LocalAI
   $ cd LocalAI/examples/langchain-chroma
   ```
2. Tải xuống các mô hình ví dụ về LLM và Embedding.

   ```
   $ wget https://huggingface.co/skeskinen/ggml/resolve/main/all-MiniLM-L6-v2/ggml-model-q4_0.bin -O models/bert
   $ wget https://gpt4all.io/models/ggml-gpt4all-j.bin -O models/ggml-gpt4all-j
   ```

   Ở đây, chúng tôi chọn hai mô hình nhỏ hơn tương thích với tất cả các nền tảng. Dịch vụ `ggml-gpt4all-j` như mô hình LLM mặc định, và dịch vụ `all-MiniLM-L6-v2` như mô hình nhúng mặc định, để triển khai cục bộ nhanh chóng.
3. Cấu hình file .env.

   ```
   $ mv .env.example .env
   ```

   LƯU Ý: Đảm bảo rằng giá trị biến THREADS trong `.env` không vượt quá số lõi CPU trên máy của bạn.
4. Khởi động LocalAI.

   ```
   # start with docker-compose
   $ docker-compose up -d --build

   # tail the logs & wait until the build completes
   $ docker logs -f langchain-chroma-api-1
   7:16AM INF Starting LocalAI using 4 threads, with models path: /models
   7:16AM INF LocalAI version: v1.24.1 (9cc8d9086580bd2a96f5c96a6b873242879c70bc)
   ```

   API endpoint yêu cầu của LocalAI sẽ có sẵn tại <http://127.0.0.1:8080>.

   Và nó cung cấp hai mô hình, cụ thể là:

   * Mô hình LLM: `ggml-gpt4all-j`

     Tên truy cập bên ngoài: `gpt-3.5-turbo` (Tên này có thể tùy chỉnh và có thể cấu hình trong `models/gpt-3.5-turbo.yaml`).

   * Mô hình nhúng: `all-MiniLM-L6-v2`

     Tên truy cập bên ngoài: `text-embedding-ada-002` (Tên này có thể tùy chỉnh và có thể cấu hình trong `models/embeddings.yaml`).

   > Nếu bạn sử dụng phương pháp triển khai Docker của ChatX, bạn cần chú ý đến cấu hình mạng để đảm bảo rằng container ChatX có thể truy cập vào endpoint của LocalAI. Container ChatX không thể truy cập localhost bên trong, bạn cần sử dụng địa chỉ IP của máy chủ.
5. Tích hợp các mô hình vào ChatX.

   Đi tới `Cài đặt > Nhà cung cấp Mô hình > LocalAI` và điền vào:

   Mô hình 1: `ggml-gpt4all-j`

   * Loại Mô hình: Text Generation
   * Tên Mô hình: `gpt-3.5-turbo`
   * URL Máy chủ: <http://127.0.0.1:8080>

     Nếu ChatX được triển khai qua docker, điền vào tên miền máy chủ: `http://<your-LocalAI-endpoint-domain>:8080`, có thể là địa chỉ IP LAN, như: `http://192.168.1.100:8080`

   Nhấp vào "Lưu" để sử dụng mô hình trong ứng dụng.

   Mô hình 2: `all-MiniLM-L6-v2`

   * Loại Mô hình: Embeddings
   * Tên Mô hình: `text-embedding-ada-002`
   * URL Máy chủ: <http://127.0.0.1:8080>

     > Nếu ChatX được triển khai qua docker, điền vào tên miền máy chủ: `http://<your-LocalAI-endpoint-domain>:8080`, có thể là địa chỉ IP LAN, như: `http://192.168.1.100:8080`

   Nhấp vào "Lưu" để sử dụng mô hình trong ứng dụng.

Để biết thêm thông tin về LocalAI, vui lòng tham khảo: <https://github.com/go-skynet/LocalAI>


# Ollama

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FHITDtCODo4xWrEzY5ZNl%2Fimage.png?alt=media&amp;token=e9348143-4694-471b-8865-970a1478e7cb" alt=""><figcaption><p>Ollama</p></figcaption></figure>

[Ollama](https://github.com/jmorganca/ollama) là một framework suy luận cục bộ cho phép triển khai các mô hình ngôn ngữ lớn như Llama 2, Mistral, Llava, v.v., chỉ với một cú nhấp chuột. ChatX hỗ trợ tích hợp các khả năng suy luận và nhúng văn bản của các mô hình ngôn ngữ lớn được triển khai bằng Ollama.

## Tích hợp nhanh

### Tải xuống và khởi chạy Ollama

1. Tải xuống Ollama

   Truy cập <https://ollama.ai/download> để tải xuống client Ollama cho hệ thống của bạn.
2. Chạy Ollama và trò chuyện với Llava

   ```
   ollama run llava
   ```

   Sau khi khởi chạy thành công, Ollama sẽ bắt đầu dịch vụ API trên cổng cục bộ 11434, có thể truy cập tại `http://localhost:11434`.

   Đối với các mô hình khác, truy cập [Ollama Models](https://ollama.ai/library) để biết thêm chi tiết.
3. Tích hợp Ollama vào ChatX

   Trong `Cài đặt > Nhà cung cấp Mô hình > Ollama`, điền vào:

   <figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FhcE2G12tB9uLA7E8MKVT%2FCapture.JPG?alt=media&amp;token=c2387638-db9d-491d-8f05-eb794c25b0d6" alt=""><figcaption></figcaption></figure>

* Tên Mô hình: `llava`
* Base URL: `http://<your-ollama-endpoint-domain>:11434`

  Nhập URL cơ sở nơi dịch vụ Ollama có thể truy cập.

  Nếu ChatX được triển khai bằng docker, hãy xem xét sử dụng địa chỉ IP mạng cục bộ, ví dụ:`http://192.168.1.100:11434` hoặc địa chỉ IP của máy chủ docker, ví dụ:`http://172.17.0.1:11434`.

  Đối với triển khai mã nguồn cục bộ, sử dụng `http://localhost:11434`.
* Loại Mô hình: `Chat`
* Độ dài ngữ cảnh của mô hình: `4096`

  Độ dài ngữ cảnh tối đa của mô hình. Nếu không chắc chắn, sử dụng giá trị mặc định là 4096.
* Giới hạn số lượng token tối đa: `4096`

  Số lượng token tối đa mà mô hình trả về. Nếu không có yêu cầu cụ thể nào cho mô hình, điều này có thể đồng nhất với độ dài ngữ cảnh của mô hình.
* Hỗ trợ hình ảnh: `Có`

  Chọn tùy chọn này nếu mô hình hỗ trợ hiểu hình ảnh (đa phương tiện), như `llava`.

Nhấp vào "Lưu" để sử dụng mô hình trong ứng dụng sau khi xác nhận không có lỗi.

Phương pháp tích hợp cho các mô hình nhúng tương tự như LLM, chỉ cần thay đổi loại mô hình thành Text Embedding.

4. Sử dụng các mô hình Ollama

<figure><img src="https://2216599043-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpVcNbQMBwKMK3VDqSUBr%2Fuploads%2FlxRWIkYIJa9ZIsqjVrBn%2FCapture.JPG?alt=media&amp;token=151dab77-7ca1-4fda-a001-ef523899688c" alt=""><figcaption></figcaption></figure>

Truy cập trang `Prompt Eng.` của ứng dụng cần cấu hình, chọn mô hình `llava` dưới nhà cung cấp Ollama, và sử dụng sau khi cấu hình các tham số mô hình.

## Câu hỏi thường gặp

### ⚠️ Nếu bạn đang sử dụng docker để triển khai ChatX và Ollama, bạn có thể gặp lỗi sau: <a href="#if-you-are-using-docker-to-deploy-dify-and-ollama-you-may-encounter-the-following-error" id="if-you-are-using-docker-to-deploy-dify-and-ollama-you-may-encounter-the-following-error"></a>

```
httpconnectionpool(host=127.0.0.1, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>: fail to establish a new connection:[Errno 111] Connection refused'))

httpconnectionpool(host=localhost, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>: fail to establish a new connection:[Errno 111] Connection refused'))
```

Lỗi này xảy ra vì dịch vụ Ollama không thể truy cập từ container docker. localhost thường chỉ tới chính container, không phải máy chủ hoặc các container khác. Để giải quyết vấn đề này, bạn cần mở dịch vụ Ollama ra mạng.

### Thiết lập biến môi trường trên Mac

Nếu Ollama chạy như một ứng dụng macOS, các biến môi trường nên được thiết lập bằng cách sử dụng `launchctl`:

1. Đối với mỗi biến môi trường, gọi `launchctl setenv`.

   ```
   launchctl setenv OLLAMA_HOST "0.0.0.0"
   ```
2. Khởi động lại ứng dụng Ollama.
3. Nếu các bước trên không hiệu quả, bạn có thể sử dụng phương pháp sau:

   Vấn đề nằm trong Docker, và để truy cập host Docker, bạn nên kết nối tới `host.docker.internal`. Do đó, thay thế `localhost` bằng `host.docker.internal` trong dịch vụ sẽ làm cho nó hoạt động hiệu quả.

   ```
   http://host.docker.internal:11434
   ```

### Thiết lập biến môi trường trên Linux

Nếu Ollama chạy như một dịch vụ systemd, các biến môi trường nên được thiết lập bằng cách sử dụng `systemctl`:

1. Chỉnh sửa dịch vụ systemd bằng cách gọi `systemctl edit ollama.service`. Điều này sẽ mở một trình chỉnh sửa.
2. Đối với mỗi biến môi trường, thêm một dòng `Environment` dưới mục `[Service]`:

   ```
   [Service]
   Environment="OLLAMA_HOST=0.0.0.0"
   ```
3. Lưu và thoát.
4. Tải lại `systemd` và khởi động lại Ollama:

   ```
   systemctl daemon-reload
   systemctl restart ollama
   ```

### Thiết lập biến môi trường trên Windows

Trên Windows, Ollama kế thừa các biến môi trường người dùng và hệ thống của bạn.

1. Đầu tiên, thoát Ollama bằng cách nhấp vào nó trên thanh tác vụ.
2. Chỉnh sửa các biến môi trường hệ thống từ bảng điều khiển.
3. Chỉnh sửa hoặc tạo mới biến (các) cho tài khoản người dùng của bạn cho `OLLAMA_HOST`, `OLLAMA_MODELS`, v.v.
4. Nhấp OK/Áp dụng để lưu.
5. Chạy `ollama` từ một cửa sổ terminal mới.

### Làm cách nào để mở dịch vụ Ollama trên mạng của tôi?

Ollama mặc định liên kết cổng 127.0.0.1 port 11434. Thay đổi địa chỉ liên kết bằng biến môi trường `OLLAMA_HOST.`

### Thông tin thêm

Để biết thêm thông tin về Ollama, vui lòng tham khảo:

* [Ollama](https://github.com/jmorganca/ollama)
* [Ollama FAQ](https://github.com/ollama/ollama/blob/main/docs/faq.md)


# Công cụ Di chuyển Vector Database

Khi bạn muốn chuyển sang một cơ sở dữ liệu vector khác, bạn có thể hủy kích hoạt hoặc xóa cơ sở dữ liệu vector gốc sau khi chuyển đổi.

## Cách sử dụng

### Các bước:: <a href="#step" id="step"></a>

1. Nếu bạn bắt đầu từ mã nguồn cục bộ, sửa đổi biến môi trường trong tệp `.env` thành cơ sở dữ liệu vector mà bạn muốn di chuyển tới.

Ví dụ:

```
VECTOR_STORE=qdrant
```

2. Nếu bạn bắt đầu từ `docker compose`, sửa đổi biến môi trường trong tệp `docker-compose.yaml` thành cơ sở dữ liệu vector mà bạn muốn di chuyển tới, cả api và worker đều cần được thay đổi.

Ví dụ:

```
# The type of vector store to use. Supported values are `weaviate`, `qdrant`, `milvus`.
VECTOR_STORE: qdrant
```

3. Chạy lệnh dưới đây trong terminal hoặc container docker của bạn:

```
flask vdb-migrarte
```


# Kết nối với các công cụ khác nhau

Tìm hiểu về Các Công Cụ Khác Nhau Được Hỗ Trợ bởi ChatX.

ChatX hỗ trợ nhiều công cụ khác nhau để nâng cao khả năng của ứng dụng của bạn. Mỗi công cụ có các tính năng và thông số riêng, vì vậy hãy chọn công cụ phù hợp với nhu cầu của ứng dụng của bạn. **Lấy khóa API từ trang web chính thức của nhà cung cấp công cụ trước khi sử dụng nó trong ChatX.**

## Hướng Dẫn Tích Hợp Các Công Cụ

* [StableDiffusion](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-cong-cu-khac-nhau/stable-diffusion): Một công cụ để tạo hình ảnh dựa trên các văn bản gợi ý.
* [SearXNG](/iv-huong-dan-tich-hop-nang-cao/ket-noi-voi-cac-cong-cu-khac-nhau/searxng): Một công cụ tìm kiếm metasearch miễn phí trên internet, tổng hợp kết quả từ nhiều dịch vụ tìm kiếm và cơ sở dữ liệu khác nhau.


# Stable Diffusion

Stable Diffusion là một công cụ tạo hình ảnh dựa trên các văn bản gợi ý. ChatX đã triển khai giao diện để truy cập API Stable Diffusion WebUI, vì vậy bạn có thể sử dụng nó trực tiếp trong ChatX. Dưới đây là các bước để tích hợp Stable Diffusion trong ChatX.

## 1. Đảm bảo bạn có một máy tính với GPU <a href="#id-1.-make-sure-you-have-a-machine-with-a-gpu" id="id-1.-make-sure-you-have-a-machine-with-a-gpu"></a>

Stable Diffusion yêu cầu một máy tính với GPU để tạo hình ảnh. Tuy nhiên, nếu không có GPU, bạn có thể sử dụng CPU để tạo hình ảnh, nhưng sẽ chậm hơn.

## 2. Khởi động Stable Diffusion WebUI <a href="#id-2.-launch-stable-diffusion-webui" id="id-2.-launch-stable-diffusion-webui"></a>

Khởi động Stable Diffusion WebUI trên máy tính hoặc máy chủ của bạn.

#### 2.1. Clone repository Stable Diffusion WebUI <a href="#id-2.1.-clone-the-stable-diffusion-webui-repository" id="id-2.1.-clone-the-stable-diffusion-webui-repository"></a>

Clone repository Stable Diffusion WebUI từ [official repository](https://github.com/AUTOMATIC1111/stable-diffusion-webui)

```
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
```

#### 2.2. Khởi động WebUI cục bộ <a href="#id-2.2.-launch-it-locally" id="id-2.2.-launch-it-locally"></a>

Sau khi clone repository, bạn nên thay đổi thư mục đến repository đã clone và chạy lệnh sau để khởi động Stable Diffusion WebUI.

**Windows**

```
cd stable-diffusion-webui
./webui.bat --api --listen
```

**Linux**

```
cd stable-diffusion-webui
./webui.sh --api --listen
```

#### 2.3. Chuẩn bị Models <a href="#id-2.3.-prepare-models" id="id-2.3.-prepare-models"></a>

Bây giờ bạn có thể truy cập Stable Diffusion WebUI trên trình duyệt của mình theo địa chỉ hiển thị trong terminal, nhưng các models chưa sẵn sàng. Bạn cần tải các models từ HuggingFace hoặc các nguồn khác và đặt chúng vào thư mục `models` của Stable Diffusion WebUI.

Ví dụ, chúng ta sử dụng [pastel-mix](https://huggingface.co/JamesFlare/pastel-mix) làm model, sử dụng `git lfs` để tải model và đặt nó vào thư mục `models` trong `stable-diffusion-webui`.

```
git clone https://huggingface.co/JamesFlare/pastel-mix
```

#### 2.4 Lấy Tên Model <a href="#id-2.4-get-model-name" id="id-2.4-get-model-name"></a>

Bây giờ bạn có thể thấy `pastel-mix` trong danh sách model, nhưng chúng ta vẫn cần lấy tên model. Truy cập `http://your_id:port/sdapi/v1/sd-models`, bạn sẽ thấy tên model như bên dưới.

```
[
    {
        "title": "pastel-mix/pastelmix-better-vae-fp32.ckpt [943a810f75]",
        "model_name": "pastel-mix_pastelmix-better-vae-fp32",
        "hash": "943a810f75",
        "sha256": "943a810f7538b32f9d81dc5adea3792c07219964c8a8734565931fcec90d762d",
        "filename": "/home/takatost/stable-diffusion-webui/models/Stable-diffusion/pastel-mix/pastelmix-better-vae-fp32.ckpt",
        "config": null
    },
]
```

`model_name` là thông tin chúng ta cần, trong trường hợp này là `pastel-mix_pastelmix-better-vae-fp32`.

## 3. Tích hợp Stable Diffusion vào ChatX <a href="#id-3.-integrate-stable-diffusion-in-dify" id="id-3.-integrate-stable-diffusion-in-dify"></a>

Điền vào Cấu hình Authentication và Model trong `Tools > StableDiffusion > To Authorize` với thông tin bạn nhận được từ các bước trước.

## 4. Hoàn thành <a href="#id-4.-finish" id="id-4.-finish"></a>

Chỉ cần thử sử dụng nó trong ChatX!


# SearXNG

SearXNG là một công cụ tìm kiếm tổng hợp miễn phí trên internet, tập hợp kết quả từ nhiều dịch vụ tìm kiếm và cơ sở dữ liệu khác nhau. Người dùng không bị theo dõi hoặc lập hồ sơ. ChatX đã triển khai giao diện để truy cập SearXNG, vì vậy bạn có thể sử dụng nó trực tiếp trong ChatX. Dưới đây là các bước để tích hợp SearXNG vào ChatX.

## 1. Cài đặt SearXNG bằng Docker <a href="#id-1.-install-searxng-using-docker" id="id-1.-install-searxng-using-docker"></a>

```
docker run --rm \
             -d -p 8080:8080 \
             -v "${PWD}/searxng:/etc/searxng" \
             -e "BASE_URL=http://0.0.0.0:8080/" \
             -e "INSTANCE_NAME=searxng" \
             searxng/searxng
```

Nếu bạn có ý định cài đặt SearXNG bằng các phương pháp khác, hãy tham khảo [this page](https://docs.searxng.org/admin/installation.html).

## 2. Thay đổi file settings.yml <a href="#id-2.-change-settings.yml" id="id-2.-change-settings.yml"></a>

Khi bạn cài đặt SearXNG, định dạng đầu ra mặc định là HTML. Bạn cần kích hoạt định dạng json. Thêm dòng sau vào file settings.yml. File settings.yml nằm tại ${PWD}/searxng/settings.yml, như đã trình bày trong ví dụ trước.

```
  # remove format to deny access, use lower case.
  # formats: [html, csv, json, rss]
  formats:
    - html
    - json    # <-- add this line 
```

## 3. Tích hợp SearXNG vào ChatX <a href="#id-3.-integrate-searxng-in-dify" id="id-3.-integrate-searxng-in-dify"></a>

Điền địa chỉ cơ sở <http://x.x.x.x:8080> vào trang `Tools > SearXNG > To Authorize` để kích hoạt nó.

## 4. Hoàn thành <a href="#id-4.-finish" id="id-4.-finish"></a>

Chúc bạn vui vẻ!


# Hướng dẫn đóng góp

Vậy bạn đang muốn đóng góp cho ChatX - thật tuyệt vời, chúng tôi rất mong chờ những gì bạn sẽ làm. Là một startup với nguồn nhân lực và kinh phí hạn chế, chúng tôi có những tham vọng lớn để thiết kế quy trình làm việc trực quan nhất cho việc xây dựng và quản lý các ứng dụng LLM. Mọi sự giúp đỡ từ cộng đồng đều rất quý giá, thật sự.

Chúng tôi cần phải linh hoạt và phát hành nhanh chóng dựa trên tình hình hiện tại, nhưng chúng tôi cũng muốn đảm bảo rằng những người đóng góp như bạn có trải nghiệm mượt mà nhất có thể khi đóng góp. Chúng tôi đã tập hợp hướng dẫn đóng góp này với mục đích giúp bạn làm quen với mã nguồn và cách chúng tôi làm việc với những người đóng góp, để bạn có thể nhanh chóng bắt đầu với phần thú vị.

Hướng dẫn này, giống như ChatX, luôn là một công trình đang trong quá trình hoàn thiện. Chúng tôi rất cảm kích sự thông cảm của bạn nếu đôi khi nó chưa kịp cập nhật với dự án thực tế, và hoan nghênh bất kỳ phản hồi nào để chúng tôi cải thiện.

Về mặt cấp phép, vui lòng dành một chút thời gian để đọc giấy phép và thỏa thuận đóng góp ngắn của chúng tôi. Cộng đồng cũng tuân thủ quy tắc ứng xử.

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

Tìm một vấn đề hiện có, hoặc mở một vấn đề mới. Chúng tôi phân loại vấn đề thành 2 loại:

### **Yêu cầu tính năng:**

* Nếu bạn mở một yêu cầu tính năng mới, chúng tôi muốn bạn giải thích tính năng được đề xuất đạt được những gì và bao gồm càng nhiều bối cảnh càng tốt. [@perzeusss](https://github.com/perzeuss) đã tạo ra một Feature Request Copilot mạnh mẽ giúp bạn soạn thảo yêu cầu của mình. Hãy thoải mái thử nó.
* Nếu bạn muốn chọn một yêu cầu từ các vấn đề hiện có, chỉ cần để lại một bình luận bên dưới.

  Một thành viên trong nhóm làm việc trong hướng liên quan sẽ được đưa vào vòng. Nếu mọi thứ đều ổn, họ sẽ cho phép bạn bắt đầu viết mã. Chúng tôi yêu cầu bạn tạm dừng công việc cho đến khi nhận được sự chấp thuận, để tránh lãng phí công sức của bạn trong trường hợp chúng tôi đề xuất thay đổi.

  Tùy thuộc vào lĩnh vực mà tính năng đề xuất thuộc về, bạn có thể trò chuyện với các thành viên khác nhau trong nhóm. Dưới đây là bản tóm tắt về các lĩnh vực mà các thành viên trong nhóm của chúng tôi đang làm việc vào lúc này:

  | Thành viên                                                                              | Phạm vi                                                  |
  | --------------------------------------------------------------------------------------- | -------------------------------------------------------- |
  | [@yeuoly](https://github.com/Yeuoly)                                                    | Kiến trúc các tác nhân                                   |
  | [@jyong](https://github.com/JohnJyong)                                                  | Thiết kế đường dẫn RAG                                   |
  | [@GarfieldDai](https://github.com/GarfieldDai)                                          | Xây dựng điều phối quy trình                             |
  | [@iamjoel](https://github.com/iamjoel) & [@zxhlyh](https://github.com/zxhlyh)           | Tạo frontend dễ sử dụng                                  |
  | [@guchenhe](https://github.com/guchenhe) & [@crazywoola](https://github.com/crazywoola) | Trải nghiệm nhà phát triển, liên hệ cho bất kỳ vấn đề gì |
  | [@takatost](https://github.com/takatost)                                                | Hướng dẫn và kiến trúc sản phẩm tổng thể                 |

  #### Cách chúng tôi ưu tiên:

  | Loại Tính năng                                   | Ưu tiên             |
  | ------------------------------------------------ | ------------------- |
  | Tính năng ưu tiên cao do thành viên đánh dấu     | Ưu tiên cao         |
  | Yêu cầu tính năng phổ biến từ phản hồi cộng đồng | Ưu tiên trung bình  |
  | Tính năng không cốt lõi và cải tiến nhỏ          | Ưu tiên thấp        |
  | Tính năng có giá trị nhưng không cấp bách        | Tính năng tương lai |

**Bất kỳ vấn đề nào khác (ví dụ: báo cáo lỗi, tối ưu hóa hiệu suất, sửa lỗi chính tả):**

* Bắt đầu viết mã ngay lập tức.

  #### Cách chúng tôi ưu tiên:

  | Loại Lỗi                                                                                         | Ưu tiên            |
  | ------------------------------------------------------------------------------------------------ | ------------------ |
  | Lỗi trong các chức năng cốt lõi (không thể đăng nhập, ứng dụng không hoạt động, lỗ hổng bảo mật) | Quan trọng         |
  | Lỗi không quan trọng, tăng hiệu suất                                                             | Ưu tiên trung bình |
  | Sửa lỗi nhỏ (lỗi chính tả, giao diện gây nhầm lẫn nhưng vẫn hoạt động)                           | Ưu tiên thấp       |

## Cài đặt

Dưới đây là các bước để thiết lập ChatX cho phát triển:

### **1. Fork kho lưu trữ này**

### **2. Clone kho lưu trữ**

Clone kho lưu trữ đã fork từ terminal của bạn:

```
git clone git@github.com:<github_username>/dify.git
```

### **3. Xác minh các phụ thuộc**

ChatX yêu cầu các phụ thuộc sau để xây dựng, đảm bảo chúng đã được cài đặt trên hệ thống của bạn:

* [Docker](https://www.docker.com/)
* [Docker Compose](https://docs.docker.com/compose/install/)
* [Node.js v18.x (LTS)](http://nodejs.org/)
* [npm](https://www.npmjs.com/) version 8.x.x or [Yarn](https://yarnpkg.com/)
* [Python](https://www.python.org/) version 3.10.x

### **4. Cài đặt**

ChatX bao gồm backend và frontend. Điều hướng đến thư mục backend bằng lệnh `cd api/`, sau đó làm theo README của Backend để cài đặt. Trong một terminal khác, điều hướng đến thư mục frontend bằng lệnh `cd web/`, sau đó làm theo README của Frontend để cài đặt.

Kiểm tra [FAQ cài đặt](broken://pages/x3RI7la4r6sOZeJA0Exp) để biết danh sách các vấn đề phổ biến và các bước khắc phục sự cố.

**5. Truy cập ChatX trong trình duyệt của bạn**

Để xác nhận thiết lập của bạn, truy cập vào <http://localhost:3000> (mặc định, hoặc URL và cổng bạn tự cấu hình) trong trình duyệt của bạn. Bạn sẽ thấy ChatX hoạt động.

## Phát triển

Nếu bạn đang thêm nhà cung cấp mô hình, hướng dẫn này dành cho bạn.

Để giúp bạn nhanh chóng điều hướng và tìm nơi đóng góp của bạn, dưới đây là một bản phác thảo ngắn gọn về backend & frontend của ChatX:

**Backend**

Backend của ChatX được viết bằng Python sử dụng [Flask](https://flask.palletsprojects.com/en/3.0.x/). Nó sử dụng [SQLAlchemy](https://www.sqlalchemy.org/) cho ORM và [Celery](https://docs.celeryq.dev/en/stable/getting-started/introduction.html) cho hàng đợi nhiệm vụ. Logic ủy quyền đi qua Flask-login.

```
[api/]
├── constants             // Constant settings used throughout code base.
├── controllers           // API route definitions and request handling logic.           
├── core                  // Core application orchestration, model integrations, and tools.
├── docker                // Docker & containerization related configurations.
├── events                // Event handling and processing
├── extensions            // Extensions with 3rd party frameworks/platforms.
├── fields                // field definitions for serialization/marshalling.
├── libs                  // Reusable libraries and helpers.
├── migrations            // Scripts for database migration.
├── models                // Database models & schema definitions.
├── services              // Specifies business logic.
├── storage               // Private key storage.      
├── tasks                 // Handling of async tasks and background jobs.
└── tests
```

**Frontend**

Trang web được khởi tạo trên [Next.js](https://nextjs.org/) boilerplate bằng Typescript và sử dụng [Tailwind CSS](https://tailwindcss.com/) để tạo kiểu. [React-i18next](https://react.i18next.com/) được sử dụng để quốc tế hóa.

```
[web/]
├── app                   // layouts, pages, and components
│   ├── (commonLayout)    // common layout used throughout the app
│   ├── (shareLayout)     // layouts specifically shared across token-specific sessions 
│   ├── activate          // activate page
│   ├── components        // shared by pages and layouts
│   ├── install           // install page
│   ├── signin            // signin page
│   └── styles            // globally shared styles
├── assets                // Static assets
├── bin                   // scripts ran at build step
├── config                // adjustable settings and options 
├── context               // shared contexts used by different portions of the app
├── dictionaries          // Language-specific translate files 
├── docker                // container configurations
├── hooks                 // Reusable hooks
├── i18n                  // Internationalization configuration
├── models                // describes data models & shapes of API responses
├── public                // meta assets like favicon
├── service               // specifies shapes of API actions
├── test                  
├── types                 // descriptions of function params and return values
└── utils                 // Shared utility functions
```

## Gửi PR của bạn

Cuối cùng, đã đến lúc mở một pull request (PR) đến kho lưu trữ của chúng tôi. Đối với các tính năng lớn, trước tiên chúng tôi sẽ gộp chúng vào nhánh `deploy/dev` để kiểm tra, trước khi đưa chúng vào `nhánh chính`. Nếu bạn gặp phải các vấn đề như xung đột merge hoặc không biết cách mở pull request, hãy xem hướng dẫn pull request của GitHub.

Và đó là tất cả! Khi PR của bạn được gộp, bạn sẽ được xuất hiện như một người đóng góp trong README của chúng tôi.

## Nhận trợ giúp

Nếu bạn gặp bất kỳ khó khăn nào hoặc có câu hỏi trong quá trình đóng góp, hãy gửi câu hỏi của bạn qua vấn đề liên quan trên GitHub, hoặc tham gia vào Discord của chúng tôi để trò chuyện nhanh.


# Hỗ trợ

Nếu bạn vẫn còn thắc mắc hoặc gợi ý về việc sử dụng sản phẩm khi đọc tài liệu này, hãy thử các cách sau để tìm kiếm hỗ trợ. Đội ngũ của chúng tôi và cộng đồng sẽ cố gắng hết sức để giúp bạn.

## Hỗ trợ Cộng đồng

{% hint style="info" %}
Vui lòng không chia sẻ thông tin tài khoản ChatX hoặc thông tin nhạy cảm khác với cộng đồng. Nhân viên hỗ trợ của chúng tôi sẽ không yêu cầu thông tin tài khoản của bạn.
{% endhint %}

* **Gửi Vấn đề trên** GitHub
* **Tham gia cộng đồng** Discord
* Email <support@chatx.ai>

## Liên hệ với chúng tôi

Đối với các vấn đề khác ngoài hỗ trợ sản phẩm.

* Email <hello@chatx.ai>


# Giấy phép mã nguồn mở

## Giấy Phép Mã Nguồn Mở ChatX

Dự án ChatX được cấp phép theo Giấy Phép Apache 2.0, với các điều kiện bổ sung sau:

1. ChatX được phép sử dụng cho mục đích thương mại, chẳng hạn như sử dụng ChatX làm "nền tảng backend-as-a-service" cho các ứng dụng khác của bạn hoặc cung cấp nó cho doanh nghiệp như một nền tảng phát triển ứng dụng. Tuy nhiên, khi đáp ứng các điều kiện sau đây, bạn phải liên hệ với nhà sản xuất để nhận giấy phép thương mại:

* **Dịch vụ SaaS đa người dùng**: Trừ khi được ChatX ủy quyền bằng văn bản, bạn không được sử dụng mã nguồn ChatX.AI để vận hành dịch vụ SaaS đa người dùng tương tự như phiên bản dịch vụ ChatX.AI.
* **Thông tin LOGO và bản quyền**: Trong quá trình sử dụng ChatX, bạn không được xóa hoặc chỉnh sửa LOGO hoặc thông tin bản quyền trong bảng điều khiển ChatX.

Vui lòng liên hệ qua email <business@chatx.ai> để hỏi về các vấn đề liên quan đến giấy phép.

2. Là một người đóng góp, bạn nên đồng ý rằng mã mà bạn đóng góp:

* Nhà sản xuất có thể điều chỉnh thỏa thuận mã nguồn mở để trở nên nghiêm ngặt hơn hoặc linh hoạt hơn.
* Có thể được sử dụng cho mục đích thương mại, chẳng hạn như kinh doanh đám mây của ChatX.

Ngoài điều này, tất cả các quyền và hạn chế khác tuân theo Giấy Phép Apache 2.0. Nếu bạn cần thông tin chi tiết hơn, bạn có thể tham khảo phiên bản đầy đủ của Giấy Phép Apache 2.0.

Thiết kế tương tác của sản phẩm này được bảo vệ bởi bằng sáng chế về hình thức.

© 2023 LangGenius, Inc.

***

Được cấp phép theo Giấy Phép Apache, Phiên bản 2.0 (the "License"); bạn không được sử dụng tệp này ngoại trừ khi tuân thủ với Giấy Phép. Bạn có thể nhận bản sao của Giấy Phép tại

```
http://www.apache.org/licenses/LICENSE-2.0
```

Trừ khi luật hiện hành yêu cầu hoặc được đồng ý bằng văn bản, phần mềm phân phối theo Giấy Phép này được phân phối trên cơ sở "AS IS", KHÔNG CÓ BẢO ĐẢM HOẶC ĐIỀU KIỆN NÀO DƯỚI MỌI HÌNH THỨC, dù rõ ràng hay ngụ ý. Xem Giấy Phép để biết các quyền và hạn chế cụ thể điều chỉnh việc sử dụng phần mềm.


# Bảo Mật Dữ Liệu

Cảm ơn bạn đã quan tâm đến sản phẩm ChatX. ChatX rất coi trọng bảo mật dữ liệu của bạn. Vui lòng tham khảo [\[Chính Sách Bảo Mật\]](https://app.chatx.vn/privacy) của chúng tôi.

Những thông tin có thể tiết lộ là dịch vụ đám mây của ChatX được đặt tại Azure Mỹ, và chỉ một số ít nhân viên được ủy quyền mới có thể truy cập dữ liệu người dùng sau khi được phê duyệt. Ngoài ra, mã nguồn của chúng tôi là mã nguồn mở trên GitHub. Nếu bạn có lo ngại về bảo mật của dịch vụ đám mây, bạn có thể sử dụng phiên bản tự triển khai.

Vì sản phẩm của chúng tôi vẫn đang trong giai đoạn đầu, có thể sẽ có một số khía cạnh chưa hoàn thiện, nhưng chúng tôi có kế hoạch đạt được các chứng nhận SOC2 và ISO27001.

Nếu bạn có bất kỳ câu hỏi nào liên quan đến thương mại hóa, vui lòng liên hệ <business@chatx.ai>.

Trong phiên bản tự triển khai của ChatX, chỉ có một trường hợp duy nhất mà máy chủ ChatX được gọi - đó là để kiểm tra cập nhật thông qua chức năng API. Việc này phải được kích hoạt bởi quản trị viên trong phần backend. Không có công nghệ máy chủ từ xa nào khác được sử dụng, do đó bạn có thể sử dụng một cách an toàn.

Nếu bạn vẫn còn lo ngại, bạn có thể bảo vệ dữ liệu của mình bằng các biện pháp như thiết lập tường lửa.


# Chào mừng bạn đến với ChatX!

ChatX là một nền tảng phát triển ứng dụng mô hình ngôn ngữ lớn (LLM) mã nguồn mở. Nó kết hợp các khái niệm của Backend-as-a-Service và LLMOps để cho phép các nhà phát triển nhanh chóng xây dựng các ứng dụng AI tạo sinh chất lượng sản xuất. Ngay cả những nhân viên không kỹ thuật cũng có thể tham gia vào việc định nghĩa và vận hành dữ liệu của các ứng dụng AI.

## Tại sao nên sử dụng ChatX?

Bạn có thể nghĩ đến các thư viện như LangChain như những hộp công cụ chứa búa, đinh, v.v. Trong khi đó, ChatX cung cấp một giải pháp hoàn chỉnh và sẵn sàng cho sản xuất hơn - hãy nghĩ đến ChatX như một hệ thống giàn giáo với thiết kế kỹ thuật tinh tế và kiểm tra phần mềm chặt chẽ.

Đáng chú ý, ChatX là **mã nguồn mở**, được đồng tạo ra bởi một đội ngũ chuyên nghiệp làm việc toàn thời gian và cộng đồng. Bạn có thể tự triển khai các khả năng tương tự như Assistants API và GPTs dựa trên bất kỳ mô hình nào, duy trì toàn quyền kiểm soát dữ liệu của mình với tính bảo mật linh hoạt, tất cả trên một giao diện dễ sử dụng.

> Nguyễn Hải Long Founder ChatX: Chúng tôi hy vọng thông tin trên và hướng dẫn này có thể giúp bạn hiểu về sản phẩm này. Chúng tôi tin rằng ChatX được tạo ra để giải quyết mọi công việc cho doanh nghiệp bạn.

## ChatX có thể làm gì?

{% hint style="info" %}
Tên ChatX được hình thành từ Define + Modify, ám chỉ việc định nghĩa và liên tục cải tiến ứng dụng AI của bạn. Nó được tạo ra dành cho bạn.
{% endhint %}

* **Các Doanh nghiệp Khởi nghiệp** - Nhanh chóng biến ý tưởng AI của bạn thành hiện thực, tăng tốc cả thành công và thất bại. Trong thế giới thực, hàng chục nhóm đã xây dựng các sản phẩm tối thiểu hóa để đạt được quỹ vốn hoặc giành đơn đặt hàng từ khách hàng thông qua ChatX.
* **Tích hợp LLMs vào các doanh nghiệp hiện tại** - Nâng cao khả năng của ứng dụng hiện tại bằng cách giới thiệu LLMs. Truy cập vào các API RESTful của ChatX để tách biệt các Prompts khỏi logic kinh doanh. Sử dụng giao diện quản lý của ChatX để theo dõi dữ liệu, chi phí và sử dụng trong khi liên tục cải thiện hiệu suất.
* **Cơ sở hạ tầng LLM doanh nghiệp** - Một số ngân hàng và công ty internet đang triển khai ChatX như một cổng vào LLM nội bộ, tăng tốc việc áp dụng các công nghệ GenAI trong khi cho phép quản trị trung tâm.
* **Khám phá khả năng của LLM** - Ngay cả khi bạn là một người đam mê công nghệ, bạn cũng có thể dễ dàng thực hành kỹ thuật Prompt và các công nghệ Agent thông qua ChatX. Hơn 60.000 nhà phát triển đã xây dựng ứng dụng đầu tiên của họ trên ChatX ngay cả trước khi GPTs ra đời.

## Bước Tiếp Theo

* Đọc Hướng dẫn [Khởi đầu nhanh](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/huong-dan-su-dung/tao-ung-dung-chatx/bat-dau-nhanh) để hiểu tổng quan về quy trình xây dựng ứng dụng của ChatX.
* Học cách [tự triển khai ChatX](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/cai-dat-tu-luu-tru) lên máy chủ của bạn và [tích hợp các mô hình mã nguồn mở](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/huong-dan/ket-noi-voi-cac-mo-hinh-khac-nhau).
* Hiểu rõ các [thông số kỹ thuật và kế hoạch phát triển](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/chao-mung-ban-den-voi-chatx/thong-so-ky-thuat) của ChatX.
* [Đánh giá cho chúng tôi trên GitHub](https://github.com/langgenius/dify) và đọc Hướng dẫn đóng góp của chúng tôi.


# Thông số kỹ thuật

Đối với những người đã quen thuộc với các ngăn xếp công nghệ ứng dụng LLM, tài liệu này được coi là một lối tắt để hiểu về những ưu điểm độc đáo của ChatX.

Chúng tôi áp dụng các chính sách minh bạch về các thông số sản phẩm để đảm bảo quyết định được thực hiện dựa trên sự hiểu biết đầy đủ. Sự minh bạch này không chỉ có lợi cho việc lựa chọn kỹ thuật của bạn, mà còn thúc đẩy sự hiểu biết sâu sắc hơn trong cộng đồng để đóng góp tích cực.

### **Thông tin cơ bản về dự án**

<table><thead><tr><th width="279"></th><th></th></tr></thead><tbody><tr><td>Thành lập</td><td>Tháng 3 năm 2023</td></tr><tr><td>Giấy phép mã nguồn mở</td><td><a href="https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/thoa-thuan-nguoi-dung/giay-phep-ma-nguon-mo">Giấy phép Apache 2.0 với giấy phép thương mại</a></td></tr><tr><td>Đội ngũ R&#x26;D chính thức</td><td>Hơn 10 nhân viên full-time</td></tr><tr><td>Cộng tác viên cộng đồng</td><td>Hơn <a href="https://ossinsight.io/analyze/langgenius/dify#overview">120</a> người</td></tr><tr><td>Công nghệ Backend</td><td>Python/Flask/PostgreSQL</td></tr><tr><td>Công nghệ Frontend</td><td>Next.js</td></tr><tr><td>Kích thước mã nguồn</td><td>Hơn 130.000 dòng</td></tr><tr><td>Tần suất phát hành</td><td>Trung bình mỗi tuần một lần</td></tr></tbody></table>

### Tính năng kỹ thuật

<table><thead><tr><th width="270"></th><th></th></tr></thead><tbody><tr><td>Các động cơ suy luận của LLM</td><td>ChatX Runtime (LangChain đã được loại bỏ từ phiên bản v0.4)</td></tr><tr><td>Hỗ trợ Mô hình Thương mại</td><td>Hơn 10 mô hình, bao gồm OpenAI và Anthropic Thêm mô hình mới phổ biến trong vòng 48 giờ</td></tr><tr><td>Hỗ trợ bởi nhà cung cấp MaaS</td><td>7, bao gồm Hugging Face, Replicate, AWS Bedrock, NVIDIA, GroqCloud, together.ai, OpenRouter</td></tr><tr><td>Hỗ trợ Các Thời gian Chạy Suy luận Mô hình Cục bộ</td><td>6, bao gồm Xoribits (được khuyến nghị), OpenLLM, LocalAI, ChatGLM, Ollama, NVIDIA TIS</td></tr><tr><td>Hỗ trợ Tích hợp Mô hình Chuẩn Giao diện của OpenAI</td><td>∞</td></tr><tr><td>Khả năng Đa phương tiện</td><td>Mô hình ASR<br>Mô hình văn bản phong phú lên đến cấu hình GPT-4V</td></tr><tr><td>Loại Ứng dụng Tích hợp</td><td>Tạo văn bản, Trò chuyện, Agent, Luồng làm việc, Nhóm (Q2 2024)</td></tr><tr><td>Quy trình Orchestration Dựa trên Lời Nhắc</td><td><p>Giao diện điều chỉnh trực quan được ca ngợi rộng rãi, chỉnh sửa Lời Nhắc và xem trước hiệu ứng tại một nơi.<br><strong>Chế độ Orchestration</strong></p><ul><li>Orchestration Đơn giản</li><li>Orchestration Trợ lý</li><li>Orchestration Luồng</li><li>Orchestration Đa Agent (Q2 2024)</li></ul><p><strong>Loại Biến Lời Nhắc</strong></p><ul><li>Chuỗi</li><li>Liệt kê Radio</li><li>API Bên ngoài</li><li>Tập tin (Q2 2024)</li></ul></td></tr><tr><td>Tính năng Luồng làm việc Agent</td><td><p>Giao diện điều khiển luồng làm việc trực quan hàng đầu trong ngành, gỡ lỗi nút trực tiếp trong thời gian thực, ngôn ngữ miền (DSL) modul và mã nguồn chạy tự nhiên, được thiết kế để xây dựng ứng dụng LLM phức tạp, đáng tin cậy và ổn định hơn.<br>Các Nút Được Hỗ Trợ</p><ul><li>LLM</li><li>Truy xuất Kiến thức</li><li>Phân loại Câu hỏi</li><li>IF/ELSE</li><li>CODE</li><li>Mẫu</li><li>Yêu cầu HTTP</li><li>Công cụ</li></ul></td></tr><tr><td>Các Tính năng RAG</td><td><p>Giao diện quản lý cơ sở kiến thức trực quan đầu tiên trong ngành, hỗ trợ xem trước đoạn mã và kiểm tra ghi nhớ.</p><p><strong>Phương pháp Indexing</strong></p><ul><li>Từ khóa</li><li>Vector văn bản</li><li>Mô hình câu hỏi-đoạn mã được hỗ trợ bởi LLM</li></ul><p><strong>Các Phương pháp Truy xuất</strong></p><ul><li>Keywords</li><li>Từ khóa</li><li>So sánh độ tương tự văn bản</li><li>Tìm kiếm kết hợp</li><li>N lựa chọn 1</li><li>Ghi nhớ nhiều đường dẫn</li></ul><p><strong>Tối ưu hóa Ghi nhớ</strong></p><ul><li>Mô hình sắp xếp lại</li></ul></td></tr><tr><td>Khả năng ETL</td><td>Tự động làm sạch cho các định dạng TXT, Markdown, PDF, HTML, DOC, CSV. Dịch vụ không cấu trúc cho phép hỗ trợ tối đa.<br>Đồng bộ hóa tài liệu Notion như cơ sở kiến thức.</td></tr><tr><td>Hỗ trợ cơ sở dữ liệu Vector</td><td>Qdrant (được khuyến nghị), Weaviate, Zilliz</td></tr><tr><td>Công nghệ Agent</td><td><p>ReAct, Gọi Hàm.</p><p><strong>Công cụ hỗ trợ</strong></p><ul><li>Kích hoạt các công cụ tiêu chuẩn Plugin OpenAI</li><li>Tải trực tiếp các API Quy định OpenAPI như các công cụ</li></ul><p><strong>Công cụ tích hợp</strong></p><ul><li>Hơn 30 công cụ (Kể từ Q1 2024)</li></ul></td></tr><tr><td>Ghi nhật ký</td><td>Được hỗ trợ, chú thích dựa trên nhật ký</td></tr><tr><td>Trả lời Chú thích</td><td>Dựa trên Q&#x26;A do con người chú thích, được sử dụng cho các câu trả lời dựa trên độ tương tự. Có thể xuất dưới dạng dữ liệu để tinh chỉnh mô hình.</td></tr><tr><td>Kiểm duyệt Nội dung</td><td>Kiểm duyệt của OpenAI hoặc các external API</td></tr><tr><td>Hợp tác Nhóm</td><td>Không gian làm việc, quản lý nhiều thành viên</td></tr><tr><td>Thông số Kỹ thuật API</td><td>RESTful, bao phủ hầu hết các tính năng</td></tr><tr><td>Phương pháp Triển khai</td><td>Docker, Helm</td></tr></tbody></table>


# Nhà cung cấp Mô hình

ChatX hỗ trợ các nhà cung cấp mô hình dưới đây ngay lập tức:

<table><thead><tr><th width="227" align="center">Nhà cung cấp</th><th align="center">LLM</th><th align="center">Embedding</th><th align="center">Rerank</th></tr></thead><tbody><tr><td align="center">OpenAI</td><td align="center">✔️(🛠️)(👓)</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Anthropic</td><td align="center">✔️</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Azure OpenAI</td><td align="center">✔️(🛠️)(👓)</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Google</td><td align="center">✔️(👓)</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Cohere</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td></tr><tr><td align="center">Bedrock</td><td align="center">✔️</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">together.ai</td><td align="center">✔️</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Ollama</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Replicate</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Hugging Face</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Zhipu AI</td><td align="center">✔️(🛠️)(👓)</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Baichuan</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Spark</td><td align="center">✔️</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Minimax</td><td align="center">✔️(🛠️)</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">Tongyi</td><td align="center">✔️</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Wenxin</td><td align="center">✔️</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Moonshot AI</td><td align="center">✔️(🛠️)</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">deepseek</td><td align="center">✔️(🛠️)</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Jina</td><td align="center"></td><td align="center">✔️</td><td align="center">✔️</td></tr><tr><td align="center">ChatGLM</td><td align="center">✔️(🛠️)</td><td align="center"></td><td align="center"></td></tr><tr><td align="center">Xinference</td><td align="center">✔️(🛠️)(👓)</td><td align="center">✔️</td><td align="center">✔️</td></tr><tr><td align="center">OpenLLM</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">LocalAI</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr><tr><td align="center">OpenAI API-Compatible</td><td align="center">✔️</td><td align="center">✔️</td><td align="center"></td></tr></tbody></table>

Kí hiệu (🛠️) biểu thị Gọi Hàm và (👓) biểu thị hỗ trợ cho thị giác.

Bảng này được cập nhật liên tục. Chúng tôi cũng theo dõi các nhà cung cấp mô hình được yêu cầu bởi các thành viên cộng đồng [tại đây](https://github.com/langgenius/dify/discussions/categories/ideas). Nếu bạn muốn thấy một nhà cung cấp mô hình không có trong danh sách trên, hãy cân nhắc đóng góp bằng cách tạo PR. Để tìm hiểu thêm, hãy xem [Hướng dẫn Đóng góp](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/cong-dong/huong-dan-dong-gop) của chúng tôi.


# Sử dụng ChatX Cloud

{% hint style="info" %}
Lưu ý: ChatX hiện đang trong giai đoạn thử nghiệm Beta. Nếu có sự không nhất quán giữa tài liệu và sản phẩm, vui lòng tham khảo trải nghiệm sản phẩm thực tế.
{% endhint %}

ChatX cung cấp [dịch vụ đám mây](https://app.chatx.vn/signin) cho mọi người, vì vậy bạn có thể sử dụng đầy đủ các chức năng của ChatX mà không cần tự triển khai. Khám phá các [Gói và Giá cả](https://dify.ai/pricing) linh hoạt và chọn gói phù hợp nhất với nhu cầu và yêu cầu của bạn.

Bắt đầu ngay với gói Sandbox, bao gồm bản dùng thử miễn phí 200 lần gọi OpenAI, không cần thẻ tín dụng. Để sử dụng gói Sandbox của phiên bản đám mây, bạn sẽ cần một tài khoản GitHub hoặc Google, cũng như một khóa API của OpenAI. Dưới đây là cách bạn có thể bắt đầu:

1. Đăng ký vào [ChatX Cloud](https://app.chatx.vn/signin) và tạo một Không gian làm việc mới hoặc tham gia một không gian làm việc hiện có.
2. Cấu hình nhà cung cấp mô hình của bạn hoặc sử dụng nhà cung cấp mô hình được lưu trữ của chúng tôi.
3. Bây giờ bạn có thể [tạo một ứng dụng](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/huong-dan-su-dung/tao-ung-dung-chatx/bat-dau-nhanh)!

## **Câu hỏi thường gặp**

**Q: Dữ liệu của tôi được xử lý và lưu trữ như thế nào khi sử dụng ChatX Cloud?**

A: Khi bạn sử dụng ChatX Cloud, dữ liệu người dùng của bạn được lưu trữ an toàn trên các máy chủ AWS nằm ở khu vực US-East. Điều này bao gồm cả dữ liệu bạn nhập vào và bất kỳ dữ liệu nào được tạo ra từ các ứng dụng của bạn. Chúng tôi ưu tiên bảo mật và toàn vẹn dữ liệu của bạn, đảm bảo rằng nó được quản lý theo các tiêu chuẩn cao nhất của các giải pháp lưu trữ đám mây.

**Q: Các biện pháp nào được áp dụng để bảo vệ khóa API và các thông tin nhạy cảm khác của tôi?**

A: Tại ChatX, chúng tôi hiểu tầm quan trọng của việc bảo vệ khóa API và các bí mật khác của bạn. Những thông tin này được mã hóa khi lưu trữ, nghĩa là ChatX không thể xem chúng và chỉ có bạn, chủ sở hữu hợp pháp, mới có quyền truy cập vào các bí mật của mình.

**Q: Bạn có thể giải thích cách dữ liệu ứng dụng được ẩn danh trong ChatX Cloud không?**

A: Trong ChatX Cloud, chúng tôi ẩn danh dữ liệu ứng dụng để đảm bảo quyền riêng tư và giảm bớt gánh nặng mã hóa và giải mã. Điều này có nghĩa là dữ liệu được sử dụng bởi các ứng dụng không được liên kết trực tiếp với các tài khoản người dùng có thể nhận diện được. Bằng cách ẩn danh dữ liệu, chúng tôi tăng cường quyền riêng tư trong khi duy trì hiệu suất của các dịch vụ đám mây của chúng tôi.

**Q: Quy trình để xóa tài khoản của tôi và tất cả dữ liệu liên quan khỏi ChatX Cloud như thế nào?**

A: Nếu bạn quyết định xóa tài khoản của mình và loại bỏ tất cả dữ liệu liên quan khỏi ChatX Cloud, bạn có thể đơn giản gửi yêu cầu đến đội ngũ hỗ trợ của chúng tôi tại <support@chatx.ai>. Chúng tôi cam kết tôn trọng quyền riêng tư và quyền dữ liệu của bạn, và khi nhận được yêu cầu, chúng tôi sẽ xóa tất cả dữ liệu của bạn khỏi hệ thống của chúng tôi, tuân thủ các quy định về bảo vệ dữ liệu.


# Cài đặt (Tự lưu trữ)

Phiên bản tự lưu trữ của ChatX, là mã nguồn mở trên [GitHub](https://github.com/langgenius/dify), có thể triển khai bằng một trong hai cách sau:

1. [Triển khai thông qua Docker Compose](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/cai-dat-tu-luu-tru/trien-khai-thong-qua-docker-compose)
2. [Bắt đầu từ mã nguồn cục bộ](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/cai-dat-tu-luu-tru/bat-dau-tu-ma-nguon-cuc-bo)

## **Đóng góp**&#x20;

Để đảm bảo xem xét đúng đắn, tất cả các đóng góp mã nguồn - bao gồm cả những đóng góp từ các nhà phát triển có quyền truy cập trực tiếp - phải được nộp qua các pull requests và được duyệt bởi nhóm phát triển chính trước khi được hợp nhất.

Chúng tôi hoan nghênh tất cả các pull requests! Nếu bạn muốn giúp đỡ, hãy xem Hướng dẫn Đóng góp để biết thêm thông tin về cách bắt đầu.


# Triển khai thông qua Docker Compose

## Điều kiện tiên quyết

<table><thead><tr><th width="193">Hệ điều hành</th><th width="153">Phần mềm</th><th>Giải thích</th></tr></thead><tbody><tr><td>macOS 10.14 trở lên</td><td>Docker Desktop</td><td>Thiết lập máy ảo Docker (VM) để sử dụng tối thiểu 2 CPU ảo (vCPU) và 8 GB bộ nhớ khởi tạo. Nếu không, quá trình cài đặt có thể thất bại. Để biết thêm thông tin, vui lòng tham khảo <a href="https://docs.docker.com/desktop/install/mac-install/">hướng dẫn cài đặt Docker Desktop cho Mac.</a></td></tr><tr><td>Các nền tảng Linux</td><td>Docker 19.03 trở lên<br>Docker Compose 1.25.1 trở lên</td><td>Vui lòng tham khảo hướng dẫn cài đặt Docker và hướng dẫn cài đặt Docker Compose để biết thêm thông tin về <a href="https://docs.docker.com/engine/install/">cách cài đặt Docker</a> và <a href="https://docs.docker.com/compose/install/">Docker Compose</a>, tương ứng.</td></tr><tr><td>Windows với WSL 2 được kích hoạt</td><td>Docker Desktop</td><td>Chúng tôi khuyến nghị lưu trữ mã nguồn và dữ liệu khác được liên kết với các container Linux trong hệ thống tệp Linux thay vì hệ thống tệp Windows. Để biết thêm thông tin, vui lòng tham khảo <a href="https://docs.docker.com/desktop/install/windows-install/#wsl-2-backend">hướng dẫn cài đặt Docker Desktop cho việc sử dụng backend WSL 2 trên Windows.</a></td></tr></tbody></table>

### Clone ChatX

Sao chép mã nguồn của ChatX về máy cục bộ của bạn:

```
git clone https://github.com/langgenius/chatx.git
```

### Start ChatX <a href="#start-dify" id="start-dify"></a>

Chuyển đến thư mục docker trong mã nguồn của ChatX và thực thi lệnh sau để bắt đầu ChatX:

```
cd chatx/docker
docker compose up -d
```

> Nếu hệ thống của bạn đã cài đặt Docker Compose phiên bản 2 thay vì phiên bản 1, hãy sử dụng lệnh `docker compose` thay vì `docker-compose`. Kiểm tra xem điều này có đúng không bằng cách chạy `$ docker compose version`. [Đọc thêm thông tin tại đây.](https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command)

Kết quả Triển khai:

```
[+] Running 7/7
 ✔ Container docker-web-1       Started                                                                                                                                                                                       1.0s 
 ✔ Container docker-redis-1     Started                                                                                                                                                                                       1.1s 
 ✔ Container docker-weaviate-1  Started                                                                                                                                                                                       0.9s 
 ✔ Container docker-db-1        Started                                                                                                                                                                                       0.0s 
 ✔ Container docker-worker-1    Started                                                                                                                                                                                       0.7s 
 ✔ Container docker-api-1       Started                                                                                                                                                                                       0.8s 
 ✔ Container docker-nginx-1     Started
```

Cuối cùng, kiểm tra xem tất cả các container có đang chạy thành công không:

```
docker compose ps
```

Điều này bao gồm 3 dịch vụ kinh doanh: api / worker / web, và 4 thành phần cơ bản: weaviate / db / redis / nginx.

```
NAME                IMAGE                              COMMAND                  SERVICE             CREATED             STATUS              PORTS
docker-api-1        langgenius/chatx-api:0.3.2          "/entrypoint.sh"         api                 4 seconds ago       Up 2 seconds        80/tcp, 5001/tcp
docker-db-1         postgres:15-alpine                 "docker-entrypoint.s…"   db                  4 seconds ago       Up 2 seconds        0.0.0.0:5432->5432/tcp
docker-nginx-1      nginx:latest                       "/docker-entrypoint.…"   nginx               4 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp
docker-redis-1      redis:6-alpine                     "docker-entrypoint.s…"   redis               4 seconds ago       Up 3 seconds        6379/tcp
docker-weaviate-1   semitechnologies/weaviate:1.18.4   "/bin/weaviate --hos…"   weaviate            4 seconds ago       Up 3 seconds        
docker-web-1        langgenius/chatx-web:0.3.2          "/entrypoint.sh"         web                 4 seconds ago       Up 3 seconds        80/tcp, 3000/tcp
docker-worker-1     langgenius/chatx-api:0.3.2          "/entrypoint.sh"         worker              4 seconds ago       Up 2 seconds        80/tcp, 5001/tcp
```

### Upgrade ChatX <a href="#upgrade-dify" id="upgrade-dify"></a>

Đến thư mục docker trong mã nguồn của ChatX và thực thi các lệnh sau:

```
cd chatx/docker
git pull origin main
docker compose down
docker compose pull
docker compose up -d
```

### Access ChatX <a href="#access-dify" id="access-dify"></a>

Cuối cùng, truy cập vào địa chỉ <http://localhost/install> để sử dụng ChatX đã triển khai.


# Bắt đầu từ mã nguồn cục bộ

## Điều kiện tiên quyết

<table><thead><tr><th width="193">Hệ điều hành</th><th width="153">Phần mềm</th><th>Giải thích</th></tr></thead><tbody><tr><td>macOS 10.14 trở lên</td><td>Docker Desktop</td><td>Thiết lập máy ảo Docker (VM) để sử dụng tối thiểu 2 CPU ảo (vCPU) và 8 GB bộ nhớ khởi tạo. Nếu không, quá trình cài đặt có thể thất bại. Để biết thêm thông tin, vui lòng tham khảo <a href="https://docs.docker.com/desktop/install/mac-install/">hướng dẫn cài đặt Docker Desktop cho Mac.</a></td></tr><tr><td>Các nền tảng Linux</td><td>Docker 19.03 trở lên<br>Docker Compose 1.25.1 trở lên</td><td>Vui lòng tham khảo hướng dẫn cài đặt Docker và hướng dẫn cài đặt Docker Compose để biết thêm thông tin về <a href="https://docs.docker.com/engine/install/">cách cài đặt Docker</a> và <a href="https://docs.docker.com/compose/install/">Docker Compose</a>, tương ứng.</td></tr><tr><td>Windows với WSL 2 được kích hoạt</td><td>Docker Desktop</td><td>Chúng tôi khuyến nghị lưu trữ mã nguồn và dữ liệu khác được liên kết với các container Linux trong hệ thống tệp Linux thay vì hệ thống tệp Windows. Để biết thêm thông tin, vui lòng tham khảo <a href="https://docs.docker.com/desktop/install/windows-install/#wsl-2-backend">hướng dẫn cài đặt Docker Desktop cho việc sử dụng backend WSL 2 trên Windows.</a></td></tr></tbody></table>

> Nếu bạn cần sử dụng OpenAI TTS, FFmpeg phải được cài đặt trên hệ thống để nó hoạt động đúng cách. Để biết thêm chi tiết, vui lòng tham khảo: [Link](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/cai-dat-tu-luu-tru/cau-hoi-thuong-gap).

### Clone ChatX

```
git clone https://github.com/langgenius/chatx.git
```

Trước khi kích hoạt các dịch vụ kinh doanh, chúng ta cần trước tiên triển khai PostgresSQL / Redis / Weaviate (nếu chúng không có sẵn cục bộ). Chúng ta có thể bắt đầu chúng bằng các lệnh sau:

```
cd docker
docker compose -f docker-compose.middleware.yaml up -d
```

### Triển khai máy chủ

* Dịch vụ Giao diện API
* Dịch vụ Tiêu thụ Hàng đợi Bất đồng bộ

#### Cài đặt môi trường cơ bản:

Khởi động máy chủ yêu cầu Python 3.10.x. Bạn nên sử dụng [Anaconda](https://docs.anaconda.com/free/anaconda/install/) để cài đặt nhanh môi trường Python, môi trường này đã bao gồm công cụ quản lý gói pip.

Để tạo môi trường Python 3.10 có tên 'chatx', bạn có thể sử dụng lệnh sau:

```
conda create --name chatx python=3.10
```

Để chuyển sang môi trường Python 'chatx', hãy sử dụng lệnh sau:

```
conda activate chatx
```

#### Thực hiện theo các bước sau:

1. Điều hướng đến thư mục 'api':

   ```
   cd api
   ```
2. Sao chép tệp cấu hình biến môi trường:

   ```
   cp .env.example .env
   ```
3. Tạo khóa bí mật ngẫu nhiên và thay thế giá trị của SECRET\_KEY trong tệp .env:

   ```
   openssl rand -base64 42
   sed -i 's/SECRET_KEY=.*/SECRET_KEY=<your_value>/' .env
   ```
4. Cài đặt các phụ thuộc cần thiết:

   ```
   pip install -r requirements.txt
   ```
5. Thực hiện di chuyển cơ sở dữ liệu. Thực hiện di chuyển cơ sở dữ liệu lên phiên bản mới nhất:

   ```
   flask db upgrade
   ```
6. Khởi động máy chủ API:

   ```
   flask run --host 0.0.0.0 --port=5001 --debug
   ```

   output：

   ```
   * Debug mode: on
   INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
    * Running on all addresses (0.0.0.0)
    * Running on http://127.0.0.1:5001
   INFO:werkzeug:Press CTRL+C to quit
   INFO:werkzeug: * Restarting with stat
   WARNING:werkzeug: * Debugger is active!
   INFO:werkzeug: * Debugger PIN: 695-801-919
   ```
7. bắt đầu dịch vụ Worker

   Để sử dụng các tác vụ không đồng bộ từ hàng đợi, chẳng hạn như nhập tệp tập dữ liệu và cập nhật tài liệu tập dữ liệu, hãy làm theo các bước sau để khởi động dịch vụ Worker trên Linux hoặc macOS:

   ```
   celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail --loglevel INFO
   ```

   Nếu bạn đang sử dụng hệ thống Windows để khởi động dịch vụ Worker, vui lòng sử dụng lệnh sau thay thế:

   ```
   celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail --loglevel INFO
   ```

   output:

   ```
    -------------- celery@TAKATOST.lan v5.2.7 (dawn-chorus)
   --- ***** ----- 
   -- ******* ---- macOS-10.16-x86_64-i386-64bit 2023-07-31 12:58:08
   - *** --- * --- 
   - ** ---------- [config]
   - ** ---------- .> app:         app:0x7fb568572a10
   - ** ---------- .> transport:   redis://:**@localhost:6379/1
   - ** ---------- .> results:     postgresql://postgres:**@localhost:5432/dify
   - *** --- * --- .> concurrency: 1 (gevent)
   -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
   --- ***** ----- 
    -------------- [queues]
                   .> dataset          exchange=dataset(direct) key=dataset
                   .> generation       exchange=generation(direct) key=generation
                   .> mail             exchange=mail(direct) key=mail

   [tasks]
     . tasks.add_document_to_index_task.add_document_to_index_task
     . tasks.clean_dataset_task.clean_dataset_task
     . tasks.clean_document_task.clean_document_task
     . tasks.clean_notion_document_task.clean_notion_document_task
     . tasks.create_segment_to_index_task.create_segment_to_index_task
     . tasks.deal_dataset_vector_index_task.deal_dataset_vector_index_task
     . tasks.document_indexing_sync_task.document_indexing_sync_task
     . tasks.document_indexing_task.document_indexing_task
     . tasks.document_indexing_update_task.document_indexing_update_task
     . tasks.enable_segment_to_index_task.enable_segment_to_index_task
     . tasks.generate_conversation_summary_task.generate_conversation_summary_task
     . tasks.mail_invite_member_task.send_invite_member_mail_task
     . tasks.remove_document_from_index_task.remove_document_from_index_task
     . tasks.remove_segment_from_index_task.remove_segment_from_index_task
     . tasks.update_segment_index_task.update_segment_index_task
     . tasks.update_segment_keyword_index_task.update_segment_keyword_index_task

   [2023-07-31 12:58:08,831: INFO/MainProcess] Connected to redis://:**@localhost:6379/1
   [2023-07-31 12:58:08,840: INFO/MainProcess] mingle: searching for neighbors
   [2023-07-31 12:58:09,873: INFO/MainProcess] mingle: all alone
   [2023-07-31 12:58:09,886: INFO/MainProcess] pidbox: Connected to redis://:**@localhost:6379/1.
   [2023-07-31 12:58:09,890: INFO/MainProcess] celery@TAKATOST.lan ready.
   ```

***

## Triển khai trang frontend

Bắt đầu dịch vụ trang web client frontend

#### Cài đặt môi trường cơ bản:

Để bắt đầu dịch vụ giao diện người dùng web, bạn sẽ cần [Node.js v18.x (LTS)](https://nodejs.org/en) và [NPM phiên bản 8.x.x](https://www.npmjs.com/) hoặc [Yarn](https://yarnpkg.com/).

* Cài đặt NodeJS + NPM

Vui lòng truy cập <https://nodejs.org/en/download> và chọn gói cài đặt cho hệ điều hành tương ứng của bạn từ v18.x trở lên. Bạn nên tải xuống phiên bản ổn định, bao gồm NPM theo mặc định.

#### Thực hiện theo các bước sau:

1. Truy cập thư mục web

   ```
   cd web
   ```
2. Cài đặt các phụ thuộc.

   ```
   npm install
   ```
3. Cấu hình các biến môi trường. Tạo một tệp có tên .env.local trong thư mục hiện tại và sao chép nội dung từ .env.example. Sửa đổi giá trị của các biến môi trường này theo yêu cầu của bạn:

   ```
   # For production release, change this to PRODUCTION
   NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
   # The deployment edition, SELF_HOSTED or CLOUD
   NEXT_PUBLIC_EDITION=SELF_HOSTED
   # The base URL of console application, refers to the Console base URL of WEB service if console domain is
   # different from api or web app domain.
   # example: http://cloud.dify.ai/console/api
   NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
   # The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
   # console or api domain.
   # example: http://udify.app/api
   NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

   # SENTRY
   NEXT_PUBLIC_SENTRY_DSN=
   NEXT_PUBLIC_SENTRY_ORG=
   NEXT_PUBLIC_SENTRY_PROJECT=
   ```
4. Xây dựng mã

   ```
   npm run build
   ```
5. Bắt đầu dịch vụ web:

   ```
   npm run start
   # or
   yarn start
   # or
   pnpm start
   ```

Sau khi khởi động thành công, terminal sẽ xuất ra thông tin sau:

```
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
warn  - You have enabled experimental feature (appDir) in next.config.js.
warn  - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.
info  - Thank you for testing `appDir` please leave your feedback at https://nextjs.link/app-feedback
```

### Truy cập ChatX

Cuối cùng, truy cập [http://127.0.0.1:3000](http://127.0.0.1:3000/) để sử dụng ChatX được triển khai cục bộ.


# Bắt đầu riêng container Docker giao diện người dùng

Khi phát triển backend riêng biệt, bạn có thể chỉ cần khởi động dịch vụ backend từ mã nguồn mà không cần xây dựng và khởi chạy giao diện người dùng cục bộ. Trong trường hợp này, bạn có thể trực tiếp khởi động dịch vụ giao diện người dùng bằng cách kéo hình ảnh Docker và chạy vùng chứa. Dưới đây là các bước cụ thể:

#### Kéo hình ảnh Docker cho dịch vụ giao diện người dùng từ DockerHub:

```
docker run -it -p 3000:3000 -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 langgenius/dify-web:latest
```

#### Xây dựng hình ảnh Docker từ mã nguồn

1. Xây dựng hình ảnh giao diện người dùng:

   ```
   cd web && docker build . -t chatx-web
   ```
2. Bắt đầu hình ảnh giao diện người dùng

   ```
   docker run -it -p 3000:3000 -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 dify-web
   ```
3. Khi miền bảng điều khiển và miền ứng dụng web khác nhau, bạn có thể đặt riêng CONSOLE\_URL và APP\_URL.
4. Để truy cập cục bộ, bạn có thể truy cập [http://127.0.0.1:3000](http://127.0.0.1:3000/).


# Môi Trường

## Biến chung

**CONSOLE\_API\_URL**

URL phụ trợ của bảng điều khiển API, dùng để nối lệnh gọi lại ủy quyền. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.console.chatx.ai`

**CONSOLE\_WEB\_URL**

URL giao diện người dùng của bảng điều khiển web, được sử dụng để nối một số địa chỉ giao diện người dùng và để sử dụng cấu hình CORS. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://console.chatx.ai`

**SERVICE\_API\_URL**

Service API Url, được sử dụng để hiển thị Url cơ sở API dịch vụ cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.chatx.ai`

**APP\_API\_URL**

Url phụ trợ API WebApp, được sử dụng để khai báo URL phụ trợ cho front-end API. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://app.chatx.ai`

**APP\_WEB\_URL**

Url WebApp, được sử dụng để hiển thị Url cơ sở API WebAPP cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.app.chatx.ai`

**FILES\_URL**

Tiền tố URL tải xuống hoặc xem trước tệp, được sử dụng để hiển thị bản xem trước tệp hoặc URL tải xuống ở giao diện người dùng hoặc dưới dạng đầu vào mô hình đa phương thức; Để ngăn người khác giả mạo, URL xem trước hình ảnh được ký và có thời gian hết hạn là 5 phút.

## Máy chủ <a href="#server" id="server"></a>

### MODE

Chế độ khởi động, chỉ khả dụng khi bắt đầu bằng docker, không hiệu quả khi bắt đầu từ mã nguồn.

* api

  Khởi động máy chủ API.
* worker

  Bắt đầu công việc xử lý hàng đợi bất đồng bộ.

### DEBUG

Chế độ gỡ lỗi, mặc định là sai. Bạn nên bật cấu hình này để phát triển cục bộ nhằm ngăn ngừa một số sự cố do monkey patch gây ra.

**FLASK\_DEBUG**

Chế độ Flask debug, nó có thể xuất thông tin theo dõi tại giao diện khi bật, thuận tiện cho việc gỡ lỗi.

**SECRET\_KEY**

Khóa được sử dụng để ký cookie phiên một cách an toàn và mã hóa thông tin nhạy cảm trong cơ sở dữ liệu.

Biến này cần được đặt khi bắt đầu lần đầu tiên.

Bạn có thể dùng `openssl rand -base64 42` để tạo ra một khóa mạnh.

**DEPLOY\_ENV**

Môi trường triển khai.

* PRODUCTION (mặc định)

  Môi trường sản xuất.
* TESTING

  Môi trường thử nghiệm. Sẽ có một nhãn màu riêng biệt trên trang giao diện người dùng, cho biết môi trường này là môi trường thử nghiệm.

**LOG\_LEVEL**

Mức đầu ra nhật ký, mặc định là INFO.

Bạn nên đặt nó thành ERROR để sản xuất.

**MIGRATION\_ENABLED**

Khi được đặt thành true, quá trình di chuyển cơ sở dữ liệu sẽ được thực hiện tự động khi vùng chứa khởi động, chỉ khả dụng khi bắt đầu bằng docker, không hiệu quả khi bắt đầu từ mã nguồn.

Bạn cần thực hiện `flask db upgrade` theo cách thủ công trong thư mục api khi bắt đầu từ mã nguồn.

**CHECK\_UPDATE\_URL**

Có nên kích hoạt chính sách kiểm tra phiên bản hay không. Nếu đặt thành false, `https://updates.dify.ai` sẽ không được gọi để kiểm tra phiên bản.

Do hiện tại không thể truy cập trực tiếp giao diện phiên bản dựa trên CloudFlare Worker ở Trung Quốc nên việc đặt biến này thành trống có thể bảo vệ lệnh gọi giao diện này.

**OPENAI\_API\_BASE**

Dùng để thay đổi địa chỉ cơ sở OpenAI, mặc định là <https://api.openai.com/v1>.

Khi OpenAI không thể truy cập được ở Trung Quốc, hãy thay thế nó bằng địa chỉ nhân bản trong nước hoặc khi một mô hình địa phương cung cấp API tương thích OpenAI, nó có thể được thay thế.

#### Cấu hình liên quan đến khởi động vùng chứa

Chỉ hiệu quả khi bắt đầu với hình ảnh docker hoặc docker-compose.

* DIFY\_BIND\_ADDRESS

  Địa chỉ liên kết dịch vụ API, mặc định: 0.0.0.0, tức là tất cả các địa chỉ đều có thể được truy cập.
* DIFY\_PORT

  Số cổng liên kết dịch vụ API, mặc định là 5001.
* SERVER\_WORKER\_AMOUNT

  Số lượng API server workers, tức là số lượng gevent workers. Công thức: `number of cpu cores x 2 + 1`

  Tham khảo: <https://docs.gunicorn.org/en/stable/design.html#how-many-workers>
* SERVER\_WORKER\_CLASS

  Mặc định là gevent. Nếu dùng windows có thể chuyển sang sync hoặc solo.
* GUNICORN\_TIMEOUT

  Yêu cầu hết thời gian xử lý. Mặc định là 200, nên đặt thành 360 để hỗ trợ thời gian kết nối lâu hơn.
* CELERY\_WORKER\_CLASS

  Tương tự như `SERVER_WORKER_CLASS`. Mặc định là gevent. Nếu dùng windows có thể chuyển sang sync hoặc solo.
* CELERY\_WORKER\_AMOUNT

  Số lượng Celery workers. Giá trị mặc định là 1 và có thể được đặt khi cần.

#### Cấu hình cơ sở dữ liệu

Cơ sở dữ liệu sử dụng PostgreSQL. Vui lòng sử dụng lược đồ công khai.

* DB\_USERNAME: tài khoản
* DB\_PASSWORD: mật khẩu
* DB\_HOST: máy chủ cơ sở dữ liệu
* DB\_PORT: số cổng cơ sở dữ liệu, mặc định là 5432
* DB\_DATABASE: tên cơ sở dữ liệu
* SQLALCHEMY\_POOL\_SIZE: Kích thước của nhóm kết nối cơ sở dữ liệu. Mặc định là 30 kết nối, có thể tăng lên một cách thích hợp.
* SQLALCHEMY\_POOL\_RECYCLE: Thời gian tái chế nhóm kết nối cơ sở dữ liệu, mặc định là 3600 giây.
* SQLALCHEMY\_ECHO: Có in SQL hay không, mặc định là false.

#### Cấu hình Redis

Cấu hình Redis này được sử dụng để lưu vào bộ nhớ đệm và cho pub/sub trong khi trò chuyện.

* REDIS\_HOST: Máy chủ Redis
* REDIS\_PORT: Cổng Redis, mặc định là 6379
* REDIS\_DB: Cơ sở dữ liệu Redis, mặc định là 0. Vui lòng sử dụng Cơ sở dữ liệu khác với Session Redis và Celery Broker.
* REDIS\_USERNAME: Tài khoản Redis, mặc định trống
* REDIS\_PASSWORD: Mật khẩu Redis, mặc định trống. Chúng tôi thực sự khuyên bạn nên đặt mật khẩu.
* REDIS\_USE\_SSL: Có sử dụng giao thức SSL để kết nối hay không, mặc định là false

**Cấu hình Celery**

* CELERY\_BROKER\_URL

  Định dạng như sau:

  ```
  redis://<redis_username>:<redis_password>@<redis_host>:<redis_port>/<redis_database>
  ```

  Ví dụ: `redis://:difyai123456@redis:6379/1`
* BROKER\_USE\_SSL

  Nếu được đặt thành true, hãy sử dụng giao thức SSL để kết nối, mặc định là false

**Cấu hình CORS**

Được sử dụng để đặt chính sách truy cập front-end cross-domain.

* CONSOLE\_CORS\_ALLOW\_ORIGINS

  Chính sách đa miền của Console CORS, mặc định là `*`, tức là tất cả các miền đều có thể truy cập.
* WEB\_API\_CORS\_ALLOW\_ORIGINS

  Chính sách cross-domain WebAPP CORS, mặc định là `*`, tức là tất cả các miền đều có thể truy cập.

#### Cấu hình lưu trữ tệp

Được sử dụng để lưu trữ các tệp tập dữ liệu đã tải lên, khóa mã hóa nhóm/đối tượng thuê và các tệp khác.

* STORAGE\_TYPE

  Loại cơ sở lưu trữ

  * local (mặc định)

    Bộ nhớ tệp cục bộ, nếu tùy chọn này được chọn thì cần phải đặt cấu hình `STORAGE_LOCAL_PATH` sau.
  * s3

    Lưu trữ đối tượng S3, nếu tùy chọn này được chọn, các cấu hình có tiền tố S3\_ sau đây cần được thiết lập.
  * azure-blob

    Lưu trữ đối tượng Azure Blob, nếu tùy chọn này được chọn, các cấu hình có tiền tố AZURE\_BLOB\_ sau đây cần được thiết lập.
* STORAGE\_LOCAL\_PATH

  Mặc định là storage, tức là nó được lưu trữ trong thư mục storage của thư mục hiện tại. Nếu bạn đang triển khai bằng docker hoặc docker-compose, hãy đảm bảo gắn thư mục /app/api/storage trong cả hai vùng chứa vào cùng một thư mục cục bộ, nếu không, bạn có thể gặp phải lỗi không tìm thấy tệp.
* S3\_ENDPOINT: Địa chỉ điểm cuối S3
* S3\_BUCKET\_NAME: Tên nhóm S3
* S3\_ACCESS\_KEY: Khóa truy cập S3
* S3\_SECRET\_KEY: Khóa bí mật S3
* S3\_REGION: Thông tin khu vực S3, chẳng hạn như: us-east-1
* AZURE\_BLOB\_ACCOUNT\_NAME: tên tài khoản của bạn, ví dụ: 'chatxai'
* AZURE\_BLOB\_ACCOUNT\_KEY: khóa tài khoản của bạn, ví dụ: 'chatxai'
* AZURE\_BLOB\_CONTAINER\_NAME: tên-container của bạn, ví dụ: 'chatxai-container'
* AZURE\_BLOB\_ACCOUNT\_URL: 'https\://\<your\_account\_name>.blob.core.windows.net'

#### Cấu hình cơ sở dữ liệu vectơ

* VECTOR\_STORE
  * **Các kiểu liệt kê có sẵn bao gồm:**
    * `weaviate`
    * `qdrant`
    * `milvus`
    * `zilliz` (chia sẻ cấu hình tương tự như `milvus`)
    * `pinecone` (chưa mở)
* WEAVIATE\_ENDPOINT

  Địa chỉ điểm cuối weaviate, chẳng hạn như: `http://weaviate:8080`.
* WEAVIATE\_API\_KEY

  Thông tin xác thực khóa api được sử dụng để kết nối với Weaviate.
* WEAVIATE\_BATCH\_SIZE

  Số lượng Đối tượng chỉ mục được tạo theo đợt trong Weaviate, mặc định là 100. Tham khảo tài liệu này: <https://weaviate.io/developers/weaviate/manage-data/import#how-to-set-batch-parameters>
* WEAVIATE\_GRPC\_ENABLED

  Dù có sử dụng phương pháp gRPC để tương tác với Weaviate hay không, hiệu suất sẽ tăng lên rất nhiều khi được bật, có thể không sử dụng được cục bộ, mặc định là đúng.
* QDRANT\_URL

  Địa chỉ điểm cuối Qdrant, chẳng hạn như: `https://your-qdrant-cluster-url.qdrant.tech/`
* QDRANT\_API\_KEY

  Thông tin xác thực khóa api được sử dụng để kết nối với Qdrant.
* PINECONE\_API\_KEY

  Thông tin xác thực khóa api được sử dụng để kết nối với Pinecone.
* PINECONE\_ENVIRONMENT

  Môi trường nơi Pinecone được đặt, ví dụ: `us-east4-gcp`
* MILVUS\_HOST

  Cấu hình máy chủ Milvus.
* MILVUS\_PORT

  Cấu hình cổng Milvus.
* MILVUS\_USER

  Cấu hình người dùng Milvus, mặc định trống.
* MILVUS\_PASSWORD

  Cấu hình mật khẩu Milvus, mặc định trống.
* MILVUS\_SECURE

  Có phải Milvus sử dụng kết nối SSL không, mặc định là false.

**Cấu hình Knowledge**

* UPLOAD\_FILE\_SIZE\_LIMIT:

  Giới hạn kích thước tệp tải lên, mặc định là 15M.
* UPLOAD\_FILE\_BATCH\_LIMIT

  Số lượng tệp tối đa có thể được tải lên cùng một lúc, mặc định là 5.
* ETL\_TYPE

  **Các kiểu liệt kê có sẵn bao gồm:**

  * dify

    Sơ đồ trích xuất tệp độc quyền của ChatX
  * Unstructured

    Sơ đồ trích xuất tệp Unstructured.io
* UNSTRUCTURED\_API\_URL

  Đường dẫn Unstructured API, cần được định cấu hình khi ETL\_TYPE được kích hoạt là Unstructured. Cho ví dụ: `http://unstructured:8000/general/v0/general`

**Cấu hình Multi-modal**

* MULTIMODAL\_SEND\_IMAGE\_FORMAT

  Định dạng của hình ảnh được gửi khi nhập mô hình đa phương thức, mặc định là `base64`, tùy chọn `url`. Độ trễ của cuộc gọi ở chế độ `url` sẽ thấp hơn ở chế độ `base64`. Thông thường nên sử dụng chế độ `base64`tương thích hơn. Nếu được định cấu hình là `url`, bạn cần định cấu hình `FILES_URL` làm địa chỉ có thể truy cập từ bên ngoài để mô hình đa phương thức có thể truy cập hình ảnh.
* UPLOAD\_IMAGE\_FILE\_SIZE\_LIMIT

  Giới hạn kích thước tệp hình ảnh tải lên, mặc định là 10M.

**Cấu hình Sentry**

Được sử dụng để giám sát ứng dụng và theo dõi nhật ký lỗi.

* SENTRY\_DSN

  Địa chỉ Sentry DSN, mặc định trống, khi trống thì mọi thông tin giám sát đều không được báo cáo cho Sentry.
* SENTRY\_TRACES\_SAMPLE\_RATE

  Tỷ lệ báo cáo của các sự kiện Sentry, nếu là 0,01 thì là 1%.
* SENTRY\_PROFILES\_SAMPLE\_RATE

  Tỷ lệ báo cáo của hồ sơ Sentry, nếu là 0,01 thì là 1%.

**Cấu hình Notion Integration**

Các biến cấu hình Notion integration configuration variables có thể thu được bằng cách đăng ký Notion integration: <https://www.notion.so/my-integrations>

* NOTION\_INTEGRATION\_TYPE: Cấu hình là "public" hoặc "internal". Vì URL chuyển hướng OAuth của Notion chỉ hỗ trợ HTTPS, nếu triển khai cục bộ, vui lòng sử dụng tích hợp nội bộ của Notion.
* NOTION\_CLIENT\_SECRET: Khóa bí mật của khách hàng Notion OAuth (được sử dụng cho loại tích hợp công khai)
* NOTION\_CLIENT\_ID: ID ứng dụng khách OAuth (được sử dụng cho loại tích hợp công khai)
* NOTION\_INTERNAL\_SECRET: Khái niệm bí mật tích hợp nội bộ. Nếu giá trị của `NOTION_INTEGRATION_TYPE` là 'internal', bạn cần định cấu hình biến này.

**Cấu hình Mail related**

* MAIL\_TYPE
  * resend
    * MAIL\_DEFAULT\_SEND\_FROM Tên email của người gửi, chẳng hạn như: no-reply <no-reply@dify.ai>, không bắt buộc.
    * RESEND\_API\_KEY API-Key đối với nhà cung cấp Resend email, có thể được lấy từ API-Key.
  * smtp
    * SMTP\_SERVER SMTP địa chỉ máy chủ
    * SMTP\_PORT SMTP số cổng máy chủ
    * SMTP\_USERNAME SMTP tài khoản
    * SMTP\_PASSWORD SMTP mật khẩu
    * SMTP\_USE\_TLS Có sử dụng TLS hay không, mặc định là false
    * MAIL\_DEFAULT\_SEND\_FROM Tên email của người gửi, chẳng hạn như: no-reply <no-reply@dify.ai>, không bắt buộc.

**Khác**

* INVITE\_EXPIRY\_HOURS: Liên kết lời mời thành viên thời gian hợp lệ (giờ), Mặc định: 72.

***

## Web Frontend <a href="#web-frontend" id="web-frontend"></a>

**SENTRY\_DSN**

Địa chỉ Sentry DSN, mặc định trống, khi trống thì mọi thông tin giám sát đều không được báo cáo cho Sentry.

## Deprecated <a href="#deprecated" id="deprecated"></a>

**CONSOLE\_URL**

> ⚠️ Được sửa đổi trong 0.3.8, sẽ không được dùng nữa trong 0.4.9, được thay thế bằng: `CONSOLE_API_URL` và `CONSOLE_WEB_URL`.

Bảng điều khiển URL, được sử dụng để nối lệnh gọi lại ủy quyền, địa chỉ giao diện người dùng bảng điều khiển và sử dụng cấu hình CORS. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://console.dify.ai`.

**API\_URL**

> ⚠️ Được sửa đổi trong 0.3.8, sẽ không được dùng nữa trong 0.4.9, được thay thế bằng `SERVICE_API_URL`.

API URL, được sử dụng để hiển thị URL cơ sở API dịch vụ cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.dify.ai`

**APP\_URL**

> ⚠️ Được sửa đổi trong 0.3.8, sẽ không được dùng nữa trong 0.4.9, được thay thế bằng `APP_API_URL` và `APP_WEB_URL`.

WebApp Url, được sử dụng để hiển thị Url cơ sở API WebAPP cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.app.dify.ai`

**Cấu hình Session**

> ⚠️ Cấu hình này không còn hợp lệ kể từ v0.3.24.

Chỉ được dịch vụ API sử dụng để xác minh danh tính giao diện.

* SESSION\_TYPE：

  Loại thành phần Session

  * redis (mặc định)

    Nếu chọn tùy chọn này, bạn cần đặt các biến môi trường bắt đầu bằng SESSION\_REDIS\_ bên dưới.
  * sqlalchemy

    Nếu bạn chọn tùy chọn này, kết nối cơ sở dữ liệu hiện tại sẽ được sử dụng và bảng phiên sẽ được sử dụng để đọc và ghi các bản ghi phiên.
* SESSION\_REDIS\_HOST: Máy chủ Redis
* SESSION\_REDIS\_PORT: Cổng Redis, mặc định là 6379
* SESSION\_REDIS\_DB: Cơ sở dữ liệu Redis, mặc định là 0. Vui lòng sử dụng Cơ sở dữ liệu khác với Redis và Celery Broker.
* SESSION\_REDIS\_USERNAME: Tên người dùng Redis, mặc định trống
* SESSION\_REDIS\_PASSWORD: Mật khẩu Redis, mặc định trống. Chúng tôi thực sự khuyên bạn nên đặt mật khẩu.
* SESSION\_REDIS\_USE\_SSL: Có sử dụng giao thức SSL để kết nối hay không, mặc định là false

**Cấu hình Cookie Policy**

> ⚠️ Cấu hình này không còn hợp lệ kể từ v0.3.24.

Được sử dụng để đặt chính sách trình duyệt cho các cookie phiên được sử dụng để xác minh danh tính.

* COOKIE\_HTTPONLY

  Cấu hình cookie httpOnly, mặc định là true.
* COOKIE\_SAMESITE

  Cấu hình cookie SameSite, mặc định là Lax.
* COOKIE\_SECURE

  Cấu hình Cookie Secure, mặc định là false.


# Câu hỏi thường gặp

## 1. Làm cách nào để đặt lại mật khẩu nếu quá trình khởi tạo triển khai cục bộ không thành công do mật khẩu không chính xác? <a href="#id-1.-how-to-reset-the-password-if-the-local-deployment-initialization-fails-with-an-incorrect-passw" id="id-1.-how-to-reset-the-password-if-the-local-deployment-initialization-fails-with-an-incorrect-passw"></a>

Nếu được triển khai bằng docker compose, bạn có thể thực hiện lệnh sau để đặt lại mật khẩu:`docker exec -it docker-api-1 flask reset-password` Nhập email tài khoản và hai lần mật khẩu mới và nó sẽ được đặt lại.

## 2. Làm cách nào để khắc phục lỗi Không tìm thấy tệp trong nhật ký khi triển khai cục bộ? <a href="#id-2.-how-to-resolve-file-not-found-error-in-the-log-when-deploying-locally" id="id-2.-how-to-resolve-file-not-found-error-in-the-log-when-deploying-locally"></a>

```
ERROR:root:Unknown Error in completion
Traceback (most recent call last):
  File "/www/wwwroot/dify/dify/api/libs/rsa.py", line 45, in decrypt
    private_key = storage.load(filepath)
  File "/www/wwwroot/dify/dify/api/extensions/ext_storage.py", line 65, in load
    raise FileNotFoundError("File not found")
FileNotFoundError: File not found
```

Lỗi này có thể xảy ra do chuyển đổi phương thức triển khai hoặc xóa tệp `api/storage/privkeys`, tệp này được sử dụng để mã hóa các khóa mô hình lớn và không thể đảo ngược nếu bị mất. Bạn có thể đặt lại khóa chung và khóa riêng mã hóa bằng lệnh sau:

* Triển khai docker compose

```
docker exec -it docker-api-1 flask reset-encrypt-key-pair
```

* Khởi động mã nguồn

Truy cập thư mục api

```
flask reset-encrypt-key-pair
```

Làm theo lời nhắc để thiết lập lại.

## 3. Không thể đăng nhập khi cài đặt sau và sau đó đăng nhập thành công nhưng các giao diện tiếp theo lại nhắc 401? <a href="#id-3.-unable-to-log-in-when-installing-later-and-then-login-is-successful-but-subsequent-interfaces" id="id-3.-unable-to-log-in-when-installing-later-and-then-login-is-successful-but-subsequent-interfaces"></a>

Điều này có thể do chuyển đổi tên miền/trang web, gây ra hiện tượng cross-domain giữa front-end và server-side. Cross-domain và danh tính liên quan đến hai mục cấu hình:

**Cấu hình CORS cross-domain**

`CONSOLE_CORS_ALLOW_ORIGINS` Chính sách CORS cross-domain của Console, mặc định là `*`, , cho phép truy cập từ tất cả các tên miền. `WEB_API_CORS_ALLOW_ORIGINS` WebAPP CORS cross-domain strategy, mặc định là `*`, cho phép truy cập từ tất cả các tên miền.

## 4. Sau khi bắt đầu, trang tiếp tục tải và kiểm tra yêu cầu nhắc lỗi CORS? <a href="#id-4.-after-starting-the-page-keeps-loading-and-checking-the-request-prompts-cors-error" id="id-4.-after-starting-the-page-keeps-loading-and-checking-the-request-prompts-cors-error"></a>

Điều này có thể là do tên miền / URL đã được chuyển đổi, dẫn đến cross-domain giữa front end và back end. Vui lòng thay đổi tất cả các mục cấu hình sau trong `docker-compose.yml` sang tên miền mới: `CONSOLE_API_URL:` URL phụ trợ của API bảng điều khiển. `CONSOLE_WEB_URL:` URL giao diện người dùng của web bảng điều khiển. `SERVICE_API_URL:` Service API Url `APP_API_URL:` WebApp API backend Url. `APP_WEB_URL:` WebApp Url.

Để biết thêm thông tin, vui lòng xem: [Môi trường](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/cai-dat-tu-luu-tru/moi-truong)

## 5. Làm cách nào để nâng cấp phiên bản sau khi triển khai? <a href="#id-5.-how-to-upgrade-version-after-deployment" id="id-5.-how-to-upgrade-version-after-deployment"></a>

Nếu bạn khởi động thông qua hình ảnh, vui lòng kéo những hình ảnh mới nhất để hoàn tất việc nâng cấp. Nếu bạn khởi động thông qua mã nguồn, vui lòng kéo mã mới nhất rồi khởi động để hoàn tất nâng cấp.

Khi triển khai và cập nhật mã nguồn cục bộ, bạn cần vào thư mục API và thực hiện lệnh sau để di chuyển cấu trúc cơ sở dữ liệu sang phiên bản mới nhất:

`flask db upgrade`

## 6. Cách định cấu hình các biến môi trường khi sử dụng Notion import <a href="#id-6.how-to-configure-the-environment-variables-when-use-notion-import" id="id-6.how-to-configure-the-environment-variables-when-use-notion-import"></a>

**Q: Địa chỉ cấu hình Notion's Integration là gì?**

A: <https://www.notion.so/my-integrations>

**Q: Những biến môi trường nào cần được cấu hình?**

A: Vui lòng đặt cấu hình dưới đây khi thực hiện triển khai tư nhân.

1. **`NOTION_INTEGRATION_TYPE`** : Giá trị nên cấu hình là (**public/internal**). Vì Địa chỉ chuyển hướng OAuth của Notion chỉ hỗ trợ https, nếu triển khai cục bộ, vui lòng sử dụng tích hợp nội bộ của Notion.
2. **`NOTION_CLIENT_SECRET`** : Khóa bí mật của Notion OAuth (sử dụng cho loại tích hợp công khai)
3. **`NOTION_CLIENT_ID`** : ID khách hàng OAuth (sử dụng cho loại tích hợp công khai)
4. **`NOTION_INTERNAL_SECRET`** : Bí mật tích hợp nội bộ của Notion, Nếu giá trị của `NOTION_INTEGRATION_TYPE` là **internal** ,bạn cần cấu hình biến này.

## 7. Làm cách nào để thay đổi tên không gian trong phiên bản triển khai cục bộ? <a href="#id-7.-how-to-change-the-name-of-the-space-in-the-local-deployment-version" id="id-7.-how-to-change-the-name-of-the-space-in-the-local-deployment-version"></a>

Sửa đổi trong bảng `tenants` trong cơ sở dữ liệu.

## 8. Tôi có thể sửa đổi tên miền để truy cập ứng dụng ở đâu? <a href="#id-8.-where-can-i-modify-the-domain-name-for-accessing-the-application" id="id-8.-where-can-i-modify-the-domain-name-for-accessing-the-application"></a>

Tìm tên miền cấu hình APP\_WEB\_URL trong `docker_compose.yaml`.

## 9. Nếu cần di chuyển cơ sở dữ liệu thì cần sao lưu những gì? <a href="#id-9.-if-database-migration-is-required-what-things-need-to-be-backed-up" id="id-9.-if-database-migration-is-required-what-things-need-to-be-backed-up"></a>

Cơ sở dữ liệu, bộ lưu trữ được định cấu hình và dữ liệu cơ sở dữ liệu vectơ cần được sao lưu. Nếu được triển khai ở chế độ Docker Compose, toàn bộ nội dung dữ liệu trong thư mục `chatx/docker/volumes` có thể được sao lưu trực tiếp.

## 10. Tại sao Docker triển khai ChatX và khởi động OpenLLM cục bộ bằng 127.0.0.1 nhưng không thể truy cập cổng cục bộ? <a href="#id-10.-why-is-docker-deploying-dify-and-starting-openllm-locally-using-127.0.0.1-but-unable-to-acces" id="id-10.-why-is-docker-deploying-dify-and-starting-openllm-locally-using-127.0.0.1-but-unable-to-acces"></a>

`127.0.0.1` là địa chỉ nội bộ của vùng chứa và địa chỉ máy chủ được định cấu hình bởi ChatX yêu cầu địa chỉ IP LAN của máy chủ.

## 11. Làm cách nào để giải quyết các giới hạn về kích thước và số lượng khi tải lên tài liệu kiến ​​thức trong phiên bản triển khai cục bộ？ <a href="#id-11.-how-to-solve-the-size-and-quantity-limitations-for-uploading-knowledge-documents-in-the-local" id="id-11.-how-to-solve-the-size-and-quantity-limitations-for-uploading-knowledge-documents-in-the-local"></a>

Bạn có thể tham khảo tài liệu mô tả biến môi trường trang web chính thức để định cấu hình: ​[Môi trường](https://app.gitbook.com/o/pG6KzxmaEkQ360iMDyVE/s/pVcNbQMBwKMK3VDqSUBr/~/changes/6/bat-dau/cai-dat-tu-luu-tru/moi-truong)

## 12. Phiên bản triển khai cục bộ mời thành viên qua email như thế nào? <a href="#id-12.-how-does-the-local-deployment-edition-invite-members-through-email" id="id-12.-how-does-the-local-deployment-edition-invite-members-through-email"></a>

Phiên bản triển khai cục bộ, thành viên có thể được mời qua email. Sau khi nhập lời mời qua email, trang sẽ hiển thị liên kết lời mời, sao chép liên kết lời mời và chuyển tiếp đến người dùng. Các thành viên trong nhóm của bạn có thể mở liên kết và đăng nhập vào không gian của bạn bằng cách đặt mật khẩu thông qua đăng nhập email.

## 13. Làm cách nào để giải quyết listen tcp4 0.0.0.0:80: bind: địa chỉ đã được sử dụng? <a href="#id-13.-how-to-solve-listen-tcp4-0.0.0.0-80-bind-address-already-in-use" id="id-13.-how-to-solve-listen-tcp4-0.0.0.0-80-bind-address-already-in-use"></a>

Điều này là do cổng đang bị chiếm. Bạn có thể sử dụng lệnh `netstat -tunlp | grep 80` để xem quy trình nào đang chiếm cổng đó, và sau đó tiến hành chấm dứt quy trình. Ví dụ, nếu các quy trình apache và nginx chiếm cổng, bạn có thể sử dụng các lệnh `service apache2 stop` và `service nginx stop` để dừng quy trình.

## 14. Phải làm gì nếu lỗi này xảy ra khi chuyển văn bản sang giọng nói? <a href="#id-14.-what-to-do-if-this-error-occurs-in-text-to-speech" id="id-14.-what-to-do-if-this-error-occurs-in-text-to-speech"></a>

```
[openai] Error: ffmpeg is not installed
```

Vì OpenAI TTS đã triển khai phân đoạn dòng âm thanh, cần cài đặt ffmpeg để sử dụng bình thường khi triển khai mã nguồn. Dưới đây là các bước chi tiết:

**Windows:**

1. Truy cập [trang web chính thức của FFmpeg](https://ffmpeg.org/download.html) và tải xuống thư viện chia sẻ Windows được biên dịch sẵn.
2. Tải xuống và giải nén thư mục FFmpeg, thư mục này sẽ tạo ra một thư mục tương tự như 'ffmpeg-20200715-51db0a4-win64-static'.
3. Di chuyển thư mục đã giải nén đến vị trí bạn chọn, ví dụ: C:Program Files.
4. Thêm đường dẫn tuyệt đối của thư mục bin FFmpeg vào các biến môi trường hệ thống.
5. Mở dấu nhắc lệnh và nhập 'ffmpeg -version' để xem thông tin phiên bản FFmpeg có hiển thị hay không, cho biết cài đặt thành công.

**Ubuntu:**

1. Mở terminal.
2. Nhập các lệnh sau để cài đặt FFmpeg: `sudo apt-get update`, sau đó nhập `sudo apt-get install ffmpeg`.
3. Nhập 'ffmpeg -version' để kiểm tra xem nó đã được cài đặt thành công chưa.

**CentOS:**

1. Trước tiên, bạn cần kích hoạt kho lưu trữ EPEL. Trong terminal, nhập: `sudo yum install epel-release`
2. Sau đó, nhập: `sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm`
3. Cập nhật gói yum, nhập: `sudo yum update`
4. Cuối cùng cài đặt FFmpeg, nhập: `sudo yum install ffmpeg ffmpeg-devel`
5. Nhập 'ffmpeg -version' để kiểm tra xem nó đã được cài đặt thành công chưa.

**Mac OS X:**

1. Mở terminal.
2. Nếu bạn chưa cài đặt Homebrew, bạn có thể cài đặt nó bằng cách nhập lệnh sau vào terminal: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
3. Cài đặt FFmpeg với Homebrew, nhập: `brew install ffmpeg`
4. Nhập 'ffmpeg -version' để kiểm tra xem nó đã được cài đặt thành công chưa.

## 15. Di chuyển cơ sở dữ liệu vectơ sang Qdrant hoặc Milvus <a href="#id-15.-migrate-vector-database-to-qdrant-or-milvus" id="id-15.-migrate-vector-database-to-qdrant-or-milvus"></a>

Nếu bạn muốn di chuyển cơ sở dữ liệu vectơ từ weaviate sang qdrant hoặc milvus, bạn cần di chuyển dữ liệu trong cơ sở dữ liệu vectơ. Sau đây là phương pháp di chuyển:

Bước:

1. Nếu bạn đang bắt đầu từ mã nguồn cục bộ, hãy sửa biến môi trường trong tệp `.env` thành cơ sở dữ liệu vector mà bạn muốn di chuyển đến. Ví dụ: `VECTOR_STORE=qdrant`
2. Nếu bạn bắt đầu từ docker-compose, hãy sửa biến môi trường trong tệp `docker-compose.yaml` thành cơ sở dữ liệu vector mà bạn muốn di chuyển đến, cả api và worker đều cần được chỉnh sửa. Ví dụ:

```
# The type of vector store to use. Supported values are `weaviate`, `qdrant`, `milvus`.
VECTOR_STORE: weaviate
```

1. chạy lệnh dưới đây trong terminal hoặc container docker của bạn

```
flask vdb-migrarte # or docker exec -it docker-api-1 flask vdb-migrarte
```

## 16. Tại sao cần có SSRF\_PROXY? <a href="#id-16.-why-is-ssrf_proxy-needed" id="id-16.-why-is-ssrf_proxy-needed"></a>

Bạn có thể đã nhận thấy biến môi trường `SSRF_PROXY` trong tệp `docker-compose.yaml`. Điều này rất quan trọng vì triển khai cục bộ của ChatX sử dụng `SSRF_PROXY` để ngăn chặn các cuộc tấn công Forgery Yêu cầu Phía máy chủ (SSRF). Để biết thêm thông tin về các cuộc tấn công SSRF, hãy tham khảo [tài nguyên này](https://portswigger.net/web-security/ssrf).

Để giảm thiểu các rủi ro tiềm ẩn, chúng tôi đã thiết lập một proxy cho tất cả các dịch vụ có thể bị tổn thương bởi các cuộc tấn công SSRF. Proxy này đảm bảo rằng các dịch vụ như Sandbox chỉ có thể truy cập vào các mạng bên ngoài thông qua nó, từ đó bảo vệ dữ liệu và dịch vụ của bạn. Theo mặc định, proxy này không can thiệp vào bất kỳ yêu cầu cục bộ nào. Tuy nhiên, bạn có thể tùy chỉnh hành vi của proxy bằng cách sửa đổi tệp cấu hình `squid.`

#### **Làm cách nào để tùy chỉnh Proxy Behavior?**

Trong tệp `docker/volumes/ssrf_proxy/squid.conf`, bạn sẽ tìm thấy các cài đặt cấu hình cho proxy. Ví dụ, nếu bạn muốn cho phép mạng `192.168.101.0/24` được truy cập bởi proxy, nhưng hạn chế quyền truy cập vào một địa chỉ IP `192.168.101.19` chứa dữ liệu nhạy cảm, bạn có thể thêm các quy tắc sau vào `squid.conf`:

```
acl restricted_ip dst 192.168.101.19
acl localnet src 192.168.101.0/24

http_access deny restricted_ip
http_access allow localnet
http_access deny all
```

Đây là một ví dụ cơ bản, và bạn có thể tùy chỉnh các quy tắc để phù hợp với nhu cầu cụ thể của mình. Để biết thêm thông tin về cấu hình squid, hãy tham khảo [tài liệu chính thức](http://www.squid-cache.org/Doc/config/).


# LLMOps là gì?

**LLMOps (Large Language Model Operations) là một bộ các thực hành và quy trình toàn diện bao gồm quá trình phát triển, triển khai, bảo trì và tối ưu hóa các mô hình ngôn ngữ lớn (như loạt GPT). Mục tiêu của LLMOps là đảm bảo việc sử dụng hiệu quả, có khả năng mở rộng và an toàn của những mô hình AI mạnh mẽ này để xây dựng và vận hành các ứng dụng thực tế. Nó bao gồm các khía cạnh như huấn luyện mô hình, triển khai, giám sát, cập nhật, bảo mật và tuân thủ quy định.**

Bảng dưới đây minh họa sự khác biệt trong các giai đoạn khác nhau của quá trình phát triển ứng dụng AI trước và sau khi sử dụng ChatX:

| Bước                                       | Trước                                                                                              | Sau                                                                                            | Tiết kiệm thời gian |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------- |
| Phát triển Frontend & Backend cho Ứng dụng | Tích hợp và bao gói khả năng của LLM đòi hỏi rất nhiều thời gian để phát triển ứng dụng front-end. | Sử dụng trực tiếp các dịch vụ backend của ChatX để phát triển dựa trên một khung ứng dụng Web. | -80%                |
| Kỹ thuật Gợi ý                             | Chỉ có thể thực hiện bằng cách gọi API hoặc Playground.                                            | Gỡ lỗi dựa trên dữ liệu đầu vào của người dùng.                                                | -25%                |
| Chuẩn bị Dữ liệu và Nhúng                  | Viết mã để thực hiện xử lý dữ liệu văn bản dài và nhúng.                                           | Tải lên văn bản hoặc kết nối nguồn dữ liệu vào nền tảng.                                       | -80%                |
| Ghi Nhật ký và Phân Tích Ứng Dụng          | Viết mã để ghi nhật ký và truy cập cơ sở dữ liệu để xem chúng.                                     | Nền tảng cung cấp ghi nhật ký và phân tích thời gian thực.                                     | -70%                |
| Phân Tích Dữ Liệu và Điều Chỉnh            | Nhân viên kỹ thuật quản lý dữ liệu và tạo hàng đợi điều chỉnh.                                     | Nhân viên không chuyên ngành có thể hợp tác và điều chỉnh mô hình một cách trực quan.          | -60%                |
| Phát triển và Tích hợp Plugin AI           | Viết mã để tạo và tích hợp plugin AI.                                                              | Nền tảng cung cấp công cụ trực quan để tạo và tích hợp các plugin.                             | -50%                |

Trước khi sử dụng một nền tảng LLMOps như ChatX, quá trình phát triển ứng dụng dựa trên LLM có thể rất phức tạp và tốn thời gian. Các nhà phát triển cần tự xử lý các nhiệm vụ ở mỗi giai đoạn, điều này có thể dẫn đến không hiệu quả, khó khăn trong việc mở rộng và các vấn đề về bảo mật. Dưới đây là quy trình phát triển trước khi sử dụng một nền tảng LLMOps:

1. Chuẩn bị Dữ liệu: Thu thập và tiền xử lý dữ liệu thủ công, có thể liên quan đến công việc làm sạch và chú thích dữ liệu phức tạp, yêu cầu một lượng lớn mã lập trình.
2. Kỹ thuật Gợi ý: Các nhà phát triển chỉ có thể viết và gỡ lỗi Gợi ý thông qua các cuộc gọi API hoặc Playgrounds, thiếu phản hồi thời gian thực và gỡ lỗi trực quan.
3. Nhúng và Quản lý Bối cảnh: Xử lý thủ công việc nhúng và lưu trữ các ngữ cảnh dài, điều này có thể khó tối ưu hóa và mở rộng, yêu cầu một lượng lớn công việc lập trình và hiểu biết về nhúng mô hình và cơ sở dữ liệu vector.
4. Giám sát và Bảo trì Ứng dụng: Thu thập và phân tích dữ liệu hiệu suất thủ công, có thể không thể phát hiện và giải quyết vấn đề theo thời gian thực, và thậm chí có thể thiếu hồ sơ nhật ký.
5. Điều chỉnh Mô hình: Quản lý độc lập quá trình chuẩn bị dữ liệu và huấn luyện điều chỉnh, điều này có thể dẫn đến không hiệu quả và đòi hỏi nhiều mã lập trình hơn.
6. Hệ thống và Hoạt động: Sự tham gia của nhân viên kỹ thuật hoặc chi phí cần thiết cho việc phát triển một backend quản lý, tăng chi phí phát triển và bảo trì, và thiếu hỗ trợ cho việc hợp tác và người dùng không chuyên ngành.

Với sự giới thiệu của một nền tảng LLMOps như ChatX, quy trình phát triển ứng dụng dựa trên LLM trở nên hiệu quả, có khả năng mở rộng và an toàn hơn. Dưới đây là những lợi ích của việc phát triển ứng dụng LLM bằng cách sử dụng ChatX:

1. Chuẩn bị Dữ liệu: Nền tảng cung cấp các công cụ thu thập và tiền xử lý dữ liệu, đơn giản hóa các nhiệm vụ làm sạch và chú thích dữ liệu, và giảm thiểu hoặc thậm chí loại bỏ công việc lập trình.
2. Kỹ thuật Gợi ý: Chỉnh sửa và gỡ lỗi WYSIWYG Prompt, cho phép tối ưu hóa và điều chỉnh thời gian thực dựa trên dữ liệu đầu vào của người dùng.
3. Nhúng và Quản lý Bối cảnh: Tự động xử lý việc nhúng, lưu trữ và quản lý các bối cảnh dài, cải thiện hiệu suất và khả năng mở rộng mà không cần mã lập trình phức tạp.
4. Giám sát và Bảo trì Ứng dụng: Giám sát thời gian thực của dữ liệu hiệu suất, nhanh chóng xác định và giải quyết vấn đề, đảm bảo hoạt động ổn định của ứng dụng, và cung cấp hồ sơ nhật ký đầy đủ.
5. Điều chỉnh Mô hình: Nền tảng cung cấp chức năng điều chỉnh mô hình chỉ với một cú nhấp chuột dựa trên dữ liệu thực sự đã được chú thích trước đó, cải thiện hiệu suất mô hình và giảm công việc lập trình.
6. Hệ thống và Hoạt động: Giao diện thân thiện với người dùng không chuyên môn, hỗ trợ hợp tác giữa nhiều thành viên trong nhóm, và giảm chi phí phát triển và bảo trì. So với các phương pháp phát triển truyền thống, ChatX cung cấp quản lý ứng dụng rõ ràng và dễ theo dõi hơn, cho phép các thành viên trong nhóm hiểu rõ hơn về hoạt động của ứng dụng.

   Ngoài ra, ChatX sẽ cung cấp các tính năng phát triển và tích hợp plugin AI, cho phép các nhà phát triển dễ dàng tạo và triển khai các plugin dựa trên LLM cho các ứng dụng khác nhau, tăng hiệu suất phát triển và giá trị của ứng dụng.

**ChatX** là một nền tảng LLMOps dễ sử dụng được thiết kế để tạo điều kiện cho nhiều người hơn để tạo ra các ứng dụng AI bền vững. Với việc điều phối trực quan cho các loại ứng dụng khác nhau, ChatX cung cấp các ứng dụng sẵn có, sẵn sàng sử dụng có thể hoạt động như Backend-as-a-Service APIs. Thống nhất quy trình phát triển của bạn với một API cho các plugin và tích hợp kiến thức, và tối ưu hóa hoạt động của bạn bằng cách sử dụng một giao diện duy nhất cho kỹ thuật gợi ý, phân tích trực quan và cải thiện liên tục.


# Tạo ứng dụng ChatX

<table data-card-size="large" data-view="cards"><thead><tr><th data-card-target data-type="content-ref"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th><th data-hidden><select></select></th><th data-hidden data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/document-chatx/huong-dan-su-dung/tao-ung-dung-chatx/bat-dau-nhanh">Bắt đầu nhanh</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/document-chatx/huong-dan-su-dung/tao-ung-dung-chatx/tong-quan">Tổng quan</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/document-chatx/huong-dan-su-dung/tao-ung-dung-chatx/thiet-lap-goi-y">Thiết lập gợi ý</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/document-chatx/huong-dan-su-dung/tao-ung-dung-chatx/cau-hoi-thuong-gap">Câu hỏi thường gặp</a></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td><a href="/document-chatx/huong-dan-su-dung/tao-ung-dung-chatx/truong-hop-su-dung">Trường hợp sử dụng</a></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>


# Bắt đầu nhanh

Trong ChatX, "ứng dụng" đề cập đến các ứng dụng kịch bản thực tế được xây dựng trên các mô hình ngôn ngữ lớn như GPT. Bằng cách tạo một ứng dụng, bạn có thể áp dụng công nghệ AI thông minh vào các nhu cầu cụ thể. Nó bao gồm cả các mô hình kỹ thuật để phát triển các ứng dụng AI và các sản phẩm cụ thể.

#### Tóm lại, một ứng dụng cung cấp cho các nhà phát triển:

* Một API LLM thân thiện với người dùng, được đóng gói sẵn mà có thể được gọi trực tiếp bởi các ứng dụng backend hoặc frontend với xác thực token.
* Một ứng dụng web được lưu trữ, đẹp mắt và sẵn sàng sử dụng mà bạn có thể phát triển thêm bằng các mẫu ứng dụng web.
* Một bộ giao diện dễ sử dụng cho Kỹ thuật Đặt Prompt, quản lý ngữ cảnh, phân tích log, và chú thích.

Bạn có thể chọn một hoặc tất cả để hỗ trợ phát triển ứng dụng AI của mình.

## Các loại ứng dụng

ChatX cung cấp hai loại ứng dụng: tạo văn bản và hội thoại. Trong tương lai, có thể sẽ xuất hiện nhiều mô hình ứng dụng hơn (chúng ta cần cập nhật thường xuyên), và mục tiêu cuối cùng của ChatX là bao phủ hơn 80% các kịch bản ứng dụng điển hình của LLM. Sự khác biệt giữa ứng dụng tạo văn bản và ứng dụng hội thoại được thể hiện trong bảng dưới đây:

|                             | Tạo văn bản                       | Ứng dụng chat        |
| --------------------------- | --------------------------------- | -------------------- |
| Giao diện WebApp            | Biểu mẫu + Kết quả                | Kiểu chat            |
| Điểm cuối API               | `completion-messages`             | `chat-messages`      |
| Chế độ tương tác            | Một câu hỏi và một câu trả lời    | Đối thoại nhiều lượt |
| Trả kết quả theo luồng      | Được hỗ trợ                       | Được hỗ trợ          |
| Duy trì ngữ cảnh            | Thời gian hiện tại                | Liên tục             |
| Form đầu vào của người dùng | Được hỗ trợ                       | Được hỗ trợ          |
| Kiến thức & Plugins         | Được hỗ trợ                       | Được hỗ trợ          |
| Lời mở đầu của AI           | Không được hỗ trợ                 | Được hỗ trợ          |
| Ví dụ kịch bản              | Dịch thuật, đánh giá, lập chỉ mục | Chat hoặc mọi thứ    |

## Các bước để tạo một ứng dụng

Sau khi đăng nhập với tư cách quản trị viên trong ChatX, hãy chuyển đến trang ứng dụng điều hướng chính Nhấp vào 'Tạo ứng dụng mới' Chọn ứng dụng tạo cuộc trò chuyện hoặc văn bản và đặt tên cho nó (có thể sửa đổi sau)

<div data-full-width="false"><figure><img src="https://content.gitbook.com/content/SK9x6AT8FGi77omZphkL/blobs/VzQqFZtaEkg4Jqr2CPFO/create.JPG" alt=""><figcaption><p>Tạo một ứng dụng mới</p></figcaption></figure></div>

Chúng tôi cung cấp một số mẫu trong giao diện tạo ứng dụng, và bạn có thể nhấp để tạo từ một mẫu trong cửa sổ bật lên khi tạo ứng dụng. Những mẫu này sẽ cung cấp cảm hứng và tham khảo cho ứng dụng bạn muốn phát triển.

## Tạo từ tệp cấu hình

Nếu bạn đã nhận được một mẫu từ cộng đồng hoặc từ ai đó, bạn có thể nhấp để tạo từ một tệp cấu hình ứng dụng. Việc tải lên tệp này sẽ tải hầu hết các cài đặt từ ứng dụng của bên kia (nhưng hiện tại không bao gồm kiến thức).

## Ứng dụng của bạn

Nếu bạn sử dụng lần đầu, bạn sẽ được nhắc nhập khóa API OpenAI của mình. Một khóa LLM hoạt động đúng là điều kiện tiên quyết để sử dụng ChatX. Nếu bạn chưa có, vui lòng đăng ký một khóa.

<figure><img src="https://content.gitbook.com/content/SK9x6AT8FGi77omZphkL/blobs/xWjtbcNdH1Y9hFweDEha/apikey.JPG" alt=""><figcaption><p><strong>Nhập khóa API OpenAI của bạn</strong></p></figcaption></figure>

Sau khi tạo một ứng dụng hoặc chọn một ứng dụng đã tồn tại, bạn sẽ đến trang tổng quan ứng dụng hiển thị hồ sơ của ứng dụng. Bạn có thể truy cập trực tiếp vào WebApp của bạn hoặc kiểm tra trạng thái API ở đây, cũng như bật hoặc tắt chúng.

Các thống kê cho thấy việc sử dụng, số lượng người dùng hoạt động và tiêu thụ cuộc gọi LLM của ứng dụng trong một khoảng thời gian—giúp bạn liên tục cải thiện hiệu quả chi phí của các hoạt động ứng dụng. Chúng tôi sẽ dần dần cung cấp nhiều khả năng trực quan hóa hữu ích hơn; vui lòng cho chúng tôi biết những gì bạn muốn.

1. Tổng số tin nhắn: Số lượng tương tác trí tuệ nhân tạo hàng ngày; không bao gồm kỹ thuật định dạng/nhập thông tin.
2. Người dùng hoạt động: Người dùng duy nhất tham gia trò chuyện với trí tuệ nhân tạo; không bao gồm kỹ thuật định dạng/nhập thông tin.
3. Trung bình Số lượng Tương tác trong Phiên: Số lượng tương tác liên tục giữa người dùng và trí tuệ nhân tạo; dành cho các ứng dụng dựa trên trò chuyện.
4. Tỉ lệ Hài lòng của Người dùng: Số lượt thích trên mỗi 1.000 tin nhắn; chỉ định sự hài lòng với câu trả lời của trí tuệ nhân tạo.
5. Trung bình Thời gian Phản hồi: Thời gian (ms) để trí tuệ nhân tạo xử lý/phản hồi; cho các ứng dụng dựa trên văn bản.
6. Sử dụng Token: Sử dụng mã thông tin ngôn ngữ hàng ngày của mô hình; cho việc kiểm soát chi phí.

## Xem video hướng dẫn nhanh về ChatX tại [đây](https://drive.google.com/file/d/1NAb1aIAgr65WD7nu54GhPtAwg8tZeOTV/view?usp=drive_link).

## Tiếp theo:

* Thử nghiệm ứng dụng Web của bạn
* Tham quan các trang Cấu hình, Phát triển và Nhật ký ở bên trái
* Thử cấu hình một ứng dụng bằng cách sử dụng một trường hợp tham khảo
* Nếu bạn có khả năng phát triển ứng dụng frontend, vui lòng tham khảo tài liệu API


# Tổng quan

Các ứng dụng web dành cho người tiêu dùng ứng dụng. Khi một nhà phát triển ứng dụng tạo một ứng dụng trong ChatX, anh ấy sẽ nhận được một ứng dụng web tương ứng. Người dùng của ứng dụng web có thể sử dụng nó mà không cần đăng nhập. Ứng dụng web được điều chỉnh để phù hợp với các kích thước thiết bị khác nhau: Máy tính cá nhân, máy tính bảng và điện thoại di động.

Nội dung của ứng dụng web là nhất quán với cấu hình được xuất bản bởi ứng dụng. Khi cấu hình của ứng dụng được sửa đổi và nút "Xuất bản" được nhấp vào trên trang bố trí từ khóa gợi ý của ứng dụng để xuất bản, nội dung của ứng dụng web cũng sẽ được cập nhật theo cấu hình của ứng dụng hiện tại.

Chúng tôi có thể kích hoạt và vô hiệu hóa quyền truy cập vào ứng dụng web trên trang tổng quan ứng dụng và sửa đổi thông tin trang web của ứng dụng web:

* Biểu tượng
* Tên
* Mô tả ứng dụng
* Ngôn ngữ giao diện
* Thông tin bản quyền
* Liên kết Chính sách Bảo mật

Hiệu suất chức năng của ứng dụng web phụ thuộc vào việc nhà phát triển có kích hoạt chức năng này khi biên soạn ứng dụng hay không, ví dụ:

* Ghi chú trò chuyện
* Biến được điền vào trước khi trò chuyện
* Theo dõi
* Chuyển đổi giọng nói thành văn bản
* Các câu trả lời khác như thế này (Ứng dụng Sinh văn bản)
* ...

Trong các chương sau, chúng tôi sẽ giới thiệu hai loại ứng dụng web một cách riêng biệt:

* Trình tạo văn bản
* Trò chuyện


# Thiết lập gợi ý

Thạo việc sử dụng ChatX để điều phối các ứng dụng và thực hành Kỹ thuật Câu gợi ý, và xây dựng các ứng dụng trí tuệ nhân tạo có giá trị cao với hai loại ứng dụng tích hợp sẵn.

Khái niệm cốt lõi của ChatX là định nghĩa tự động của các ứng dụng trí tuệ nhân tạo. Mọi thứ bao gồm Câu gợi ý, ngữ cảnh, plugin, v.v. có thể được mô tả trong một tệp YAML (đó là lý do tại sao nó được gọi là ChatX). Cuối cùng, nó cung cấp một API duy nhất hoặc WebApp sẵn có.

Đồng thời, ChatX cung cấp một giao diện điều phối Câu gợi ý dễ sử dụng, nơi các nhà phát triển có thể điều phối một cách trực quan các tính năng ứng dụng khác nhau dựa trên Câu gợi ý. Nghe có vẻ đơn giản phải không?

Đối với cả ứng dụng trí tuệ nhân tạo đơn giản và phức tạp, Câu gợi ý tốt có thể cải thiện hiệu suất đầu ra của mô hình, giảm tỷ lệ lỗi và đáp ứng nhu cầu của các tình huống cụ thể. Hiện tại, ChatX cung cấp hai dạng ứng dụng phổ biến: trò chuyện và trình tạo văn bản. Phần này sẽ hướng dẫn bạn qua việc điều phối trực quan các ứng dụng trí tuệ nhân tạo.

## Các bước Điều Phối Ứng Dụng:

1. Xác định các kịch bản ứng dụng và yêu cầu chức năng
2. Thiết kế và kiểm thử Câu gợi ý và tham số mô hình
3. Điều phối Câu gợi ý
4. Xuất bản ứng dụng
5. Quan sát và liên tục lặp lại

## Thực hành thực tế

TODO

## Các Sự Khác Biệt giữa Các Loại Ứng Dụng

Các ứng dụng tạo văn bản và trò chuyện trong ChatX có những sự khác biệt nhỏ trong việc điều phối câu gợi ý. Các ứng dụng trò chuyện yêu cầu tích hợp "conversation lifecycle" để đáp ứng các tình huống người dùng phức tạp hơn và các nhu cầu quản lý ngữ cảnh.

Kỹ thuật Câu gợi ý đã phát triển thành một lĩnh vực có tiềm năng lớn, đáng để liên tục khám phá. Vui lòng tiếp tục đọc để tìm hiểu về các hướng dẫn điều phối cho cả hai loại ứng dụng.

## Đọc Thêm

1. [Learn Prompting](https://learnprompting.org/)
2. [ChatGPT Prompt Engineering for Developers](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)
3. [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts)




---

[Next Page](https://developer.chatx.vn/llms-full.txt/1)

