---
title: LanguageModelSession
framework: foundationmodels
role: symbol
role_heading: Class
path: foundationmodels/languagemodelsession
---

# LanguageModelSession

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

## Declaration

```swift
final class LanguageModelSession
```

## Mentioned in

Composing dynamic sessions with instructions and profiles Generating content and performing tasks with Foundation Models Adding server-side intelligence with Private Cloud Compute Analyzing images with multimodal prompting Categorizing and organizing data with content tags Generating Swift data structures with guided generation Improving the safety of generative model output Managing the context window Prompting an on-device foundation model Supporting languages and locales with Foundation Models

## Overview

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. 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 that includes all prompts and responses. If your session exceeds the available context size, it throws LanguageModelError.contextSizeExceeded(_:). For more information on managing the context window size, see 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:). For more information on Instruments, see Analyzing the runtime performance of your Foundation Models app.

## Topics

### Creating a session

- [init(model:tools:instructions:)](foundationmodels/languagemodelsession/init(model:tools:instructions:).md)
- [init(model:tools:transcript:)](foundationmodels/languagemodelsession/init(model:tools:transcript:).md)

### Creating a session with a dynamic profile

- [init(profile:history:)](foundationmodels/languagemodelsession/init(profile:history:).md)
- [init(model:dynamicInstructions:history:)](foundationmodels/languagemodelsession/init(model:dynamicinstructions:history:).md)
- [LanguageModelSession.DynamicProfile](foundationmodels/languagemodelsession/dynamicprofile.md)
- [LanguageModelSession.DynamicProfileModifier](foundationmodels/languagemodelsession/dynamicprofilemodifier.md)
- [LanguageModelSession.ConditionalDynamicProfile](foundationmodels/languagemodelsession/conditionaldynamicprofile.md)
- [LanguageModelSession.DynamicProfileBuilder](foundationmodels/languagemodelsession/dynamicprofilebuilder.md)
- [LanguageModelSession.DynamicProfileModifierContent](foundationmodels/languagemodelsession/dynamicprofilemodifiercontent.md)
- [LanguageModelSession.ModifiedDynamicProfile](foundationmodels/languagemodelsession/modifieddynamicprofile.md)
- [LanguageModelSession.Profile](foundationmodels/languagemodelsession/profile.md)

### Preloading the model

- [prewarm(promptPrefix:)](foundationmodels/languagemodelsession/prewarm(promptprefix:).md)

### Inspecting a session

- [usage](foundationmodels/languagemodelsession/usage-swift.property.md)
- [LanguageModelSession.Usage](foundationmodels/languagemodelsession/usage-swift.struct.md)
- [properties](foundationmodels/languagemodelsession/properties.md)
- [transcriptErrorHandlingPolicy](foundationmodels/languagemodelsession/transcripterrorhandlingpolicy.md)

### Generating a response

- [isResponding](foundationmodels/languagemodelsession/isresponding.md)
- [respond(options:prompt:)](foundationmodels/languagemodelsession/respond(options:prompt:).md)
- [respond(generating:includeSchemaInPrompt:options:prompt:)](foundationmodels/languagemodelsession/respond(generating:includeschemainprompt:options:prompt:).md)
- [respond(schema:includeSchemaInPrompt:options:prompt:)](foundationmodels/languagemodelsession/respond(schema:includeschemainprompt:options:prompt:).md)
- [respond(to:options:)](foundationmodels/languagemodelsession/respond(to:options:).md)
- [respond(to:generating:includeSchemaInPrompt:options:)](foundationmodels/languagemodelsession/respond(to:generating:includeschemainprompt:options:).md)
- [respond(to:schema:includeSchemaInPrompt:options:)](foundationmodels/languagemodelsession/respond(to:schema:includeschemainprompt:options:).md)
- [LanguageModelSession.Response](foundationmodels/languagemodelsession/response.md)

### Generating a response with metadata

- [respond(options:contextOptions:metadata:prompt:)](foundationmodels/languagemodelsession/respond(options:contextoptions:metadata:prompt:).md)
- [respond(generating:options:contextOptions:metadata:prompt:)](foundationmodels/languagemodelsession/respond(generating:options:contextoptions:metadata:prompt:).md)
- [respond(schema:options:contextOptions:metadata:prompt:)](foundationmodels/languagemodelsession/respond(schema:options:contextoptions:metadata:prompt:).md)
- [respond(to:options:contextOptions:metadata:)](foundationmodels/languagemodelsession/respond(to:options:contextoptions:metadata:).md)
- [respond(to:generating:options:contextOptions:metadata:)](foundationmodels/languagemodelsession/respond(to:generating:options:contextoptions:metadata:).md)
- [respond(to:schema:options:contextOptions:metadata:)](foundationmodels/languagemodelsession/respond(to:schema:options:contextoptions:metadata:).md)

