agent管道

Artech5 天前
ai·agent·agent管道
[MAF预定义ChatClient中间件-07]PerServiceCallChatHistoryPersistingChatClient——基于ReAct循环的一步一存档在默认的情况下,ChatHistoryProvider基于调用对产生的请求和消息进行存档。如果一次调用涉及多轮ReAct循环,意味着每次调用可能会很多条消息,但是它们只会在ReAct循环结束之后才会被存档一次。如果最后存单失败,意味着这些消息将全部丢失,所以有时候我们ReAct循环的每次迭代都存档一次。这种细粒度的存档方式可以通过注册PerServiceCallChatHistoryPersistingChatClient中间件来实现。
Artech7 天前
ai·agent·maf·agent管道
[MAF预定义ChatClient中间件-05]动态修改ChatOptions和请求消息调用IChatClient的GetResponseAsync或者GetStreamingResponseAsync方法时,我们通常会传入一个ChatOptions对象来控制运行行为。当我们基于IChatClient构建一个ChatClientAgent对象时,可以指定对应的ChatClientAgentOptions。ChatClientAgentOptions携带的ChatOptions会每次应用到针对IChatClient的调用中去,所以这是绑定公共ChatOptions的一个好方式。如果某些调用需要
JaydenAI9 天前
ai·c#·agent·maf·agent管道·agent中中间件
[MAF预定义Agent中间件-01]LoggingAgent——在Agent调用前后输出日志ChatClientAgent管道由三部分组成,面向LLM的ChatClient管道中预定义了一个LoggingChatClient中间件,Agent中间件管道中预定义了一个LoggingAgent中间件,除了所处位置决定的调用时机不同外,它们的设计和实现方法几乎一摸一样。所以我们以LoggingChatClient——在LLM调用前后输出日志这篇文章一样的结构来介绍LoggingAgent中间件。该中间件它在调用Agent前后输出日志,帮助我们更好地了解Agent的执行过程。它会记录每次调用的输入和输出
Artech11 天前
ai·agent·maf·agent管道·ichatclient
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间我们知道LLM的调用不仅仅是一个耗时的操作,还会产生一定的费用,所以我们希望能够尽可能地减少不必要的调用。CachingChatClient就是为此而生的一个中间件实现,它通过在内存中维护一个缓存来存储之前调用LLM的输入和输出,从而避免了对相同输入的重复调用。当我们调用GetResponseAsync方法时,CachingChatClient会先检查缓存中是否已经存在针对相同输入的响应,如果存在就直接返回缓存中的响应,而不需要再次调用LLM;如果不存在,那么它就会调用LLM来获取响应,并将输入和响应一起
Artech14 天前
ai·agent·maf·agent管道
[MAF的Agent管道详解-07]利用AIAgent中间件构建Agent管道与采用DelegatingChatClient中间件装饰IChatClient对象并构成IChatClient管道的方式类似,我们可以使用DelegatingAIAgent代表的AIAgent中间件来装饰一个AIAgent对象,并构成一个AIAgent管道。通过在不同的阶段插入不同的AIAgent中间件,我们就可以实现对Agent调用的全方位控制和增强。DelegatingAIAgent中间件链条位于整个AIAgent管道的最前端。
Artech15 天前
ai·agent·maf·agent管道
[MAF的Agent管道详解-06]ChatClientAgent对IChatClient和输入输出增强管道的整合上面我们介绍了与LLM交互的IChatClient管道、持久化对话消息的ChatHistoryProvider、以及实现输入和输出增强的AIContextProvider,接下来我们来看看ChatClientAgent是如何将它们整合在一起的。
JaydenAI17 天前
ai·c#·agent·agent管道·chatclient中间件·chatclient管道
[MAF预定义ChatClient中间件-06]利用ImageGeneratingChatClient开发专业图片生成Agent我们目前已经有相当专业的图片生成的模型,它可以利用我们提供的文本提示来生成高质量的图片,但是由于我们对文字的驾驭能力不够,写不出迎合LLM的提示词。ImageGeneratingChatClient中间件结合我们注册的ImageGenerator将两者结合在一起:我们通过与Agent对话的方式说出我们对生成图片的描述,LLM根据我们的描述返回专业的提示词文本。注册的ImageGenerator将提示词提交给专门负责图片生成的模型来生成图片。
Artech18 天前
ai·agent·maf·agent管道
[MAF的Agent管道详解-04]如何让LLM按照要求的结构输出数据?针对IChatClient的结构化输出可以通过调用如下这些重载的GetResponseAsync<T>扩展方法来完成。具体的实现很简单,这些方法最终会利用指定或者默认的JsonSerializerOptions针对泛型参数T生成一个ChatResponseFormatJson对象,并作为ChatOptions的ResponseFormat属性。这个ResponseFormat承载的JSON Schema将提供给LLM指导它按照定义的格式生成输出内容。当IChatClient接收到LLM的响应结果时,利用匹
Artech19 天前
ai·llm·openai·agent·maf·agent管道·ichatclient
[MAF的Agent管道详解-03]连接LLM的IChatClient对象在IChatClient管道的最末端是一个与LLM进行交互的IChatClient对象,这个对象负责将最终的请求发送给LLM并返回响应结果。这个IChatClient对象的具体类型取决于我们使用的是什么模型以及模型的部署方式。系统提供了很多这样的IChatClient实现来支持不同的模型和部署方式。对于目前主流的LLM,我们都可以直接利用其客户端来创建一个对应的IChatClient对象.
JaydenAI20 天前
ai·c#·agent·日志·agent管道·chatclient中间件
[MAF预定义的IChatClient中间件-01]LoggingChatClient——在LLM调用前后输出日志LoggingChatClient是一个预定义的IChatClient中间件,它在调用前后输出日志,帮助我们更好地了解Agent的执行过程。它会记录每次调用的输入和输出,以及调用的时间戳等信息。这对于调试和监控Agent的行为非常有用。
Artech21 天前
ai·agent·aiagent·maf·agent管道
[MAF的Agent管道详解-01]塑智能体边界,从AIAgent抽象类开始和LangChain万法归一的设计哲学不同,MAF在设计上采用了多态的设计哲学,提供了一个Agent基类,通过继承这个基类来创建不同类型的Agent。虽然MAF的Agent类型多种多样,但最重要的莫过于ChatClientAgent,MAF语境下的Agent基本上指的就是这个对象。ChatClientAgent采用管道式设计,它利用一些列可扩展的组件构建了Agent和LLM消息交换的通道,还实现ReAct循环。这个管道之于MAF的重要性,可能比中间件管道对于ASP.NET Core的还要重要。MAF为Ag
我是有底线的