75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
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
|
|
); |