### Streaming a response

- [streamResponse(options:prompt:)](foundationmodels/languagemodelsession/streamresponse(options:prompt:).md)
- [streamResponse(generating:includeSchemaInPrompt:options:prompt:)](foundationmodels/languagemodelsession/streamresponse(generating:includeschemainprompt:options:prompt:).md)
- [streamResponse(schema:includeSchemaInPrompt:options:prompt:)](foundationmodels/languagemodelsession/streamresponse(schema:includeschemainprompt:options:prompt:).md)
- [streamResponse(to:options:)](foundationmodels/languagemodelsession/streamresponse(to:options:).md)
- [streamResponse(to:generating:includeSchemaInPrompt:options:)](foundationmodels/languagemodelsession/streamresponse(to:generating:includeschemainprompt:options:).md)
- [streamResponse(to:schema:includeSchemaInPrompt:options:)](foundationmodels/languagemodelsession/streamresponse(to:schema:includeschemainprompt:options:).md)
- [LanguageModelSession.ResponseStream](foundationmodels/languagemodelsession/responsestream.md)

### Streaming a response with metadata

- [streamResponse(options:contextOptions:metadata:prompt:)](foundationmodels/languagemodelsession/streamresponse(options:contextoptions:metadata:prompt:).md)
- [streamResponse(generating:options:contextOptions:metadata:prompt:)](foundationmodels/languagemodelsession/streamresponse(generating:options:contextoptions:metadata:prompt:).md)
- [streamResponse(schema:options:contextOptions:metadata:prompt:)](foundationmodels/languagemodelsession/streamresponse(schema:options:contextoptions:metadata:prompt:).md)
- [streamResponse(to:options:contextOptions:metadata:)](foundationmodels/languagemodelsession/streamresponse(to:options:contextoptions:metadata:).md)
- [streamResponse(to:generating:options:contextOptions:metadata:)](foundationmodels/languagemodelsession/streamresponse(to:generating:options:contextoptions:metadata:).md)
- [streamResponse(to:schema:options:contextOptions:metadata:)](foundationmodels/languagemodelsession/streamresponse(to:schema:options:contextoptions:metadata:).md)

### Accessing the transcript

- [transcript](foundationmodels/languagemodelsession/transcript.md)

### Generating feedback

- [logFeedbackAttachment(sentiment:issues:desiredOutput:)](foundationmodels/languagemodelsession/logfeedbackattachment(sentiment:issues:desiredoutput:).md)
- [logFeedbackAttachment(sentiment:issues:desiredResponseContent:)](foundationmodels/languagemodelsession/logfeedbackattachment(sentiment:issues:desiredresponsecontent:).md)
- [logFeedbackAttachment(sentiment:issues:desiredResponseText:)](foundationmodels/languagemodelsession/logfeedbackattachment(sentiment:issues:desiredresponsetext:).md)
- [LanguageModelFeedback](foundationmodels/languagemodelfeedback.md)

### Session properties

- [LanguageModelSession.SessionProperty](foundationmodels/languagemodelsession/sessionproperty.md)

### Errors

- [LanguageModelSession.Error](foundationmodels/languagemodelsession/error.md)
- [LanguageModelSession.ToolCallError](foundationmodels/languagemodelsession/toolcallerror.md)
- [LanguageModelSession.GenerationError](foundationmodels/languagemodelsession/generationerror.md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [Escapable](swift/escapable.md)
- [Observable](observation/observable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Sessions and prompts

- [Prompting an on-device foundation model](foundationmodels/prompting-an-on-device-foundation-model.md)
- [Managing the context window](foundationmodels/managing-the-context-window.md)
- [Updating prompts for new model versions](foundationmodels/updating-prompts-for-new-model-versions.md)
- [Instructions](foundationmodels/instructions.md)
- [Prompt](foundationmodels/prompt.md)
- [Transcript](foundationmodels/transcript.md)
- [TranscriptErrorHandlingPolicy](foundationmodels/transcripterrorhandlingpolicy.md)
- [GenerationOptions](foundationmodels/generationoptions.md)
- [ContextOptions](foundationmodels/contextoptions.md)
