diff --git a/README.md b/README.md
index 4dbcd65..ebf7270 100644
--- a/README.md
+++ b/README.md
@@ -5,10 +5,21 @@
# 在解决方案下运行
docker build -t miaoyu:dev-0.0.3 -f src/2-api/HuanMeng.MiaoYu.WebApi/Dockerfile .
docker build -t miaoyu:dev-0.0.4 --build-arg VERSION=7.0 --build-arg TARGET=dev -f src/2-api/HuanMeng.MiaoYu.WebApi/Dockerfile .
+docker build -t miaoyuapi:dev-1.2.7 --build-arg VERSION=1.2.7 --build-arg TARGET=dev -f src/2-api/HuanMeng.MiaoYu.WebApi/Dockerfile .
+docker tag miaoyuapi:dev-1.2.7 123.207.203.228:92/miaoyuapi:dev-1.2.7
+docker push 123.207.203.228:92/miaoyuapi:dev-1.2.7
+//docker build -t myregistry.com/myusername/myapp:v1.0 .
-
+ docker build --no-cache --progress=plain -t hm-admin:dev-1.0.3 -t hm-admin:latest -t 123.207.203.228:92/hm-admin:dev-1.0.3 -t 123.207.203.228:92/hm-admin:latest -f MiaoYu.Api.Admin/Dockerfile .
+ docker tag hm-admin:dev-1.0.0
+ docker build -t hm-admin:v1.0 -t hm-admin:latest .
+ docker build --no-cache --progress=plain -t hm-admin:dev-1.0.4 -t hm-admin:latest -t 123.207.203.228:92/hm-admin:dev-1.0.4 -t 123.207.203.228:92/hm-admin:latest -f MiaoYu.Api.Admin/Dockerfile .
+docker push 123.207.203.228:92/hm-admin:latest
+docker push 123.207.203.228:92/hm-admin:dev-1.0.4
# 运行
docker run -d -p 90:90 -v E://disk/output:/app/output --name webapi miaoyu:dev-0.0.3
+
+docker run -d -p 91:80 --name hm-admin hm-admin:latest
# 运行。挂载日志文件夹
docker run -d -p 90:90 -v E://disk/output:/app/output --name webapi miaoyu:dev-0.0.3
docker run -d -p 90:90 -v E://disk/output:/app/output --name webapi miaoyu:dev-0.0.3
diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Chat/Minimax/MinimaxChatParams.cs b/src/0-core/HuanMeng.MiaoYu.Code/Chat/Minimax/MinimaxChatParams.cs
index 5734174..a0eaaa0 100644
--- a/src/0-core/HuanMeng.MiaoYu.Code/Chat/Minimax/MinimaxChatParams.cs
+++ b/src/0-core/HuanMeng.MiaoYu.Code/Chat/Minimax/MinimaxChatParams.cs
@@ -1,19 +1,7 @@
-using HuanMeng.MiaoYu.Code.Chat.Claude;
-using HuanMeng.MiaoYu.Code.Chat.Contract;
-using HuanMeng.MiaoYu.Model.DbSqlServer.Db_MiaoYu;
-using HuanMeng.MiaoYu.Model.Dto.Character;
-using HuanMeng.MiaoYu.Model.EnumModel.Chat;
-
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection.PortableExecutable;
-using System.Runtime.InteropServices.JavaScript;
-using System.Text;
-using System.Threading.Tasks;
+using System.Text.Json.Nodes;
namespace HuanMeng.MiaoYu.Code.Chat.Minimax
{
@@ -27,7 +15,7 @@ namespace HuanMeng.MiaoYu.Code.Chat.Minimax
///
///
///
- ///
+ ///
///
public MinimaxChatParams(List messages, CharacterCache character, string botName)
{
@@ -39,49 +27,65 @@ namespace HuanMeng.MiaoYu.Code.Chat.Minimax
this.Headers = JsonConvert.DeserializeObject>(Model_Config.HeadersTemplate) ?? new Dictionary();
}
Message = messages[messages.Count - 1].Content;
+ var otherTemplate = Model_Config.OtherTemplate;
+ //角色需要的类型
+ string ai_messages = string.Empty;
+ string user_messages = string.Empty;
+ if (!string.IsNullOrEmpty(otherTemplate))
+ {
+ var otherObj = JObject.Parse(otherTemplate);
+ if (otherObj != null)
+ {
+ ai_messages = otherObj["ai_messages"]?.ToString() ?? "{}";
+ user_messages = otherObj["user_messages"]?.ToString() ?? "{}";
+ }
+ }
if (!string.IsNullOrEmpty(Model_Config.RequestTemplate))
{
var assistant = ChatRole.assistant.ToString();
var user = ChatRole.user.ToString();
- List minimaxChatMessages = new List();
+
+ JArray minimaxChatMessages = new JArray();
messages.ForEach(message =>
{
- MinimaxChatMessage minimaxChatMessage = new MinimaxChatMessage();
- minimaxChatMessage.Text = message.Content;
+ JObject jobject = null;
if (message.Role == assistant)
{
- minimaxChatMessage.SenderType = "BOT";
+ jobject = JObject.Parse(ai_messages);
}
else if (message.Role == user)
{
- minimaxChatMessage.SenderType = "USER";
+ jobject = JObject.Parse(user_messages);
+ }
+ if (jobject != null)
+ {
+ foreach (var item in jobject)
+ {
+ if (item.Value?.Type == JTokenType.String)
+ {
+ var val = item.Value.ToString();
+ if (val.Contains("${message}"))
+ {
+ jobject[item.Key] = val
+ .Replace("${message}", message.Content);
+ }
+ }
+ }
+ minimaxChatMessages.Add(jobject);
}
- minimaxChatMessages.Add(minimaxChatMessage);
-
});
var mess = JsonConvert.SerializeObject(minimaxChatMessages);
-
+ var messObj = mess.TrimStart('[').TrimEnd(']');
var systemp = Model_Config.RequestTemplate
.Replace("${messages}", mess)
.Replace("${bot_name}", botName)
+ .Replace("${messagesobj}", messObj)
;
+
+
var jobj = JObject.Parse(systemp);
- foreach (var item in jobj)
- {
- if (item.Value?.Type == JTokenType.String)
- {
- var prompt = item.Value?.ToString() ?? "";
- if (prompt.Contains("${prompt}"))
- {
- jobj[item.Key] = prompt.Replace("${prompt}", character.System);
- }
- }
-
-
- }
+ ProcessJObject(jobj, character.System);
systemp = JsonConvert.SerializeObject(jobj);
- //.Replace("${prompt}", cc["prompt"].ToString())
-
this.RequestBody = systemp;
}
if (!string.IsNullOrEmpty(character.ModelConfig.ResponseTemplate))
@@ -108,6 +112,42 @@ namespace HuanMeng.MiaoYu.Code.Chat.Minimax
/// 请求返回结果
///
public Dictionary? ResponseConten { get; set; }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ private void ProcessJObject(JObject jobj, string systemValue)
+ {
+ foreach (var item in jobj)
+ {
+ if (item.Value?.Type == JTokenType.String)
+ {
+ var prompt = item.Value?.ToString() ?? "";
+ if (prompt.Contains("${prompt}"))
+ {
+ jobj[item.Key] = prompt.Replace("${prompt}", systemValue);
+ return;
+ }
+ }
+ else if (item.Value?.Type == JTokenType.Object)
+ {
+ // 递归调用处理子对象
+ ProcessJObject((JObject)item.Value, systemValue);
+ }
+ else if (item.Value?.Type == JTokenType.Array)
+ {
+ var array = (JArray)item.Value;
+ foreach (var item2 in array)
+ {
+ ProcessJObject((JObject)item2, systemValue);
+ }
+ // 递归调用处理子对象
+
+ }
+ }
+ }
}
///
///
diff --git a/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/MiaoYuContext.cs b/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/MiaoYuContext.cs
index 973c217..2eeb00c 100644
--- a/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/MiaoYuContext.cs
+++ b/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/MiaoYuContext.cs
@@ -557,6 +557,7 @@ public partial class MiaoYuContext : MultiTenantDbContext//DbContext
entity.Property(e => e.ModelName)
.HasMaxLength(50)
.HasComment("模型名称");
+ entity.Property(e => e.OtherTemplate).HasComment("其它的模板");
entity.Property(e => e.RequestTemplate).HasComment("请求模板");
entity.Property(e => e.ResponseTemplate).HasComment("返回数据模板");
entity.Property(e => e.SystemTemplate).HasComment("system上下文模板");
diff --git a/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/T_Model_Config.cs b/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/T_Model_Config.cs
index 49fbcf1..a1dcee0 100644
--- a/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/T_Model_Config.cs
+++ b/src/0-core/HuanMeng.MiaoYu.Model/DbSqlServer/Db_MiaoYu/T_Model_Config.cs
@@ -75,4 +75,9 @@ public partial class T_Model_Config: MultiTenantEntity
/// 是否默认
///
public virtual bool? IsDefabult { get; set; }
+
+ ///
+ /// 其它的模板
+ ///
+ public virtual string? OtherTemplate { get; set; }
}