{
  "aboutHtml": "<p>Voyage Code 2 tạo embedding số cho mã nguồn và văn bản liên quan. Mô hình được thiết kế để truy xuất mã theo ngữ nghĩa: nhà phát triển mô tả hành vi hoặc cung cấp đoạn mã, rồi hệ thống tìm kiếm tìm phần triển khai liên quan. Ví dụ của nhà sản xuất bao gồm câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã và kết hợp cả hai làm đầu vào tìm kiếm.</p><p>Dùng mô hình để xây dựng trải nghiệm tìm kiếm kho mã xoay quanh câu hỏi phát triển thực tế. Nhà phát triển có thể tìm thủ tục chỉ xóa ký tự khớp đầu tiên và cuối cùng, hoặc phần dự án áp dụng một cách duyệt cây cụ thể. Chuẩn bị truy vấn diễn đạt chính xác hành vi, gồm điều kiện phân biệt phần triển khai cần tìm với một phần gần giống nhưng không đúng.</p><p>Lập chỉ mục mã theo đơn vị hữu ích, thay vì chia mọi tệp tại số ký tự tùy ý. Giữ chữ ký hàm, thân hàm và phần giải thích liên quan cùng nhau. Khi hàm hỗ trợ phụ thuộc vào kiểu hoặc hằng cục bộ, giữ đủ văn bản xung quanh để hiểu mục đích của nó. Lưu đường dẫn tệp, phiên bản kho mã và vị trí nguồn bên ngoài embedding để kết quả mở trực tiếp mã gốc.</p><p>Phiên bản này có cửa sổ ngữ cảnh 16 000 token và tạo embedding 1 536 chiều. Xác định kích thước chỉ mục vector theo biểu diễn này và giữ embedding truy vấn, tài liệu gắn với cùng mô hình. Tập đã lập chỉ mục bằng Voyage Code 2 có thể giữ biểu diễn truy xuất nhất quán trong khi các bản ghi nguồn được cập nhật. Chuyển sang phiên bản embedding khác cần được coi là di chuyển chỉ mục, với đối chiếu rõ ràng trên cùng kho mã.</p><p>Với truy vấn ngôn ngữ tự nhiên, mô tả thao tác, đầu vào và kết quả liên quan. Với truy vấn mã, đưa vào đoạn có logic cần đối chiếu và giải thích mọi điều kiện quan trọng với tìm kiếm. Chẳng hạn, khi tìm phần xử lý thử lại, có thể chỉ rõ mã thử lại sau khi hết thời gian chờ hay sau một phản hồi lỗi hoàn chỉnh. Cần kiểm tra nguồn truy xuất được theo sự khác biệt này trước khi dùng để sửa mã.</p><p>Giữ khả năng truy về nguồn của tài liệu và mã nguồn khi lập chỉ mục cả hai. Đoạn giải thích có thể là ngữ cảnh hữu ích, còn phần triển khai là sản phẩm nhà phát triển cần kiểm tra. Gắn nhãn các kiểu bản ghi này để trang tìm kiếm hiển thị đúng đích đến và trợ lý lập trình phân biệt mô tả với mã nguồn thực thi.</p><p>Dùng các đoạn truy xuất được làm ngữ cảnh để điều hướng kho mã, tìm phần triển khai hoặc phục vụ bước tiếp theo của trợ lý lập trình. Giữ trọn đoạn liên quan và vị trí khi chuyển tiếp. Độ tương đồng giúp tìm mã ứng viên; xem xét đầu vào thực tế, tác động phụ và các điều kiện ràng buộc quyết định ứng viên có giải quyết vấn đề hiện tại không.</p><p>Đánh giá truy xuất trên tập câu hỏi thực tế có câu trả lời nguồn đã biết. Bao gồm hàm đã đổi tên, chú thích gây nhầm lẫn, tiện ích tương tự nhưng khác trường hợp biên và truy vấn dùng từ không có trong mã. Kiểm tra phần triển khai mong đợi có xuất hiện trong các kết quả hữu ích không, và đoạn hiển thị có đủ ngữ cảnh để đánh giá không. Giữ những câu hỏi này khi kho mã tăng trưởng để đối chiếu thay đổi ở trích xuất, ranh giới đoạn hoặc lập chỉ mục trên cùng nhiệm vụ.</p>",
  "aboutText": "Voyage Code 2 tạo embedding số cho mã nguồn và văn bản liên quan. Mô hình được thiết kế để truy xuất mã theo ngữ nghĩa: nhà phát triển mô tả hành vi hoặc cung cấp đoạn mã, rồi hệ thống tìm kiếm tìm phần triển khai liên quan. Ví dụ của nhà sản xuất bao gồm câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã và kết hợp cả hai làm đầu vào tìm kiếm.\n\nDùng mô hình để xây dựng trải nghiệm tìm kiếm kho mã xoay quanh câu hỏi phát triển thực tế. Nhà phát triển có thể tìm thủ tục chỉ xóa ký tự khớp đầu tiên và cuối cùng, hoặc phần dự án áp dụng một cách duyệt cây cụ thể. Chuẩn bị truy vấn diễn đạt chính xác hành vi, gồm điều kiện phân biệt phần triển khai cần tìm với một phần gần giống nhưng không đúng.\n\nLập chỉ mục mã theo đơn vị hữu ích, thay vì chia mọi tệp tại số ký tự tùy ý. Giữ chữ ký hàm, thân hàm và phần giải thích liên quan cùng nhau. Khi hàm hỗ trợ phụ thuộc vào kiểu hoặc hằng cục bộ, giữ đủ văn bản xung quanh để hiểu mục đích của nó. Lưu đường dẫn tệp, phiên bản kho mã và vị trí nguồn bên ngoài embedding để kết quả mở trực tiếp mã gốc.\n\nPhiên bản này có cửa sổ ngữ cảnh 16 000 token và tạo embedding 1 536 chiều. Xác định kích thước chỉ mục vector theo biểu diễn này và giữ embedding truy vấn, tài liệu gắn với cùng mô hình. Tập đã lập chỉ mục bằng Voyage Code 2 có thể giữ biểu diễn truy xuất nhất quán trong khi các bản ghi nguồn được cập nhật. Chuyển sang phiên bản embedding khác cần được coi là di chuyển chỉ mục, với đối chiếu rõ ràng trên cùng kho mã.\n\nVới truy vấn ngôn ngữ tự nhiên, mô tả thao tác, đầu vào và kết quả liên quan. Với truy vấn mã, đưa vào đoạn có logic cần đối chiếu và giải thích mọi điều kiện quan trọng với tìm kiếm. Chẳng hạn, khi tìm phần xử lý thử lại, có thể chỉ rõ mã thử lại sau khi hết thời gian chờ hay sau một phản hồi lỗi hoàn chỉnh. Cần kiểm tra nguồn truy xuất được theo sự khác biệt này trước khi dùng để sửa mã.\n\nGiữ khả năng truy về nguồn của tài liệu và mã nguồn khi lập chỉ mục cả hai. Đoạn giải thích có thể là ngữ cảnh hữu ích, còn phần triển khai là sản phẩm nhà phát triển cần kiểm tra. Gắn nhãn các kiểu bản ghi này để trang tìm kiếm hiển thị đúng đích đến và trợ lý lập trình phân biệt mô tả với mã nguồn thực thi.\n\nDùng các đoạn truy xuất được làm ngữ cảnh để điều hướng kho mã, tìm phần triển khai hoặc phục vụ bước tiếp theo của trợ lý lập trình. Giữ trọn đoạn liên quan và vị trí khi chuyển tiếp. Độ tương đồng giúp tìm mã ứng viên; xem xét đầu vào thực tế, tác động phụ và các điều kiện ràng buộc quyết định ứng viên có giải quyết vấn đề hiện tại không.\n\nĐánh giá truy xuất trên tập câu hỏi thực tế có câu trả lời nguồn đã biết. Bao gồm hàm đã đổi tên, chú thích gây nhầm lẫn, tiện ích tương tự nhưng khác trường hợp biên và truy vấn dùng từ không có trong mã. Kiểm tra phần triển khai mong đợi có xuất hiện trong các kết quả hữu ích không, và đoạn hiển thị có đủ ngữ cảnh để đánh giá không. Giữ những câu hỏi này khi kho mã tăng trưởng để đối chiếu thay đổi ở trích xuất, ranh giới đoạn hoặc lập chỉ mục trên cùng nhiệm vụ.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "5405cc85d5485d87b57291ae46fc592aa2bc5dcca23c8f71979eccb03aac47fd",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "vi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Voyage AI: Voyage Code 2</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-code-2</code><button type=\"button\" id=\"copy-id\">Sao chép ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Các phần của thẻ mô hình\"><button type=\"button\" data-card-jump=\"overview\">Bắt đầu</button><button type=\"button\" data-card-jump=\"methods\">Đầu vào &amp; phương thức</button><button type=\"button\" data-card-jump=\"pricing\">Bảng giá</button><button type=\"button\" data-card-jump=\"examples\">Ví dụ</button><button type=\"button\" data-card-jump=\"results\">Kết quả</button><button type=\"button\" data-card-jump=\"aliases\">Bí danh</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Phương thức API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|embeddings|/v1/embeddings|voyage-code-2\">Biểu diễn nhúng</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Bắt đầu</h3><p class=\"mdesc-full\">Voyage Code 2 tạo embedding cho mã nguồn và văn bản liên quan để tìm kiếm ngữ nghĩa trong kho mã. Câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã hoặc truy vấn kết hợp có thể truy xuất phần triển khai liên quan; phiên bản này dùng cửa sổ ngữ cảnh 16 000 token và vector 1 536 chiều.</p><dl class=\"card-io\" data-card-io><div><dt>Đầu vào được chấp nhận</dt><dd>Văn bản</dd></div><div><dt>Kết quả</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>Về mô hình</summary><p class=\"note-s\" data-model-method-boundary>Mô tả này trình bày khả năng của mô hình. Đầu vào, đầu ra và tùy chọn có trên Ailoot được liệt kê bên dưới cho phương thức đã chọn.</p><div class=\"mabout\" id=\"m-about\"><p>Voyage Code 2 tạo embedding số cho mã nguồn và văn bản liên quan. Mô hình được thiết kế để truy xuất mã theo ngữ nghĩa: nhà phát triển mô tả hành vi hoặc cung cấp đoạn mã, rồi hệ thống tìm kiếm tìm phần triển khai liên quan. Ví dụ của nhà sản xuất bao gồm câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã và kết hợp cả hai làm đầu vào tìm kiếm.</p><p>Dùng mô hình để xây dựng trải nghiệm tìm kiếm kho mã xoay quanh câu hỏi phát triển thực tế. Nhà phát triển có thể tìm thủ tục chỉ xóa ký tự khớp đầu tiên và cuối cùng, hoặc phần dự án áp dụng một cách duyệt cây cụ thể. Chuẩn bị truy vấn diễn đạt chính xác hành vi, gồm điều kiện phân biệt phần triển khai cần tìm với một phần gần giống nhưng không đúng.</p><p>Lập chỉ mục mã theo đơn vị hữu ích, thay vì chia mọi tệp tại số ký tự tùy ý. Giữ chữ ký hàm, thân hàm và phần giải thích liên quan cùng nhau. Khi hàm hỗ trợ phụ thuộc vào kiểu hoặc hằng cục bộ, giữ đủ văn bản xung quanh để hiểu mục đích của nó. Lưu đường dẫn tệp, phiên bản kho mã và vị trí nguồn bên ngoài embedding để kết quả mở trực tiếp mã gốc.</p><p>Phiên bản này có cửa sổ ngữ cảnh 16 000 token và tạo embedding 1 536 chiều. Xác định kích thước chỉ mục vector theo biểu diễn này và giữ embedding truy vấn, tài liệu gắn với cùng mô hình. Tập đã lập chỉ mục bằng Voyage Code 2 có thể giữ biểu diễn truy xuất nhất quán trong khi các bản ghi nguồn được cập nhật. Chuyển sang phiên bản embedding khác cần được coi là di chuyển chỉ mục, với đối chiếu rõ ràng trên cùng kho mã.</p><p>Với truy vấn ngôn ngữ tự nhiên, mô tả thao tác, đầu vào và kết quả liên quan. Với truy vấn mã, đưa vào đoạn có logic cần đối chiếu và giải thích mọi điều kiện quan trọng với tìm kiếm. Chẳng hạn, khi tìm phần xử lý thử lại, có thể chỉ rõ mã thử lại sau khi hết thời gian chờ hay sau một phản hồi lỗi hoàn chỉnh. Cần kiểm tra nguồn truy xuất được theo sự khác biệt này trước khi dùng để sửa mã.</p><p>Giữ khả năng truy về nguồn của tài liệu và mã nguồn khi lập chỉ mục cả hai. Đoạn giải thích có thể là ngữ cảnh hữu ích, còn phần triển khai là sản phẩm nhà phát triển cần kiểm tra. Gắn nhãn các kiểu bản ghi này để trang tìm kiếm hiển thị đúng đích đến và trợ lý lập trình phân biệt mô tả với mã nguồn thực thi.</p><p>Dùng các đoạn truy xuất được làm ngữ cảnh để điều hướng kho mã, tìm phần triển khai hoặc phục vụ bước tiếp theo của trợ lý lập trình. Giữ trọn đoạn liên quan và vị trí khi chuyển tiếp. Độ tương đồng giúp tìm mã ứng viên; xem xét đầu vào thực tế, tác động phụ và các điều kiện ràng buộc quyết định ứng viên có giải quyết vấn đề hiện tại không.</p><p>Đánh giá truy xuất trên tập câu hỏi thực tế có câu trả lời nguồn đã biết. Bao gồm hàm đã đổi tên, chú thích gây nhầm lẫn, tiện ích tương tự nhưng khác trường hợp biên và truy vấn dùng từ không có trong mã. Kiểm tra phần triển khai mong đợi có xuất hiện trong các kết quả hữu ích không, và đoạn hiển thị có đủ ngữ cảnh để đánh giá không. Giữ những câu hỏi này khi kho mã tăng trưởng để đối chiếu thay đổi ở trích xuất, ranh giới đoạn hoặc lập chỉ mục trên cùng nhiệm vụ.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Có trên Ailoot · đầu vào &amp; phương thức</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Biểu diễn nhúng</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Đầu vào</dt><dd><code>text</code></dd></div><div><dt>Đầu ra</dt><dd><code>embedding</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Trường</th><th>Loại</th><th>Yêu cầu</th><th>Giá trị &amp; giới hạn</th><th>Mặc định</th></tr></thead><tbody><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>voyage-code-2</div><div>Điều kiện: Dùng bộ chọn mô hình Ailoot chính xác.</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>Điều kiện: Một văn bản hoặc danh sách văn bản; giữ lại một vectơ cùng chỉ số tương ứng cho mỗi mục dữ liệu được trả về.</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Tham số phương thức và vòng đời</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Tham số</th><th>Hợp đồng</th></tr></thead><tbody><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>content_type</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>application/json</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>required</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>model, input</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>optional</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span></td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>material_types</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>text</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>conditions</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>Gửi văn bản với mô hình đã chọn; giữ lại mọi vectơ được trả về và chỉ số tương ứng.</td></tr></tbody></table></div><p>Vòng đời: <code>synchronous</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Bảng giá</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.</p><dl data-price-conditions><dt>Chế độ nhanh</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi chọn chế độ nhanh</span></dd><dt>Chế độ Flex</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi chọn chế độ flex</span></dd><dt>Mức độ suy luận tối đa</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa</span></dd></dl></div><div data-declared-tariff-pricing><h4>Mức phí Ailoot</h4><h4>Giá theo cấu hình</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Cấu hình</th><th>Biểu mức phí</th><th>Phí</th></tr></thead><tbody><tr><th data-cell-label=\"Cấu hình\" scope=\"row\"><span class=\"card-cell-label\">Cấu hình</span>Đơn giá token cơ bản</th><td data-cell-label=\"Biểu mức phí\"><span class=\"card-cell-label\">Biểu mức phí</span>Mức phí cơ bản</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào · Token đầu vào</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu ra · Token đầu ra</span> <b>$0</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Đọc bộ nhớ đệm</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Ghi bộ nhớ đệm</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Ghi bộ nhớ đệm, 1 giờ</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. <a href=\"/docs/vi/billing/reserve/\">Cách hoạt động của cơ chế tạm giữ và quyết toán →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Ví dụ yêu cầu</h3><h4>Ailoot Ultra · Biểu diễn nhúng</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-2789-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2789-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · lưu tất cả vector và dữ liệu sử dụng</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Sao chép mã\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2789-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2789-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;voyage-code-2&quot;,\n  &quot;input&quot;: &quot;The quick brown fox jumps over the lazy dog&quot;\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Nhận và lưu kết quả</h3></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Bí danh</h3><h4>Bí danh mô hình</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=voyage-code-2&amp;route=Ultra&amp;caller=voyage-code-2&amp;fmt=embeddings\"><code>voyage-code-2</code></a></span></p><h4>Bí danh đường dẫn phương thức</h4><p class=\"note-s\">Dùng các đường dẫn phương thức hiển thị ở trên.</p><h4>ID gọi liên quan</h4><p class=\"note-s\"><a href=\"#m=voyage-code-2&amp;route=Ultra&amp;caller=voyage-code-2&amp;fmt=embeddings\"><code>voyage-code-2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyage-code-2",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyage-code-2",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Giữ lại phản hồi gốc và X-Client-Request-ID để đối soát. Phản hồi không rõ ràng không đồng nghĩa với việc được phép gửi lại cùng một yêu cầu tạo.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Lưu toàn bộ phản hồi JSON, từng vectơ kèm chỉ mục của nó, tất cả các trường về mức sử dụng và các trường tiêu đề của yêu cầu.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Dùng bộ chọn mô hình Ailoot chính xác.",
                "default_known": false,
                "enum": [
                  "voyage-code-2"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Một văn bản hoặc danh sách văn bản; giữ lại một vectơ cùng chỉ số tương ứng cho mỗi mục dữ liệu được trả về.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-code-2"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-code-2"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Gửi văn bản với mô hình đã chọn; giữ lại mọi vectơ được trả về và chỉ số tương ứng."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Đơn giá token cơ bản",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-code-2\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "Biểu diễn nhúng",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "voyage-code-2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "d0f2044365d8a29c5e448f23f67fcb1f3a636668af8f17620977a06fd90d79e4",
    "input_html_sha256": "e41611d216e2c4c8f69ad2acd052fde31d580b9f7100526202de815afe8b5c7f",
    "private_audit_sha256": "08eed4e948d16b7d276da69586e9b1e11689147da4ced0d2346679d649c53d85",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/voyage-code-2/",
    "description": "Voyage Code 2 tạo embedding cho mã nguồn và văn bản liên quan để tìm kiếm ngữ nghĩa trong kho mã. Câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã hoặc truy vấn kết hợp có thể truy xuất phần triển khai liên quan; phiên bản này dùng cửa sổ ngữ cảnh 16 000 token và vector 1 536 chiều.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/voyage-code-2/index.md",
    "title": "Voyage AI: Voyage Code 2 — Ailoot",
    "url": "https://ailoot.ai/models/vi/voyage-code-2/"
  },
  "rawModel": {
    "about": "Voyage Code 2 tạo embedding số cho mã nguồn và văn bản liên quan. Mô hình được thiết kế để truy xuất mã theo ngữ nghĩa: nhà phát triển mô tả hành vi hoặc cung cấp đoạn mã, rồi hệ thống tìm kiếm tìm phần triển khai liên quan. Ví dụ của nhà sản xuất bao gồm câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã và kết hợp cả hai làm đầu vào tìm kiếm.\n\nDùng mô hình để xây dựng trải nghiệm tìm kiếm kho mã xoay quanh câu hỏi phát triển thực tế. Nhà phát triển có thể tìm thủ tục chỉ xóa ký tự khớp đầu tiên và cuối cùng, hoặc phần dự án áp dụng một cách duyệt cây cụ thể. Chuẩn bị truy vấn diễn đạt chính xác hành vi, gồm điều kiện phân biệt phần triển khai cần tìm với một phần gần giống nhưng không đúng.\n\nLập chỉ mục mã theo đơn vị hữu ích, thay vì chia mọi tệp tại số ký tự tùy ý. Giữ chữ ký hàm, thân hàm và phần giải thích liên quan cùng nhau. Khi hàm hỗ trợ phụ thuộc vào kiểu hoặc hằng cục bộ, giữ đủ văn bản xung quanh để hiểu mục đích của nó. Lưu đường dẫn tệp, phiên bản kho mã và vị trí nguồn bên ngoài embedding để kết quả mở trực tiếp mã gốc.\n\nPhiên bản này có cửa sổ ngữ cảnh 16 000 token và tạo embedding 1 536 chiều. Xác định kích thước chỉ mục vector theo biểu diễn này và giữ embedding truy vấn, tài liệu gắn với cùng mô hình. Tập đã lập chỉ mục bằng Voyage Code 2 có thể giữ biểu diễn truy xuất nhất quán trong khi các bản ghi nguồn được cập nhật. Chuyển sang phiên bản embedding khác cần được coi là di chuyển chỉ mục, với đối chiếu rõ ràng trên cùng kho mã.\n\nVới truy vấn ngôn ngữ tự nhiên, mô tả thao tác, đầu vào và kết quả liên quan. Với truy vấn mã, đưa vào đoạn có logic cần đối chiếu và giải thích mọi điều kiện quan trọng với tìm kiếm. Chẳng hạn, khi tìm phần xử lý thử lại, có thể chỉ rõ mã thử lại sau khi hết thời gian chờ hay sau một phản hồi lỗi hoàn chỉnh. Cần kiểm tra nguồn truy xuất được theo sự khác biệt này trước khi dùng để sửa mã.\n\nGiữ khả năng truy về nguồn của tài liệu và mã nguồn khi lập chỉ mục cả hai. Đoạn giải thích có thể là ngữ cảnh hữu ích, còn phần triển khai là sản phẩm nhà phát triển cần kiểm tra. Gắn nhãn các kiểu bản ghi này để trang tìm kiếm hiển thị đúng đích đến và trợ lý lập trình phân biệt mô tả với mã nguồn thực thi.\n\nDùng các đoạn truy xuất được làm ngữ cảnh để điều hướng kho mã, tìm phần triển khai hoặc phục vụ bước tiếp theo của trợ lý lập trình. Giữ trọn đoạn liên quan và vị trí khi chuyển tiếp. Độ tương đồng giúp tìm mã ứng viên; xem xét đầu vào thực tế, tác động phụ và các điều kiện ràng buộc quyết định ứng viên có giải quyết vấn đề hiện tại không.\n\nĐánh giá truy xuất trên tập câu hỏi thực tế có câu trả lời nguồn đã biết. Bao gồm hàm đã đổi tên, chú thích gây nhầm lẫn, tiện ích tương tự nhưng khác trường hợp biên và truy vấn dùng từ không có trong mã. Kiểm tra phần triển khai mong đợi có xuất hiện trong các kết quả hữu ích không, và đoạn hiển thị có đủ ngữ cảnh để đánh giá không. Giữ những câu hỏi này khi kho mã tăng trưởng để đối chiếu thay đổi ở trích xuất, ranh giới đoạn hoặc lập chỉ mục trên cùng nhiệm vụ.",
    "about_sha256": "02443af503f57362991a7f624a9b2b777836a591a3816de5330425a291427ffb",
    "alias_of": null,
    "aliases": [],
    "author": "Voyage AI",
    "capabilities": {
      "context_length": 16000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Giá theo cấu hình được trình bày đầy đủ trong phần chi tiết."
      }
    ],
    "ctx": null,
    "display_name": "Voyage AI: Voyage Code 2",
    "formats": [
      "embeddings"
    ],
    "id": "voyage-code-2",
    "input": [
      "text"
    ],
    "kind": "embedding",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Giữ lại phản hồi gốc và X-Client-Request-ID để đối soát. Phản hồi không rõ ràng không đồng nghĩa với việc được phép gửi lại cùng một yêu cầu tạo.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Lưu toàn bộ phản hồi JSON, từng vectơ kèm chỉ mục của nó, tất cả các trường về mức sử dụng và các trường tiêu đề của yêu cầu.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Dùng bộ chọn mô hình Ailoot chính xác.",
                "default_known": false,
                "enum": [
                  "voyage-code-2"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Một văn bản hoặc danh sách văn bản; giữ lại một vectơ cùng chỉ số tương ứng cho mỗi mục dữ liệu được trả về.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-code-2"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-code-2"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Gửi văn bản với mô hình đã chọn; giữ lại mọi vectơ được trả về và chỉ số tương ứng."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Đơn giá token cơ bản",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-code-2\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "Biểu diễn nhúng",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "voyage-code-2",
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra"
      }
    ],
    "name": "Voyage AI: Voyage Code 2",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 0,
      "varies": false
    },
    "short": "Voyage Code 2 tạo embedding cho mã nguồn và văn bản liên quan để tìm kiếm ngữ nghĩa trong kho mã. Câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã hoặc truy vấn kết hợp có thể truy xuất phần triển khai liên quan; phiên bản này dùng cửa sổ ngữ cảnh 16 000 token và vector 1 536 chiều.",
    "short_sha256": "392f5ff2471da11418d1ad1c0971fff44fb348ff0d8d619073b3d78c51bb9acb"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Voyage Code 2 tạo embedding cho mã nguồn và văn bản liên quan để tìm kiếm ngữ nghĩa trong kho mã. Câu hỏi bằng ngôn ngữ tự nhiên, đoạn mã hoặc truy vấn kết hợp có thể truy xuất phần triển khai liên quan; phiên bản này dùng cửa sổ ngữ cảnh 16 000 token và vector 1 536 chiều.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "a015c7ac7a95c1021429002e0d3f4766a63f1f9d68c782313edc7aec323768d9",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "bffe212e9480b3b787e354eff3bb8d90e7615698072c07ea03c0fd4243591446"
}
