Tạo đầu ra có cấu trúc cho trải nghiệm kết hợp trong ứng dụng web

Theo mặc định, các mô hình Gemini trả về phản hồi dưới dạng văn bản không có cấu trúc. Tuy nhiên, một số trường hợp sử dụng yêu cầu văn bản có cấu trúc, chẳng hạn như JSON. Ví dụ: bạn có thể sử dụng phản hồi cho các tác vụ khác ở hạ nguồn yêu cầu một lược đồ dữ liệu đã thiết lập.

Để đảm bảo rằng đầu ra do mô hình tạo luôn tuân thủ một lược đồ cụ thể, bạn có thể xác định lược đồ. Lược đồ này hoạt động như một bản thiết kế cho các phản hồi của mô hình. Sau đó, bạn có thể trực tiếp trích xuất dữ liệu từ đầu ra của mô hình mà không cần xử lý hậu kỳ nhiều.

Dưới đây là một số ví dụ:

  • Đảm bảo rằng phản hồi của mô hình tạo ra JSON hợp lệ và tuân thủ lược đồ mà bạn cung cấp.
    Ví dụ: mô hình có thể tạo các mục có cấu trúc cho công thức nấu ăn luôn bao gồm tên công thức, danh sách nguyên liệu và các bước. Sau đó, bạn có thể dễ dàng phân tích cú pháp và hiển thị thông tin này trong giao diện người dùng của ứng dụng.

  • Hạn chế cách mô hình có thể phản hồi trong các tác vụ phân loại.
    Ví dụ: bạn có thể yêu cầu mô hình chú thích văn bản bằng một tập hợp nhãn cụ thể (ví dụ: một tập hợp enum cụ thể như positivenegative), thay vì các nhãn mà mô hình tạo ra (có thể có mức độ biến đổi như good, positive, negative hoặc bad).

Trang này mô tả cách tạo đầu ra có cấu trúc (như JSON và enum) trong trải nghiệm kết hợp cho ứng dụng web.

Trước khi bắt đầu

Hãy đảm bảo rằng bạn đã hoàn tất hướng dẫn bắt đầu xây dựng trải nghiệm kết hợp.

Thiết lập cấu hình cho đầu ra có cấu trúc

Việc tạo đầu ra có cấu trúc (như JSON và enum) được hỗ trợ cho quá trình suy luận bằng cả mô hình được lưu trữ trên đám mây và mô hình trên thiết bị.

Đối với quá trình suy luận kết hợp, hãy sử dụng cả inCloudParamsonDeviceParams để định cấu hình mô hình phản hồi bằng đầu ra có cấu trúc. Đối với các chế độ khác, chỉ sử dụng cấu hình áp dụng.

  • Đối với inCloudParams: Chỉ định responseMimeType thích hợp (ví dụ: application/json) cũng như responseSchema mà bạn muốn mô hình sử dụng.

  • Đối với onDeviceParams: Chỉ định responseConstraint mà bạn muốn mô hình sử dụng.

Đầu ra JSON

Ví dụ sau đây điều chỉnh ví dụ về đầu ra JSON chung để phù hợp với quá trình suy luận kết hợp (trong ví dụ này là PREFER_ON_DEVICE):

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const jsonSchema = Schema.object({
 properties: {
    characters: Schema.array({
      items: Schema.object({
        properties: {
          name: Schema.string(),
          accessory: Schema.string(),
          age: Schema.number(),
          species: Schema.string(),
        },
        optionalProperties: ["accessory"],
      }),
    }),
  }
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});

// ...

Đầu ra enum

Ví dụ sau đây điều chỉnh ví dụ về đầu ra enum chung để phù hợp với quá trình suy luận kết hợp (trong ví dụ này là PREFER_ON_DEVICE):

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const enumSchema = Schema.enumString({
  enum: ["drama", "comedy", "documentary"],
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "text/x.enum",
      responseSchema: enumSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: enumSchema
    }
  }
});

// ...