< Summary

Information
Class: Intentum.AI.Caching.CachedEmbeddingProvider
Assembly: Intentum.AI
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.AI/Caching/CachedEmbeddingProvider.cs
Line coverage
65%
Covered lines: 15
Uncovered lines: 8
Coverable lines: 23
Total lines: 45
Line coverage: 65.2%
Branch coverage
50%
Covered branches: 4
Total branches: 8
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)50%44100%
Embed(...)100%22100%
EmbedAsync()0%220%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.AI/Caching/CachedEmbeddingProvider.cs

#LineLine coverage
 1using Intentum.AI.Embeddings;
 2
 3namespace Intentum.AI.Caching;
 4
 5/// <summary>
 6/// Wrapper around an embedding provider that adds caching functionality.
 7/// </summary>
 8public sealed class CachedEmbeddingProvider : IIntentEmbeddingProvider
 9{
 10    private readonly IIntentEmbeddingProvider _innerProvider;
 11    private readonly IEmbeddingCache _cache;
 12
 13    /// <summary>
 14    /// Creates a cached embedding provider.
 15    /// </summary>
 216    public CachedEmbeddingProvider(
 217        IIntentEmbeddingProvider innerProvider,
 218        IEmbeddingCache cache)
 219    {
 220        _innerProvider = innerProvider ?? throw new ArgumentNullException(nameof(innerProvider));
 221        _cache = cache ?? throw new ArgumentNullException(nameof(cache));
 222    }
 23
 24    public IntentEmbedding Embed(string behaviorKey)
 625    {
 626        var cached = _cache.Get(behaviorKey);
 627        if (cached != null)
 328            return cached;
 29
 330        var embedding = _innerProvider.Embed(behaviorKey);
 331        _cache.Set(behaviorKey, embedding);
 332        return embedding;
 633    }
 34
 35    public async Task<IntentEmbedding> EmbedAsync(string behaviorKey, CancellationToken cancellationToken = default)
 036    {
 037        var cached = _cache.Get(behaviorKey);
 038        if (cached != null)
 039            return cached;
 40
 041        var embedding = await _innerProvider.EmbedAsync(behaviorKey, cancellationToken);
 042        _cache.Set(behaviorKey, embedding);
 043        return embedding;
 044    }
 45}