# AzureAIMemoryMiddleware

> **Class** in `langchain_azure_ai`

📖 [View in docs](https://reference.langchain.com/python/langchain-azure-ai/agents/middleware/_azure_ai_memory/AzureAIMemoryMiddleware)

Middleware that periodically extracts memories from turns into Azure AI Memory.

This middleware collects messages from the agent's state after each turn and
sends them to Azure AI Memory in batches. It supports both user and assistant
messages, configurable by the `roles` parameter. Use the memory store
configuration to control which memories are stored and how. To retrieve those
memories back into your agent, use the :class:`AzureAIMemoryRetrieverTool`
in your agent.

Example usage:

```python
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_azure_ai.agents.middleware import AzureAIMemoryMiddleware

memory_middleware = AzureAIMemoryMiddleware(
    store_name="my-memory-store",
    scope="my-scope",
    update_every_n_turns=1,
    roles=["user", "assistant"],
    project_endpoint="https://resource.services.ai.azure.com/api/projects/my-project",
    credential=DefaultAzureCredential(),
)
tools = [memory_middleware.get_retriever_tool()]

agent = create_agent(
    model=init_chat_model("azure_ai:gpt-5"),
    tools=tools,
    middleware=[memory_middleware],
)
```

This class doesn't create the memory store itself, so make sure to create the
specified memory store before using the middleware.

## Signature

```python
AzureAIMemoryMiddleware(
    self,
    store_name: str,
    scope: str,
    *,
    messages_key: str = 'messages',
    update_every_n_turns: int = 1,
    roles: Sequence[Literal['user', 'assistant']] = ('user',),
    project_endpoint: Optional[str] = None,
    credential: Optional[TokenCredential] = None,
    update_delay: Optional[int] = 0,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `store_name` | `str` | Yes | Azure AI Memory store name. |
| `scope` | `str` | Yes | Memory scope identifier. |
| `update_every_n_turns` | `int` | No | Number of agent turns to buffer before flushing. (default: `1`) |
| `roles` | `Sequence[Literal['user', 'assistant']]` | No | Message roles to remember. Allowed values are ``"user"`` and ``"assistant"``. Defaults to ``("user",)``. Pass ``["user", "assistant"]`` to remember both roles. (default: `('user',)`) |
| `project_endpoint` | `Optional[str]` | No | Azure AI Foundry project endpoint. (default: `None`) |
| `credential` | `Optional[TokenCredential]` | No | Token credential used to authenticate to Azure services. (default: `None`) |
| `update_delay` | `Optional[int]` | No | Optional update delay for memory store updates. (default: `0`) |
| `messages_key` | `str` | No | Key in the agent state where the message list is stored. Defaults to "messages". (default: `'messages'`) |

## Extends

- `AgentMiddleware[AgentState[Any], Any]`

## Constructors

```python
__init__(
    self,
    store_name: str,
    scope: str,
    *,
    messages_key: str = 'messages',
    update_every_n_turns: int = 1,
    roles: Sequence[Literal['user', 'assistant']] = ('user',),
    project_endpoint: Optional[str] = None,
    credential: Optional[TokenCredential] = None,
    update_delay: Optional[int] = 0,
) -> None
```

| Name | Type |
|------|------|
| `store_name` | `str` |
| `scope` | `str` |
| `messages_key` | `str` |
| `update_every_n_turns` | `int` |
| `roles` | `Sequence[Literal['user', 'assistant']]` |
| `project_endpoint` | `Optional[str]` |
| `credential` | `Optional[TokenCredential]` |
| `update_delay` | `Optional[int]` |


## Properties

- `name`
- `tools`
- `project_endpoint`

## Methods

- [`get_retriever_tool()`](https://reference.langchain.com/python/langchain-azure-ai/agents/middleware/_azure_ai_memory/AzureAIMemoryMiddleware/get_retriever_tool)
- [`after_agent()`](https://reference.langchain.com/python/langchain-azure-ai/agents/middleware/_azure_ai_memory/AzureAIMemoryMiddleware/after_agent)
- [`aafter_agent()`](https://reference.langchain.com/python/langchain-azure-ai/agents/middleware/_azure_ai_memory/AzureAIMemoryMiddleware/aafter_agent)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-azure/blob/7a6a664d617264df8dcb12fcfb1bacc09f21d504/libs/azure-ai/langchain_azure_ai/agents/middleware/_azure_ai_memory.py#L44)