219 lines
8.9 KiB
C#
219 lines
8.9 KiB
C#
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);
|
||
// }
|
||
//}
|
||
}
|
||
}
|