Redis

Redis, SDK'lar arasında farklı bağlam desenlerini destekler. .NET'da Redis destekli aramayı RAG için genel TextSearchProvider aramaya bağlayın. Agent Framework Redis paketi, Python için aranabilir bellek ve konuşma geçmişi sağlayıcıları sağlar.

Pattern API SDK Davranış
PAÇAVRA TextSearchProvider Redis arama bağdaştırıcısı ile .NET Çağırmadan önce veya isteğe bağlı arama aracı aracılığıyla ilgili Redis içeriğini alır.
Aranabilir bellek RedisContextProvider Python Konuşma ayrıntılarını ayıklar ve tam metin veya karma vektör araması ile ilgili bağlamı alır.
Konuşma geçmişi RedisHistoryProvider Python Oturum için tam ileti dökümünü kalıcı hale gelip yeniden yükler.

ILE RAG ekleme TextSearchProvider

.NET için sağlayıcıdan bağımsız TextSearchProvider deseni kullanın. Arama bağdaştırıcısını uygulamanız tarafından seçilen Redis istemcisi veya vektör deposu bağlayıcısıyla uygulayın, Redis sonuçlarını ile TextSearchProvider.TextSearchResulteşleyin ve sağlayıcıyı aracılığıyla AIContextProvidersekleyin.

Bu yaklaşım, Redis'e özgü Agent Framework bağlam sağlayıcısı paketi gerektirmeden Redis destekli RAG'i destekler.

Paketi yükle

pip install agent-framework-redis --pre

Aranabilir bellek ekleme

Bir aracı önceki her iletiyi yeniden oynatmak yerine seçili ilgili bilgileri geri çekmesi gerektiğinde bu düzeni kullanın.

Prerequisites

  • Redis Stack veya uyumlu yönetilen hizmet gibi RediSearch desteğine sahip bir Redis dağıtımı.
  • Örnek aracı için bir Microsoft Dökümhane projesi ve model dağıtımı.
  • Karma vektör aramasını etkinleştirdiğinizde bir ekleme sağlayıcısı.

Aranabilir belleği yapılandırma

Bellekleri bölümlendirmek için , agent_idve user_id kullanınapplication_id. Karma alma istediğinizde Redis vektörleştiricisi ve vektör alanı ayarları ekleyin.

# 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",
)

Aracıya bellek ekleme

Sağlayıcıyı öğesine context_providersekleyin. Sağlayıcı, bir çalıştırmadan sonra konuşma ayrıntılarını depolar ve daha sonra çalıştırmadan önce ilgili bağlamı ortaya çıkartır.

# 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)

Konuşma geçmişini kalıcı hale

Bir uygulama yeniden başlatıldıktan sonra veya başka bir örnekte oturumun tam transkripti kurtarması gerektiğinde bu düzeni kullanın.

Prerequisites

  • aracılığıyla REDIS_URLulaşılabilen bir Redis dağıtımı.
  • Üretim dağıtımları için TLS ve kimliği doğrulanmış Redis kullanıcıları.

aracılığıyla context_providersekleyinRedisHistoryProvider. Sağlayıcı oturum için iletileri depolar ve tutulan ileti sayısını sınırlayabilir.

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}")

İşlem yeniden başlatıldıktan sonra istemcilerin aynı mantıksal konuşmayı sürdürmesi gerektiğinde kararlı bir oturum kimliği kullanın ve güvenilir uygulama depolama alanında serileştirilmiş AgentSession durumda tutun.

Uyarı

Redis bağlam sağlayıcısı tümleştirmesi şu anda Agent Framework Go için belgelenmemiş. En son durum için bkz. Agent Framework Go deposu .

Üretimle ilgili dikkat edilmesi gerekenler

  • Model çıkışından değil, kimliği doğrulanmış uygulama kimliğinden kiracı, arama, bellek ve oturum kapsamları türetin.
  • TLS, Redis kimlik doğrulaması ve ağ yalıtımı kullanın.
  • Kiracı yalıtımının gerektirdiği ayrı anahtar ön ekleri veya dağıtımları kullanın.
  • Gerekli dayanıklılık için kalıcılığı, yedeklemeleri, saklamayı ve çıkarmayı yapılandırın.
  • Alınan belleği güvenilmeyen giriş olarak kabul edin ve dolaylı istem ekleme özelliğini azaltın.
  • İletileri kalıcı hale getirmeden veya aranabilir içeriği dizine eklemeden önce hassas içeriği yeniden düzenleyin.

Sonraki Adımlar

Daha derine gidin: