重庆市工程建设交易中心网站dz3.2整合wordpress

张小明 2026/1/10 12:02:11
重庆市工程建设交易中心网站,dz3.2整合wordpress,烟台市两学一做网站,深汕特别合作区事务员待遇AIContextProvider 实战#xff1a;用户信息记忆组件一句话简介从零实现完整的 UserInfoMemory 类#xff0c;支持自动提取用户信息、序列化持久化和跨 Thread 共享。#x1f3af; 核心功能✅ 自动提取#xff1a;从对话中提取用户姓名和年龄✅ 智能询问#xff1a;未知信…AIContextProvider 实战用户信息记忆组件一句话简介从零实现完整的 UserInfoMemory 类支持自动提取用户信息、序列化持久化和跨 Thread 共享。 核心功能✅自动提取从对话中提取用户姓名和年龄✅智能询问未知信息时主动询问已知时直接使用✅状态持久化支持序列化和反序列化✅跨 Thread 共享在不同对话线程间共享记忆 完整实现步骤 1定义数据模型public class UserInfo { public string? UserName { get; set; } public int? UserAge { get; set; } }步骤 2实现 UserInfoMemorypublic sealedclassUserInfoMemory : AIContextProvider { privatereadonly IChatClient _chatClient; public UserInfo UserInfo { get; set; } // 构造函数1首次创建 public UserInfoMemory(IChatClient chatClient, UserInfo? userInfo null) { _chatClient chatClient; UserInfo userInfo ?? new UserInfo(); } // 构造函数2反序列化恢复 public UserInfoMemory(IChatClient chatClient, JsonElement serializedState, ...) { _chatClient chatClient; UserInfo serializedState.DeserializeUserInfo() ?? new UserInfo(); } // 调用前注入用户信息到上下文 public override ValueTaskAIContext InvokingAsync( InvokingContext context, CancellationToken ct default) { var instructions new StringBuilder(); instructions.AppendLine(UserInfo.UserName isnull ? Ask the user for their name. : $The users name is {UserInfo.UserName}.); instructions.AppendLine(UserInfo.UserAge isnull ? Ask the user for their age. : $The users age is {UserInfo.UserAge}.); returnnew ValueTaskAIContext(new AIContext { Instructions instructions.ToString() }); } // 调用后从对话中提取用户信息 public override async ValueTask InvokedAsync( InvokedContext context, CancellationToken ct default) { if ((UserInfo.UserName isnull || UserInfo.UserAge isnull) context.RequestMessages.Any(x x.Role ChatRole.User)) { try { var result await _chatClient.GetResponseAsyncUserInfo( context.RequestMessages, new ChatOptions { Instructions Extract users name and age if present. }, ct); // 仅更新未知信息 UserInfo.UserName ?? result.Result.UserName; UserInfo.UserAge ?? result.Result.UserAge; } catch { /* 提取失败不影响主流程 */ } } } // 序列化只保存数据状态 public override JsonElement Serialize(JsonSerializerOptions? options null) { return JsonSerializer.SerializeToElement(UserInfo, options); } } 注册到 Agentvar chatClient AIClientHelper.GetDefaultChatClient(); var options new ChatClientAgentOptions { Instructions You are a friendly assistant., AIContextProviderFactory ctx new UserInfoMemory( chatClient, ctx.SerializedState, ctx.JsonSerializerOptions) }; var agent chatClient.CreateAIAgent(options); 测试效果4 轮对话流程第 1 轮用户说你好 → Agent 询问姓名和年龄 第 2 轮用户说我叫张三 → Agent 确认姓名继续询问年龄 第 3 轮用户说25岁 → Agent 确认年龄信息收集完成 第 4 轮用户说天气怎么样 → Agent 记住用户是张三(记忆生效)序列化与恢复// 序列化当前状态 var serialized thread.Serialize(); // 恢复对话 var restored agent.DeserializeThread(serialized); var memory restored.GetServiceUserInfoMemory(); Console.WriteLine(memory.UserInfo.UserName); // 张三跨 Thread 共享// 从原 Thread 提取用户信息 var userInfo oldThread.GetServiceUserInfoMemory()?.UserInfo; // 注入到新 Thread var newMemory newThread.GetServiceUserInfoMemory(); newMemory.UserInfo userInfo; // 新 Thread 直接拥有用户信息无需重新询问 最佳实践技术要点说明两个构造函数首次创建 反序列化恢复使用 ?? 运算符仅更新未知信息不覆盖已知异常处理InvokedAsync 中的异常不影响主流程只序列化数据不序列化服务依赖如 IChatClient验证记忆恢复反序列化后通过对话测试验证 总结✅完整实现InvokingAsync注入 InvokedAsync提取 Serialize持久化✅智能询问根据记忆状态动态生成 Instructions✅序列化支持保存和恢复对话状态✅跨 Thread 共享通过直接赋值实现记忆共享如需获取文章配套完整代码可扫码咨询领取。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

自己创建个人免费网站邮件网站怎么做的

conda update conda最佳实践:维护TensorFlow基础环境 在深度学习项目开发中,最令人头疼的往往不是模型调参,而是环境配置——“在我机器上明明能跑”的问题反复上演。一个看似简单的 ImportError 或 GPU 无法识别,可能让新手耗费数…

张小明 2026/1/9 4:23:07 网站建设

万州网站推广哪做网站最好

还在为单机游戏无法与朋友本地同屏游玩而烦恼吗?Nucleus Co-op 这款革命性的开源工具将彻底改变您的游戏体验。通过创新的虚拟多实例技术,让您在同一台电脑上仅需一个游戏副本就能畅享分屏对战乐趣! 【免费下载链接】splitscreenme-nucleus N…

张小明 2026/1/9 8:11:10 网站建设

随州制作网站网站做链接的意义是什么

如何判断你的安卓设备是否支持 fastbootd?一文讲透原理与实战方法你有没有遇到过这种情况:想给手机刷个系统镜像,命令敲得没错,但fastboot flash system system.img却提示“unknown partition”或者干脆没反应?明明在别…

张小明 2026/1/9 8:12:16 网站建设

网站建设管理工作制度创客联盟网站建设

语音转文字(STT)核心结论总结一、核心本质:概率语义匹配,而非固定字典映射STT 的核心是 「声学特征→文字序列」的概率推理,目标是理解自然语音的语义内容,和通信行业 “固定声波 - 符号字典” 有本质区别&…

张小明 2026/1/9 9:32:16 网站建设

网站权重能带来什么作用做转运网站

手把手教你安装 Keil5:从零开始搭建嵌入式开发环境(避坑指南)你是不是也遇到过这样的情况?刚下载好 Keil5,兴冲冲双击安装,结果打开就弹出“Cannot find license data”;或者编译时提示error: c…

张小明 2026/1/9 9:33:12 网站建设

个人业务网站建设宣传册设计样本

Jupyter Notebook自动备份至GitHub的定时任务配置 在深度学习项目中,一个意外断电、一次误删操作,就可能让数小时的模型调参工作付诸东流。更糟糕的是,这种损失往往发生在实验最关键的时候——当你刚刚跑出一组理想的超参数组合,却…

张小明 2026/1/9 10:15:00 网站建设