mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-05 00:47:21 +00:00
Added a way to read what the AI received from your sources (#1100)
Co-authored-by: Thorsten Sommer <SommerEngineering@users.noreply.github.com>
This commit is contained in:
1 parent
e0d8e18f34
commit
cbc4ce5413
229 files changed
+12739
-1269
No files matched your search
@@ -0,0 +1,48 @@
|
||||
using System.Text;
|
||||
|
||||
namespace AIStudio.Tools.RAG;
|
||||
|
||||
/// <summary>
|
||||
/// A retrieval context as the AI receives it: filtered for prompt injections, written out, and
|
||||
/// ready to be numbered.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Made by IRetrievalContextExtensions.PrepareForModelAsync. Which number a context gets depends on
|
||||
/// which contexts the caller hands on in the end, so the header is written only then, see
|
||||
/// ToMarkdown. The app writes it itself, which is why it needs no filter.
|
||||
/// </remarks>
|
||||
/// <param name="Context">The context as the data source delivered it.</param>
|
||||
/// <param name="Body">What the AI is told about the context below its header: the filtered description, then the filtered content.</param>
|
||||
/// <param name="Sources">The sources the context lends to the answer, which may be none.</param>
|
||||
/// <param name="Passage">What the user is shown of the context, or null when the context has no source to list it under.</param>
|
||||
public sealed record PreparedRetrievalContext(IRetrievalContext Context, string Body, IReadOnlyList<Source> Sources, SourcePassage? Passage)
|
||||
{
|
||||
/// <summary>
|
||||
/// Writes what the AI is told about the context, headed by its number.
|
||||
/// </summary>
|
||||
/// <param name="index">The number of the context among all of them, or null when it stands alone.</param>
|
||||
/// <param name="numTotalRetrievalContexts">How many contexts there are, or null when that is unknown.</param>
|
||||
/// <returns>The context as Markdown, ending with an empty line to set it apart from the next one.</returns>
|
||||
public string ToMarkdown(int? index = null, int? numTotalRetrievalContexts = null)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
switch (index)
|
||||
{
|
||||
case > 0 when numTotalRetrievalContexts is null:
|
||||
sb.AppendLine($"# Retrieval context {index}");
|
||||
break;
|
||||
|
||||
case > 0 when numTotalRetrievalContexts > 0:
|
||||
sb.AppendLine($"# Retrieval context {index} of {numTotalRetrievalContexts}");
|
||||
break;
|
||||
|
||||
default:
|
||||
sb.AppendLine("# Retrieval context");
|
||||
break;
|
||||
}
|
||||
|
||||
sb.Append(this.Body);
|
||||
sb.AppendLine();
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user