initial release

This commit is contained in:
2026-03-18 09:28:14 +01:00
commit 9d4bec7a17
18 changed files with 914 additions and 0 deletions

11
Models/Chunk.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace OpenQuery.Models;
public record Chunk(
string Content,
string SourceUrl,
string? Title = null
)
{
public float[]? Embedding { get; set; }
public float Score { get; set; }
}

15
Models/JsonContexts.cs Normal file
View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
using OpenQuery.Services;
namespace OpenQuery.Models;
[JsonSerializable(typeof(ChatCompletionRequest))]
[JsonSerializable(typeof(ChatCompletionResponse))]
[JsonSerializable(typeof(ChatCompletionChunk))]
[JsonSerializable(typeof(EmbeddingRequest))]
[JsonSerializable(typeof(EmbeddingResponse))]
[JsonSerializable(typeof(SearxngRoot))]
[JsonSerializable(typeof(List<string>))]
internal partial class AppJsonContext : JsonSerializerContext
{
}

View File

@@ -0,0 +1,10 @@
namespace OpenQuery.Models;
public record OpenQueryOptions(
int Chunks,
int Results,
int Queries,
bool Short,
bool Long,
string Question
);

75
Models/OpenRouter.cs Normal file
View File

@@ -0,0 +1,75 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace OpenQuery.Models;
public record ChatCompletionRequest(
[property: JsonPropertyName("model")] string Model,
[property: JsonPropertyName("messages")] List<Message> Messages,
[property: JsonPropertyName("tools")] List<ToolDefinition>? Tools = null,
[property: JsonPropertyName("stream")] bool Stream = false
);
public record Message(
[property: JsonPropertyName("role")] string Role,
[property: JsonPropertyName("content")] string? Content = null,
[property: JsonPropertyName("tool_calls")] List<ToolCall>? ToolCalls = null,
[property: JsonPropertyName("tool_call_id")] string? ToolCallId = null
)
{
public static Message FromTool(string content, string toolCallId) =>
new Message("tool", content, null, toolCallId);
}
public record ToolDefinition(
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("function")] ToolFunction Function
);
public record ToolFunction(
[property: JsonPropertyName("name")] string Name,
[property: JsonPropertyName("description")] string Description,
[property: JsonPropertyName("parameters")] JsonElement Parameters
);
public record ToolCall(
[property: JsonPropertyName("id")] string Id,
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("function")] FunctionCall Function
);
public record FunctionCall(
[property: JsonPropertyName("name")] string Name,
[property: JsonPropertyName("arguments")] string Arguments
);
public record ChatCompletionResponse(
[property: JsonPropertyName("choices")] List<Choice> Choices,
[property: JsonPropertyName("usage")] Usage? Usage = null
);
public record Choice(
[property: JsonPropertyName("message")] Message Message,
[property: JsonPropertyName("finish_reason")] string? FinishReason = null
);
public record Usage(
[property: JsonPropertyName("prompt_tokens")] int PromptTokens,
[property: JsonPropertyName("completion_tokens")] int CompletionTokens,
[property: JsonPropertyName("total_tokens")] int TotalTokens
);
public record EmbeddingRequest(
[property: JsonPropertyName("model")] string Model,
[property: JsonPropertyName("input")] List<string> Input
);
public record EmbeddingResponse(
[property: JsonPropertyName("data")] List<EmbeddingData> Data,
[property: JsonPropertyName("usage")] Usage Usage
);
public record EmbeddingData(
[property: JsonPropertyName("embedding")] float[] Embedding,
[property: JsonPropertyName("index")] int Index
);

13
Models/Searxng.cs Normal file
View File

@@ -0,0 +1,13 @@
using System.Text.Json.Serialization;
namespace OpenQuery.Models;
public record SearxngRoot(
[property: JsonPropertyName("results")] List<SearxngResult> Results
);
public record SearxngResult(
[property: JsonPropertyName("title")] string Title,
[property: JsonPropertyName("url")] string Url,
[property: JsonPropertyName("content")] string Content
);