Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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: