From fabd3a7edf00989c6f24843e83ad64473f95f65d Mon Sep 17 00:00:00 2001 From: Demis Bellot Date: Tue, 31 Dec 2024 15:30:15 +0800 Subject: [PATCH] Add deepseek v3 --- AiServer.Tests/TestUtils.cs | 4 ++-- AiServer/wwwroot/img/models/deepseek-3.jpg | Bin 0 -> 16273 bytes AiServer/wwwroot/lib/data/ai-models.json | 10 ++++++++++ AiServer/wwwroot/lib/data/ai-types.json | 5 +++-- 4 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 AiServer/wwwroot/img/models/deepseek-3.jpg diff --git a/AiServer.Tests/TestUtils.cs b/AiServer.Tests/TestUtils.cs index 60b719c..800f41c 100644 --- a/AiServer.Tests/TestUtils.cs +++ b/AiServer.Tests/TestUtils.cs @@ -133,7 +133,7 @@ public static JsonApiClient CreateSystemClient() ["mistral-nemo:12b"] = "mistralai/mistral-nemo", ["gemma:7b"] = "google/gemma-7b-it", ["gemma2:9b"] = "google/gemma-2-9b-it", - ["gemma2:27"] = "google/gemma-2-27b-it", + ["gemma2:27b"] = "google/gemma-2-27b-it", ["mixtral:8x7b"] = "mistralai/mixtral-8x7b-instruct", ["mixtral:8x22b"] = "mistralai/mixtral-8x22b-instruct", ["llama3:8b"] = "meta-llama/llama-3-8b-instruct", @@ -313,7 +313,7 @@ public static JsonApiClient CreateSystemClient() [ // new() { Model = "gemma:7b", }, new() { Model = "gemma2:9b", }, - new() { Model = "gemma2:27", }, + new() { Model = "gemma2:27b", }, new() { Model = "mixtral:8x22b", }, new() { Model = "llama3:8b" }, new() { Model = "llama3:70b" }, diff --git a/AiServer/wwwroot/img/models/deepseek-3.jpg b/AiServer/wwwroot/img/models/deepseek-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c0640504a054927e8bf543d4965c769351e973e GIT binary patch literal 16273 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