DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应用提供直观的解决方案,全面解决各种使用场景问题。
DevExpress官方已正式发布v24.2,新版本针对人工智能(AI)方面的功能做了着重加强,欢迎下载最新版产品体验!
DevExpress v24.2正式版下载DevExpress技术交流群11:749942875 欢迎一起进群讨论
人工智能(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<ProofreadRequest, WilliamShakespeareStyleExtension>();
Blazor/ASP.NET Core
builder.Services.AddDevExpressAI(); builder.Services.GetService<IAIExtensionsContainer>().Register<ProofreadRequest, WilliamShakespeareStyleExtension>();
要实现您自己的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<AuthoredStyleRequest> { 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 runtime public static class CustomAIIntegration { public static AuthoredStyleExtension CreateAuthoredStyleExtension(this IAIExtensionsContainer container){ return (AuthoredStyleExtension)container.GetExtension(typeof(AuthoredStyleRequest)); } }
注册扩展:
WinForms/WPF
AIExtensionsContainerDesktop.Default.Register<AuthoredStyleRequest, AuthoredStyleExtension>();
Blazor/ASP.NET Core
builder.Services.AddDevExpressAI(); builder.Services.GetService<IAIExtensionsContainer>().Register<AuthoredStyleRequest, AuthoredStyleExtension>();
要在运行时调用自定义扩展,请使用以下代码片段:
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 request request.Options.Temperature = 0.9f; string result = await extension.ExecuteAsync(request, CancellationToken.None);
Blazor/ASP.NET Core
AuthoredStyleExtension extension = builder.Services.GetService<IAIExtensionsContainer>().CreateAuthoredStyleExtension(); var request = new AuthoredStyleRequest("Mark Twain", textToModify); //You can also set up the Temperature variable that will be used to execute this particular request request.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()));
Blazor/ASP.NET Core
builder.Services.AddSingleton<IAIExceptionHandler>(new AIExceptionHandler(new MyFavoriteLogger()));标签:控件,string,自定义,AI,DevExpress,扩展,request,public From: https://www.cnblogs.com/AABBbaby/p/18670068