resources/moderations.ts (105 lines of code) (raw):

// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from "../resource.ts"; import * as Core from "../core.ts"; import * as ModerationsAPI from "./moderations.ts"; export class Moderations extends APIResource { /** * Classifies if text and/or image inputs are potentially harmful. Learn more in * the [moderation guide](https://platform.openai.com/docs/guides/moderation). */ create( body: ModerationCreateParams, options?: Core.RequestOptions, ): Core.APIPromise<ModerationCreateResponse> { return this._client.post("/moderations", { body, ...options }); } } export interface Moderation { /** * A list of the categories, and whether they are flagged or not. */ categories: Moderation.Categories; /** * A list of the categories along with the input type(s) that the score applies to. */ category_applied_input_types: Moderation.CategoryAppliedInputTypes; /** * A list of the categories along with their scores as predicted by model. */ category_scores: Moderation.CategoryScores; /** * Whether any of the below categories are flagged. */ flagged: boolean; } export namespace Moderation { /** * A list of the categories, and whether they are flagged or not. */ export interface Categories { /** * Content that expresses, incites, or promotes harassing language towards any * target. */ harassment: boolean; /** * Harassment content that also includes violence or serious harm towards any * target. */ "harassment/threatening": boolean; /** * Content that expresses, incites, or promotes hate based on race, gender, * ethnicity, religion, nationality, sexual orientation, disability status, or * caste. Hateful content aimed at non-protected groups (e.g., chess players) is * harassment. */ hate: boolean; /** * Hateful content that also includes violence or serious harm towards the targeted * group based on race, gender, ethnicity, religion, nationality, sexual * orientation, disability status, or caste. */ "hate/threatening": boolean; /** * Content that includes instructions or advice that facilitate the planning or * execution of wrongdoing, or that gives advice or instruction on how to commit * illicit acts. For example, "how to shoplift" would fit this category. */ illicit: boolean; /** * Content that includes instructions or advice that facilitate the planning or * execution of wrongdoing that also includes violence, or that gives advice or * instruction on the procurement of any weapon. */ "illicit/violent": boolean; /** * Content that promotes, encourages, or depicts acts of self-harm, such as * suicide, cutting, and eating disorders. */ "self-harm": boolean; /** * Content that encourages performing acts of self-harm, such as suicide, cutting, * and eating disorders, or that gives instructions or advice on how to commit such * acts. */ "self-harm/instructions": boolean; /** * Content where the speaker expresses that they are engaging or intend to engage * in acts of self-harm, such as suicide, cutting, and eating disorders. */ "self-harm/intent": boolean; /** * Content meant to arouse sexual excitement, such as the description of sexual * activity, or that promotes sexual services (excluding sex education and * wellness). */ sexual: boolean; /** * Sexual content that includes an individual who is under 18 years old. */ "sexual/minors": boolean; /** * Content that depicts death, violence, or physical injury. */ violence: boolean; /** * Content that depicts death, violence, or physical injury in graphic detail. */ "violence/graphic": boolean; } /** * A list of the categories along with the input type(s) that the score applies to. */ export interface CategoryAppliedInputTypes { /** * The applied input type(s) for the category 'harassment'. */ harassment: Array<"text">; /** * The applied input type(s) for the category 'harassment/threatening'. */ "harassment/threatening": Array<"text">; /** * The applied input type(s) for the category 'hate'. */ hate: Array<"text">; /** * The applied input type(s) for the category 'hate/threatening'. */ "hate/threatening": Array<"text">; /** * The applied input type(s) for the category 'illicit'. */ illicit: Array<"text">; /** * The applied input type(s) for the category 'illicit/violent'. */ "illicit/violent": Array<"text">; /** * The applied input type(s) for the category 'self-harm'. */ "self-harm": Array<"text" | "image">; /** * The applied input type(s) for the category 'self-harm/instructions'. */ "self-harm/instructions": Array<"text" | "image">; /** * The applied input type(s) for the category 'self-harm/intent'. */ "self-harm/intent": Array<"text" | "image">; /** * The applied input type(s) for the category 'sexual'. */ sexual: Array<"text" | "image">; /** * The applied input type(s) for the category 'sexual/minors'. */ "sexual/minors": Array<"text">; /** * The applied input type(s) for the category 'violence'. */ violence: Array<"text" | "image">; /** * The applied input type(s) for the category 'violence/graphic'. */ "violence/graphic": Array<"text" | "image">; } /** * A list of the categories along with their scores as predicted by model. */ export interface CategoryScores { /** * The score for the category 'harassment'. */ harassment: number; /** * The score for the category 'harassment/threatening'. */ "harassment/threatening": number; /** * The score for the category 'hate'. */ hate: number; /** * The score for the category 'hate/threatening'. */ "hate/threatening": number; /** * The score for the category 'illicit'. */ illicit: number; /** * The score for the category 'illicit/violent'. */ "illicit/violent": number; /** * The score for the category 'self-harm'. */ "self-harm": number; /** * The score for the category 'self-harm/instructions'. */ "self-harm/instructions": number; /** * The score for the category 'self-harm/intent'. */ "self-harm/intent": number; /** * The score for the category 'sexual'. */ sexual: number; /** * The score for the category 'sexual/minors'. */ "sexual/minors": number; /** * The score for the category 'violence'. */ violence: number; /** * The score for the category 'violence/graphic'. */ "violence/graphic": number; } } /** * An object describing an image to classify. */ export interface ModerationImageURLInput { /** * Contains either an image URL or a data URL for a base64 encoded image. */ image_url: ModerationImageURLInput.ImageURL; /** * Always `image_url`. */ type: "image_url"; } export namespace ModerationImageURLInput { /** * Contains either an image URL or a data URL for a base64 encoded image. */ export interface ImageURL { /** * Either a URL of the image or the base64 encoded image data. */ url: string; } } export type ModerationModel = | "omni-moderation-latest" | "omni-moderation-2024-09-26" | "text-moderation-latest" | "text-moderation-stable"; /** * An object describing an image to classify. */ export type ModerationMultiModalInput = | ModerationImageURLInput | ModerationTextInput; /** * An object describing text to classify. */ export interface ModerationTextInput { /** * A string of text to classify. */ text: string; /** * Always `text`. */ type: "text"; } /** * Represents if a given text input is potentially harmful. */ export interface ModerationCreateResponse { /** * The unique identifier for the moderation request. */ id: string; /** * The model used to generate the moderation results. */ model: string; /** * A list of moderation objects. */ results: Array<Moderation>; } export interface ModerationCreateParams { /** * Input (or inputs) to classify. Can be a single string, an array of strings, or * an array of multi-modal input objects similar to other models. */ input: string | Array<string> | Array<ModerationMultiModalInput>; /** * The content moderation model you would like to use. Learn more in * [the moderation guide](https://platform.openai.com/docs/guides/moderation), and * learn about available models * [here](https://platform.openai.com/docs/models/moderation). */ model?: (string & {}) | ModerationModel; } export namespace Moderations { export type Moderation = ModerationsAPI.Moderation; export type ModerationImageURLInput = ModerationsAPI.ModerationImageURLInput; export type ModerationModel = ModerationsAPI.ModerationModel; export type ModerationMultiModalInput = ModerationsAPI.ModerationMultiModalInput; export type ModerationTextInput = ModerationsAPI.ModerationTextInput; export type ModerationCreateResponse = ModerationsAPI.ModerationCreateResponse; export type ModerationCreateParams = ModerationsAPI.ModerationCreateParams; }