Redis

Redis admite diferentes patrones de contexto en los SDK. En .NET, conecte la búsqueda respaldada por Redis al genérico TextSearchProvider para RAG. El paquete Redis de Agent Framework proporciona proveedores de historial de conversación y memoria que se pueden buscar para Python.

Pattern API SDK Comportamiento
RAG TextSearchProvider con un adaptador de búsqueda de Redis .NET Recupera el contenido de Redis pertinente antes de la invocación o a través de una herramienta de búsqueda a petición.
Memoria que se puede buscar RedisContextProvider Python Extrae detalles conversacionales y recupera el contexto pertinente con la búsqueda de vectores híbridos o de texto completo.
Historial de la conversación RedisHistoryProvider Python Conserva y vuelve a cargar la transcripción exacta del mensaje para una sesión.

Agregar RAG con TextSearchProvider

Use el patrón independiente TextSearchProvider del proveedor para .NET. Implemente su adaptador de búsqueda con el conector de cliente o de almacén vectorial de Redis seleccionado por la aplicación, asigne los resultados de Redis a TextSearchProvider.TextSearchResulty adjunte el proveedor a través AIContextProvidersde .

Este enfoque admite RAG respaldado por Redis sin necesidad de un paquete de proveedor de contexto del marco de trabajo del agente específico de Redis.

Instalar el paquete

pip install agent-framework-redis --pre

Agregar memoria que se puede buscar

Use este patrón cuando un agente debe recuperar la información pertinente seleccionada en lugar de reproducir todos los mensajes anteriores.

Prerequisites

  • Una implementación de Redis con compatibilidad con RediSearch, como Redis Stack o un servicio administrado compatible.
  • Un proyecto y una implementación de modelos de Microsoft Foundry para el agente de ejemplo.
  • Un proveedor de inserción al habilitar la búsqueda de vectores híbridos.

Configuración de la memoria que se puede buscar

Use application_id, agent_idy user_id para crear particiones de memorias. Agregue un vectorizador de Redis y una configuración de campo vectorial cuando desee la recuperación híbrida.

# Create a provider with partition scope and OpenAI embeddings

# Please set OPENAI_API_KEY to use the OpenAI vectorizer.
# For chat responses, also set FOUNDRY_PROJECT_ENDPOINT and FOUNDRY_MODEL.

# We attach an embedding vectorizer so the provider can perform hybrid (text + vector)
# retrieval. If you prefer text-only retrieval, instantiate RedisContextProvider without the
# 'vectorizer' and vector_* parameters.
vectorizer = OpenAITextVectorizer(
    model="text-embedding-ada-002",
    api_config={"api_key": os.getenv("OPENAI_API_KEY")},
    cache=EmbeddingsCache(name="openai_embeddings_cache", redis_url=REDIS_URL),
)
# The provider manages persistence and retrieval. application_id/agent_id/user_id
# scope data for multi-tenant separation; thread_id (set later) narrows to a
# specific conversation.
provider = RedisContextProvider(
    source_id="redis_context",
    redis_url=REDIS_URL,
    index_name="redis_basics",
    application_id="matrix_of_kermits",
    agent_id="agent_kermit",
    user_id="kermit",
    redis_vectorizer=vectorizer,
    vector_field_name="vector",
    vector_algorithm="hnsw",
    vector_distance_metric="cosine",
)

Adjuntar memoria a un agente

Agregue el proveedor a context_providers. El proveedor almacena los detalles conversacionales después de una ejecución y expone el contexto pertinente antes de que se ejecute más adelante.

# Create chat client for the agent
client = create_chat_client()
# Create agent wired to the Redis context provider. The provider automatically
# persists conversational details and surfaces relevant context on each turn.
agent = Agent(
    client=client,
    name="MemoryEnhancedAssistant",
    instructions=(
        "You are a helpful assistant. Personalize replies using provided context. "
        "Before answering, always check for stored context"
    ),
    tools=[],
    context_providers=[provider],
)

# Teach a user preference; the agent writes this to the provider's memory
query = "Remember that I enjoy glugenflorgle"
result = await agent.run(query)
print("User: ", query)
print("Agent: ", result)

# Ask the agent to recall the stored preference; it should retrieve from memory
query = "What do I enjoy?"
result = await agent.run(query)

Conservar el historial de conversaciones

Use este patrón cuando una sesión debe recuperar su transcripción completa después de reiniciar una aplicación o en otra instancia.

Prerequisites

  • Una implementación de Redis accesible a través de REDIS_URL.
  • Usuarios de Redis autenticados y TLS para implementaciones de producción.

Adjunte RedisHistoryProvider a .context_providers El proveedor almacena mensajes para la sesión y puede limitar el recuento de mensajes retenidos.

async def example_manual_memory_store() -> None:
    """Basic example of using Redis history provider."""
    print("=== Basic Redis History Provider Example ===")

    # Create Redis history provider
    redis_provider = RedisHistoryProvider(
        source_id="redis_basic_chat",
        redis_url=REDIS_URL,
    )

    # Create agent with Redis history provider
    agent = Agent(
        client=OpenAIChatClient(),
        name="RedisBot",
        instructions="You are a helpful assistant that remembers our conversation using Redis.",
        context_providers=[redis_provider],
    )

    # Create session
    session = agent.create_session()

    # Have a conversation
    print("\n--- Starting conversation ---")
    query1 = "Hello! My name is Alice and I love pizza."
    print(f"User: {query1}")
    response1 = await agent.run(query1, session=session)
    print(f"Agent: {response1.text}")

    query2 = "What do you remember about me?"
    print(f"User: {query2}")
    response2 = await agent.run(query2, session=session)
    print(f"Agent: {response2.text}")

Use un identificador de sesión estable y conserve el serializado AgentSession en el almacenamiento de aplicaciones de confianza cuando los clientes deben reanudar la misma conversación lógica después de reiniciar un proceso.

Note

La integración del proveedor de contexto de Redis no está documentada actualmente para Agent Framework Go. Consulte el repositorio de Agent Framework Go para obtener el estado más reciente.

Consideraciones de producción

  • Derive los ámbitos de inquilino, búsqueda, memoria y sesión de la identidad de aplicación autenticada, no de la salida del modelo.
  • Use TLS, autenticación de Redis y aislamiento de red.
  • Use prefijos de clave independientes o implementaciones en las que el aislamiento de inquilinos lo requiera.
  • Configure la persistencia, las copias de seguridad, la retención y la expulsión para la durabilidad necesaria.
  • Trate la memoria recuperada como entrada que no es de confianza y mitigue la inyección indirecta de mensajes.
  • Redacte contenido confidencial antes de conservar los mensajes o indexar contenido que se puede buscar.

Pasos siguientes

Vaya más profundamente: