Compare commits

..

14 Commits
0.5.4 ... 0.5.6

Author SHA1 Message Date
zyxucp
358909892c update deepseek 思考 2025-02-06 11:01:42 +08:00
zyxucp
6c1bc4be04 add deepseek-r1 ollama 2025-02-03 18:37:14 +08:00
zyxucp
431c754f42 Update README.md 2025-01-13 14:29:39 +08:00
zyxucp
f46faa7679 Update README.md 2025-01-13 14:27:33 +08:00
zyxucp
195053cbd7 update 星火 2024-12-17 12:14:33 +08:00
zyxucp
b41d79c247 Merge pull request #108 from itchangc/main
BAAI/bge-reranker-v2-minicpm-layerwise
2024-11-20 14:24:40 +08:00
zhaochang
5acab7a46f todo 2024-11-17 20:12:34 +08:00
zhaochang
5b83c844a1 BAAI/bge-reranker-v2-minicpm-layerwise 2024-11-17 20:11:51 +08:00
token
2325c58092 Update Chats.cs 2024-11-04 05:16:07 +08:00
zyxucp
04d16148b5 add rerank api 2024-10-30 11:13:39 +08:00
zyxucp
f0f14889c7 update docker yml 2024-10-24 15:11:52 +08:00
zyxucp
dedafdd108 fix sk update bug 2024-10-24 15:11:25 +08:00
zyxucp
fad2b4e733 Update docker-compose.yml 2024-10-23 18:05:39 +08:00
zyxucp
032de7a447 Update docker-compose.simple.yml 2024-10-23 18:05:24 +08:00
21 changed files with 230 additions and 28 deletions

View File

