mirror of
https://github.com/marcominerva/SqlDatabaseVectorSearch.git
synced 2026-06-20 12:23:10 +00:00
Add new endpoints and update README with details
Updated README.md to document new `/api/documents`, `/api/ask`, and `/api/ask-streaming` endpoints, including features like conversation history, token usage, and response streaming. Enhanced Program.cs by adding new endpoints for asking questions and streaming responses, with additional metadata. Updated `documentsApiGroup` to include new document management endpoints.
This commit is contained in:
@@ -96,6 +96,36 @@ app.UseSwaggerUI(options =>
|
||||
options.SwaggerEndpoint("/openapi/v1.json", builder.Environment.ApplicationName);
|
||||
});
|
||||
|
||||
app.MapPost("/api/ask", async (Question question, VectorSearchService vectorSearchService,
|
||||
[Description("If true, the question will be reformulated taking into account the context of the chat identified by the given ConversationId.")] bool reformulate = true) =>
|
||||
{
|
||||
var response = await vectorSearchService.AskQuestionAsync(question, reformulate);
|
||||
return TypedResults.Ok(response);
|
||||
})
|
||||
.WithSummary("Asks a question")
|
||||
.WithDescription("The question will be reformulated taking into account the context of the chat identified by the given ConversationId.")
|
||||
.WithTags("Ask");
|
||||
|
||||
app.MapPost("/api/ask-streaming", (Question question, VectorSearchService vectorSearchService,
|
||||
[Description("If true, the question will be reformulated taking into account the context of the chat identified by the given ConversationId.")] bool reformulate = true) =>
|
||||
{
|
||||
async IAsyncEnumerable<QuestionResponse> Stream()
|
||||
{
|
||||
// Requests a streaming response.
|
||||
var responseStream = vectorSearchService.AskStreamingAsync(question, reformulate);
|
||||
|
||||
await foreach (var delta in responseStream)
|
||||
{
|
||||
yield return delta;
|
||||
}
|
||||
}
|
||||
|
||||
return Stream();
|
||||
})
|
||||
.WithSummary("Asks a question and gets the response as streaming")
|
||||
.WithDescription("The question will be reformulated taking into account the context of the chat identified by the given ConversationId.")
|
||||
.WithTags("Ask");
|
||||
|
||||
var documentsApiGroup = app.MapGroup("/api/documents").WithTags("Documents");
|
||||
|
||||
documentsApiGroup.MapGet(string.Empty, async (DocumentService documentService) =>
|
||||
@@ -147,34 +177,4 @@ documentsApiGroup.MapPost(string.Empty, async (IFormFile file, VectorSearchServi
|
||||
.WithSummary("Uploads a document")
|
||||
.WithDescription("Uploads a document to SQL Database and saves its embedding using the native VECTOR type. The document will be indexed and used to answer questions. Currently, PDF, DOCX and TXT files are supported.");
|
||||
|
||||
app.MapPost("/api/ask", async (Question question, VectorSearchService vectorSearchService,
|
||||
[Description("If true, the question will be reformulated taking into account the context of the chat identified by the given ConversationId.")] bool reformulate = true) =>
|
||||
{
|
||||
var response = await vectorSearchService.AskQuestionAsync(question, reformulate);
|
||||
return TypedResults.Ok(response);
|
||||
})
|
||||
.WithSummary("Asks a question")
|
||||
.WithDescription("The question will be reformulated taking into account the context of the chat identified by the given ConversationId.")
|
||||
.WithTags("Ask");
|
||||
|
||||
app.MapPost("/api/ask-streaming", (Question question, VectorSearchService vectorSearchService,
|
||||
[Description("If true, the question will be reformulated taking into account the context of the chat identified by the given ConversationId.")] bool reformulate = true) =>
|
||||
{
|
||||
async IAsyncEnumerable<QuestionResponse> Stream()
|
||||
{
|
||||
// Requests a streaming response.
|
||||
var responseStream = vectorSearchService.AskStreamingAsync(question, reformulate);
|
||||
|
||||
await foreach (var delta in responseStream)
|
||||
{
|
||||
yield return delta;
|
||||
}
|
||||
}
|
||||
|
||||
return Stream();
|
||||
})
|
||||
.WithSummary("Asks a question and gets the response as streaming")
|
||||
.WithDescription("The question will be reformulated taking into account the context of the chat identified by the given ConversationId.")
|
||||
.WithTags("Ask");
|
||||
|
||||
app.Run();
|
||||
Reference in New Issue
Block a user