using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; namespace WPFUI.Test { /// /// ChatDialogue.xaml 的交互逻辑 /// public partial class ChatDialogue { private ChatDialogueViewModel viewModel = new ChatDialogueViewModel(); public ChatDialogue() { InitializeComponent(); this.DataContext = viewModel; } private void OpenHyperlink(object sender, ExecutedRoutedEventArgs e) { Process.Start(e.Parameter.ToString()); } private void ClickOnImage(object sender, System.Windows.Input.ExecutedRoutedEventArgs e) { MessageBox.Show($"URL: {e.Parameter}"); } //_deepSeekClient = new DeepSeekClient("sk-3a3126167f1343228b1a5745bcd0bf01"); ///// ///// DeepSeek对象 ///// //private DeepSeekClient _deepSeekClient; ///// ///// 系统角色设定 ///// //private const string SysContent = "你是 DeepSeek AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言"; ///// ///// 单轮流式聊天 ///// ///// ///// //private async void button1_Click(object sender, RoutedEventArgs e) //{ // try // { // richTextBox1.Document.Blocks.Clear(); // //------ // var chatReq = new ChatRequest // { // model = ChatModels.DeepseekChat, // messages = new List { // new MessagesItem { role = ChatRoles.System, content = SysContent }, // new MessagesItem { role = ChatRoles.User, content = textBox1.Text } // }, // stream = true // }; // // 订阅事件 // _deepSeekClient.MessageReceivedEventHandler -= OnMessageReceived; // _deepSeekClient.ErrorEventHandler -= OnErrorMsg; // _deepSeekClient.MessageReceivedEventHandler += OnMessageReceived; // _deepSeekClient.ErrorEventHandler += OnErrorMsg; // // 开始任务 // await _deepSeekClient.ChatStreamAsync(chatReq).ConfigureAwait(true); // // 订阅SSE 消息事件 // void OnMessageReceived(object s, ChatResponse m) // { // //Console.WriteLine("聊天内容:" + ee); // this.Dispatcher.Invoke(() => // { // var msg = m.choices?.FirstOrDefault()?.delta.content; // if (msg != null) richTextBox1.AppendText(msg); // }); // } // // 订阅SSE 错误事件 // void OnErrorMsg(object s, Exception ex) // { // MessageBox.Show(ex.Message); // } // } // catch (Exception ex) // { // Console.WriteLine("流式聊天失败:" + ex.Message); // } //} ///// ///// 单轮普通聊天 ///// ///// ///// //private async void button2_Click(object sender, RoutedEventArgs e) //{ // try // { // var chatReq = new ChatRequest // { // model = ChatModels.DeepseekChat, // messages = new List { // new MessagesItem { role = ChatRoles.System, content = SysContent }, // new MessagesItem { role = ChatRoles.User, content = textBox1.Text } // } // }; // var chatRes = await _deepSeekClient.ChatAsync(chatReq).ConfigureAwait(true); // Console.WriteLine("聊天内容:" + chatRes.choices?.FirstOrDefault()?.message.content); // Paragraph paragraph = new Paragraph(); // paragraph.Inlines.Add(new Run(chatRes.choices?.FirstOrDefault()?.message.content)); // richTextBox1.Document.Blocks.Add(paragraph); // } // catch (Exception ex) // { // Console.WriteLine("聊天失败:" + ex.Message); // } //} ///// ///// 多轮对话列表 ///// //private List HistoryList = new List { new MessagesItem { role = ChatRoles.System, content = SysContent } }; ///// ///// 多轮流式对话 ///// ///// ///// //private async void button3_Click(object sender, RoutedEventArgs e) //{ // try // { // richTextBox1.Document.Blocks.Clear(); // //------当前要说的内容 // HistoryList.Add(new MessagesItem { role = ChatRoles.User, content = textBox1.Text }); // //------ // var chatReq = new ChatRequest // { // model = ChatModels.DeepseekChat, // messages = HistoryList, // stream = true // }; // // 订阅事件 // _deepSeekClient.MessageReceivedEventHandler -= OnMessageReceived; // _deepSeekClient.ErrorEventHandler -= OnErrorMsg; // _deepSeekClient.CloseedEventHandler -= OnCloseed; // _deepSeekClient.MessageReceivedEventHandler += OnMessageReceived; // _deepSeekClient.ErrorEventHandler += OnErrorMsg; // _deepSeekClient.CloseedEventHandler += OnCloseed; // // 开始任务 // await _deepSeekClient.ChatStreamAsync(chatReq).ConfigureAwait(true); // // 局部函数,订阅SSE 消息事件 // void OnMessageReceived(object s, ChatResponse m) // { // //Console.WriteLine("聊天内容:" + ee); // this.Dispatcher // .Invoke( // () => // { // var msg = m.choices?.FirstOrDefault()?.delta.content; // if (msg != null) // { // richTextBox1.AppendText(msg); // } // }); // } // // 局部函数,订阅SSE 错误事件 // void OnErrorMsg(object s, Exception ex) // { // MessageBox.Show(ex.Message); // } // // 局部函数,订阅SSE 关闭事件 // void OnCloseed(object s, string ex) // { // HistoryList.Add(new MessagesItem { role = ChatRoles.Assistant, content = textBox1.Text }); // } // } // catch (Exception ex) // { // Console.WriteLine("流式聊天失败:" + ex.Message); // } //} ///// ///// 多轮普通聊天 ///// ///// ///// //private async void button4_Click(object sender, RoutedEventArgs e) //{ // try // { // //------当前要说的内容 // HistoryList.Add(new MessagesItem { role = ChatRoles.User, content = textBox1.Text }); // //------------------- // var chatReq = new ChatRequest // { // model = ChatModels.DeepseekChat, // messages = HistoryList // }; // var chatRes = await _deepSeekClient.ChatAsync(chatReq).ConfigureAwait(true); // HistoryList.Add(new MessagesItem { role = ChatRoles.Assistant, content = textBox1.Text }); // Console.WriteLine("聊天内容:" + chatRes.choices?.FirstOrDefault()?.message.content); // Paragraph paragraph = new Paragraph(); // paragraph.Inlines.Add(new Run(chatRes.choices?.FirstOrDefault()?.message.content)); // richTextBox1.Document.Blocks.Add(paragraph); // } // catch (Exception ex) // { // Console.WriteLine("聊天失败:" + ex.Message); // } //} } }