Lampline: biến cuộc gọi voicebot thành regression test trước production
Lampline là nền tảng mã nguồn mở, tự triển khai để xây dựng và kiểm thử voice agent. QA có thể dùng AI Test Caller gọi vào agent, chấm transcript theo điều kiện mong đợi, phân biệt lỗi cuộc gọi với lỗi logic và phát lại ca thất bại.
Một voicebot vừa đổi prompt ở bước xác thực. Test chat vẫn ổn, nhưng khi lên điện thoại, người gọi ngập ngừng, chen lời hoặc đổi ý giữa chừng — và bot bỏ qua một điều kiện bắt buộc.
Đó là kiểu lỗi thường chỉ lộ ra khi có cuộc gọi thực tế. Lampline, dự án mã nguồn mở đang xuất hiện trên GitHub Trending, hướng đến bài toán này: xây dựng và chạy AI phone agent trên máy hoặc hạ tầng tự quản, rồi dùng AI Test Caller gọi thử, chấm cuộc gọi theo tiêu chí đã định và phát lại ca thất bại.
Với QA, điểm đáng chú ý không chỉ là tạo bot. Đây là cách biến luồng hội thoại thoại thành regression test: có kịch bản người gọi, điều kiện pass/fail, transcript và dấu vết để điều tra lỗi.
Lampline biến cuộc gọi thành một test run ra sao?
Theo README của dự án, Lampline có thể chạy trên máy cá nhân, máy GPU hoặc máy chủ on-premises. Agent được lưu dưới dạng thư mục, với agent.yaml và các tệp Markdown trong prompts/.
Cách tổ chức này phù hợp với quy trình Git: team có thể review thay đổi prompt, giữ test case cạnh cấu hình agent và kiểm tra trước khi đưa thay đổi lên môi trường chạy.
Tab Evals gọi tới voice agent qua một đường điện thoại. AI Test Caller đóng vai người gọi theo mô tả bạn viết; sau đó, một model chấm transcript theo từng điều kiện phải xảy ra.
README liệt kê các đầu ra và tình huống Evals hỗ trợ:
Transcript của cuộc gọi.
Từng check pass hoặc fail, kèm lý do.
Thời gian phản hồi mà người gọi nghe được, gồm cả đường điện thoại; dự án nêu chỉ số điển hình và p95.
Phát lại cuộc gọi thất bại.
Các tình huống như tiếng ồn nền, giọng nói khác nhau, ngắt lời, khoảng lặng dài, nói do dự hoặc lan man.
Một chi tiết hữu ích cho QA: nếu cuộc gọi không nghe thấy âm thanh, Lampline đánh dấu “Didn't run” thay vì “Failed”. Đây là cách phân biệt lỗi hạ tầng hoặc audio với lỗi logic hội thoại.
Theo README, Evals có thể gọi kiểm thử các agent có số điện thoại, gồm agent tạo trong Lampline, Dialogflow CX, CX Agent Studio, Vapi, Retell hoặc IVR riêng. Dự án cũng lưu ý chỉ gọi các agent mà bạn sở hữu hoặc được phép kiểm thử. Với Google Voice, người dùng phải tự bấm Call vì dịch vụ này không cho phép quay số tự động.
Viết test case thoại từ feature spec
Thay vì viết chung chung “test bot đặt lịch”, hãy mô tả case như một hợp đồng có thể chấm được:
Ai đang gọi?
Họ muốn đạt mục tiêu gì?
Họ sẽ nói hoặc phản ứng thế nào?
Bot bắt buộc phải làm gì?
Hành vi nào được tính là fail?
Ví dụ feature spec cho một agent phòng khám:
> Người gọi muốn đặt lịch vệ sinh răng. Bot cần thu thập ngày mong muốn, xác nhận lại thông tin và không được tự khẳng định còn lịch nếu chưa kiểm tra.
Một test suite không nên chỉ có happy path. Với thoại, các nhánh dễ hỏng thường nằm ở việc người gọi im lặng, sửa ý, phủ định, ngắt lời, cung cấp thiếu dữ liệu hoặc nói thông tin mâu thuẫn.
Bạn có thể dùng mẫu sau để soạn case trước khi đưa vào Evals:
text
Tên case: <tên regression case>
Vai người gọi:
Bạn là <persona>. Bạn gọi đến để <mục tiêu chính>.
Cách nói:
Bắt đầu bằng: "<câu mở đầu>"
Nếu bot hỏi <thông tin>, trả lời: "<dữ liệu hợp lệ hoặc không hợp lệ>"
Sau khi bot nói <mốc hội thoại>, hãy <ngắt lời / đổi ý / im lặng / hỏi lại>.
Không tự cung cấp <thông tin> nếu bot chưa hỏi.
Các điều bắt buộc phải xảy ra:
Bot phải <hành vi hoặc thông tin bắt buộc>.
Bot không được <hành vi bị cấm>.
Nếu thiếu <dữ liệu>, bot phải <cách xử lý kỳ vọng>.
Trước khi kết thúc, bot phải <xác nhận / chuyển tuyến / gọi tool>.
Điều kiện fail:
<hành vi sai có thể quan sát trong transcript>.
<lời hứa, dữ liệu hoặc hành động không được phép>.
Ví dụ:
text
Tên case: đặt lịch thiếu ngày
Vai người gọi:
Bạn muốn đặt lịch vệ sinh răng nhưng chưa quyết định ngày.
Cách nói:
Bắt đầu bằng: "Tôi muốn đặt lịch vệ sinh răng."
Nếu bot hỏi ngày mong muốn, trả lời: "Tôi chưa biết, có lịch nào không?"
Nếu bot nói đã đặt lịch, hỏi lại: "Bạn đã kiểm tra lịch thật chưa?"
Các điều bắt buộc phải xảy ra:
Bot phải hỏi hoặc hướng dẫn để lấy ngày mong muốn.
Bot không được xác nhận đã đặt lịch khi chưa có ngày.
Bot không được khẳng định còn chỗ nếu chưa thực hiện kiểm tra cần thiết.
Bot phải tóm tắt bước tiếp theo trước khi kết thúc.
Điều kiện fail:
Bot tự tạo một lịch hẹn.
Bot kết thúc cuộc gọi mà không nêu bước tiếp theo.
Gợi ý cho QA: ưu tiên assertion về hành vi quan sát được thay vì buộc bot lặp đúng một câu. Chẳng hạn, điều kiện “bot phải hỏi ngày hoặc giải thích cần ngày để tiếp tục” thường bền vững hơn yêu cầu bot nói chính xác một câu cụ thể.
Walkthrough kiểm thử agent Dialogflow
Lampline hỗ trợ import agent từ Dialogflow CX và CX Agent Studio. Theo README, bạn export agent từ giao diện Google, sau đó thả tệp .zip vào New agent → Import.
Dự án cho biết quá trình import mang theo flows, pages, forms, routes, playbooks và tools, đồng thời hiển thị báo cáo những phần cần xem lại trước khi sử dụng agent.
Một quy trình QA có thể áp dụng:
Review báo cáo import. Import thành công không đồng nghĩa hành vi đã tương đương. Hãy kiểm tra riêng routes, no-match handler, form field, webhook hoặc OpenAPI tool và playbook.
Mở test console. Quan sát step được kích hoạt khi hội thoại đi qua để khoanh vùng lỗi: người gọi nói không rõ, route đi sai hay LLM step xử lý chưa đúng.
Tạo Evals theo test matrix. Bao phủ ít nhất happy path, thiếu dữ liệu, no-match, đổi ý, ngắt lời và lỗi công cụ.
Tự bấm Call. README mô tả Lampline Phone Bridge trên Chrome hoặc Edge có thể kết nối audio Google Voice với Test Caller trong trình duyệt. Một lựa chọn khác là dùng điện thoại bật loa.
Đọc kết quả theo từng check. Với trạng thái “Didn't run”, hãy ưu tiên kiểm tra audio, kết nối hoặc thiết lập cuộc gọi. Với lỗi fail, đối chiếu transcript, step đã kích hoạt và điều kiện trong case.
Chạy lại ca fail sau khi sửa. Đồng thời chạy regression để phát hiện thay đổi mới có làm hỏng các case từng pass hay không.
Agent as code: hữu ích cho QA automation
README mô tả agent là các tệp thường và CLI vk có thể lint, test chúng từ terminal:
bash
vk lint
vk test
Dự án cũng cung cấp plugin cho Claude Code, với các kỹ năng hỗ trợ xây agent, sửa agent theo test thất bại, kiểm thử Dialogflow và review thay đổi. README nêu các lệnh cài đặt sau:
text
/plugin marketplace add C4rohan/lampline
/plugin install lampline@lampline
Coding agent có thể hỗ trợ đề xuất test case hoặc rà soát nhánh hội thoại, nhưng không nên trở thành oracle duy nhất. QA vẫn cần review expected result, negative case và bằng chứng trong transcript.
Đừng chỉ sửa một ca fail
README nói Lampline có thể chạy test case dưới dạng text chat, thử viết lại prompt ở các step có check fail và chỉ giữ thay đổi khi số check pass tăng lên mà các check từng pass không bị hỏng. Người dùng vẫn review phần trước và sau rồi mới áp dụng.
Đây có thể là một guardrail hữu ích, nhưng không thay thế kiểm thử độc lập. Khi sửa lỗi kiểu “bot tự xác nhận lịch”, hãy kiểm tra:
Case fail ban đầu pass vì bot thực sự tuân thủ rule, hay chỉ né tránh câu hỏi?
Happy path đặt lịch có còn hoàn tất?
Bot có chuyển lỗi sang no-match hoặc vòng lặp hỏi lại?
Form, route và tool call có còn đúng?
Prompt mới có làm bot đưa ra thông tin không nên nói với người gọi không?
README không mô tả API, schema kết quả eval hay selector giao diện để tự động hóa trực tiếp. Vì vậy, nếu xây UI automation quanh Lampline, không nên tự suy diễn endpoint hoặc định dạng dữ liệu từ giao diện.
Checklist trước khi đưa voicebot lên production
[ ] Mỗi yêu cầu nghiệp vụ có case pass và case thiếu dữ liệu hoặc bị từ chối.
[ ] Mỗi case nêu rõ persona, hành vi người gọi và assertion quan sát được.
[ ] Phân loại rõ Failed và Didn't run.
[ ] Có thể phát lại các lỗi nghiêm trọng sau khi sửa.
[ ] Chạy lại regression sau thay đổi prompt, route, form hoặc tool.
[ ] Review transcript và step trace, không chỉ nhìn nhãn pass.
[ ] Không đưa dữ liệu khách hàng, số điện thoại thật, khóa API hoặc credentials vào test case nếu chưa có chính sách xử lý dữ liệu phù hợp.
[ ] Chỉ gọi các số điện thoại và agent mà nhóm có quyền kiểm thử.
Lampline không thay thế test strategy hay người QA. Giá trị của nó là đưa câu hỏi “khách hàng sẽ nói gì qua điện thoại?” thành một test artifact có thể lặp lại, chấm được và truy vết được trước khi voicebot chạm vào production.