Files

209 lines
8.6 KiB
C#
Raw Permalink Normal View History

2025-09-16 16:06:41 +08:00
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace Szmedi.AIScriptRunner.RvScript
{
/// <summary>
/// ChatDialogue.xaml 的交互逻辑
/// </summary>
public partial class ChatDialogue
{
private readonly ChatDialogueViewModel viewModel = new ChatDialogueViewModel();
public ChatDialogue()
{
InitializeComponent();
this.DataContext = viewModel;
}
//_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);
// }
//}
}
}