Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Redis stöder olika kontextmönster mellan SDK:er. I .NET ansluter du Redis-säkerhetskopierad sökning till den generiska TextSearchProvider för RAG. Agent Framework Redis-paketet tillhandahåller sökbara minnes- och konversationshistorikprovidrar för Python.
| Pattern | API | SDK | Behavior |
|---|---|---|---|
| LUMP |
TextSearchProvider med ett Redis-sökkort |
.NET | Hämtar relevant Redis-innehåll före anrop eller via ett sökverktyg på begäran. |
| Sökbart minne | RedisContextProvider |
Python | Extraherar konversationsinformation och hämtar relevant kontext med fulltext- eller hybridvektorsökning. |
| Konversationshistorik | RedisHistoryProvider |
Python | Bevarar och läser in den exakta meddelandeavskriften för en session igen. |
Lägg till RAG med TextSearchProvider
Använd det provideroberoende TextSearchProvider mönstret för .NET. Implementera dess sökkort med Redis-klienten eller vektorlagringsanslutningen som valts av ditt program, mappa Redis-resultatet till TextSearchProvider.TextSearchResultoch koppla providern via AIContextProviders.
Den här metoden stöder Redis-backad RAG utan att kräva ett Redis-specifikt Agent Framework-paket för kontextprovider.
Installera paketet
pip install agent-framework-redis --pre
Lägga till sökbart minne
Använd det här mönstret när en agent bör återkalla vald relevant information i stället för att spela upp varje tidigare meddelande.
Förutsättningar
- En Redis-distribution med Stöd för RediSearch, till exempel Redis Stack eller en kompatibel hanterad tjänst.
- Ett Microsoft Foundry-projekt och modelldistribution för exempelagenten.
- En inbäddningsprovider när du aktiverar hybridvektorsökning.
Konfigurera sökbart minne
Använd application_id, agent_idoch user_id för att partitioneringsminnen. Lägg till en Redis-vektoriserare och vektorfältsinställningar när du vill hämta hybrider.
# 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",
)
Koppla minne till en agent
Lägg till providern i context_providers. Providern lagrar konversationsinformation efter en körning och visar relevant kontext innan senare körningar.
# 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)
Spara konversationshistorik
Använd det här mönstret när en session måste återställa sin fullständiga avskrift efter en omstart av ett program eller på en annan instans.
Förutsättningar
- En Redis-distribution kan nås via
REDIS_URL. - TLS och autentiserade Redis-användare för produktionsdistributioner.
Koppla RedisHistoryProvider genom context_providers. Providern lagrar meddelanden för sessionen och kan begränsa antalet kvarhållna meddelanden.
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}")
Använd ett stabilt sessions-ID och spara det serialiserade AgentSession i betrott programlagring när klienter måste återuppta samma logiska konversation efter en omstart av processen.
Anmärkning
Integreringen av Redis-kontextprovidern är för närvarande inte dokumenterad för Agent Framework Go. Se Agent Framework Go-lagringsplatsen för den senaste statusen.
Produktionsöverväganden
- Härled klient-, sök-, minnes- och sessionsomfattningar från autentiserad programidentitet, inte modellutdata.
- Använd TLS, Redis-autentisering och nätverksisolering.
- Använd separata nyckelprefix eller distributioner där klientisolering kräver det.
- Konfigurera beständighet, säkerhetskopior, kvarhållning och borttagning för den hållbarhet som krävs.
- Behandla hämtat minne som ej betrodda indata och minimera indirekt promptinmatning.
- Redigera känsligt innehåll innan du bevarar meddelanden eller indexerar sökbart innehåll.
Nästa steg
Gå djupare: