[ad_1]
Langfuse là một công cụ hữu ích để thử nghiệm linh hoạt các Tác nhân AI. Gần đây, chúng tôi bắt đầu triển khai một khuôn khổ để thử nghiệm Tác nhân AI dựa trên trò chuyện. Sau đây là bản tường trình về hành trình của chúng tôi trong việc điều hướng các công cụ có sẵn.
Bây giờ, chúng tôi chủ yếu tập trung vào cách hoàn thành nhiệm vụ này, nhưng cuối cùng, chúng tôi sẽ đề cập đến một số suy nghĩ về những thách thức mà chúng tôi vẫn đang phải đối mặt và những công cụ hiện có có thể làm để hỗ trợ tốt hơn cho loại trường hợp sử dụng này trong tương lai.
Trước khi xem xét cách chúng tôi xây dựng hệ thống của mình, chúng tôi sẽ nhanh chóng đi vào các mục tiêu và tiêu chí thành công của mình.
Các trường hợp sử dụng AI sáng tạo thường dễ triển khai nhưng khó kiểm soát. Khi triển khai một tác nhân có mô hình ngữ cảnh lớn, những thay đổi ngược dòng trong lời nhắc mô hình, cài đặt nhiệt độ, chính sách kiểm duyệt nội dung, v.v., có thể tác động mạnh mẽ đến hiệu suất của tác nhân đó.
Thách thức là tạo ra một hệ thống có thể đánh giá khả năng của một tác nhân trong việc hoàn thành các nhiệm vụ cụ thể mà không gây ảo giác hoặc vi phạm chính sách nội dung. Chúng tôi coi điều này giống như thử nghiệm đơn vị, đảm bảo rằng đại lý của bạn duy trì khả năng hoàn thành một danh sách nhiệm vụ rộng lớn, ngay cả khi nhóm đứng sau có thể đang tập trung vào các cải tiến cụ thể. Thực hiện loại thử nghiệm này theo cách thủ công có thể không chính xác, tốn thời gian và khó theo dõi.
Vì vậy, chúng tôi bắt đầu tạo ra một hệ thống có thể dễ dàng thực hiện các thử nghiệm này và theo dõi kết quả của chúng. Điều quan trọng là chúng tôi muốn hệ thống này có thể hoạt động được với tần suất thay đổi mã bắt buộc ở mức tối thiểu để Người quản lý sản phẩm hoặc người kiểm tra QA có thể đóng góp cho hệ thống mà không cần phải chạm vào mã.
Chúng tôi đặt ra một số tham số chính cho tìm kiếm của mình:
Tuân thủ HIPAA, vì cả sản phẩm chúng tôi xây dựng và nhiều đối tác tư vấn của chúng tôi đều thuộc lĩnh vực chăm sóc sức khỏe.
Chi phí thấp, cả để tồn tại và vận hành, vì chúng tôi hoạt động khá tinh gọn, cũng như các đối tác của chúng tôi.
Động lực phát triển. Không gian quan sát LLM đang phát triển nhanh chóng. Ngay từ đầu tìm kiếm, chúng tôi đã chuẩn bị sẵn sàng để mắc sai lầm, nhưng chúng tôi muốn giảm thiểu khả năng này bằng cách chọn một công cụ có khả năng phát triển cùng với chúng tôi.
Khả năng đánh giá LLM tùy chỉnh. Đáng ngạc nhiên là khả năng thiết lập và chạy trình đánh giá tùy chỉnh là điều mà chúng tôi không thấy dễ dàng hỗ trợ trong số tất cả các tùy chọn mà chúng tôi tìm thấy, đặc biệt là trong số các tùy chọn nguồn mở.
Để đơn giản hóa việc tìm kiếm, chúng tôi đã xác định những người chơi sau trong cả danh mục doanh nghiệp và nguồn mở có vẻ đáp ứng các tiêu chí của chúng tôi, được liệt kê ở đây theo thứ tự xếp hạng sơ bộ.
Doanh nghiệp
Mã nguồn mở
Chúng tôi chọn Langfuse chủ yếu vì nó dễ tự triển khai mà không cần tương tác với nhóm bán hàng doanh nghiệp và vì chúng tôi tin rằng Nó có các tính năng quan trọng mà chúng tôi yêu cầu. Điều này cho đến nay hóa ra là đúng.
Triển khai
Nhìn chung, chúng tôi nhận thấy quá trình triển khai tương đối đơn giản. Langfuse cung cấp hình ảnh docker dễ sử dụng và tài liệu chắc chắn về cách triển khai cục bộ. Việc tạo tệp YAML và triển khai lên EKS rất đơn giản và chúng tôi đã thiết lập và chạy phiên bản demo trong vòng vài giờ. Chúng tôi không thiết lập SSO cho POC của mình nên chúng tôi sử dụng tính năng quản lý người dùng cơ bản được cung cấp sẵn (không nhiều) và dựa vào dữ liệu ẩn danh để đáp ứng các yêu cầu bảo mật. Cơ sở dữ liệu PG cấp miễn phí trên RDS có thể xử lý nhiều truy vấn, đánh giá và quản lý nhanh chóng cho nhiều người dùng. Ứng dụng này rất nhẹ. Một số vấn đề chúng tôi đã gặp phải:
- Không có cách nào để có được danh sách lời nhắc trong SDK theo chương trình. Điều này có nghĩa là khi chúng tôi tập hợp các lời nhắc hệ thống hoặc cuộc trò chuyện kiểm tra đơn vị khác nhau, chúng tôi phải lưu trữ tên lời nhắc trong cấu hình của bất kỳ điểm nhập nào mà chúng tôi đã sử dụng cho một trường hợp sử dụng cụ thể (ví dụ: danh sách các bài kiểm tra đơn vị trong lời nhắc hệ thống cho một đại lý)
- Chúng tôi không tìm ra cách lấy danh sách các biến trong lời nhắc để sử dụng trong quá trình biên dịch. Chúng tôi đang sử dụng các biến khác nhau cho các lời nhắc hệ thống khác nhau mà chúng tôi sẽ lấy và phải mã hóa cứng những bit dữ liệu nào sẽ được biên dịch vào từng biến hoặc thực hiện một số thử nghiệm và lỗi.
- Các quan sát không được ghi chép đầy đủ. Khi ghi điểm vào Langfuse, chúng tôi thấy rằng bạn có thể thêm quan sátId, nhưng các tài liệu nói chung là tốt lại không cung cấp thêm ngữ cảnh. Chúng tôi có thể sẽ sử dụng chúng trong tương lai khi chúng tôi tìm ra tất cả các khả năng mà chúng có thể mang lại
Sơ đồ về cách chúng tôi sử dụng cấu hình Dấu nhắc Hệ thống để tạo hệ thống kiểm tra trung tâm, không cần mã trong Langfuse
Sau vài tuần làm việc, chúng tôi đã thiết lập được một hệ thống thử nghiệm toàn diện. Langfuse cung cấp nhiều chức năng hơn mức chúng tôi đã sử dụng cho đến nay nhưng chúng tôi tập trung vào việc sử dụng lời nhắc, phiên và dấu vết.
Một yêu cầu chính mà chúng tôi đưa ra khi thực hiện thử nghiệm trên tổng đài viên dựa trên trò chuyện là khả năng đưa tổng đài viên vào giữa kịch bản trò chuyện, sử dụng các tin nhắn được trao đổi trước đó làm ngữ cảnh. Bất kỳ lời nhắc tùy chỉnh nào cũng có thể được thực hiện để bao gồm lịch sử trò chuyện, nhưng Langfuse khiến việc này trở nên đặc biệt dễ dàng.
Hơn nữa, chúng tôi đã xây dựng giao diện trò chuyện cho nhân viên hỗ trợ, cho phép người dùng kiểm tra và đưa ra lời nhắc kiểm tra mới tại chỗ để đánh giá. Điều này giải quyết một trong
các vấn đề tiềm ẩn khi chèn lời nhắc làm ngữ cảnh, các cuộc trò chuyện phải thể hiện kết quả đầu ra thực tế mà mô hình có thể tạo ra.
Điều này tạo ra một lỗ hổng tiềm ẩn: Lịch sử trò chuyện mà chúng tôi đang sử dụng làm ngữ cảnh phải được làm mới nếu hành vi cơ bản của mô hình thay đổi. Điều đó nói lên rằng, chúng tôi thấy phương pháp này dễ kiểm soát và nhất quán hơn các phương pháp thay thế tiềm năng, chẳng hạn như để một tác nhân tương tác với một tác nhân khác — điều mà chúng tôi sẽ khám phá như một phần bổ sung khác cho loại hệ thống này.
Thách thức quan trọng khác mà chúng tôi đã giải quyết là làm thế nào để tạo toàn bộ bộ thử nghiệm mà không cần mã. Đầu tiên, để xác định một bộ thử nghiệm, chúng tôi đã tạo một đối tượng cấu hình trong lời nhắc hệ thống dành cho tác nhân, đối tượng này xác định danh sách các thử nghiệm sẽ chạy theo nó.
Điều này cũng cho phép chúng tôi chuyển lời nhắc hệ thống dưới dạng một biến khi chạy một bộ thử nghiệm. Một trong những lợi ích chính của một hệ thống như Langfuse là khả năng cho phép quản lý nhanh chóng dưới dạng mã trong giao diện người dùng của nó. Vì mục đích đó, các lời nhắc hệ thống tiếp theo có thể được đưa vào hệ thống cũng được liên kết với lời nhắc hệ thống trong cấu hình, cho phép chúng tôi buộc mô hình cơ bản vào các trạng thái cụ thể trong quá trình thử nghiệm đồng thời tăng cường hệ thống chống lại các thay đổi đối với chính hoặc theo sau. -trên lời nhắc của hệ thống.
Bằng cách quản lý danh sách các thử nghiệm sẽ chạy dưới dạng cấu hình trong lời nhắc hệ thống, chúng tôi yêu cầu mỗi tổng đài viên chỉ thay đổi mã một lần. Danh sách các bài kiểm tra sẽ chạy có thể được thay đổi và mở rộng trong Giao diện người dùng Langfuse.
Mỗi lời nhắc kiểm tra được liên kết với bộ đánh giá của nó như một phần cấu hình của nó. Mỗi lời nhắc kiểm tra có ít nhất 1 đánh giá tùy chỉnh chạy trên đó, với các lời nhắc gần như tuân theo mẫu này: một người đánh giá AI hữu ích sẽ cung cấp phản hồi và chấm điểm cho nhiệm vụ bên dưới.
You're a useful AI evaluator who will present suggestions and scoring on the duty under.(Describe the situation and the way the agent has been instructed to behave in stated situation)Based mostly on the transcript output, you'll decide whether or not this job was efficiently accomplished. You'll return a JSON object within the following type:-------------Instance outputs:{"rating": -1, "remark": (Description of an instance destructive case}{“rating”: 1, “remark”: (Description of an instance optimistic case)}------------On this object, rating is a quantity between -1 and 1, with 1 indicating full success and a -1 indicating full failure. The remark is a string indicating your reasoning for the rating.-------------BEGIN TRANSCRIPT:{{transcript}}END TRANSCRIPT--------------Don't return any output besides the JSON object referenced above.
Sử dụng hệ thống này
Chúng tôi coi khung kiểm tra & đánh giá này là một tập hợp các thỏa hiệp hợp lý để tạo ra một hệ thống chi phí thấp, dễ vận hành. Chúng tôi coi các ứng dụng chính của nó là một phần của quy trình CI/CD, đảm bảo rằng hoặc là nguồn của thẻ điểm nhanh cho những người đang tìm cách điều chỉnh lời nhắc của hệ thống, những người muốn có thông tin đầu vào kỹ lưỡng hơn những gì họ có thể nhận được thông qua kiểm tra thủ công.
Dựa trên các mô hình hỗ trợ tác nhân và người đánh giá của bạn, việc sử dụng mã thông báo có thể có nghĩa là chạy bộ thử nghiệm đầy đủ, trong trường hợp của chúng tôi có thể dễ dàng chứa hàng tá lời nhắc và người đánh giá thử nghiệm, có thể tốn hàng chục đô la.
Một cách để kiểm soát chi phí vận hành một hệ thống như thế này như một phương tiện lặp lại các lời nhắc và công cụ, đặc biệt khi thực hiện một số lượng lớn các thay đổi nhằm nỗ lực cải thiện hiệu suất lặp đi lặp lại, là bắt đầu với một mô hình nhỏ hơn, đo lường hiệu suất tương đối và chỉ đẩy mạnh thử nghiệm lên các mô hình lớn hơn khi bạn tìm thấy kết quả đáng khích lệ.
Nhìn chung, chúng tôi hài lòng với quyết định sử dụng Langfuse. Với một lượng công việc khá nhỏ, chúng tôi có thể triển khai thứ gì đó phù hợp với nhu cầu của mình. Hệ thống đủ linh hoạt để cho phép chúng tôi tùy chỉnh hệ thống cho phù hợp với trường hợp sử dụng của mình một cách tương đối nhanh chóng.
Chúng tôi đã nhận thấy một số thiếu sót mà chúng tôi hy vọng sẽ được giải quyết trong quá trình phát triển trong tương lai:
Langfuse UX thiếu một chút trau chuốt, điều này sẽ làm tăng đáng kể chất lượng cuộc sống của người dùng. Các ví dụ bao gồm không thể sao chép lời nhắc và không thể tìm kiếm lời nhắc có sẵn theo bất kỳ tham số nào ngoài tên của chúng.
Tùy chọn tự lưu trữ không cho phép bạn kích hoạt các lần chạy thử nghiệm mới từ bên trong giao diện người dùng, nghĩa là ai đó vận hành hệ thống cần thực hiện việc đó thông qua dòng lệnh hoặc giao diện người dùng khác được phát triển cho mục đích này.
Chúng tôi hiểu rằng môi trường này đang phát triển nhanh chóng, nhưng chúng tôi tin rằng khung thô này có khả năng di chuyển hợp lý, nếu cuối cùng chúng tôi quyết định triển khai nó trong một hệ thống khác.
Một cách để tăng phạm vi thử nghiệm của chúng tôi là tạo các biến thể của lời nhắc thử nghiệm hiện có của chúng tôi. Các công cụ như TestGen-LLM đang nổi lên trong không gian, nhưng nhìn chung, không gian sử dụng GenAI để kiểm tra GenAI còn non trẻ. Vì các tải trọng này về cơ bản là các đối tượng JSON nên chắc chắn có thể hướng dẫn LLM tạo các biến thể. Sau đó, câu hỏi đặt ra là làm thế nào để kiểm soát chất lượng của các biến thể đó để chúng vẫn thể hiện các thử nghiệm hợp lệ.
Bộ dữ liệu Langfuse là một tính năng công cụ thú vị, cho phép người dùng liên kết các phần dấu vết cụ thể làm đầu vào và đầu ra dự kiến của mô hình. Mặc dù lẽ ra chúng tôi có thể sử dụng những thứ tương tự như thế này trong quá trình thử nghiệm đơn vị của mình, nhưng chúng tôi nhận thấy việc tạo lời nhắc trò chuyện làm thông tin đầu vào và mô tả chung những gì chúng tôi đang tìm kiếm trong lời nhắc đánh giá sẽ đơn giản hơn là tạo “kết quả đầu ra dự kiến” để sử dụng trong đánh giá tập dữ liệu. Chúng tôi tin rằng bộ dữ liệu là cách rõ ràng để thực hiện các thử nghiệm có thể được đánh giá bằng mã (ví dụ: chatbot có trả về đúng năm khi được hỏi không? Chatbot có trả về JSON chức năng không?). Trong tương lai, chúng tôi có thể sử dụng chúng để thử nghiệm tổng quát hơn nhưng chúng tôi thấy rằng việc thực hiện các thử nghiệm mới sẽ nhanh hơn bằng cách tạo các lời nhắc riêng biệt.
[ad_2]
Source link