<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 26.0.0 -",
    "visionOS: 26.0.0 -",
    "watchOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "FoundationModels",
  "identifier" : "/documentation/FoundationModels/LanguageModelSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Foundation Models"
    ],
    "preciseIdentifier" : "s:16FoundationModels20LanguageModelSessionC"
  },
  "title" : "LanguageModelSession"
}
-->

# LanguageModelSession

An object that represents a session that interacts with a language model.

```
final class LanguageModelSession
```

## Overview

A session is a single context that you use to generate content with, and maintains state between
requests. You can reuse the existing instance or create a new one each time you call the model. When
you create a session you can provide instructions that tells the model what its role is and provides
guidance on how to respond.

```swift
let session = LanguageModelSession(instructions: """
    You are a motivational workout coach that provides quotes to inspire \
    and motivate athletes.
    """
)
let prompt = "Generate a motivational quote for my next workout."
let response = try await session.respond(to: prompt)
```

The framework records each call to the model in a [`Transcript`](/documentation/FoundationModels/Transcript) that includes all prompts and
responses. If your session exceeds the available context size, it throws
[`LanguageModelError.contextSizeExceeded(_:)`](/documentation/FoundationModels/LanguageModelError/contextSizeExceeded(_:)). For more information on managing
the context window size, see [Managing the context window](/documentation/FoundationModels/managing-the-context-window).

Use Instruments to analyze token consumption while your app is running and to look for
opportunities to improve performance, like with [`prewarm(promptPrefix:)`](/documentation/FoundationModels/LanguageModelSession/prewarm(promptPrefix:)). For more
information on Instruments, see
[Analyzing the runtime performance of your Foundation Models app](/documentation/FoundationModels/analyzing-the-runtime-performance-of-your-foundation-models-app).

## Topics

### Creating a session

[`convenience ( model : tools : instructions :)`](/documentation/FoundationModels/LanguageModelSession/init(model:tools:instructions:))

Creates a session in a blank slate state with an instructions builder.

[`convenience ( model : tools : transcript :)`](/documentation/FoundationModels/LanguageModelSession/init(model:tools:transcript:))

Creates a session by rehydrating from a transcript.

### Creating a session with a dynamic profile

[`init(profile:history:)`](/documentation/FoundationModels/LanguageModelSession/init(profile:history:))

Creates a session with a profile.

[`init(model:dynamicInstructions:history:)`](/documentation/FoundationModels/LanguageModelSession/init(model:dynamicInstructions:history:))

Creates a session with dynamic instructions.

[`DynamicProfile`](/documentation/FoundationModels/LanguageModelSession/DynamicProfile)

A dynamic profile that contains one or more profiles.

[`DynamicProfileModifier`](/documentation/FoundationModels/LanguageModelSession/DynamicProfileModifier)

A protocol for creating reusable wrappers around dynamic profile content.

[`ConditionalDynamicProfile`](/documentation/FoundationModels/LanguageModelSession/ConditionalDynamicProfile)

[`DynamicProfileBuilder`](/documentation/FoundationModels/LanguageModelSession/DynamicProfileBuilder)

A type that represents a dynamic profile builder.

[`DynamicProfileModifierContent`](/documentation/FoundationModels/LanguageModelSession/DynamicProfileModifierContent)

[`ModifiedDynamicProfile`](/documentation/FoundationModels/LanguageModelSession/ModifiedDynamicProfile)

[`AnyDynamicProfile`](/documentation/FoundationModels/LanguageModelSession/AnyDynamicProfile)

[`Profile`](/documentation/FoundationModels/LanguageModelSession/Profile)

A profile that contains dynamic instructions.

### Preloading the model

[`prewarm(promptPrefix:)`](/documentation/FoundationModels/LanguageModelSession/prewarm(promptPrefix:))

Loads the resources required for this session into memory ahead of a request.

### Accessing session properties

[`properties`](/documentation/FoundationModels/LanguageModelSession/properties)

### Inspecting the accumulated usage

[`usage`](/documentation/FoundationModels/LanguageModelSession/usage-swift.property)

The total accumulated usage across all responses generated by this session.

[`Usage`](/documentation/FoundationModels/LanguageModelSession/Usage-swift.struct)

Information about how many tokens were used by a response.

### Configuring the transcript error handling policy

[`transcriptErrorHandlingPolicy`](/documentation/FoundationModels/LanguageModelSession/transcriptErrorHandlingPolicy)

The session’s policy for managing the transcript when errors occur.

[`TranscriptErrorHandlingPolicy`](/documentation/FoundationModels/TranscriptErrorHandlingPolicy)

Options for controlling how a language model session manages the transcript when errors occur.

### Generating a response

[`isResponding`](/documentation/FoundationModels/LanguageModelSession/isResponding)

A Boolean value that indicates whether a response is being generated.

[`respond(options:prompt:)`](/documentation/FoundationModels/LanguageModelSession/respond(options:prompt:))

Produces a response to a prompt.

[`respond(generating:includeSchemaInPrompt:options:prompt:)`](/documentation/FoundationModels/LanguageModelSession/respond(generating:includeSchemaInPrompt:options:prompt:))

Produces a generable object as a response to a prompt.

[`respond(schema:includeSchemaInPrompt:options:prompt:)`](/documentation/FoundationModels/LanguageModelSession/respond(schema:includeSchemaInPrompt:options:prompt:))

Produces a generated content type as a response to a prompt and schema.

[`func   respond ( to : options :)`](/documentation/FoundationModels/LanguageModelSession/respond(to:options:))

Produces a response to a prompt.

[`func   respond ( to : generating : includeSchemaInPrompt : options :)`](/documentation/FoundationModels/LanguageModelSession/respond(to:generating:includeSchemaInPrompt:options:))

