# com.google.mlkit.genai.prompt

## Interfaces

|---|---|
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Caches` | Provides an interface to explicitly manage caches for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerativeModel`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerativeModel` | Provides an interface for performing content generation. |

## Classes

|---|---|
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CachedContext` | Represents an identifier of a cached context that can be used in inference. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Candidate` | A piece of a response from the model. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` | Represents a single "turn" or message in a conversation. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Builder` | Builder for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CountTokensResponse` | Data class holding token count information. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CreateCachedContextRequest` | A request to create a cached context. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CreateCachedContextRequest.Builder` | Builder for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CreateCachedContextRequest`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/FunctionCallPart` | A data class representing a function call part of a prompt. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/FunctionResponsePart` | A data class representing a function response part of a prompt. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | A request to generate content. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder` | Builder for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentResponse` | Represents a response from the model. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest` | A request to generate typed content. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest.Builder` | Builder for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentResponse` | Represents a typed response from the model. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig` | Configuration parameters to use for content generation. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig.Builder` | Builder for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ImagePart` | A data class representing an image part of a prompt. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelConfig` | Specifies the desired model for content generation. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelConfig.Builder` | Builder for `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelConfig`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Part` | A sealed class representing a part of a multimodal prompt. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/PromptPrefix` | Represents a prompt prefix for on-device prompt caching. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/SystemInstruction` | A data class representing a system text part of a prompt. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TextPart` | A data class representing a text part of a prompt. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TypedCandidate` | A piece of a response from the model. |

## Objects

|---|---|
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Generation` | Entry class to get a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerativeModel` client. |

## Annotations

|---|---|
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Candidate.FinishReason` | The reason why this `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Candidate` is returned. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Role` | Role associated with `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Feature` | Features (capabilities) that may be supported by a generative model. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelPreference` | Defines the developer's preference to guide model selection, balancing characteristics like speed and capability. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelReleaseStage` | Defines the release stage preference for model selection. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TypedCandidate.TypedFinishReason` | The reason why this `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TypedCandidate` is returned. |

## Top-level functions summary

|---|---|
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#content(kotlin.Function1)(init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper function for DSL-like syntax to construct `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` with default `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Role#USER()` role. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#content(kotlin.Int,kotlin.Function1)(@https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Role role: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper function for DSL-like syntax to construct `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` with specified `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Role`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CreateCachedContextRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#createCachedContextRequest(kotlin.String,com.google.mlkit.genai.prompt.PromptPrefix)(name: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html, promptPrefix: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/PromptPrefix)` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CreateCachedContextRequest`. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateContentRequest(com.google.mlkit.genai.prompt.Content,kotlin.Function1)(content: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateContentRequest(com.google.mlkit.genai.prompt.TextPart,kotlin.Function1)(text: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TextPart, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateContentRequest(com.google.mlkit.genai.prompt.ImagePart,com.google.mlkit.genai.prompt.TextPart,kotlin.Function1)(image: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ImagePart, text: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TextPart, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateContentRequest(com.google.mlkit.genai.prompt.SystemInstruction,com.google.mlkit.genai.prompt.Content,kotlin.Function1)( systemInstruction: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/SystemInstruction, content: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html )` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateContentRequest(com.google.mlkit.genai.prompt.SystemInstruction,com.google.mlkit.genai.prompt.TextPart,kotlin.Function1)( systemInstruction: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/SystemInstruction, text: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TextPart, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html )` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateContentRequest(com.google.mlkit.genai.prompt.SystemInstruction,com.google.mlkit.genai.prompt.ImagePart,com.google.mlkit.genai.prompt.TextPart,kotlin.Function1)( systemInstruction: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/SystemInstruction, image: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ImagePart, text: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/TextPart, init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html )` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest<T>` | `<T : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html> https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateTypedContentRequest(com.google.mlkit.genai.prompt.GenerateContentRequest,kotlin.reflect.KClass)( generateContentRequest: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest, outputClass: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-class/index.html<T> )` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest<T>` | `<T : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html> https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateTypedContentRequest(com.google.mlkit.genai.prompt.GenerateContentRequest,kotlin.reflect.KClass,kotlin.Boolean)( generateContentRequest: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest, outputClass: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-class/index.html<T>, includeSchemaInPrompt: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html )` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest` with the specified `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateTypedContentRequest(com.google.mlkit.genai.prompt.GenerateContentRequest,kotlin.reflect.KClass,kotlin.Boolean)` flag. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generationConfig(kotlin.Function1)(init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig` in a DSL-like manner. |
| `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelConfig` | `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#modelConfig(kotlin.Function1)(init: https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/ModelConfig.Builder.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Helper function for Kotlin DSL to build ModelConfig. |

## Top-level functions

### content

```
fun content(init: Content.Builder.() -> Unit): Content
```

Helper function for DSL-like syntax to construct `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` with default `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Role#USER()` role.

### content

```
fun content(@Content.Role role: Int, init: Content.Builder.() -> Unit): Content
```

Helper function for DSL-like syntax to construct `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content` with specified `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/Content.Role`.

### createCachedContextRequest

