Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Redis podporuje různé kontextové vzory napříč sadami SDK. V .NET připojte vyhledávání založené na Redisu k obecnému TextSearchProvider výrazu RAG. Balíček Agent Framework Redis poskytuje prohledávatelnou paměť a poskytovatele historie konverzací pro Python.
| Pattern | API | sada SDK | Chování |
|---|---|---|---|
| HADR |
TextSearchProvider s vyhledávacím adaptérem Redis |
platforma .NET | Načte relevantní obsah Redis před vyvoláním nebo prostřednictvím vyhledávacího nástroje na vyžádání. |
| Prohledávatelná paměť | RedisContextProvider |
Python | Extrahuje konverzační podrobnosti a načte relevantní kontext pomocí fulltextového nebo hybridního vektorového vyhledávání. |
| Historie konverzací | RedisHistoryProvider |
Python | Zachová a znovu načte přesný přepis zprávy pro relaci. |
Přidání RAG s využitím TextSearchProvider
Pro .NET použijte model nezávislý TextSearchProvider na poskytovateli. Implementujte jeho vyhledávací adaptér s klientem Redis nebo konektorem pro vektorové úložiště vybraným vaší aplikací, namapujte výsledky Redis na TextSearchProvider.TextSearchResulta připojte poskytovatele prostřednictvím AIContextProviders.
Tento přístup podporuje rag založený na Redisu bez nutnosti balíčku zprostředkovatele kontextu rozhraní Agent Framework specifického pro Redis.
Nainstalujte balíček
pip install agent-framework-redis --pre
Přidání prohledávatelné paměti
Tento vzor použijte, když by měl agent odvolat vybrané relevantní informace, a ne přehrát každou předchozí zprávu.
Předpoklady
- Nasazení Redis s podporou RediSearch, jako je Redis Stack nebo kompatibilní spravovaná služba.
- Projekt Microsoft Foundry a nasazení modelu pro ukázkového agenta.
- Zprostředkovatel vkládání, když povolíte hybridní vektorové vyhledávání.
Konfigurace prohledávatelné paměti
agent_idPoužívejte application_ida user_id rozdělte vzpomínky. Pokud chcete hybridní načtení, přidejte vektorizátor Redis a nastavení vektorového pole.
# 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",
)
Připojení paměti k agentu
Přidejte zprostředkovatele do context_providerssouboru . Poskytovatel ukládá konverzační podrobnosti po spuštění a zobrazí relevantní kontext před pozdějším spuštěním.
# 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)
Zachování historie konverzací
Tento vzor použijte, když relace musí obnovit úplný přepis po restartování aplikace nebo v jiné instanci.
Předpoklady
- Nasazení Redis je dostupné prostřednictvím
REDIS_URL. - Uživatelé protokolu TLS a ověření uživatelé Redis pro produkční nasazení
Připojit RedisHistoryProvider přes context_providers. Poskytovatel ukládá zprávy pro relaci a může omezit počet zachovaných zpráv.
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}")
Použijte stabilní ID relace a zachovají serializované AgentSession v důvěryhodném úložišti aplikací, když klienti musí po restartování procesu obnovit stejnou logickou konverzaci.
Note
Integrace zprostředkovatele kontextu Redis není aktuálně zdokumentovaná pro Agent Framework Go. Nejnovější stav najdete v úložišti Agent Framework Go .
Důležité informace o produkčním prostředí
- Odvozujte obory tenanta, vyhledávání, paměti a relací z ověřené identity aplikace, nikoli z výstupu modelu.
- Používejte protokol TLS, ověřování Redis a izolaci sítě.
- Použijte samostatné předpony klíčů nebo nasazení, u kterých je vyžaduje izolace tenanta.
- Nakonfigurujte trvalost, zálohy, uchovávání a vyřazení pro požadovanou odolnost.
- Zacházet s načtenou pamětí jako s nedůvěryhodným vstupem a zmírnit nepřímé injektáže výzvy.
- Redact sensitive content before persisting messages or indexing searchable content.
Další kroky
Jděte hlouběji: