Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Redis unterstützt unterschiedliche Kontextmuster über SDKs hinweg. Verbinden Sie in .NET die Redis-gestützte Suche mit der generischen TextSearchProvider für RAG. Das Agent Framework Redis-Paket stellt durchsuchbare Speicheranbieter und Anbieter für den Konversationsverlauf für Python bereit.
| Muster | API | SDK | Behavior |
|---|---|---|---|
| RAG |
TextSearchProvider mit einem Redis-Suchadapter |
.NET | Ruft relevante Redis-Inhalte vor dem Aufruf oder über ein On-Demand-Suchtool ab. |
| Durchsuchbarer Arbeitsspeicher | RedisContextProvider |
Python | Extrahiert Unterhaltungsdetails und ruft den relevanten Kontext mit Volltext- oder Hybridvektorsuche ab. |
| Konversationsverlauf | RedisHistoryProvider |
Python | Speichert das exakte Transkript der Nachrichten für eine Sitzung dauerhaft und lädt es erneut. |
RAG mit TextSearchProvider hinzufügen
Verwenden Sie das anbieterunabhängige TextSearchProvider Muster für .NET. Implementieren Sie den Suchadapter mit dem von Ihrer Anwendung ausgewählten Redis-Client oder Vektorspeicher-Connector, bilden Sie die Redis-Ergebnisse auf TextSearchProvider.TextSearchResult ab und binden Sie den Anbieter über AIContextProviders an.
Dieser Ansatz unterstützt Redis-unterstützte RAG, ohne dass ein Redis-spezifisches Agent Framework-Kontextanbieterpaket erforderlich ist.
Installiere das Paket
pip install agent-framework-redis --pre
Hinzufügen von durchsuchbarem Arbeitsspeicher
Verwenden Sie dieses Muster, wenn ein Agent ausgewählte relevante Informationen zurückrufen soll, anstatt jede vorherige Nachricht wiederzugeben.
Voraussetzungen
- Eine Redis-Bereitstellung mit RediSearch-Unterstützung, z. B. Redis Stack oder ein kompatibler verwalteter Dienst.
- Ein Microsoft Foundry-Projekt und Modellbereitstellung für den Beispiel-Agent.
- Einbettungsanbieter, wenn Sie die Hybridvektorsuche aktivieren.
Konfigurieren des durchsuchbaren Speichers
Verwenden Sie application_id, agent_id und user_id zum Partitionieren von Speicherbereichen. Fügen Sie einen Redis-Vektorizer und Vektorfeldeinstellungen hinzu, wenn Sie einen Hybridabruf wünschen.
# 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",
)
Anfügen von Arbeitsspeicher an einen Agent
Fügen Sie den Anbieter zu context_providers hinzu. Der Anbieter speichert nach einem Lauf Details aus Unterhaltungen und stellt vor späteren Läufen relevanten Kontext bereit.
# 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)
Konversationsverlauf beibehalten
Verwenden Sie dieses Muster, wenn eine Sitzung das vollständige Transkript nach einem Neustart der Anwendung oder in einer anderen Instanz wiederherstellen muss.
Voraussetzungen
- Eine Redis-Bereitstellung, die über
REDIS_URLerreichbar ist. - TLS und authentifizierte Redis-Benutzer für Produktivbereitstellungen.
Anhängen RedisHistoryProvider bis context_providers. Der Anbieter speichert Nachrichten für die Sitzung und kann die Anzahl der aufbewahrten Nachrichten einschränken.
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}")
Verwenden Sie eine stabile Sitzungs-ID und speichern Sie die serialisierte Darstellung AgentSession im vertrauenswürdigen Anwendungsspeicher, wenn Clients dieselbe logische Konversation nach einem Prozessneustart fortsetzen müssen.
Note
Die Integration des Redis-Kontextanbieters ist derzeit nicht für Agent Framework Go dokumentiert. Den neuesten Status finden Sie im Agent Framework Go-Repository .
Produktionsüberlegungen
- Leiten Sie Mandanten-, Such-, Speicher- und Sitzungsbereiche aus der authentifizierten Anwendungsidentität ab, nicht aus der Ausgabe des Modells.
- Verwenden Sie TLS, Redis-Authentifizierung und Netzwerkisolation.
- Verwenden Sie separate Schlüsselpräfixe oder Bereitstellungen, bei denen die Mandantenisolation erforderlich ist.
- Konfigurieren Sie Persistenz, Sicherungen, Aufbewahrung und Entfernung für die erforderliche Haltbarkeit.
- Behandeln Sie abgerufene Speicherinhalte als nicht vertrauenswürdige Eingabe und schwächen Sie indirekte Prompt-Injection ab.
- Sensible Inhalte vor dem dauerhaften Speichern von Nachrichten oder dem Indizieren durchsuchbarer Inhalte unkenntlich machen.
Nächste Schritte
Gehen Sie tiefer: