没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2025-08-28 11:15:32.987|阅读 11 次
概述:本文主要介绍了Tool Call Confirmation API层和DevExpress Blazor AI Chat组件的相关可自定义接口,欢迎下载最新版体验!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。
现代AI驱动的应用程序通常会自动执行工具来响应用户查询,虽然这种自动化包含了llm的潜力并改善了用户体验,但在未经用户明确同意的情况下调用敏感操作(例如,修改数据库、发送电子邮件或对外部服务进行API调用)时,它可能会引入安全风险。
本文主要介绍了Tool Call Confirmation API(工具调用)层和DevExpress Blazor AI Chat组件的相关可自定义接口的目的,DevExpress的解决方案拦截AI发起的函数调用,生成详细的确认对话框,并在执行前需要用户批准,这种UI模式在GitHub Copilot Chat、Cursor、Claude和其他具有MCP支持的AI驱动应用程序中很常见。
在本文中,我们将带大家了解DevExpress的AI聊天确认系统、它的关键组件和自定义选项(当然还会向您展示如何使用DevExpress Blazor AI Chat控件将这个安全层添加到AI驱动的Blazor应用程序中)。
DevExpress技术交流群11:749942875 欢迎一起进群讨论
AI函数调用是一种强大的资源,它允许模型与应用程序功能无缝交互。然而必须负责任地使用这种能力,考虑以下使用场景:
本文中描述的技术在便利性和控制性之间取得了平衡:它保留了自动工具调用的好处,并为用户提供了对敏感或不可逆操作的明确权限。
在您的Blazor应用程序中创建和配置DevExpress Blazor Chat (DxAIChat)组件。
这个例子的目标是Azure OpenAI,但是这个解决方案与任何实现了来自 "Microsoft.Extensions.AI"库的IChatClient接口的AI服务兼容。
Program.cs中的以下代码定义了基本配置:
using Azure; using Azure.AI.OpenAI; using Microsoft.Extensions.AI; var builder = WebApplication.CreateBuilder(args); // Replace with your endpoint, API key, and model's deployment name string azureOpenAIEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); string azureOpenAIKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY"); string deploymentName = "your-model-deployment-name"; var azureChatClient = new AzureOpenAIClient( new Uri(azureOpenAIEndpoint), new AzureKeyCredential(azureOpenAIKey)) .GetChatClient(deploymentName) .AsIChatClient(); builder.Services.AddDevExpressBlazor(); builder.Services.AddDevExpressAI();
DevExpress确认系统的核心是IToolCallFilter接口——这个接口定义了聊天器拦截和管理函数调用的方式。
public interface IToolCallFilter { public event Action<FunctionInvocationContext, TaskCompletionSource<bool>> ToolCalled; Task<bool> InvokeFunctionFilter(FunctionInvocationContext context); }
MyToolCallFilter管理AI触发的操作,并仅在获得批准时执行敏感操作。API设计允许过滤器暂停函数执行,等待用户输入,并根据用户的决定继续或取消,TaskCompletionSource实例支持UI和过滤器逻辑之间的异步通信。
public class MyToolCallFilter : IToolCallFilter { public event Action<FunctionInvocationContext, TaskCompletionSource<bool>> ToolCalled; public Task<bool> InvokeFunctionFilter(FunctionInvocationContext context) { if (ToolCalled is null) return Task.FromResult(true); var tcs = new TaskCompletionSource<bool>(); ToolCalled.Invoke(context, tcs); return tcs.Task; } }
CustomFunctionInvokingChatClient类扩展了DevExpress Blazor AI Chat控件的默认操作:
public class CustomFunctionInvokingChatClient : FunctionInvokingChatClient { public CustomFunctionInvokingChatClient(IChatClient innerClient, ILoggerFactory? factory = null, IServiceProvider? services = null) : base(innerClient, factory, services) { if(services == null) { throw new ArgumentNullException(nameof(services), "Service provider cannot be null."); } FunctionInvoker = CustomFunctionInvoker; } private async ValueTask<object?> CustomFunctionInvoker(FunctionInvocationContext context, CancellationToken cancellationToken) { IToolCallFilter? filter = FunctionInvocationServices!.GetService<IToolCallFilter>(); if(await (filter?.InvokeFunctionFilter(context) ?? Task.FromResult(true))) { return await context.Function.InvokeAsync(context.Arguments, cancellationToken); } return "The tool call was cancelled by the user. Do not attempt to invoke this tool again. Return a message indicating that the call was cancelled and that the weather information is unavailable at this time."; } }
未完待续,下期继续......
更多产品资讯及授权,欢迎来电咨询:023-68661681
更多DevExpress线上公开课、中文教程资讯请上中文网获取
慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。
慧都是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:慧都网本文主要介绍了Tool Call Confirmation API层和DevExpress Blazor AI Chat组件的相关可自定义接口,欢迎下载最新版体验!
本文详细对比Visual Paradigm社区版、标准版、专业版和企业版的核心功能差异,包括许可协议、建模支持、团队协作和高级工程能力,为您提供清晰的选型指南。
本文将为大家介绍如何使用MyEclipse来启用自动JSP验证,欢迎下载最新版体验!
本文主要介绍DevExpress WPF Grid控件如何将数据绑定到本地集合,欢迎下载最新版组件体验!
高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress Universal Subscription优秀的界面控件开发包,帮助企业构建卓越应用!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号