Files
SzmediTools/WPFUI.Test/ChatFunction/ChatDialogue.xaml.cs
2025-09-16 16:06:41 +08:00

219 lines
8.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace WPFUI.Test
{
/// <summary>
/// ChatDialogue.xaml 的交互逻辑
/// </summary>
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");
///// <summary>
///// DeepSeek对象
///// </summary>
//private DeepSeekClient _deepSeekClient;
///// <summary>
///// 系统角色设定
///// </summary>
//private const string SysContent = "你是 DeepSeek AI 提供的人工智能助手你更擅长中文和英文的对话。你会为用户提供安全有帮助准确的回答。同时你会拒绝一切涉及恐怖主义种族歧视黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言";
///// <summary>
///// 单轮流式聊天
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//private async void button1_Click(object sender, RoutedEventArgs e)
//{
// try
// {
// richTextBox1.Document.Blocks.Clear();
// //------
// var chatReq = new ChatRequest
// {
// model = ChatModels.DeepseekChat,
// messages = new List<MessagesItem> {
// 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);
// }
//}
///// <summary>
///// 单轮普通聊天
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//private async void button2_Click(object sender, RoutedEventArgs e)
//{
// try
// {
// var chatReq = new ChatRequest
// {
// model = ChatModels.DeepseekChat,
// messages = new List<MessagesItem> {
// 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);
// }
//}
///// <summary>
///// 多轮对话列表
///// </summary>
//private List<MessagesItem> HistoryList = new List<MessagesItem> { new MessagesItem { role = ChatRoles.System, content = SysContent } };
///// <summary>
///// 多轮流式对话
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//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);
// }
//}
///// <summary>
///// 多轮普通聊天
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//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);
// }
//}
}
}