---
title: DynamicInstructions
framework: foundationmodels
role: symbol
role_heading: Protocol
path: foundationmodels/dynamicinstructions
---

# DynamicInstructions

A type that represents dynamic instructions.

## Declaration

```swift
protocol DynamicInstructions
```

## Mentioned in

Composing dynamic sessions with instructions and profiles Optimizing key-value caching in language model sessions

## Overview

Overview Dynamic instructions provide a declarative approach to assembling instructions and tools that a LanguageModelSession uses. The framework evaluates them before every request to the model, so the body can contain conditional logic that’s based on current app state. struct PresentationInstructions: DynamicInstructions {     // The data source for conditional instructions.     var isEditingImage = true

var body: some DynamicInstructions {         // The instructions and tools that remain the same across any use of this type.         Instructions {             "Help people improve their presentation."         }         ListPhotosTool()         AddPhotoTool()

// Depending on the state of the app, include additional instructions         // that provide the model with more task-specific instructions and tools.         if isEditingImage {             ImageEditingInstructions()         }     } }

## Topics

### Implementing dynamic instructions

- [body](foundationmodels/dynamicinstructions/body-swift.property.md)
- [Body](foundationmodels/dynamicinstructions/body-swift.associatedtype.md)
- [DynamicInstructions.ForEach](foundationmodels/dynamicinstructions/foreach.md)
- [DynamicInstructions.SessionProperty](foundationmodels/dynamicinstructions/sessionproperty.md)

### Building dynamic instructions

- [DynamicInstructionsBuilder](foundationmodels/dynamicinstructionsbuilder.md)
- [EmptyDynamicInstructions](foundationmodels/emptydynamicinstructions.md)
- [ConditionalDynamicInstructions](foundationmodels/conditionaldynamicinstructions.md)
- [AnyDynamicInstructions](foundationmodels/anydynamicinstructions.md)
- [TupleDynamicInstructions](foundationmodels/tupledynamicinstructions.md)
- [AnyTool](foundationmodels/anytool.md)

## Relationships

### Conforming Types

- [AnyDynamicInstructions](foundationmodels/anydynamicinstructions.md)
- [ConditionalDynamicInstructions](foundationmodels/conditionaldynamicinstructions.md)
- [EmptyDynamicInstructions](foundationmodels/emptydynamicinstructions.md)
- [Instructions](foundationmodels/instructions.md)
- [TupleDynamicInstructions](foundationmodels/tupledynamicinstructions.md)

## See Also

### Dynamic profiles

- [Composing dynamic sessions with instructions and profiles](foundationmodels/composing-dynamic-sessions-with-instructions-and-profiles.md)
- [Origami: Crafting a dynamic tutorial for Apple Intelligence](foundationmodels/origami-crafting-a-dynamic-tutorial-for-apple-intelligence.md)
- [LanguageModelSession.DynamicProfile](foundationmodels/languagemodelsession/dynamicprofile.md)
- [LanguageModelSession.DynamicProfileModifier](foundationmodels/languagemodelsession/dynamicprofilemodifier.md)
- [LanguageModelSession.Profile](foundationmodels/languagemodelsession/profile.md)
