Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Redis поддерживает различные шаблоны контекста в пакетах SDK. В .NET подключите поиск Redis к универсальному TextSearchProvider шаблону для RAG. Пакет Redis agent Framework предоставляет поставщики памяти и журнала бесед для поиска Python.
| Pattern | API | SDK | Behavior |
|---|---|---|---|
| ТРЯПКА |
TextSearchProvider с адаптером поиска Redis |
.NET | Извлекает соответствующее содержимое Redis перед вызовом или с помощью средства поиска по запросу. |
| Память, доступная для поиска | RedisContextProvider |
Python | Извлекает сведения о беседах и извлекает соответствующий контекст с полным текстом или гибридным векторным поиском. |
| История беседы | RedisHistoryProvider |
Python | Сохраняет и перезагружает точный расшифровку сообщений для сеанса. |
Добавление RAG с помощью TextSearchProvider
Используйте шаблон независимо от TextSearchProvider поставщика для .NET. Реализуйте свой адаптер поиска с помощью клиента Redis или соединителя векторного хранилища, выбранного приложением, сопоставите результаты TextSearchProvider.TextSearchResultRedis и подключите поставщика через AIContextProviders.
Этот подход поддерживает RAG с поддержкой Redis, не требуя пакета контекста агента Redis.
Установите пакет
pip install agent-framework-redis --pre
Добавление памяти для поиска
Используйте этот шаблон, если агент должен отозвать выбранные соответствующие сведения, а не воспроизвести каждое предыдущее сообщение.
Необходимые условия
- Развертывание Redis с поддержкой RediSearch, например Redis Stack или совместимой управляемой службой.
- Развертывание проекта и модели Microsoft Foundry для примера агента.
- Поставщик внедрения при включении гибридного векторного поиска.
Настройка памяти с возможностью поиска
Используйте application_id, agent_idа также user_id для секционирования памяти. Добавьте векторизатор Redis и параметры векторного поля, если требуется гибридное извлечение.
# 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",
)
Подключение памяти к агенту
Добавьте поставщика context_providersв . Поставщик сохраняет сведения о беседах после выполнения и отображает соответствующий контекст до последующих запусков.
# 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)
Сохранение журнала бесед
Используйте этот шаблон, когда сеанс должен восстановить полную расшифровку после перезапуска приложения или другого экземпляра.
Необходимые условия
- Доступное развертывание
REDIS_URLRedis. - TLS и прошедшие проверку подлинности пользователи Redis для рабочих развертываний.
Присоединение RedisHistoryProvider через context_providers. Поставщик сохраняет сообщения для сеанса и может ограничить количество сохраненных сообщений.
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}")
Используйте стабильный идентификатор сеанса и сохраните сериализованный AgentSession в доверенном хранилище приложений, когда клиенты должны возобновить ту же логическую беседу после перезапуска процесса.
Замечание
Интеграция контекста Redis с поставщиком в настоящее время не описана для Agent Framework Go. Сведения о последнем состоянии см. в репозитории Agent Framework Go .
Факторы, учитываемые при производстве
- Производный клиент, поиск, память и области сеансов от удостоверения приложения, прошедшего проверку подлинности, а не выходных данных модели.
- Используйте tls, проверку подлинности Redis и сетевую изоляцию.
- Используйте отдельные префиксы ключей или развертывания, в которых требуется изоляция клиента.
- Настройте сохраняемость, резервные копии, хранение и вытеснение для требуемой устойчивости.
- Обрабатывать полученную память как ненадежные входные данные и устранять непрямую внедрение запросов.
- Редактировать конфиденциальное содержимое перед сохранением сообщений или индексированием содержимого, доступным для поиска.
Дальнейшие действия
Вернитесь глубже: