Mem0

Mem0 извлекает устойчивые воспоминания из бесед агента и извлекает соответствующие воспоминания в последующих запусках. Используйте стабильный пользователь, агент или область приложения, когда память должна быть доступна в сеансах.

Эта интеграция использует шаблон памяти: извлекает и отзывает выбранную устойчивую информацию, а не повторяет полную расшифровку беседы.

Important

Mem0 — это сторонняя система. Перед отправкой данных просмотрите его обработку, хранение, региональные границы и условия обслуживания.

Замечание

Интеграция Mem0 в настоящее время недоступна для .NET Agent Framework.

Установите пакет

pip install agent-framework-mem0 --pre

Задайте MEM0_API_KEY или передайте ключ API напрямую. Повторное использовать то же user_id самое делает воспоминания доступными для сеансов.

async def main() -> None:
    """Example of memory usage with Mem0 context provider."""
    print("=== Mem0 Context Provider Example ===")
    # Each record in Mem0 should be associated with agent_id or user_id or application_id.
    # In this example, we associate Mem0 records with user_id.
    user_id = str(uuid.uuid4())
    # For Azure authentication, run `az login` command in terminal or replace AzureCliCredential with preferred
    # authentication option.
    # For Mem0 authentication, set Mem0 API key via "api_key" parameter or MEM0_API_KEY environment variable.
    async with (
        AzureCliCredential() as credential,
        Agent(
            client=FoundryChatClient(credential=credential),
            name="FriendlyAssistant",
            instructions="You are a friendly assistant.",
            tools=retrieve_company_report,
            context_providers=[Mem0ContextProvider(source_id="mem0", user_id=user_id, search_user_id=user_id)],
        ) as agent,
    ):
        # First ask the agent to retrieve a company report with no previous context.
        # The agent will not be able to invoke the tool, since it doesn't know
        # the company code or the report format, so it should ask for clarification.
        query = "Please retrieve my company report"
        print(f"User: {query}")
        result = await agent.run(query)
        print(f"Agent: {result}\n")
        # Now tell the agent the company code and the report format that you want to use
        # and it should be able to invoke the tool and return the report.
        query = "I always work with CNTS and I always want a detailed report format. Please remember and retrieve it."
        print(f"User: {query}")
        result = await agent.run(query)
        print(f"Agent: {result}\n")

        # Mem0 processes and indexes memories asynchronously.
        # Wait for memories to be indexed before querying in a new thread.
        # In production, consider implementing retry logic or using Mem0's
        # eventual consistency handling instead of a fixed delay.
        print("Waiting for memories to be processed...")
        await asyncio.sleep(15)  # Empirically determined delay for Mem0 indexing
        print("\nRequest within a new session:")
        # Create a new session for the agent.
        # The new session has no context of the previous conversation.
        session = agent.create_session()
        # Since we have the mem0 component in the session, the agent should be able to
        # retrieve the company report without asking for clarification, as it will
        # be able to remember the user preferences from Mem0 component.
        query = "Please retrieve my company report"
        print(f"User: {query}")
        result = await agent.run(query, session=session)
        print(f"Agent: {result}")

Mem0 обрабатывает воспоминания асинхронно. В рабочей среде используйте обработку согласованности с учетом повторных попыток или обслуживания вместо того, чтобы полагаться на фиксированную задержку.

Замечание

Интеграция Mem0 в настоящее время недоступна для Agent Framework Go. Сведения о последнем состоянии см. в репозитории Agent Framework Go .

Дальнейшие действия

Вернитесь глубже: