DevExpress Blazor中文教程:AI聊天 - 如何完成工具呼叫确认?

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 Blazor中文教程图集

在上文中(点击这里回顾>>),我们为大家介绍了如何创建确认UI、将确认UI集成到Blazor AI Chat系统等,本文将继续介绍用户体验的实践、高级自定义选项等,欢迎下载最新版体验!

获取DevExpress v25.1正式版下载

用户体验的实践

当用户请求天气信息时,会出现以下顺序:

  1. LLM确定需要进行函数调用。
  2. 将显示一个确认对话框(替代立即执行)。
  3. 确认对话框显示工具名称、描述和检索的参数。
  4. 用户可以批准或取消该操作。
  5. 只有经过批准的工具才会被执行(它们的结果返回给LLM)。

界面控件DevExpress Blazor中文教程图集

高级自定义选项
选择性工具调用确认

SelectiveToolCallFilter扩展IToolCallFilter,在调用用于执行敏感操作(如删除数据,发送电子邮件或处理付款)的工具之前要求用户确认:

public class SelectiveToolCallFilter : IToolCallFilter {
private readonly string[] _sensitiveOperations = { "DeleteData", "SendEmail", "ChargePayment" };

public Task<bool> InvokeFunctionFilter(FunctionInvocationContext context) {
// Only require confirmation for sensitive operations
if (!_sensitiveOperations.Contains(context.Function.Name)) {
return Task.FromResult(true);
}

// Show confirmation for sensitive operations
if (ToolCalled is null)
return Task.FromResult(true);

var tcs = new TaskCompletionSource<bool>();
ToolCalled.Invoke(context, tcs);
return tcs.Task;
}
}
增强的确认界面

修改 ConfirmationButtons.razor组件,来根据UI需求创建确认对话框。您可以修改布局,应用自定义样式,并通知用户他们将要执行的工具。

<div class="tool-confirmation-container">
<div class="confirmation-header">
<h5>⚠️ Function Execution Request</h5>
</div>

<div class="function-details">
<div class="detail-row">
<span class="label">Function:</span>
<span class="value">@_pendingContext.Function.Name</span>
</div>
<div class="detail-row">
<span class="label">Description:</span>
<span class="value">@_pendingContext.Function.Description</span>
</div>
</div>

<div class="arguments-section">
<h6>Arguments:</h6>
@foreach(var arg in _pendingContext.Arguments) {
<div class="argument-item">
<strong>@arg.Key:</strong> @arg.Value
</div>
}
</div>

<div class="action-buttons">
<DxButton Text="Approve"
RenderStyle="ButtonRenderStyle.Success"
Click="() => OnDecisionMade(true)" />
<DxButton Text="Deny"
RenderStyle="ButtonRenderStyle.Danger"
Click="() => OnDecisionMade(false)" />
</div>
</div>
审计跟踪

记录用户决策的相关细节(如工具名称、函数参数、时间戳和用户角色):

public class AuditingToolCallFilter : IToolCallFilter {
private readonly ILogger<AuditingToolCallFilter> _logger;

public AuditingToolCallFilter(ILogger<AuditingToolCallFilter> logger) {
_logger = logger;
}

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>();

// Subscribe to the task completion to log the decision
tcs.Task.ContinueWith(task => {
if (task.IsCompletedSuccessfully)
{
OnDecisionMade(task.Result, context);
}
}, TaskContinuationOptions.ExecuteSynchronously);

ToolCalled.Invoke(context, tcs);
return tcs.Task;
}

private void OnDecisionMade(bool decision, FunctionInvocationContext context) {
_logger.LogInformation("User {Decision} function call: {FunctionName} with args: {Arguments}",
decision ? "approved" : "denied",
context.Function.Name,
string.Join(", ", context.Arguments.Select(a => $"{a.Key}={a.Value}")));

// Send decision data to the analytics service
// TrackUserDecision(decision, context);
}
}
安全注意事项

确认UI增强了函数调用的透明性和用户控制,为加强确认用户界面的安全性,可采取以下措施:

  • 速率限制:限制每个用户或会话的工具调用次数。
  • 权限检查:在显示确认对话框之前验证用户权限。
  • 函数验证:在执行函数之前验证函数参数。
  • 审计跟踪:记录所有工具调用和用户决策,以便进行监视和遵从。
  • 超时处理:如果用户在预定义的时间内没有响应,则自动拒绝工具执行。
