Việc hiểu các công nghệ cơ sở phần mềm mới mà không sử dụng chúng rất khó. Ít nhất, đó là những gì đội ngũ cơ sở hạ tầng của a16z đã tìm thấy - và vì nhiều người trong chúng tôi bắt đầu sự nghiệp của mình như là những lập trình viên, chúng tôi thường học từ việc làm. Điều này đặc biệt đúng với làn sóng trí tuệ nhân tạo sinh sản đã đến rất nhanh và sặc sỡ, khiến tài liệu tốt thường bị đọng lại sau code một vài tháng. Do đó, để hiểu rõ hơn về lĩnh vực này, chúng tôi đã xây dựng các dự án xung quanh các mô hình ngôn ngữ lớn (LLMs), các mô hình hình ảnh lớn, cơ sở dữ liệu vector và các loại tương tự.

Trong quá trình làm việc này, chúng tôi nhận thấy rằng bởi vì tất cả những điều này đều rất mới và thay đổi rất nhanh, thực sự không có các khung công việc tốt để bắt đầu nhanh chóng. Mỗi dự án đòi hỏi một số code mẫu và tích hợp. Thành thật mà nói, điều đó rất phiền toái. Do đó, chúng tôi đã bắt tay vào tạo một mẫu rất đơn giản để "bắt đầu với trí tuệ nhân tạo" cho những người muốn chơi xung quanh với các công nghệ cốt lõi, nhưng không phải suy nghĩ quá nhiều về các vấn đề phụ trợ như auth, hosting và lựa chọn các công cụ.

Bạn có thể fork và triển khai mẫu tại đây. Và chúng tôi mong nhận được ý kiến và phản hồi của bạn để cải thiện mẫu hơn nữa.

Các thành phần

Nhiều người trong chúng tôi là những người hâm mộ JavaScript/TypeScript, vì vậy chúng tôi đã chọn ngăn xếp JavaScript làm điểm bắt đầu cho chúng tôi. Tuy nhiên, framework này dễ dàng được sửa đổi để hỗ trợ các ngôn ngữ khác và chúng tôi sẽ làm điều này trong thời gian sớm nhất.

Sau đây là một cái nhìn tổng quan về ngăn xếp bắt đầu mà chúng tôi đã ghép lại với nhà cộng tác viên lâu năm và người nhiệt tình ủng hộ mã nguồn mở Tim Qian. Mục tiêu là tôn chỉ con đường đơn giản nhất từ việc kéo code từ GitHub đến một ứng dụng trí tuệ nhân tạo sinh sản chạy được (cả hình ảnh và văn bản). Nó được thiết kế để dễ dàng mở rộng sang kiến trúc và dự án phức tạp hơn:

  • Để có được cái nhìn chi tiết hơn về ngăn xếp LLM mới nổi, hãy tham khảo bài viết của chúng tôi có tựa đề "Các kiến ​​trúc mới nổi cho các ứng dụng LLM".
  • Mô hình và suy luận

Việc lưu trữ mô hình là một nỗi đau, và phần lớn là một vấn đề khác với việc xây dựng ứng dụng trí tuệ nhân tạo. Vì vậy, chúng tôi đã xây dựng của chúng tôi bằng cách sử dụng OpenAI cho văn bản và Replicate cho suy luận hình ảnh. Replicate cũng cung cấp các mô hình dựa trên văn bản (hãy xem cách chạy Vicuna dễ dàng), vì vậy bạn có thể sử dụng nó thay cho OpenAI nếu muốn.

Mã ví dụ về việc chạy suy luận Stable Diffusion trên Replicate.

Chứng thực

Với một framework khởi đầu, chúng tôi thường không quan tâm đến auth. Nhưng trong trường hợp này, các mô hình rất mạnh mẽ và rất chung, và chúng là đích của các nỗ lực lớn, có tổ chức nhằm có được việc sử dụng miễn phí. Các nhà phát triển thường học điều này theo cách khó khăn khi một bản thỏa thuận thanh toán bất ngờ xuất hiện từ nhà cung cấp mô hình của họ. Đó là lý do tại sao chúng tôi đã chọn Clerk, nó thực hiện công việc vất vả về phát hiện bot và đương nhiên cung cấp đầy đủ khả năng chứng thực nếu bạn kết thúc xây dựng một ứng dụng phức tạp hơn.

Mã ví dụ về thành phần Clerk thả xuống cho đăng ký người dùng, bao gồm phát hiện bot, bắt buộc 2FA và phát hiện giả mạo người dùng được giải quyết.

Cơ sở dữ liệu vector

LLMs yêu cầu bộ nhớ dài hạn vững chắc để bảo tồn trạng thái và làm việc xung quanh cửa sổ ngữ cảnh; điều này được xử lý bởi cơ sở dữ liệu vector. Hiện nay, Pinecone là kho vector phổ biến và tối ưu nhất với cộng đồng AI sinh sản. Tuy nhiên, chúng tôi muốn cung cấp hỗ trợ cho tất cả các trường hợp sử dụng và sở thích, vì vậy chúng tôi cũng bao gồm hỗ trợ cho pg-vector từ Supabase trong repo.

về việc sử dụng Pinecone với Langchain.js. Bạn cũng có thể tìm thấy các ví dụ về việc sử dụng Supabase pg-vector ở đây.

Triển khai

