界面控件DevExpress v24.2新版亮点 - 自定义和扩展AI驱动的扩展

360影视 2025-01-14 17:38 1

摘要:DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevE

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应用提供直观的解决方案,全面解决各种使用场景问题。

人工智能(AI)

自定义和扩展AI驱动的扩展

DevExpress v24.2的AI驱动扩展附带默认提示——官方鼓励您根据需要自定义这些提示,下面的例子创建了一个定制的WilliamShakespeareStyleExtension(基于ProofreadExtension),要定制提示符,覆盖GetSystemPrompt方法:

C#

public class WilliamShakespeareStyleExtension : ProofreadExtension {public WilliamShakespeareStyleExtension(IServiceProvider serviceProvider) : base(serviceProvider) { }protected override string GetSystemPrompt(ProofreadRequest request) {return "Rewrite this text using a William Shakespeare style.";}}

要替换校对扩展的默认实现,请使用Register方法:

WinForms/WPF

AIExtensionsContainerDesktop.Default.Register;

Blazor/ASP.NET Core

builder.Services.AddDevExpressAI;builder.Services.GetService.Register;

要实现您自己的AI扩展,创建一个TextRequest和ChangeTextExtension类的后代:

WinForms/WPF

public class AuthoredStyleRequest : TextRequest {public AuthoredStyleRequest(string Author, string Text) : base(Text) {this.Author = Author;}public string Author { get; init; }}public class AuthoredStyleExtension : ChangeTextExtension {public AuthoredStyleExtension(IServiceProvider serviceProvider) : base(serviceProvider) { }protected override string GetSystemPrompt(AuthoredStyleRequest request) {return $"Rewrite this text in the {request.Author} style";}}//This extension method allows you to resolve the extension from the extensions container at runtimepublic static class CustomAIIntegration {public static AuthoredStyleExtension CreateAuthoredStyleExtension(this IAIExtensionsContainer container){return (AuthoredStyleExtension)container.GetExtension(typeof(AuthoredStyleRequest));}}

注册扩展:

WinForms/WPF

AIExtensionsContainerDesktop.Default.Register;builder.Services.AddDevExpressAI;builder.Services.GetService.Register;

要在运行时调用自定义扩展,请使用以下代码片段:

WinForms/WPF

AuthoredStyleExtension extension = AIExtensionsContainerDesktop.Default.CreateAuthoredStyleExtension;var request = new AuthoredStyleRequest("Mark Twain", textToModify);//You can also set up the Temperature variable that will be used to execute this particular requestrequest.Options.Temperature = 0.9f;string result = await extension.ExecuteAsync(request, CancellationToken.None);AuthoredStyleExtension extension = builder.Services.GetService.CreateAuthoredStyleExtension;var request = new AuthoredStyleRequest("Mark Twain", textToModify);//You can also set up the Temperature variable that will be used to execute this particular requestrequest.Options.Temperature = 0.9f;string result = await extension.ExecuteAsync(request, CancellationToken.None);

管理长输入和AI响应

为了防止资源繁重的操作(在API成本和处理时间方面),新版本的实现基于AIIntegrationChatMaxTokensDefault属性值自动将大型内容分解为可管理的块(包括段落、句子、单词、标点符号和其他文本元素)。当用户选择的文本超过定义的限制时,系统会警告他们不能在单个操作中处理请求,并且系统会计算处理任务所需的阶段数。对话框出现后,用户可以选择按顺序处理文本并逐步查看结果,也可以选择同时完成所有操作。下图演示了该功能的实际操作:

您还可以使用以下静态API成员来配置文本内容和图像的大小限制:

ChatMaxTokensDefault - 指定模型请求可以处理的tokens的最大数量,适用于所有DevExpress AI支持的扩展。

ChatTemperatureDefault - 指定基于聊天的AI扩展的默认温度。

ChunkMaxLength - 指定每个文本块中允许的最大字符数。

ImageBufferMaxSize - 指定每个请求的Base64图像的最大大小,以字节为单位。

TextBufferMaxSize - 指定每个请求的输入文本的最大大小,以字节为单位。

本地化

DevExpress AI支持的扩展可以本地化,通过本地化AI支持的扩展,您可以修改用户界面元素和预定义内容,以满足语言和文化偏好,还可以根据区域偏好自定义提示(例如,在使用单语言AI模型时)。

错误记录和处理

要显示用户友好的错误消息(从AI服务发送请求/接收响应时遇到的错误),实现IAIExceptionHandler接口并使用RegisterAIExceptionHandler方法在DevExpress扩展容器中注册它:

C#

using DevExpress.AIIntegration;using DevExpress.AIIntegration.Extensions;public class AIExceptionHandler : IAIExceptionHandler {private readonly ILogger _logger;public AIExceptionHandler(ILogger logger) {this._logger = logger;}public Exception ProcessException(Exception exception) {_logger.LogInformation($"An error occurred: {exception.Message}");return new Exception ("Something went wrong. Please try again later.", exception);}}

WinForms/WPF

AIExtensionsContainerDesktop.Default.RegisterAIExceptionHandler(new AIExceptionHandler(new MyFavoriteLogger));builder.Services.AddSingleton(new AIExceptionHandler(new MyFavoriteLogger));

来源:科技大鹅童

相关推荐