Framework CangjieMagic: Được viết bằng ngôn ngữ lập trình Cangjie của Huawei, chuyên dùng để phát triển các AI Agent và hỗ trợ trên các hệ điều hành như HarmonyOS, Windows, macOS, Linux.
1. Định Nghĩa Và Quan Hệ Kế Thừa Lớp
public class DongBoTraLoi <: Iterator<String> {
// Thực hiện lớp...
}
Lớp `DongBoTraLoi` thực hiện giao diện `Iterator2. Phân Tích Biến Thành Viên Chính
private let phanDoan: Iterator<String>
private let _noiDung = StringBuilder()
public let thongTinThucHien: Option<ThongTinThucHienAI>
Lớp này có ba biến thành viên chính:
- `phanDoan`: Một bộ lặp chuỗi ký tự, giống như một cuộn tranh đang từ từ mở ra, mỗi lần chỉ hiển thị một phần nhỏ.
- `_noiDung`: Đối tượng StringBuilder dùng để tích lũy tất cả các đoạn nội dung, giống như việc chúng ta ghi chú, dần dần tích lũy thành một quyển sổ hoàn chỉnh.
- `thongTinThucHien`: Đối tượng tùy chọn chứa thông tin thực thi, ghi lại ngữ cảnh thực hiện của AI, giống như kịch bản mà đạo diễn nắm giữ, ghi lại những gì diễn viên cần làm.
3. Phân Tích Hàm Khởi Tạo
public init(phanDoan: Iterator<String>) {
this.phanDoan = phanDoan
this.thongTinThucHien = None
}
public init(phanDoan: Iterator<String>, thongTinThucHien!: ThongTinThucHienAI) {
this.phanDoan = phanDoan
this.thongTinThucHien = thongTinThucHien
}
Lớp cung cấp hai hàm khởi tạo, giống như nhà hàng cung cấp hai lựa chọn là bữa ăn tiêu chuẩn và bữa ăn cao cấp:
1. Phiên bản cơ bản: Chỉ cần cung cấp bộ lặp phân đoạn, thông tin thực thi rỗng.
2. Phiên bản nâng cao: Cung cấp cả bộ lặp phân đoạn và thông tin thực thi.
4. Phân Tích Phương Thức Truy Xuất Thuộc Tính
public prop noiDung: String {
get() {
// Tiêu thụ tất cả các phân đoạn
for (_ in this) { }
_noiDung.toString()
}
}
Phương thức truy xuất thuộc tính `noiDung` thực hiện một nhiệm vụ: Nó sẽ tiêu thụ tất cả các phân đoạn trong bộ lặp (bằng cách duyệt qua chính nó), sau đó trả về chuỗi nội dung đầy đủ.
Quá trình này là đồng bộ, sẽ chặn cho đến khi tất cả nội dung được lấy xong, điều này cũng được nhấn mạnh trong chú thích.
5. Thực Hiện Hàm Bộ Lặp
override public func tiepTheo(): Option<String> {
if (let Some(phat) <- this.phanDoan.tiepTheo()) {
_noiDung.append(phat)
return phat
} else {
if (let Some(thongTin) <- this.thongTinThucHien) {
thongTin.doiThoai.addMessage(ChatMessage.troLy(_noiDung.toString()))
}
return None
}
}
Hàm `tiepTheo()` là cốt lõi của việc thực hiện giao diện `Iterator`, nó thực hiện hai việc:
1. Khi còn phân đoạn:
- Lấy phân đoạn tiếp theo
- Thêm vào nội dung tích lũy
- Trả về phân đoạn này
2. Khi không còn phân đoạn nào nữa:
- Nếu có thông tin thực thi, thêm toàn bộ nội dung tích lũy vào cuộc trò chuyện dưới dạng tin nhắn từ trợ lý AI
- Trả về None biểu thị kết thúc vòng lặp
Giống như một người kể chuyện, kể từng đoạn một, khi câu chuyện kết thúc, vẫn ghi lại toàn bộ câu chuyện vào sổ ghi chép để xem lại sau.