MAF中的ReAct循环通过FunctionInvokingChatClient中间件实现,AIFunction调用由此驱动。TransferMoney工具函数在用户未确认转账时,会注入风险提示消息,确保用户提供验证码。MessageInjectingChatClient用于注入消息并存储在Session的StateBag中,增强了风控能力。
OpenTelemetry已成为应用和服务可观测性的标准。OpenTelemetryChatClient中间件通过重写方法,支持LLM调用的链路跟踪和性能监控。结合Prometheus和Grafana,开发者可以轻松搭建监控环境,收集和展示性能指标。示例代码展示了如何使用ActivitySource记录调用链信息,并在控制台和Grafana中查看性能数据。
本文讨论了ReAct循环中ChatHistoryProvider的消息存档机制。默认情况下,消息在循环结束后存档,可能导致数据丢失。为提高可靠性,建议使用PerServiceCallChatHistoryPersistingChatClient中间件,实现每次迭代后即时存档,确保数据安全。通过示例展示了如何创建和使用该中间件,以持久化对话历史,防止数据丢失。
本文介绍了如何利用ImageGeneratingChatClient中间件与ImageGenerator结合生成高质量图片。用户通过与Agent对话描述图片,LLM生成专业提示词,ImageGenerator根据提示生成图片。示例展示了如何输入描述并生成不同风格的布偶猫图片,强调了提示词的细节要求和生成过程中的工具使用。
本文介绍了如何使用IChatClient和ChatClientAgent动态配置ChatOptions,以实现不同模型的交替使用。通过ConfigureOptionsChatClient中间件,可以在每次调用时设置模型ID。同时,AIContextProviderChatClient中间件利用AIContextProvider生成增强的请求消息,提升对话质量。示例代码展示了对话摘要处理和动态配置的实现。
ReducingChatClient是一种中间件,旨在通过精简对话内容来提高Agent的决策准确性。它利用SummarizingChatReducer对对话进行摘要处理,保留关键信息,减少上下文干扰,从而优化LLM推理质量。系统通过设置targetCount和threshold参数,确保在不丢失基本语义的情况下保留必要的对话信息。
CachingChatClient是一个中间件,用于缓存LLM调用结果,减少重复调用的时间和费用。它通过检查缓存返回相同输入的响应,若不存在则调用LLM并存储结果。DistributedCachingChatClient是其具体实现,利用IDistributedCache作为缓存存储,确保相同输入得到相同输出,提高效率。
FunctionInvokingChatClient是IChatClient中的关键中间件,驱动Agent执行ReAct循环。ReAct通过分析问题并调用工具函数来解决复杂任务,并在敏感操作中引入人机交互审批流程,以确保用户同意后再执行。示例包括根据天气提供穿衣建议和银行转账的审批流程,确保操作的安全性和有效性。
LoggingChatClient是一个IChatClient中间件,用于记录调用日志,帮助调试和监控Agent行为。它记录输入、输出及时间戳信息,并支持不同日志级别的设置。通过UseLogging方法,可以轻松注册该中间件并控制日志输出。
MAF(Microsoft Agent Framework)是微软的企业级AI代理开发框架,支持状态管理、身份定义和工具管理。与IChatClient相比,MAF的AIAgent具备多轮对话和记忆功能。创建Agent需经过三步,支持同步和流式调用。核心概念包括Agent、Thread和Run。目前的限制是单次调用不具备历史记忆,需通过AgentThread解决。
完成下面两步后,将自动完成登录并继续当前操作。