diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations.SqlServer/20250816100529_Add_IsAIGrade.Designer.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations.SqlServer/20250816100529_Add_IsAIGrade.Designer.cs
new file mode 100644
index 000000000..53cf78403
--- /dev/null
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations.SqlServer/20250816100529_Add_IsAIGrade.Designer.cs
@@ -0,0 +1,341 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Senparc.Xncf.PromptRange.Models;
+
+#nullable disable
+
+namespace Senparc.Xncf.PromptRange.Domain.Migrations.SqlServer
+{
+ [DbContext(typeof(PromptRangeSenparcEntities_SqlServer))]
+ [Migration("20250816100529_Add_IsAIGrade")]
+ partial class Add_IsAIGrade
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.LlModel", b =>
+ {
+ b.Property
("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AddTime")
+ .HasColumnType("datetime2");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("Alias")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ApiKey")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("ApiVersion")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("DeploymentName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("Endpoint")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.Property("Flag")
+ .HasColumnType("bit");
+
+ b.Property("IsShared")
+ .HasColumnType("bit");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("MaxToken")
+ .HasColumnType("int");
+
+ b.Property("ModelType")
+ .HasMaxLength(20)
+ .HasColumnType("int");
+
+ b.Property("Note")
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("OrganizationId")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("Show")
+ .HasColumnType("bit");
+
+ b.Property("TenantId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_LlModel");
+ });
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AddTime")
+ .HasColumnType("datetime2");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("Aiming")
+ .HasMaxLength(5)
+ .HasColumnType("int");
+
+ b.Property("Content")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("EvalAvgScore")
+ .HasMaxLength(3)
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("EvalMaxScore")
+ .HasMaxLength(3)
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("ExpectedResultsJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Flag")
+ .HasColumnType("bit");
+
+ b.Property("FrequencyPenalty")
+ .HasColumnType("real");
+
+ b.Property("FullVersion")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsAIGrade")
+ .HasColumnType("bit");
+
+ b.Property("IsDraft")
+ .HasColumnType("bit");
+
+ b.Property("IsShare")
+ .HasColumnType("bit");
+
+ b.Property("LastRunTime")
+ .HasColumnType("datetime2");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("MaxToken")
+ .HasColumnType("int");
+
+ b.Property("ModelId")
+ .HasColumnType("int");
+
+ b.Property("NickName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Note")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("ParentTac")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Prefix")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("PresencePenalty")
+ .HasColumnType("real");
+
+ b.Property("RangeId")
+ .HasColumnType("int");
+
+ b.Property("RangeName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("StopSequences")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Suffix")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("Tactic")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Temperature")
+ .HasColumnType("real");
+
+ b.Property("TenantId")
+ .HasColumnType("int");
+
+ b.Property("TopP")
+ .HasColumnType("real");
+
+ b.Property("VariableDictJson")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptItem");
+ });
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptRange", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AddTime")
+ .HasColumnType("datetime2");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("Alias")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Flag")
+ .HasColumnType("bit");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("RangeName")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("TenantId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptRange");
+ });
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptResult", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AddTime")
+ .HasColumnType("datetime2");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("CostTime")
+ .HasColumnType("float");
+
+ b.Property("FinalScore")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Flag")
+ .HasColumnType("bit");
+
+ b.Property("HumanScore")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("LlmModelId")
+ .HasColumnType("int");
+
+ b.Property("PromptCostToken")
+ .HasColumnType("int");
+
+ b.Property("PromptItemId")
+ .HasColumnType("int");
+
+ b.Property("PromptItemVersion")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("ResultCostToken")
+ .HasColumnType("int");
+
+ b.Property("ResultString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RobotScore")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("TenantId")
+ .HasColumnType("int");
+
+ b.Property("TestType")
+ .HasColumnType("int");
+
+ b.Property("TotalCostToken")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptResult");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations.SqlServer/20250816100529_Add_IsAIGrade.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations.SqlServer/20250816100529_Add_IsAIGrade.cs
new file mode 100644
index 000000000..de9824617
--- /dev/null
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations.SqlServer/20250816100529_Add_IsAIGrade.cs
@@ -0,0 +1,29 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Senparc.Xncf.PromptRange.Domain.Migrations.SqlServer
+{
+ ///
+ public partial class Add_IsAIGrade : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "IsAIGrade",
+ table: "Senparc_PromptRange_PromptItem",
+ type: "bit",
+ nullable: false,
+ defaultValue: false);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "IsAIGrade",
+ table: "Senparc_PromptRange_PromptItem");
+ }
+ }
+}
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations/SqlServer/PromptRangeSenparcEntities_SqlServerModelSnapshot.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations/SqlServer/PromptRangeSenparcEntities_SqlServerModelSnapshot.cs
index b0dc26bbc..a3b6597c2 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations/SqlServer/PromptRangeSenparcEntities_SqlServerModelSnapshot.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Migrations/SqlServer/PromptRangeSenparcEntities_SqlServerModelSnapshot.cs
@@ -17,12 +17,12 @@ protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
- .HasAnnotation("ProductVersion", "8.0.0")
+ .HasAnnotation("ProductVersion", "8.0.10")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
- modelBuilder.Entity("Senparc.Xncf.PromptRange.Models.LlModel", b =>
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.LlModel", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -99,77 +99,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.ToTable("Senparc_PromptRange_LlModel");
});
- modelBuilder.Entity("Senparc.Xncf.PromptRange.Models.PromptResult", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("AddTime")
- .HasColumnType("datetime2");
-
- b.Property("AdminRemark")
- .HasMaxLength(300)
- .HasColumnType("nvarchar(300)");
-
- b.Property("CostTime")
- .HasColumnType("float");
-
- b.Property("FinalScore")
- .HasColumnType("decimal(18,2)");
-
- b.Property("Flag")
- .HasColumnType("bit");
-
- b.Property("HumanScore")
- .HasColumnType("decimal(18,2)");
-
- b.Property("LastUpdateTime")
- .HasColumnType("datetime2");
-
- b.Property("LlmModelId")
- .HasColumnType("int");
-
- b.Property("PromptCostToken")
- .HasColumnType("int");
-
- b.Property("PromptItemId")
- .HasColumnType("int");
-
- b.Property("PromptItemVersion")
- .HasMaxLength(50)
- .HasColumnType("nvarchar(50)");
-
- b.Property("Remark")
- .HasMaxLength(300)
- .HasColumnType("nvarchar(300)");
-
- b.Property("ResultCostToken")
- .HasColumnType("int");
-
- b.Property("ResultString")
- .HasColumnType("nvarchar(max)");
-
- b.Property("RobotScore")
- .HasColumnType("decimal(18,2)");
-
- b.Property("TenantId")
- .HasColumnType("int");
-
- b.Property("TestType")
- .HasColumnType("int");
-
- b.Property("TotalCostToken")
- .HasColumnType("int");
-
- b.HasKey("Id");
-
- b.ToTable("Senparc_PromptRange_PromptResult");
- });
-
- modelBuilder.Entity("Senparc.Xncf.PromptRange.PromptItem", b =>
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptItem", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -213,6 +143,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
+ b.Property("IsAIGrade")
+ .HasColumnType("bit");
+
b.Property("IsDraft")
.HasColumnType("bit");
@@ -288,7 +221,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.ToTable("Senparc_PromptRange_PromptItem");
});
- modelBuilder.Entity("Senparc.Xncf.PromptRange.PromptRange", b =>
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptRange", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -329,6 +262,76 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.ToTable("Senparc_PromptRange_PromptRange");
});
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptResult", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AddTime")
+ .HasColumnType("datetime2");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("CostTime")
+ .HasColumnType("float");
+
+ b.Property("FinalScore")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Flag")
+ .HasColumnType("bit");
+
+ b.Property("HumanScore")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("LlmModelId")
+ .HasColumnType("int");
+
+ b.Property("PromptCostToken")
+ .HasColumnType("int");
+
+ b.Property("PromptItemId")
+ .HasColumnType("int");
+
+ b.Property("PromptItemVersion")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)");
+
+ b.Property("ResultCostToken")
+ .HasColumnType("int");
+
+ b.Property("ResultString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RobotScore")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("TenantId")
+ .HasColumnType("int");
+
+ b.Property("TestType")
+ .HasColumnType("int");
+
+ b.Property("TotalCostToken")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptResult");
+ });
#pragma warning restore 612, 618
}
}
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/20250816100504_Add_IsAIGrade.Designer.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/20250816100504_Add_IsAIGrade.Designer.cs
new file mode 100644
index 000000000..91665e5a1
--- /dev/null
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/20250816100504_Add_IsAIGrade.Designer.cs
@@ -0,0 +1,328 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Senparc.Xncf.PromptRange.Models;
+
+#nullable disable
+
+namespace Senparc.Xncf.PromptRange.Domain.Migrations.Sqlite
+{
+ [DbContext(typeof(PromptRangeSenparcEntities_Sqlite))]
+ [Migration("20250816100504_Add_IsAIGrade")]
+ partial class Add_IsAIGrade
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "8.0.10");
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.LlModel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AddTime")
+ .HasColumnType("TEXT");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("Alias")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("ApiKey")
+ .HasMaxLength(200)
+ .HasColumnType("TEXT");
+
+ b.Property("ApiVersion")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("DeploymentName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("Endpoint")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("TEXT");
+
+ b.Property("Flag")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsShared")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("TEXT");
+
+ b.Property("MaxToken")
+ .HasColumnType("INTEGER");
+
+ b.Property("ModelType")
+ .HasMaxLength(20)
+ .HasColumnType("INTEGER");
+
+ b.Property("Note")
+ .HasMaxLength(1000)
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasMaxLength(200)
+ .HasColumnType("TEXT");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("Show")
+ .HasColumnType("INTEGER");
+
+ b.Property("TenantId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_LlModel");
+ });
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AddTime")
+ .HasColumnType("TEXT");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("Aiming")
+ .HasMaxLength(5)
+ .HasColumnType("INTEGER");
+
+ b.Property("Content")
+ .HasColumnType("TEXT");
+
+ b.Property("EvalAvgScore")
+ .HasMaxLength(3)
+ .HasColumnType("REAL");
+
+ b.Property("EvalMaxScore")
+ .HasMaxLength(3)
+ .HasColumnType("REAL");
+
+ b.Property("ExpectedResultsJson")
+ .HasColumnType("TEXT");
+
+ b.Property("Flag")
+ .HasColumnType("INTEGER");
+
+ b.Property("FrequencyPenalty")
+ .HasColumnType("REAL");
+
+ b.Property("FullVersion")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("IsAIGrade")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsDraft")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsShare")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastRunTime")
+ .HasColumnType("TEXT");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("TEXT");
+
+ b.Property("MaxToken")
+ .HasColumnType("INTEGER");
+
+ b.Property("ModelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("NickName")
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("Note")
+ .HasMaxLength(20)
+ .HasColumnType("TEXT");
+
+ b.Property("ParentTac")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Prefix")
+ .HasMaxLength(10)
+ .HasColumnType("TEXT");
+
+ b.Property("PresencePenalty")
+ .HasColumnType("REAL");
+
+ b.Property("RangeId")
+ .HasColumnType("INTEGER");
+
+ b.Property("RangeName")
+ .HasMaxLength(20)
+ .HasColumnType("TEXT");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("StopSequences")
+ .HasColumnType("TEXT");
+
+ b.Property("Suffix")
+ .HasMaxLength(10)
+ .HasColumnType("TEXT");
+
+ b.Property("Tactic")
+ .HasColumnType("TEXT");
+
+ b.Property("Temperature")
+ .HasColumnType("REAL");
+
+ b.Property("TenantId")
+ .HasColumnType("INTEGER");
+
+ b.Property("TopP")
+ .HasColumnType("REAL");
+
+ b.Property("VariableDictJson")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptItem");
+ });
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptRange", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AddTime")
+ .HasColumnType("TEXT");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("Alias")
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("Flag")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("TEXT");
+
+ b.Property("RangeName")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("TEXT");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("TenantId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptRange");
+ });
+
+ modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.PromptResult", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AddTime")
+ .HasColumnType("TEXT");
+
+ b.Property("AdminRemark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("CostTime")
+ .HasColumnType("REAL");
+
+ b.Property("FinalScore")
+ .HasColumnType("TEXT");
+
+ b.Property("Flag")
+ .HasColumnType("INTEGER");
+
+ b.Property("HumanScore")
+ .HasColumnType("TEXT");
+
+ b.Property("LastUpdateTime")
+ .HasColumnType("TEXT");
+
+ b.Property("LlmModelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("PromptCostToken")
+ .HasColumnType("INTEGER");
+
+ b.Property("PromptItemId")
+ .HasColumnType("INTEGER");
+
+ b.Property("PromptItemVersion")
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("Remark")
+ .HasMaxLength(300)
+ .HasColumnType("TEXT");
+
+ b.Property("ResultCostToken")
+ .HasColumnType("INTEGER");
+
+ b.Property("ResultString")
+ .HasColumnType("TEXT");
+
+ b.Property("RobotScore")
+ .HasColumnType("TEXT");
+
+ b.Property("TenantId")
+ .HasColumnType("INTEGER");
+
+ b.Property("TestType")
+ .HasColumnType("INTEGER");
+
+ b.Property("TotalCostToken")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("Senparc_PromptRange_PromptResult");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/20250816100504_Add_IsAIGrade.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/20250816100504_Add_IsAIGrade.cs
new file mode 100644
index 000000000..c4fdf4a44
--- /dev/null
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/20250816100504_Add_IsAIGrade.cs
@@ -0,0 +1,29 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Senparc.Xncf.PromptRange.Domain.Migrations.Sqlite
+{
+ ///
+ public partial class Add_IsAIGrade : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "IsAIGrade",
+ table: "Senparc_PromptRange_PromptItem",
+ type: "INTEGER",
+ nullable: false,
+ defaultValue: false);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "IsAIGrade",
+ table: "Senparc_PromptRange_PromptItem");
+ }
+ }
+}
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/PromptRangeSenparcEntities_SqliteModelSnapshot.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/PromptRangeSenparcEntities_SqliteModelSnapshot.cs
index 5b35c7afa..52a1f3324 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/PromptRangeSenparcEntities_SqliteModelSnapshot.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Migrations/Sqlite/PromptRangeSenparcEntities_SqliteModelSnapshot.cs
@@ -15,7 +15,7 @@ partial class PromptRangeSenparcEntities_SqliteModelSnapshot : ModelSnapshot
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
- modelBuilder.HasAnnotation("ProductVersion", "8.0.0");
+ modelBuilder.HasAnnotation("ProductVersion", "8.0.10");
modelBuilder.Entity("Senparc.Xncf.PromptRange.Domain.Models.DatabaseModel.LlModel", b =>
{
@@ -134,6 +134,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.HasMaxLength(50)
.HasColumnType("TEXT");
+ b.Property("IsAIGrade")
+ .HasColumnType("INTEGER");
+
b.Property("IsDraft")
.HasColumnType("INTEGER");
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/Dto/PromptItemDto.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/Dto/PromptItemDto.cs
index feee4e4d4..3668387f6 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/Dto/PromptItemDto.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/Dto/PromptItemDto.cs
@@ -81,6 +81,11 @@ public class PromptItemDto : DtoBase
///
public string ExpectedResultsJson { get; set; }
+ ///
+ /// 是否启用“ai评分标准”
+ ///
+ public bool isAIGrade { get; set; } = false;
+
#endregion
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/PromptItem.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/PromptItem.cs
index 288886d8e..0d973a216 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/PromptItem.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Models/DatabaseModel/PromptItem.cs
@@ -98,6 +98,9 @@ public class PromptItem : EntityBase
///
public string ExpectedResultsJson { get; private set; }
+ public bool IsAIGrade { get; private set; } = false;
+
+
#endregion
#region Full Version
@@ -318,7 +321,7 @@ public PromptItem(PromptRangeDto promptRange, string nickName, string tactic)
public PromptItem(PromptItemDto dto) : this(dto.RangeId, dto.Content, dto.ModelId, dto.TopP, dto.Temperature, dto.MaxToken,
dto.FrequencyPenalty, dto.PresencePenalty, dto.StopSequences, dto.RangeName, dto.Tactic, dto.Aiming, dto.ParentTac, dto.Note,
- dto.IsDraft, dto.ExpectedResultsJson,
+ dto.IsDraft, dto.ExpectedResultsJson, dto.isAIGrade,
dto.Prefix, dto.Suffix, dto.VariableDictJson)
{
Id = dto.Id;
@@ -332,7 +335,7 @@ public PromptItem(PromptItemDto dto) : this(dto.RangeId, dto.Content, dto.ModelI
public PromptItem(int rangeId, string content,
int modelId, float topP, float temperature, int maxToken, float frequencyPenalty, float presencePenalty, string stopSequences,
string rangeName, string tactic, int aiming, string parentTac,
- string note, bool isDraft, string expectedResultsJson,
+ string note, bool isDraft, string expectedResultsJson, bool isAIGrade,
string prefix, string suffix, string variableDictJson)
{
RangeId = rangeId;
@@ -351,6 +354,7 @@ public PromptItem(int rangeId, string content,
Note = note;
IsDraft = isDraft;
ExpectedResultsJson = expectedResultsJson;
+ IsAIGrade = isAIGrade;
Prefix = prefix;
Suffix = suffix;
VariableDictJson = variableDictJson;
@@ -361,7 +365,7 @@ public PromptItem(int rangeId, string content,
public PromptItem(int rangeId, string rangeName, string tactic, int aiming, string parentTac, PromptItem_AddRequest request) :
this(rangeId, request.Content, request.ModelId, request.TopP, request.Temperature, request.MaxToken, request.FrequencyPenalty,
request.PresencePenalty, request.StopSequences, rangeName, tactic, aiming, parentTac, request.Note, request.IsDraft,
- request.ExpectedResultsJson,
+ request.ExpectedResultsJson, request.isAIGrade,
request.Prefix, request.Suffix, request.VariableDictJson)
{
}
@@ -484,6 +488,7 @@ public PromptItem UpdateDraft(PromptItemDto dto)
Note = dto.Note;
ExpectedResultsJson = dto.ExpectedResultsJson;
+ IsAIGrade = dto.isAIGrade;
Prefix = dto.Prefix;
Suffix = dto.Suffix;
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Services/PromptResultService.cs b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Services/PromptResultService.cs
index 82e99abea..024961c05 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Domain/Services/PromptResultService.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Domain/Services/PromptResultService.cs
@@ -146,7 +146,7 @@ public async Task SenparcGenerateResultAsync(PromptItemDto prom
await base.SaveObjectAsync(promptResult);
// 有期望结果, 进行自动打分
- if (!string.IsNullOrWhiteSpace(promptItem.ExpectedResultsJson))
+ if (promptItem.isAIGrade && !string.IsNullOrWhiteSpace(promptItem.ExpectedResultsJson))
{
await this.RobotScoringAsync(promptResult.Id, false, promptItem.ExpectedResultsJson);
}
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/OHS/Local/PL/Request/PromptItem_AddRequest.cs b/src/Extensions/Senparc.Xncf.PromptRange/OHS/Local/PL/Request/PromptItem_AddRequest.cs
index 980ec6140..70aa644bc 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/OHS/Local/PL/Request/PromptItem_AddRequest.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/OHS/Local/PL/Request/PromptItem_AddRequest.cs
@@ -64,6 +64,10 @@ public class PromptItem_AddRequest
public string Note { get; set; }
public string ExpectedResultsJson { get; set; }
+ ///
+ /// 是否启用“ai评分标准”
+ ///
+ public bool isAIGrade { get; set; } = false;
public string Prefix { get; set; }
public string Suffix { get; set; }
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Register.cs b/src/Extensions/Senparc.Xncf.PromptRange/Register.cs
index eb5d2d60b..9f6240056 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Register.cs
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Register.cs
@@ -32,7 +32,7 @@ public partial class Register : XncfRegisterBase, IXncfRegister
public override string Uid => "C6175B8E-9F79-4053-9523-F8E4AC0C3E18"; //必须确保全局唯一,生成后必须固定,已自动生成,也可自行修改
- public override string Version => "0.13.17"; //必须填写版本号
+ public override string Version => "0.13.18"; //必须填写版本号
public override string MenuName => "提示词靶场";
@@ -130,3 +130,4 @@ public override IServiceCollection AddXncfModule(IServiceCollection services, IC
+
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/Senparc.Xncf.PromptRange.csproj b/src/Extensions/Senparc.Xncf.PromptRange/Senparc.Xncf.PromptRange.csproj
index 250082203..91f6ddb2e 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/Senparc.Xncf.PromptRange.csproj
+++ b/src/Extensions/Senparc.Xncf.PromptRange/Senparc.Xncf.PromptRange.csproj
@@ -1,7 +1,7 @@
net8.0
- 0.13.19-preview
+ 0.14.0-preview.1
10.0
@@ -65,8 +65,8 @@
[2025-05-18] v0.13.15-preview1 Update Installation
[2025-06-20] v0.13.16-preview1 Add MCP functions in XncfRegisterBase class
[2025-08-19] v0.13.17-preview.1 remove debug code in prompt.js
-
[2025-11-01] update basic libraries, including Senparc.AI
+ [2025-11-06] v0.14.0-preview.1 add AI score standard setting
https://github.com/NeuCharFramework/NcfPackageSources
Debug;Release;Debug-Dapr;Test;TemplateRelease;NcfDebugForPromptRange
diff --git a/src/Extensions/Senparc.Xncf.PromptRange/wwwroot/js/PromptRange/prompt.js b/src/Extensions/Senparc.Xncf.PromptRange/wwwroot/js/PromptRange/prompt.js
index b28c6576c..8b588bfb0 100644
--- a/src/Extensions/Senparc.Xncf.PromptRange/wwwroot/js/PromptRange/prompt.js
+++ b/src/Extensions/Senparc.Xncf.PromptRange/wwwroot/js/PromptRange/prompt.js
@@ -2,6 +2,7 @@ var app = new Vue({
el: "#app",
data() {
return {
+ isAIGrade: true,
devHost: 'http://pr-felixj.frp.senparc.com',
pageChange: false, // 页面是否有变化
isAvg: true, // 是否平均分 默认false 不平均
@@ -628,14 +629,15 @@ var app = new Vue({
prefix: this.promptParamForm.prefix
}
// ai评分标准
+ _postData.isAIGrade = this.isAIGrade
if (this.aiScoreForm.resultList.length > 0) {
let _list = this.aiScoreForm.resultList.map(item => item.value)
_list = _list.filter(item => item)
if (_list.length > 0) {
_postData.expectedResultsJson = JSON.stringify(_list)
}
-
}
+
if (this.promptParamForm.variableList.length > 0) {
_postData.variableDictJson = this.convertData(this.promptParamForm.variableList)
}
@@ -810,6 +812,7 @@ var app = new Vue({
}
// ai评分标准
+ _postData.isAIGrade = this.isAIGrade
if (this.aiScoreForm.resultList.length > 0) {
let _list = this.aiScoreForm.resultList.map(item => item.value)
_list = _list.filter(item => item)
@@ -817,6 +820,7 @@ var app = new Vue({
_postData.expectedResultsJson = JSON.stringify(_list)
}
}
+
// 请求参数
if (this.promptParamForm.variableList.length > 0) {
_postData.variableDictJson = this.convertData(this.promptParamForm.variableList)