手把手教你使用C#创建一个WebSearchAgent
笔记哥 /
05-15 /
9点赞 /
0评论 /
256阅读
## PocketFlowSharp介绍
最近我对PocketFlow比较感兴趣,不仅是因为它是一个极简的LLM框架,更加让我觉得很不错的地方在于作者提供了很多方便学习的例子,就算没有LLM应用开发经验,也可以快速上手。
我比较喜欢C#,也想为C#生态做一点小小的贡献,因此创建了PocketFlowSharp项目。
PocketFlowSharp项目的愿景是助力.NET开发者开发LLM应用。
在我个人在学习实践的过程中,我发现很多项目不是那么“新手友好的”,这也没有办法,开发者更关注的是代码实现,文档写起来确实也很费劲。
在PocketFlowSharp项目中,我希望可以做到足够的新手友好,提供一些只要简单配置即可跑起来的示例,并且每个示例是独立的。
PocketFlowSharp项目地址:https://github.com/Ming-jiayou/PocketFlowSharp

## 构建Web\_Search\_Agent
今天介绍的是Web\_Search\_Agent。
代码在:https://github.com/Ming-jiayou/PocketFlowSharp/tree/main/PocketFlowSharpSamples.Console/Web_Search_Agent
### 效果
先来看下效果:



### 配置
运行这个示例非常简单,我提供了.env.example,如下所示:

用于配置LLM与BraveSearchApi,目前BraveSearchApi的免费额度是一个月2000次。
将其重命名为.env,注意需要将其设置为嵌入的资源,如下所示:

### 实现
在经过简单的配置之后,应该已经能够跑通了,为了让感兴趣的人更好的学习,我这里来介绍一下具体的实现。
Web\_Search\_Agent说是Agent其实我觉得更像是个工作流。PocketFlowSharp相当于一个简单的流程框架,将节点根据一个string类型的action进行连接。
Web\_Search\_Agent的整体流程如下所示:

首先创建一个Flow:

将节点进行连接有两种方式。
一种是:
```csharp
decide.Next(search, "search");
```
另一种是:
```csharp
_ = search - "decide" - decide;
```
这是因为实现了运算符重载,具体可看此处:


运行Flow的时候,节点之间的编排在这里:

每一个节点的运行流程在这里:

首先会运行决定节点的prep:

获取上下文(当前还没有上下文)与问题。
决定节点的exec:

获取prep的问题与上下文,判断是搜索还是回答。
决定节点的post:

根据LLM做出的决定选择行动。
这里LLM选择的是search。
根据返回的search寻找下一个节点也就是搜索节点,然后同样执行prep、exec与post。
Search节点的prep:

从共享存储中获取要搜索的内容。
Search节点的exec:

返回网络搜索结果:

Search节点的post:

将网络搜索的结果放到共享存储的context中。
然后返回"decide"又会回到决定节点。
决定节点这次选择的是answer:

就会转到回答节点。
回答节点的prep:

从共享存储中获取问题与上下文。
回答节点的exec:

根据问题与上下文进行回答。
回答节点的post:

将答案存入共享存储中。
最后从共享存储中提取出答案:

以上就是整个流程,希望能够让感兴趣的朋友快速理解。
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/3402
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利
- 相关联分享