ichatclient

Artech13 天前
ai·agent·maf·agent管道·ichatclient
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间我们知道LLM的调用不仅仅是一个耗时的操作,还会产生一定的费用,所以我们希望能够尽可能地减少不必要的调用。CachingChatClient就是为此而生的一个中间件实现,它通过在内存中维护一个缓存来存储之前调用LLM的输入和输出,从而避免了对相同输入的重复调用。当我们调用GetResponseAsync方法时,CachingChatClient会先检查缓存中是否已经存在针对相同输入的响应,如果存在就直接返回缓存中的响应,而不需要再次调用LLM;如果不存在,那么它就会调用LLM来获取响应,并将输入和响应一起
Artech14 天前
ai·agent·react·maf·ichatclient
[MAF预定义ChatClient中间件-02]FunctionInvokingChatClient——实现ReAct循环和人机交互的大功臣在众多预定义的IChatClient中间件中,FunctionInvokingChatClient无疑是最重要的一个,以至于没有它整个Agent就无法工作了。原因在于驱动Agent执行的核心机制的ReAct循环就是通过FunctionInvokingChatClient实现的,我们注册的工具函数最终由它来调用。对于相对敏感的工具函数,我们还需要通过人机交互引入审批流程,这也是通过FunctionInvokingChatClient来实现的。
JaydenAI14 天前
ai·c#·agent·maf·ichatclient
[MAF预定义ChatClient中间件-09]MessageInjectingChatClient-赋予工具消息注入的能力MAF中的ReAct循环是由FunctionInvokingChatClient中间件完成的,这意味着AIFunction的调用也是由它驱动。在默认的情况下,AIFunction绑定的委托执行完成后,结果会转换成AIContent并被封装成一个角色为Tool的ChatMessage。这个ChatMessage最终被添加到对话历史中,并作为后续调用LLM的输入。换言之,AIFunction不像LangChain的工具函数一样,可以通过返回Command对象添加具有合法结构的消息列表到对话历史中。当工具在执行
Artech15 天前
ai·logging·agent·maf·ichatclient
[MAF预定义ChatClient中间件-01]LoggingChatClient——在调用前后输出日志LoggingChatClient是一个预定义的IChatClient中间件,它在调用前后输出日志,帮助我们更好地了解Agent的执行过程。它会记录每次调用的输入和输出,以及调用的时间戳等信息。这对于调试和监控Agent的行为非常有用。
Artech21 天前
ai·llm·openai·agent·maf·agent管道·ichatclient
[MAF的Agent管道详解-03]连接LLM的IChatClient对象在IChatClient管道的最末端是一个与LLM进行交互的IChatClient对象,这个对象负责将最终的请求发送给LLM并返回响应结果。这个IChatClient对象的具体类型取决于我们使用的是什么模型以及模型的部署方式。系统提供了很多这样的IChatClient实现来支持不同的模型和部署方式。对于目前主流的LLM,我们都可以直接利用其客户端来创建一个对应的IChatClient对象.
Artech22 天前
ai·agent·maf·agent pipeline·ichatclient
[MAF的Agent管道详解-02]IChatClient管道如何完美连接大模型?ChatClientAgent的管道具有如下的结构,整个结构从右到左大体上由三部分组成:连接LLM的IChatClient及其中间件链条;旨在实现输入输出增强的多一个AIContextProvider链条;AIAgent中间件链条。本篇文章主要关注第一部分,我们将其称为IChatClient管道。
我是有底线的