use async methods
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia dal RedisChatMessageHistory.cs collegato, intorno alla riga 50, e analizza il contratto BaseChatMessageHistory. Determina come il recupero dei messaggi possa usare i metodi asincroni di StackExchange.Redis preservando l’ordine e la serializzazione; il lavoro è completato quando il percorso di lettura della cronologia Redis è asincrono senza modificare il comportamento di append o clear.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
/ </summary>
/ Append the message to the record in Redis
/ </summary>
/ Clear session memory from Redis
/ </summary>
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using LangChain.Memory;
using LangChain.Providers;
using StackExchange.Redis;
namespace LangChain.Databases;
/// <summary>
/// Chat message history stored in a Redis database.
/// </summary>
[RequiresDynamicCode("Requires dynamic code.")]
[RequiresUnreferencedCode("Requires unreferenced code.")]
public class RedisChatMessageHistory : BaseChatMessageHistory
{
public TimeSpan? Ttl { get; set; }
private readonly string _sessionId;
private readonly string _keyPrefix;
private readonly Lazy<ConnectionMultiplexer> _multiplexer;
/// <inheritdoc />
public RedisChatMessageHistory(
string sessionId,
string connectionString,
string keyPrefix = "message_store:",
TimeSpan? ttl = null)
{
_sessionId = sessionId;
_keyPrefix = keyPrefix;
Ttl = ttl;
_multiplexer = new Lazy<ConnectionMultiplexer>(
() =>
{
var multiplexer = ConnectionMultiplexer.Connect(connectionString);
return multiplexer;
},
LazyThreadSafetyMode.ExecutionAndPublication);
}
/// <summary>
/// Construct the record key to use
/// </summary>
private string Key => _keyPrefix + _sessionId;
/// <summary>
/// Retrieve the messages from Redis
/// TODO: use async methods
/// </summary>
public override IReadOnlyList<Message> Messages
{
get
{
var database = _multiplexer.Value.GetDatabase();
var values = database.ListRange(Key, start: 0, stop: -1);
var messages = values.Select(v => JsonSerializer.Deserialize<Message>(v.ToString())).Reverse();
return messages.ToList();
}
}
/// <summary>
/// Append the message to the record in Redis
/// </summary>
public override async Task AddMessage(Message message)
{
var database = _multiplexer.Value.GetDatabase();
await database.ListLeftPushAsync(Key, JsonSerializer.Serialize(message)).ConfigureAwait(false);
if (Ttl.HasValue)
{
await database.KeyExpireAsync(Key, Ttl).ConfigureAwait(false);
}
}
/// <summary>
/// Clear session memory from Redis
/// </summary>
public override async Task Clear()
{
var database = _multiplexer.Value.GetDatabase();
await database.KeyDeleteAsync(Key).ConfigureAwait(false);
}
}
- Lingua principale
- C#
- Stelle
- 12
- Fork
- 9
- Merge medio
- 1g 14h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di tryAGI/LangChain.Databases
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
tryAGI/LangChain.Databases#178 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
tryAGI/LangChain.Databases#84 ·
I maintainer di solito rispondono entro 1 giorno
-
Weaviate does not workApertabug dependencies documentation help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
tryAGI/LangChain.Databases#53 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
review way to map metadataApertatodo
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
tryAGI/LangChain.Databases#4 ·
I maintainer di solito rispondono entro 1 giorno
-
todo
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
tryAGI/LangChain.Databases#3 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di tryAGI/LangChain.Databases
Issue simili
-
Wrong values of Kernel32.FileShare.Delete and Kernel32.FileAttributes.PosixSemanticsForse già presa @ElectLive l’ha presa oggi. Apertabug good first issue help wanted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
ForNeVeR/TruePath#241 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
files-community/Files#19047 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
area:frontend bug FE hotspot:css P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
klasolsson81/jobbliggaren#2175 ·
I maintainer di solito rispondono entro 1 giorno
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 71/100
elsa-workflows/elsa-foundation#2965 ·
I maintainer di solito rispondono entro 1 giorno