use async methods
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu với RedisChatMessageHistory.cs được liên kết, ở khoảng dòng 50, và kiểm tra contract của BaseChatMessageHistory. Xác định cách việc truy xuất tin nhắn có thể sử dụng các phương thức bất đồng bộ của StackExchange.Redis trong khi vẫn giữ nguyên thứ tự và việc tuần tự hóa; hoàn tất khi đường dẫn đọc lịch sử Redis là bất đồng bộ mà không thay đổi hành vi append hoặc clear.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
/ </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);
}
}
- Ngôn ngữ chính
- C#
- Star
- 12
- Fork
- 9
- Merge trung bình
- 1 ngày 14 giờ
- Pull request đã merge (30 ngày)
- 5
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của tryAGI/LangChain.Databases
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
tryAGI/LangChain.Databases#178 · 1 bình luận ·
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
-
Weaviate does not workĐang mởbug dependencies documentation help wanted
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
tryAGI/LangChain.Databases#53 · 6 bình luận ·
-
review way to map metadataĐang mởtodo
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
todo
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Tất cả issue của tryAGI/LangChain.Databases
Issue tương tự
-
devtools
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
clawsweeper:fix-shape-clear clawsweeper:needs-maintainer-review clawsweeper:no-new-fix-pr clawsweeper:not-repro-on-main impact:ux-release-blocker issue-rating: 🦪 silver shellfish P0
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
openclaw/openclaw-windows-node#1843 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
kind:ux size:S type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
elsa-workflows/elsa-foundation#3256 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Revit selector reads process ids 2000-2099 as years (flaky AgentClientTests.AYearOrAProcessIdSelectsTheHost)Có thể đã có người làm @Wurschdhaud đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
pyrevitlabs/pyRevit#3817 ·
Maintainer thường phản hồi trong vòng 1 ngày