Produces a generable object as a response to a prompt.

[`func   respond ( to : schema : includeSchemaInPrompt : options :)`](/documentation/FoundationModels/LanguageModelSession/respond(to:schema:includeSchemaInPrompt:options:))

Produces a generated content type as a response to a prompt and schema.

[`Response`](/documentation/FoundationModels/LanguageModelSession/Response)

A structure that stores the output of a response call.

### Generating a response with metadata

[`respond(options:contextOptions:metadata:prompt:)`](/documentation/FoundationModels/LanguageModelSession/respond(options:contextOptions:metadata:prompt:))

Produces a response to a prompt.

[`respond(generating:options:contextOptions:metadata:prompt:)`](/documentation/FoundationModels/LanguageModelSession/respond(generating:options:contextOptions:metadata:prompt:))

Produces a generable object as a response to a prompt.

[`respond(schema:options:contextOptions:metadata:prompt:)`](/documentation/FoundationModels/LanguageModelSession/respond(schema:options:contextOptions:metadata:prompt:))

Produces a generated content type as a response to a prompt and schema.

[`func   respond ( to : options : contextOptions : metadata :)`](/documentation/FoundationModels/LanguageModelSession/respond(to:options:contextOptions:metadata:))

Produces a response to a prompt.

[`func   respond ( to : generating : options : contextOptions : metadata :)`](/documentation/FoundationModels/LanguageModelSession/respond(to:generating:options:contextOptions:metadata:))

Produces a generable object as a response to a prompt.

[`func   respond ( to : schema : options : contextOptions : metadata :)`](/documentation/FoundationModels/LanguageModelSession/respond(to:schema:options:contextOptions:metadata:))

Produces a generated content type as a response to a prompt and schema.

### Streaming a response

[`streamResponse(options:prompt:)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(options:prompt:))

Produces a response stream to a prompt.

[`streamResponse(generating:includeSchemaInPrompt:options:prompt:)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(generating:includeSchemaInPrompt:options:prompt:))

Produces a response stream to a prompt.

[`streamResponse(schema:includeSchemaInPrompt:options:prompt:)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(schema:includeSchemaInPrompt:options:prompt:))

Produces a response stream to a prompt and schema.

[`func   streamResponse ( to : options :)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(to:options:))

Produces a response stream to a prompt.

[`func   streamResponse ( to : generating : includeSchemaInPrompt : options :)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(to:generating:includeSchemaInPrompt:options:))

Produces a response stream to a prompt.

[`func   streamResponse ( to : schema : includeSchemaInPrompt : options :)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(to:schema:includeSchemaInPrompt:options:))

Produces a response stream to a prompt and schema.

[`ResponseStream`](/documentation/FoundationModels/LanguageModelSession/ResponseStream)

An async sequence of snapshots of partially generated content.

### Streaming a response with metadata

[`streamResponse(options:contextOptions:metadata:prompt:)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(options:contextOptions:metadata:prompt:))

Produces a response stream to a prompt.

[`streamResponse(generating:options:contextOptions:metadata:prompt:)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(generating:options:contextOptions:metadata:prompt:))

Produces a response stream to a prompt.

[`streamResponse(schema:options:contextOptions:metadata:prompt:)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(schema:options:contextOptions:metadata:prompt:))

Produces a response stream to a prompt and schema.

[`func   streamResponse ( to : options : contextOptions : metadata :)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(to:options:contextOptions:metadata:))

Produces a response stream to a prompt.

[`func   streamResponse ( to : generating : options : contextOptions : metadata :)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(to:generating:options:contextOptions:metadata:))

Produces a response stream to a prompt.

[`func   streamResponse ( to : schema : options : contextOptions : metadata :)`](/documentation/FoundationModels/LanguageModelSession/streamResponse(to:schema:options:contextOptions:metadata:))

Produces a response stream to a prompt and schema.

### Accessing the transcript

[`transcript`](/documentation/FoundationModels/LanguageModelSession/transcript)

A full history of interactions, including user inputs and model responses.

### Generating feedback

[`logFeedbackAttachment(sentiment:issues:desiredOutput:)`](/documentation/FoundationModels/LanguageModelSession/logFeedbackAttachment(sentiment:issues:desiredOutput:))

Logs and serializes a feedback attachment that can be submitted to Apple.

[`logFeedbackAttachment(sentiment:issues:desiredResponseContent:)`](/documentation/FoundationModels/LanguageModelSession/logFeedbackAttachment(sentiment:issues:desiredResponseContent:))

[`logFeedbackAttachment(sentiment:issues:desiredResponseText:)`](/documentation/FoundationModels/LanguageModelSession/logFeedbackAttachment(sentiment:issues:desiredResponseText:))

[`LanguageModelFeedback`](/documentation/FoundationModels/LanguageModelFeedback)

Feedback appropriate for logging or attaching to Feedback Assistant.

### Session properties

[`SessionProperty`](/documentation/FoundationModels/LanguageModelSession/SessionProperty)

A property wrapper that provides access to properties from within profiles,  dynamic
instructions, and tools.

### Errors

[`Error`](/documentation/FoundationModels/LanguageModelSession/Error)

A failure caused by incorrect use of a language model session.

[`ToolCallError`](/documentation/FoundationModels/LanguageModelSession/ToolCallError)

An error that occurs while a language model is calling a tool.

[`GenerationError`](/documentation/FoundationModels/LanguageModelSession/GenerationError)

An error that may occur while generating a response.

## Relationships

### Conforms To

[`Copyable`](/documentation/Swift/Copyable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Observable`](/documentation/Observation/Observable)

[`Sendable`](/documentation/Swift/Sendable)

[`Escapable`](/documentation/Swift/Escapable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)