Commit 80b1a8b6 authored by shRabbit's avatar shRabbit
Browse files

测试模型从配置项读取

parent 227b18e9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ namespace NoCost.Controllers.v1;

[ApiController]
[Route("[controller]")]
public class ModelsController : ControllerBase
public class ModelsController(Models models) : ControllerBase
{
    
    public ActionResult<>
}
 No newline at end of file

src/NoCost/Modal.cs

0 → 100644
+10 −0
Original line number Diff line number Diff line
namespace NoCost;

[Flags]
public enum Modal
{
    Text  = 1 << 0,
    Image = 1 << 1,
    Audio = 1 << 2,
    Video = 1 << 3,
}
 No newline at end of file

src/NoCost/Models.cs

0 → 100644
+16 −0
Original line number Diff line number Diff line
namespace NoCost;

public class Models
{
    public Dictionary<string, ModelItem> Map { get; set; } = [];
}

public record ModelItem
{
    public required string Model { get; init; }
    public required string Uri { get; init; }
    public int Priority { get; init; }
    public int SmartLevel { get; init; }
    public required string Key { get; init; }
    public Modal Modal { get; init; }
}
 No newline at end of file
+31 −0
Original line number Diff line number Diff line
@@ -12,6 +12,37 @@ public class Program
        // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
        builder.Services.AddOpenApi();

        var models = new Models();
        var cfg = builder.Configuration.GetSection("ModelsConfig");

        foreach (var val in cfg.GetChildren())
        {
            var key = val["Key"]!;

            if (key.StartsWith("env:"))
            {
                var env = key.Trim("env:").ToString();
                Console.WriteLine("find env: " + env);
                key = Environment.GetEnvironmentVariable(env) ?? throw new ArgumentException("env:key not found");
            }
            
            var md = new ModelItem
            {
                Key        = key,
                Model       = val["Model"]!,
                Priority   = int.Parse(val["Priority"]!),
                SmartLevel = int.Parse(val["SmartLevel"]!),
                Uri        = val["Uri"]!,
                Modal      = Enum.Parse<Modal>(val["Modal"]!)
            };

            Console.WriteLine(md);

            models.Map.Add(md.Model, md);
        }
        
        builder.Services.AddSingleton(models);

        var app = builder.Build();

        // Configure the HTTP request pipeline.
+4 −2
Original line number Diff line number Diff line
@@ -9,8 +9,10 @@
  "BaseUrl": "",
  "ModelsConfig": [
    {
      "Model": "",
      "Uri": "",
      "Model": "nvidia/nemotron-3-ultra-550b-a55b:free",
      "Uri": "https://openrouter.ai/api/v1/chat/completions",
      "Key": "env:OPENROUTER_API_KEY",
      "Modal": "Text",
      "Priority": 0,
      "SmartLevel": 0
    }