内容概要:本文系统研究了基于动态三维环境下的Q-Learning算法在无人机自主避障路径规划中的应用,依托Matlab代码实现,深入剖析了强化学习在复杂、时变空间中实现智能决策的机制。研究构建了三维网格化状态空间模型,设计了合理的动作集合与奖励函数,充分考虑静态与动态障碍物的存在,使无人机能够通过与环境持续交互,自主学习规避障碍并趋近目标的最优策略。文章不仅展示了Q-Learning算法在路径规划中的具体实现流程,还涵盖了状态表示、策略迭代、收敛性分析等关键环节,并通过仿真实验验证了算法的有效性与鲁棒性,为智能体在动态环境中的自主导航提供了理论依据和技术参考。; 适合人群:具备人工智能、自动化、计算机科学或机器人学等相关专业背景,熟悉Matlab编程语言和基本的强化学习概念,从事无人机控制、智能导航、路径规划算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市峡谷、灾害现场等复杂动态三维场景中无人机的自主飞行与紧急避障;②作为强化学习解决实际路径规划问题的教学实例,帮助理解Q-Learning的核心思想、状态-动作值函数更新过程及探索-利用权衡策略;③为后续研究更先进的深度强化学习算法(如DQN、PPO)在无人机控制中的应用奠定基础和提供对比基准。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,通过调整学习率、折扣因子、探索率(ε-greedy)等超参数,观察其对算法收敛速度和最终路径规划质量的影响,并尝试修改环境复杂度(如增加障碍物密度或动态性)以评估算法的泛化能力。
内容概要:本文系统研究了三相逆变器逆变电路的闭环控制模型,基于Simulink平台构建完整的仿真系统,深入探讨闭环控制策略对逆变器输出电压、电流波形质量的调控作用。研究内容涵盖三相逆变器的基本工作原理、空间矢量脉宽调制(SVPWM)技术、电压外环与电流内环构成的双闭环控制架构设计、PI控制器参数整定方法,并通过仿真实验全面评估系统在阻性、感性及非线性负载条件下的动态响应特性、稳态精度以及抗负载扰动能力,从而验证闭环控制策略的有效性与鲁棒性。同时,文档关联了多项电力电子与新能源并网相关的仿真案例,凸显其在光伏发电、微电网并网、储能系统等实际工程应用中的重要价值; 适合人群:具备电力电子技术、自动控制理论基础知识,熟悉Simulink/MATLAB仿真环境,从事电气工程、新能源发电、智能电网等方向的科研人员、工程技术人员及研究生; 使用场景及目标:①掌握三相逆变器双闭环控制系统建模与仿真的完整流程;②深入理解电压电流双闭环控制的设计原理及其在提升电能质量方面的实现机制;③为光伏并网逆变器、储能变流器(PCS)、微网能量管理系统等实际项目的控制算法开发与性能验证提供理论依据和技术参考; 阅读建议:建议结合文中提及的Simulink仿真模型进行实操演练,重点关注控制器参数调节对系统稳定性与动态性能的影响规律,并进一步拓展学习如重复控制、PR控制、模型预测控制(MPC)等先进控制策略在逆变器中的应用与对比分析。
内容概要:本文围绕单相逆变器闭环逆变电路的PWM模型展开仿真研究,基于Simulink平台构建系统模型,重点探究闭环控制策略下脉宽调制(PWM)技术在单相逆变器中的应用。研究内容涵盖系统建模、控制器设计、反馈回路构建及PWM信号生成等关键环节,通过仿真分析逆变电路在闭环控制下的动态响应特性、输出波形质量与系统稳定性,旨在提升逆变器的输出精度、抗干扰能力与整体性能,为电力电子系统的设计与优化提供理论支撑与仿真验证依据。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事电气工程、新能源发电、电源系统开发等相关领域的科研人员及高校研究生。; 使用场景及目标:①应用于单相逆变电源、光伏并网系统、不间断电源(UPS)等电力变换设备的控制器设计与性能优化;②通过仿真掌握闭环控制与PWM调制技术的实现机制,深入理解PI控制器参数整定、反馈采样方式选择及系统稳定性调节方法,进而提升实际工程系统的动态响应与稳态控制精度。; 阅读建议:建议读者结合Simulink动手搭建模型,逐步调试控制器参数,重点关注闭环反馈结构、PI调节器设计与PWM调制模块的实现逻辑,同时可通过对比开环与闭环系统的输出波形,深入理解闭环控制对系统性能的提升作用,从而深化对逆变器控制原理的掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值