| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | using System.Collections.Generic;using Fort23.Core;using Fort23.UTool;using UnityEngine;namespace Fort23.Mono{    [UIBinding(prefab = "ChatPanel")]    public partial class ChatPanel : UIPanel    {        private DeepSeekAI deepSeekAI = new DeepSeekAI("sk-9f161d962acd420e882941b5e41dd3ae");                private DeepSeekAI huoSahnAI = new DeepSeekAI("4001c395-31cb-4d27-bec8-8f03cae63c2d");        private List<ChatMessage> messages = new List<ChatMessage>();        private bool isSend = false;        private void Init()        {            isAddStack = true;            IsShowAppBar = false;        }        protected override void AddEvent()        {        }        protected override void DelEvent()        {        }        public override void AddButtonEvent()        {            Btn_Send.onClick.AddListener(() => { SendMessage(); });            Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });        }        private async CTask CreatMessageWidget(bool isUser, string message)        {            GameObject widget = isUser ? UserChatMessageWidget : SysteamChatWidget;            ChatMessageWidget chatMessageWidget = await UIManager.Instance.CreateGComponentForObject<ChatMessageWidget>(widget, null, Content, isInstance: true);            chatMessageWidget.CustomInit(message);        }        public async override CTask<bool> AsyncInit(object[] uiData)        {            AssetHandle assetHandle = await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<TextAsset>("repository.txt");            TextAsset ta = assetHandle.AssetObject<TextAsset>();            var systeamMessage = new ChatMessage            {                role = "system",                content = ta.text,            };            messages.Add(systeamMessage);            return await base.AsyncInit(uiData);        }        private async void SendMessage()        {            if (isSend)                return;            isSend = true;            var userMessage = new ChatMessage            {                role = "user",                content = InputField.text            };            messages.Add(userMessage);            //生成消息ui            await CreatMessageWidget(true, userMessage.content);            var request = new ChatCompletionRequest            {                // model = "deepseek-chat",                model = "doubao-1.5-pro-32k-250115",                messages = messages,                max_tokens = 4096,            };            var response = await huoSahnAI.SendChatCompletionToDeepSeek(request);            if (response?.choices != null && response.choices.Count > 0)            {                var assistantMessage = response.choices[0].message;                messages.Add(assistantMessage);                await CreatMessageWidget(false, assistantMessage.content);                isSend = false;            }            else            {                LogTool.Warning("No response from DeepSeek.");                isSend = false;            }            InputField.text = "";        }        public async static CTask OpenPanel()        {            EventSystemManager.Instance.isOpenUi = true;            await UIManager.Instance.LoadAndOpenPanel<ChatPanel>(null);        }        public override void Close()        {            EventSystemManager.Instance.isOpenUi = false;            isSend = false;            UIManager.Instance.DormancyAllGComponent<ChatMessageWidget>();            messages.Clear();            base.Close();        }    }}
 |