1
0

feat: Introduce an OpenAI-compatible client to replace the Groq-specific client and enable multiple LLM providers.

This commit is contained in:
2026-02-28 16:09:41 +01:00
parent 3ceecbe5ee
commit 4e04cc6042
7 changed files with 104 additions and 57 deletions

View File

@@ -2,7 +2,7 @@ using System.Text.Json.Serialization;
namespace Toak.Api.Models;
public class LlamaRequestMessage
public class OpenAiRequestMessage
{
[JsonPropertyName("role")]
public string Role { get; set; } = string.Empty;
@@ -10,43 +10,45 @@ public class LlamaRequestMessage
public string Content { get; set; } = string.Empty;
}
public class LlamaRequest
public class OpenAiRequest
{
[JsonPropertyName("model")]
public string Model { get; set; } = "llama-3.1-8b-instant";
[JsonPropertyName("messages")]
public LlamaRequestMessage[] Messages { get; set; } = Array.Empty<LlamaRequestMessage>();
public OpenAiRequestMessage[] Messages { get; set; } = Array.Empty<OpenAiRequestMessage>();
[JsonPropertyName("temperature")]
public double Temperature { get; set; } = 0.0;
[JsonPropertyName("stream")]
public bool? Stream { get; set; }
[JsonPropertyName("reasoning_effort")]
public string? ReasoningEffort { get; set; }
}
public class LlamaResponse
public class OpenAiResponse
{
[JsonPropertyName("choices")]
public LlamaChoice[] Choices { get; set; } = Array.Empty<LlamaChoice>();
public OpenAiChoice[] Choices { get; set; } = Array.Empty<OpenAiChoice>();
}
public class LlamaChoice
public class OpenAiChoice
{
[JsonPropertyName("message")]
public LlamaRequestMessage Message { get; set; } = new();
public OpenAiRequestMessage Message { get; set; } = new();
}
public class LlamaStreamResponse
public class OpenAiStreamResponse
{
[JsonPropertyName("choices")]
public LlamaStreamChoice[] Choices { get; set; } = Array.Empty<LlamaStreamChoice>();
public OpenAiStreamChoice[] Choices { get; set; } = Array.Empty<OpenAiStreamChoice>();
}
public class LlamaStreamChoice
public class OpenAiStreamChoice
{
[JsonPropertyName("delta")]
public LlamaStreamDelta Delta { get; set; } = new();
public OpenAiStreamDelta Delta { get; set; } = new();
}
public class LlamaStreamDelta
public class OpenAiStreamDelta
{
[JsonPropertyName("content")]
public string? Content { get; set; }