@@ -20,7 +20,7 @@
- **Online Search**: AntSK, real-time access to the latest information, ensuring users receive the most timely and relevant data.
- **Model Management**: Adapts and manages integration of different models from different manufacturers, including gguf types supported by **llama.cpp** and models offline running supported by **llamafactory** and **ollama**.
- **Model Management**: Adapts and manages integration of different models from different manufacturers, models offline running supported by **llamafactory** and **ollama**.
- **Domestic Innovation**: AntSK supports domestic models and databases and can run under domestic innovation conditions.
@@ -101,6 +101,7 @@ services:
- D://model:/app/model
networks:
antsk:
external: true
```
Taking this as an example, it means mounting the local D://model folder of Windows into the container /app/model. If so, the model address in your appsettings.json should be configured as

View File

@@ -3,9 +3,9 @@ version: '3.8'
services:
antsk:
container_name: antsk
image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:v0.5.2
image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:v0.5.5
# 如果需要pytorch环境需要使用下面这个镜像镜像比较大
# image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:p0.5.2
# image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:p0.5.5
ports:
- 5000:5000
networks:

View File

@@ -32,9 +32,9 @@ services:
- ./pg/data:/var/lib/postgresql/data
antsk:
container_name: antsk
image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:v0.5.2
image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:v0.5.5
# 如果需要pytorch环境需要使用下面这个镜像镜像比较大
# image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:p0.5.2
# image: registry.cn-hangzhou.aliyuncs.com/xuzeyu91/antsk:p0.5.5
ports:
- 5000:5000
networks:

View File

@@ -29,8 +29,6 @@
<PackageReference Include="Microsoft.SemanticKernel" Version="$(SKVersion)" />
<PackageReference Include="Microsoft.SemanticKernel.Core" Version="$(SKVersion)" />
<PackageReference Include="Microsoft.SemanticKernel.Plugins.Core" Version="$(SKVersion)-alpha" />
<PackageReference Include="Microsoft.KernelMemory.AI.OpenAI" Version="$(KMVersion)" />
<PackageReference Include="Microsoft.KernelMemory.AI.AzureOpenAI" Version="$(KMVersion)" />
<PackageReference Include="Microsoft.KernelMemory.Core" Version="$(KMVersion)" />
<PackageReference Include="Microsoft.KernelMemory.MemoryDb.Postgres" Version="$(KMVersion)" />
<PackageReference Include="Microsoft.KernelMemory.MemoryDb.Qdrant" Version="$(KMVersion)" />

View File

@@ -252,6 +252,53 @@
<param name="history"></param>
<returns></returns>
</member>
<member name="P:AntSK.Domain.Result.Code">
<summary>
错误码0是正常返回异常返回错误码
</summary>
</member>
<member name="P:AntSK.Domain.Result.Data">
<summary>
返回数据
</summary>
</member>
<member name="P:AntSK.Domain.Result.Message">
<summary>
返回信息详情
</summary>
</member>
<member name="M:AntSK.Domain.ResponseResult.Success">
<summary>
执行成功
</summary>
<returns></returns>
</member>
<member name="M:AntSK.Domain.ResponseResult.Success(System.Object,System.String,System.String)">
<summary>
执行成功
</summary>
<param name="data"></param>
<param name="code"></param>
<param name="message"></param>
<returns></returns>
</member>
<member name="M:AntSK.Domain.ResponseResult.Error(System.Object,System.String,System.String)">
<summary>
执行失败
</summary>
<param name="data"></param>
<param name="code"></param>
<param name="message"></param>
<returns></returns>
</member>
<member name="M:AntSK.Domain.ResponseResult.Error(System.String,System.String)">
<summary>
执行失败
</summary>
<param name="code"></param>
<param name="message"></param>
<returns></returns>
</member>
<member name="P:AntSK.Domain.Options.DBConnectionOption.DbType">
<summary>
sqlite连接字符串
@@ -419,7 +466,7 @@
</member>
<member name="P:AntSK.Domain.Repositories.Chats.CreateTime">
<summary>
创建事件
创建时间
</summary>
</member>
<member name="P:AntSK.Domain.Repositories.Chats.FileName">

View File

@@ -18,4 +18,11 @@
public List<string> input { get; set; }
}
public class RerankModel
{
public string modelId { get; set; }
public string query { get; set; }
public string document { get; set; }
}
}

View File

@@ -0,0 +1,85 @@
namespace AntSK.Domain
{
public class Result
{
/// <summary>
/// 错误码0是正常返回异常返回错误码
/// </summary>
public string Code { get; set; } = "0";
/// <summary>
/// 返回数据
/// </summary>
public object Data { get; set; }
/// <summary>
/// 返回信息详情
/// </summary>
public string Message { get; set; }
}
public static class ResponseResult
{
/// <summary>
/// 执行成功
/// </summary>
/// <returns></returns>
public static Result Success()
{
return new Result
{
Data = "",
Code = "0",
Message = "ok"
};
}
/// <summary>
/// 执行成功
/// </summary>
/// <param name="data"></param>
/// <param name="code"></param>
/// <param name="message"></param>
/// <returns></returns>
public static Result Success(this object data, string code = "0", string message = "ok")
{
return new Result
{
Data = data,
Code = code,
Message = message
};
}
/// <summary>
/// 执行失败
/// </summary>
/// <param name="data"></param>
/// <param name="code"></param>
/// <param name="message"></param>
/// <returns></returns>
public static Result Error(this object data, string code, string message)
{
return new Result
{
Data = data,
Code = code,
Message = message
};
}
/// <summary>
/// 执行失败
/// </summary>
/// <param name="code"></param>
/// <param name="message"></param>
/// <returns></returns>
public static Result Error(string code, string message)
{
return new Result
{
Data = "",
Code = code,
Message = message
};
}
}
}

View File

@@ -36,8 +36,16 @@ namespace AntSK.Domain.Domain.Other.Bge
dynamic flagEmbedding = Py.Import("FlagEmbedding");
dynamic model_dir = modelscope.snapshot_download(modelName, revision: "master");
dynamic flagReranker = flagEmbedding.FlagReranker(model_dir, use_fp16: false);
model = flagReranker;
if (modelName == "BAAI/bge-reranker-v2-minicpm-layerwise")
{
dynamic flagReranker = flagEmbedding.LayerWiseFlagLLMReranker(model_dir, use_fp16: true);
model = flagReranker;
}
else
{
dynamic flagReranker = flagEmbedding.FlagReranker(model_dir, use_fp16: true);
model = flagReranker;
}
return model;
}
}
@@ -66,7 +74,15 @@ namespace AntSK.Domain.Domain.Other.Bge
pyList.Append(item.ToPython()); // 将C# string转换为Python对象并添加到PyList中
}
PyObject result = model.compute_score(pyList, normalize: true);
return result.ConvertToString().Trim('[').Trim(']').ConvertToDouble();
//BAAI/bge-reranker-v2-minicpm-layerwise
// https://www.modelscope.cn/models/AI-ModelScope/bge-reranker-v2-m3
//PyList cutoffLayers = new PyList();
//cutoffLayers.Append(new PyInt(8));
//dynamic scores = model.compute_score(pyList, cutoff_layers: cutoffLayers);
return result.ConvertToDouble();
}
catch (Exception ex)
{

View File

@@ -1,4 +1,4 @@
using Microsoft.KernelMemory.AI;
using Microsoft.KernelMemory.AI.OpenAI;
using Python.Runtime;
using Serilog;
using System;

View File

@@ -1,7 +1,7 @@
using AntSK.Domain.Domain.Model.Constant;
using AntSK.Domain.Utils;
using Microsoft.Extensions.Logging;
using Microsoft.KernelMemory.AI;
using Microsoft.KernelMemory.AI.OpenAI;
using Microsoft.KernelMemory.Configuration;
using Microsoft.KernelMemory.DataFormats.Text;
using Microsoft.KernelMemory.Diagnostics;

View File

@@ -3,7 +3,7 @@ using AntSK.Domain.Domain.Model;
using AntSK.Domain.Utils;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Microsoft.KernelMemory.AI;
using Microsoft.KernelMemory.AI.OpenAI;
using Microsoft.KernelMemory.Configuration;
using Microsoft.KernelMemory.DataFormats.Text;
using Microsoft.KernelMemory.Diagnostics;

View File

@@ -29,7 +29,7 @@ namespace AntSK.Domain.Repositories
/// </summary>
public bool IsSend { get; set; } = false;
/// <summary>
/// 创建事件
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }

View File

@@ -24,6 +24,12 @@ deepseek-coder:6.7b
deepseek-coder:33b
deepseek-coder-v2:16b
deepseek-coder-v2:236b
deepseek-r1:1.5b
deepseek-r1:7b
deepseek-r1:8b
deepseek-r1:14b
deepseek-r1:32b
deepseek-r1:70b
phi:2.7b
phi3:mini
phi3:medium

View File

@@ -1,4 +1,5 @@
using AntSK.Domain.Domain.Model.Dto.OpenAPI;
using AntSK.Domain;
using AntSK.Domain.Domain.Model.Dto.OpenAPI;
using AntSK.Domain.Utils;
using AntSK.Services.OpenApi;
using Microsoft.AspNetCore.Mvc;
@@ -22,5 +23,22 @@ namespace AntSK.Controllers
string sk = HttpContext.Request.Headers["Authorization"].ConvertToString();
await _openApiService.Chat(model, sk, HttpContext);
}
[HttpPost]
[Route("api/v1/rerank")]
public async Task<IActionResult> Rerank(RerankModel model)
{
try
{
string sk = HttpContext.Request.Headers["Authorization"].ConvertToString();
var result = await _openApiService.Rerank(model, sk, HttpContext);
return Ok(result.Success());
}
catch (Exception ex)
{
return Ok(ResponseResult.Error("1001",ex.Message));
}
}
}
}

View File

@@ -126,6 +126,11 @@
.ant-card-body {
height: 90% !important;
}
.think {
color: gray;
font-style: italic;
}
</style>
@code {

View File

@@ -329,7 +329,7 @@ namespace AntSK.Pages.ChatPage.Components
await foreach (var content in chatResult)
{
rawContent.Append(content.ConvertToString());
info.Context = Markdown.ToHtml(rawContent.ToString());
info.Context = Markdown.ToHtml(rawContent.ToString().Replace("<think>", "<div class=\"think\">").Replace("</think>", "</div>"));
await Task.Delay(30);
await InvokeAsync(StateHasChanged);
}
@@ -366,7 +366,7 @@ namespace AntSK.Pages.ChatPage.Components
{
rawContent.Append(content.ConvertToString());
}
info.Context = Markdown.ToHtml(rawContent.ToString());
info.Context = Markdown.ToHtml(rawContent.ToString().Replace("<think>", "<div class=\"think\">").Replace("</think>", "</div>"));
await Task.Delay(30);
await InvokeAsync(StateHasChanged);
}

View File

@@ -92,10 +92,10 @@
<FormItem Label="模型版本" LabelCol="LayoutModel._formItemLayout.LabelCol" WrapperCol="LayoutModel._formItemLayout.WrapperCol">
<SimpleSelect DefaultValue="Lite" @bind-Value="@context.ModelName">
<SelectOptions>
<SimpleSelectOption Value="Max" Label="Max"></SimpleSelectOption>
<SimpleSelectOption Value="Pro" Label="Pro"></SimpleSelectOption>
<SimpleSelectOption Value="V3_5" Label="Max"></SimpleSelectOption>
<SimpleSelectOption Value="V3" Label="Pro"></SimpleSelectOption>
<SimpleSelectOption Value="V2" Label="V2"></SimpleSelectOption>
<SimpleSelectOption Value="Lite" Label="Lite"></SimpleSelectOption>
<SimpleSelectOption Value="V1_5" Label="Lite"></SimpleSelectOption>
</SelectOptions>
</SimpleSelect>
</FormItem>

View File

@@ -65,7 +65,7 @@ namespace AntSK.Pages.Setting.AIModel
private bool _logModalVisible;
private List<string> bgeEmbeddingList = new List<string>() { "AI-ModelScope/bge-small-zh-v1.5", "AI-ModelScope/bge-base-zh-v1.5", "AI-ModelScope/bge-large-zh-v1.5" };
private List<string> bgeRerankList = new List<string>() { "Xorbits/bge-reranker-base", "Xorbits/bge-reranker-large", "AI-ModelScope/bge-reranker-v2-m3", "AI-ModelScope/bge-reranker-v2-gemma" };
private List<string> bgeRerankList = new List<string>() { "Xorbits/bge-reranker-base", "Xorbits/bge-reranker-large", "AI-ModelScope/bge-reranker-v2-m3", "AI-ModelScope/bge-reranker-v2-gemma", "BAAI/bge-reranker-v2-minicpm-layerwise" };
private bool BgeEmbeddingIsStart = false;
private string BgeEmbeddingBtnText = "初始化";

View File

@@ -39,7 +39,11 @@
delete(async ()=>await Delete(context.Id))
}" Style="width:100%">
<div class="listContent" style="width:100%">
<div class="listContentItem" style="width:15%">
<div class="listContentItem" style="width:20%">
<b>模型ID</b>
<p title="@context.Id">@context.Id</p>
</div>
<div class="listContentItem" style="width:5%">
<b>模型描述</b>
<p title="@context.ModelDescription">@context.ModelDescription</p>
</div>
@@ -99,11 +103,11 @@
}
</p>
</div>
<div class="listContentItem" style="width:25%">
<div class="listContentItem" style="width:20%">
<b>模型地址</b>
<p title="@context.EndPoint">@context.EndPoint</p>
</div>
<div class="listContentItem" style="width:15%">
<div class="listContentItem" style="width:10%">
<b>模型名称</b>
<p title="@context.ModelName">@context.ModelName</p>
</div>

View File

@@ -1,6 +1,7 @@
using AntSK.Domain.Common.DependencyInjection;
using AntSK.Domain.Domain.Interface;
using AntSK.Domain.Domain.Model.Dto.OpenAPI;
using AntSK.Domain.Domain.Other.Bge;
using AntSK.Domain.Repositories;
using AntSK.Domain.Utils;
using Microsoft.KernelMemory;
@@ -17,6 +18,8 @@ namespace AntSK.Services.OpenApi
public interface IOpenApiService
{
Task Chat(OpenAIModel model, string sk, HttpContext HttpContext);
Task<double> Rerank(RerankModel model, string sk, HttpContext HttpContext);
}
[ServiceDescription(typeof(IOpenApiService), ServiceLifetime.Scoped)]
@@ -24,7 +27,8 @@ namespace AntSK.Services.OpenApi
IApps_Repositories _apps_Repositories,
IKernelService _kernelService,
IKMService _kMService,
IChatService _chatService
IChatService _chatService,
IAIModels_Repositories _aIModels_Repositories
) : IOpenApiService
{
public async Task Chat(OpenAIModel model, string sk, HttpContext HttpContext)
@@ -252,5 +256,16 @@ namespace AntSK.Services.OpenApi
}
return (questions,history);
}
public async Task<double> Rerank(RerankModel model, string sk, HttpContext HttpContext)
{
var rerankModel = _aIModels_Repositories.GetById(model.modelId);
BegRerankConfig.LoadModel(rerankModel.EndPoint, rerankModel.ModelName);
List<string> rerank = new List<string>();
rerank.Add(model.query);
rerank.Add(model.document);
var result= BegRerankConfig.Rerank(rerank);
return result;
}
}
}

View File

@@ -1,9 +1,9 @@
<Project>
<!-- See https://aka.ms/dotnet/msbuild/customize for more details on customizing your build -->
<PropertyGroup>
<KMVersion>0.90.241021.1</KMVersion>
<KMVersion>0.71.240820.1</KMVersion>
<NewtonsoftVersion>13.0.3</NewtonsoftVersion>
<RestSharpVersion>112.1.0</RestSharpVersion>
<SKVersion>1.24.1</SKVersion>
<SKVersion>1.17.2</SKVersion>
</PropertyGroup>
</Project>