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