using ChatGPT.API.Framework; using Newtonsoft.Json; using Panuon.WPF.UI; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace VPet_Simulator.Windows { /// /// winCGPTSetting.xaml 的交互逻辑 /// public partial class winCGPTSetting : WindowX { MainWindow mw; long totalused = 0; public winCGPTSetting(MainWindow mw) { InitializeComponent(); this.mw = mw; if (mw.CGPTClient != null) { tbAPIKey.Text = mw.CGPTClient.APIKey; tbAPIURL.Text = mw.CGPTClient.APIUrl; tbMaxToken.Text = mw.CGPTClient.Completions["vpet"].max_tokens.ToString(); tbSystem.Text = mw.CGPTClient.Completions["vpet"].messages[0].content; tbTemp.Text = mw.CGPTClient.Completions["vpet"].temperature.ToString(); var msgs = mw.CGPTClient.Completions["vpet"].messages.ToList(); msgs.RemoveAt(0); tbHistory.Text = JsonConvert.SerializeObject(msgs); lbSpend.Content = mw.CGPTClient.TotalTokensUsage.ToString() + " Token"; totalused = mw.CGPTClient.TotalTokensUsage; } } private void btnSave_Click(object sender, RoutedEventArgs e) { mw.CGPTClient = new ChatGPTClient(tbAPIKey.Text, tbAPIURL.Text) { TotalTokensUsage = totalused }; mw.CGPTClient.CreateCompletions("vpet", tbSystem.Text.Replace("{Name}", mw.Core.Save.Name)); mw.CGPTClient.Completions["vpet"].frequency_penalty = 0.2; mw.CGPTClient.Completions["vpet"].presence_penalty = 1; mw.CGPTClient.Completions["vpet"].max_tokens = Math.Min(Math.Max(int.Parse(tbMaxToken.Text), 10), 4000); mw.CGPTClient.Completions["vpet"].temperature = Math.Min(Math.Max(double.Parse(tbTemp.Text), 0.1), 2); mw.CGPTClient.Completions["vpet"].messages.AddRange(JsonConvert.DeserializeObject>(tbHistory.Text)); mw.Save(); this.Close(); } } }