本文介绍了如何使用ChatHistoryMemoryProvider和Mem0Provider为AI代理实现长期记忆功能。Mem0Provider通过远程调用Mem0服务存储和检索对话历史,使AI能够像人类一样记住用户偏好。示例中,代理根据用户的口味偏好进行外卖点餐,展示了会话状态的创建和管理。Mem0Provider的实现与ChatHistoryMemoryProvider相似,但不需要维护向量数据库。
本文探讨了通过赋予智能代理记忆能力来提升外卖服务质量。短期记忆支持多轮对话,长期记忆实现跨会话的信息共享。使用ChatHistoryMemoryProvider,代理能够记录用户的口味偏好,并在后续点餐中根据这些偏好推荐菜品。示例代码展示了这一功能的实现,并指出了推荐多样性方面的不足。
Agent Skills通过动态加载提示词机制增强用户与LLM的对话。以翻译古典诗词为例,定义了名为translator的Skill,提供三种翻译变体。实现包括AgentSkill类及其子类,支持从文件或内存加载。AgentSkillsProvider管理这些Skills,并通过构建器模式简化配置,旨在提升对话的灵活性和准确性。
ChatClientAgent通过输入增强和输出增强与大型语言模型(LLM)交互。检索增强生成(RAG)利用TextSearchProvider根据上下文检索相关信息,从而提升LLM的回答质量。文章示例展示了如何使用TextSearchProvider获取2026年斯诺克世锦赛冠军吴宜泽的信息,强调了RAG在解决LLM知识局限性中的重要性。
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方法,可以轻松注册该中间件并控制日志输出。
本文介绍了如何使用DelegatingAIAgent中间件装饰AIAgent对象,以构建AIAgent管道。通过插入不同的中间件,可以增强和控制Agent调用。DelegatingAIAgent是一个抽象类,包含InnerAgent属性,支持功能扩展。AIAgentBuilder用于注册中间件并构建AIAgent对象,提供多种重载方法以满足不同需求。
本文介绍了ChatClientAgent如何整合IChatClient、ChatHistoryProvider和AIContextProvider。ChatClientAgent通过构造函数接收这些组件,支持会话管理和响应处理,允许开发者自定义输出格式,以确保与LLM的顺畅交互。
本文介绍了`ChatClientAgent`的构建与整合,重点在于将`IChatClient`、`ChatHistoryProvider`和`AIContextProvider`结合。`ChatClientAgent`通过构造函数接收配置选项,支持对话历史管理和上下文定制,讨论了会话创建、序列化及执行流程,并强调了结构化输出的需求,提供了多种重载方法以满足不同响应格式的需求。
ChatClientAgent封装了IChatClient对象,提供与大型语言模型(LLM)交互的能力。其响应质量受输入消息和配置选项的影响。用户可以通过ChatHistoryProvider和AIContextProvider定制输入和处理LLM返回的结果,前者管理对话历史,后者处理消息和选项。系统提供多种内置实现,以支持灵活的对话管理和上下文处理。
本文介绍了如何使用IChatClient的GetResponseAsync<T>方法提取个人信息。通过创建OpenAIClient的IChatClient对象,可以从文本中提取信息并生成Profile对象。示例中定义了Profile类,并通过调用GetResponseAsync<Profile>方法获取响应,验证提取的信息是否正确。
本文介绍了如何使用IChatClient对象与大型语言模型(LLM)进行交互。通过OpenAIClient和AzureOpenAIClient,可以创建IChatClient对象,并获取天气信息以提供穿搭建议。示例中,用户询问苏州天气,LLM根据天气生成了穿搭建议,强调面料选择和搭配技巧。
本文介绍了IChatClient管道的结构与功能。IChatClient作为与LLM交互的连接器,提供GetResponseAsync和GetStreamingResponseAsync两种方法,支持多种对话选项。通过DelegatingChatClient类,可以创建中间件,增强请求和响应的处理能力,实现灵活的功能扩展。ChatClientBuilder类简化了中间件的构建过程,方便用户定制IChatClient管道。
完成下面两步后,将自动完成登录并继续当前操作。