Để triển khai, chúng tôi sử dụng Fly.io vì nó đa vùng, dễ quản lý và cung cấp môi trường tính toán rất chung (bất cứ điều gì chạy trong một container). Theo thời gian, nhiều dự án AI kết thúc bằng việc sử dụng nhiều ngôn ngữ và / hoặc có chức năng không đơn giản ở phía sau cùng, vì vậy Fly.io là một sự cân bằng tốt giữa một môi trường lưu trữ JavaScript-native như Vercel hoặc Netlify và một đám mây truyền thống. Tuy nhiên, mã dễ dàng hỗ trợ các môi trường lưu trữ khác nếu đó là con đường bạn muốn đi. Fly.io cũng sẽ sớm cung cấp GPU cho trường hợp bạn muốn lưu trữ các mô hình của riêng mình.

Lộ trình

Mặc dù chúng tôi nghĩ rằng phiên bản đầu tiên này là một điểm khởi đầu tốt, chúng tôi đang tiến gần hơn đến các tùy chọn. Đây là một cái nhìn tổng quan về lộ trình của chúng tôi:

  • Một CLI tương tác cho create-ai-stack, nơi các nhà phát triển có thể chuẩn bị khung dự án và các phụ thuộc của riêng mình

Cơ sở dữ liệu giao dịch cho các trường hợp sử dụng nâng cao (ví dụ: giữ các câu hỏi trong Q&A, sở thích người dùng, v.v.)

Thêm tùy chọn cho cơ sở dữ liệu vector và nền tảng triển khai

Bước đi điều chỉnh nhẹ cho các mô hình mã nguồn mở

Chúng tôi rất mong muốn bạn mở PR để sửa lỗi, yêu cầu tính năng và phản hồi. Chúng tôi rất phấn khích để đóng góp trở lại cộng đồng mã nguồn mở, và chúng tôi tin rằng hệ sinh thái luôn luôn thắng.

Chúng tôi xin cảm ơn các dự án mã nguồn mở sau đây đã hỗ trợ cho việc tạo ra bộ công cụ AI Getting Started của chúng tôi. Những công cụ không thể thiếu này đã đơn giản hóa các nhiệm vụ phức tạp, giúp chúng dễ dàng hơn để xử lý. Nhờ vào công việc không ngừng nghỉ và những đóng góp vô giá của họ mà hệ sinh thái JavaScript vẫn tiếp tục phát triển và trưởng thành!

Tailwind 

ai sdk 

dotenv

Next.js

langchain.js

* * *

Các quan điểm được thể hiện ở đây là của các cá nhân của AH Capital Management, L.L.C. ("a16z") và không phải là quan điểm của a16z hay các công ty liên kết của nó. Một số thông tin trong đây đã được thu thập từ các nguồn bên thứ ba, bao gồm từ các công ty trong danh mục đầu tư của các quỹ quản lý bởi a16z. Tuy nhiên, khi thu thập thông tin từ các nguồn được cho là đáng tin cậy, a16z không độc lập xác minh thông tin và không đưa ra bất kỳ tuyên bố nào về tính chính xác lâu dài của thông tin hoặc sự phù hợp của nó trong một tình huống cụ thể. Hơn nữa, nội dung này có thể bao gồm quảng cáo của bên thứ ba; a16z không xem xét những quảng cáo đó và không chứng nhận bất kỳ nội dung quảng cáo nào được chứa trong đó.

Nội dung này được cung cấp chỉ để thông tin và không được phụ thuộc vào như một lời khuyên pháp lý, kinh doanh, đầu tư hoặc thuế. Bạn nên tham khảo các cố vấn của mình về những vấn đề đó. Các tham chiếu đến các chứng khoán hoặc tài sản kỹ thuật số chỉ mang tính minh họa và không tạo thành một lời khuyên đầu tư hoặc đề nghị cung cấp dịch vụ tư vấn đầu tư. Ngoài ra, nội dung này không được dẫn đến hay dành cho bất kỳ nhà đầu tư hoặc nhà đầu tư tiềm năng nào và không thể chấp nhận dưới bất kỳ hoàn cảnh nào khi ra quyết định đầu tư vào bất kỳ quỹ được quản lý bởi a16z. (Một đề xuất để đầu tư vào quỹ a16z sẽ chỉ được thực hiện thông qua bảng mô tả đặc biệt, thỏa thuận đăng ký và tài liệu liên quan khác của bất kỳ quỹ đó và nên được đọc toàn bộ.) Bất kỳ khoản đầu tư hoặc các công ty trong danh mục được đề cập, giới thiệu hoặc mô tả không đại diện cho tất cả các khoản đầu tư trong các phương tiện được quản lý bởi a16z, và không có bất kỳ đảm bảo nào rằng các khoản đầu tư sẽ sinh lời hoặc rằng các khoản đầu tư khác trong tương lai sẽ có các đặc điểm hoặc kết quả tương tự. Danh sách các khoản đầu tư được quản lý bởi Andreessen Horowitz (không bao gồm các khoản đầu tư mà nhà phát hành không cho phép a16z tiết lộ công khai cũng như các khoản đầu tư chưa được công bố trong các tài sản kỹ thuật số được giao dịch công khai) có sẵn tại https://a16z.com/investments/.

Biểu đồ và đồ thị được cung cấp chỉ để thông tin và không nên được dựa vào khi đưa ra bất kỳ quyết định đầu tư nào. Hiệu suất trong quá khứ không đại diện cho kết quả trong tương lai. Nội dung chỉ có ý nghĩa vào ngày được đề cập. Bất kỳ dự báo, ước tính, dự đoán, mục tiêu, triển vọng và / hoặc quan điểm được thể hiện trong các tài liệu này đều có thể thay đổi mà không cần thông báo trước và có thể khác hoặc đối lập với quan điểm được thể hiện bởi người khác. Vui lòng xem https://a16z.com/disclosures để biết thêm thông tin quan trọng.