```
fun createCachedContextRequest(name: String, promptPrefix: PromptPrefix): CreateCachedContextRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/CreateCachedContextRequest`.

Example Usage:

```kotlin
createCachedContextRequest("my_cache", PromptPrefix("Repeat 3 times: "))
```

### generateContentRequest

```
fun generateContentRequest(content: Content, init: GenerateContentRequest.Builder.() -> Unit = {}): GenerateContentRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner.

Example Usage:

```kotlin
val request = generateContentRequest(
  content {
    image(bitmap1)
    text("Identify this object.")
    text("Does this sound belong to it?")
    image(bitmap2)
    text("How about this one?")
  }
) {
  temperature = 0.5f
}
)
```

### generateContentRequest

```
fun generateContentRequest(text: TextPart, init: GenerateContentRequest.Builder.() -> Unit): GenerateContentRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner.

Example Usage:

```kotlin
// Generation Request with text only:
generateContentRequest(TextPart("Hello World")) {
  temperature = 0.5f
  seed = 123
  topK = 10
  candidateCount = 5
  maxOutputTokens = 200
}
```

### generateContentRequest

```
fun generateContentRequest(image: ImagePart, text: TextPart, init: GenerateContentRequest.Builder.() -> Unit): GenerateContentRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner.

Example Usage:

```kotlin
// Generation Request with image and text:
generateContentRequest(ImagePart(bitmap), TextPart("Hello World")) {
  temperature = 0.5f
  seed = 123
  topK = 10
  candidateCount = 5
  maxOutputTokens = 200
}
```

### generateContentRequest

```
fun generateContentRequest(
    systemInstruction: SystemInstruction,
    content: Content,
    init: GenerateContentRequest.Builder.() -> Unit
): GenerateContentRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner.

Example Usage:

```kotlin
// Generation Request with system instruction and content:
generateContentRequest(SystemInstruction("You are a helpful assistant."),
  content {
    image(bitmap1)
    text("Identify this object.")
    text("Does this sound belong to it?")
    image(bitmap2)
    text("How about this one?")
  }
) {
  temperature = 0.5f
}
```

### generateContentRequest

```
fun generateContentRequest(
    systemInstruction: SystemInstruction,
    text: TextPart,
    init: GenerateContentRequest.Builder.() -> Unit
): GenerateContentRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner.

Example Usage:

```kotlin
// Generation Request with system instruction and text:
generateContentRequest(SystemInstruction("You are a helpful assistant."), TextPart("Hello World")) {
  temperature = 0.5f
  seed = 123
  topK = 10
  candidateCount = 5
  maxOutputTokens = 200
  enableThinking = true
}
```

### generateContentRequest

```
fun generateContentRequest(
    systemInstruction: SystemInstruction,
    image: ImagePart,
    text: TextPart,
    init: GenerateContentRequest.Builder.() -> Unit
): GenerateContentRequest
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest` in a DSL-like manner.

Example Usage:

```kotlin
// Generation Request with system instruction, image, and text:
generateContentRequest(
  SystemInstruction("You are a helpful assistant."),
  ImagePart(bitmap),
  TextPart("Hello World"),
) {
  temperature = 0.5f
  seed = 123
  topK = 10
  candidateCount = 5
  maxOutputTokens = 200
  enableThinking = true
}
```

### generateTypedContentRequest

```
fun <T : Any> generateTypedContentRequest(
    generateContentRequest: GenerateContentRequest,
    outputClass: KClass<T>
): GenerateTypedContentRequest<T>
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest` in a DSL-like manner.

This is an experimental feature.

Example Usage:

```kotlin
// Generation Request for typed content:
generateTypedContentRequest(request, MyClass::class) {
}
```

### generateTypedContentRequest

```
fun <T : Any> generateTypedContentRequest(
    generateContentRequest: GenerateContentRequest,
    outputClass: KClass<T>,
    includeSchemaInPrompt: Boolean
): GenerateTypedContentRequest<T>
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateTypedContentRequest` with the specified `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary#generateTypedContentRequest(com.google.mlkit.genai.prompt.GenerateContentRequest,kotlin.reflect.KClass,kotlin.Boolean)` flag.

This is an experimental feature.

Example Usage:

```kotlin
// Generation Request for typed content:
generateTypedContentRequest(request, MyClass::class, false)
```

### generationConfig

```
fun generationConfig(init: GenerationConfig.Builder.() -> Unit): GenerationConfig
```

Helper method to construct a `https://developers.google.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerationConfig` in a DSL-like manner.

Example usage:

```kotlin
// Default generation config - uses ModelConfig.DEFAULT and a default background thread pool.
val config1 = generationConfig {}

// Customized model spec
val config2 = generationConfig {
  workerExecutor = myExecutor
  modelConfig = modelConfig {
    releaseStage = ModelReleaseStage.PREVIEW
    preference = ModelPreference.FAST
  }
}

// Using prebuilt default ModelConfig with a custom executor
val config3 = generationConfig {
  workerExecutor = myExecutor
  modelConfig = ModelConfig.DEFAULT
}
```

### modelConfig

```
fun modelConfig(init: ModelConfig.Builder.() -> Unit): ModelConfig
```

Helper function for Kotlin DSL to build ModelConfig.