SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
最近AI搜索很火爆,有Perplexity、秘塔AI、MindSearch、Perplexica、memfree、khoj等等。
在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新的信息,导致回答的内容不是基于最新的信息,为了解决这个问题,可以通过LLM+搜索引擎的方式实现。
以我之前开源的一个简单项目为例,如果直接问一般的大语言模型是不知道的,如下所示:

对比可以联网的回答:
Perplexity

khoj

Kimi

那么我们如何自己实现类似的效果呢?
先来看看自己实现的效果:

源码GitHub地址:https://github.com/Ming-jiayou/SimpleAISearch
如果对此感兴趣的话,就可以继续往下阅读。
实现思路
本质上就是LLM+搜索引擎。
首先需要能够实现函数调用功能,在之前的文章中已经有所说明。主要介绍一下实现思路,源码已经开源,感兴趣的话可以自己去看下具体代码。
首先在插件中添加调用搜索引擎的代码,我这里搜索引擎选用的是DuckDuckGo。
开始执行时,LLM会判断需要调用这个函数,并且参数是问题:

这个函数如下所示:

搜索引擎会找到相关内容:

让LLM根据获取到的这些信息给出回答:

目前是经过总结之后显示在界面上,也可以修改为不经过总结的。
以上就是实现的一个简单思路。
快速体验
通过源码构建
和之前的LLM项目一样,只需appsettings.example.json修改为appsettings.json选择你使用的平台并填入API Key即可。
直接体验
我已经在github上发布了两个版本一个依赖框架,一个不依赖框架:

下载解压之后,在appsettings中填入你的api key即可使用。
SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索的更多相关文章
- python--selenium简单模拟百度搜索点击器
python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...
- xpath教程一---简单的标签搜索
工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests[推荐安装,从网页上获取网页代码练手,再好不过了] 讲解 网页代码都是成对的标签, ...
- 简单搜索dfs, 简单的修剪搜索
选择最合适的语言做一个项目是非常重要的.但,熟练的掌握自己的武器,这也是非常重要的. ========================================================= ...
- MapReduce 简单的全文搜索2
上一个全文搜索实现了模糊查找,这个主要实现了精确查找,就是比如你查找mapreduce is simple那么他就只查找有这个句子的文章,而不是查找有这三个单词的文章. 这个版本需要重写反向索引,因为 ...
- ElasticSearch(五):简单的ElasticSearch搜索功能
这里主要是一些简单的ElasticSearch的搜索功能,复杂的搜索,比如过滤,聚合等以后单独在写 1. 搜索全部 GET book/_search 直接搜索全部,下面是对搜索结果的详细介绍:默认情况 ...
- Android 百度地图 简单实现--- 美食搜索
Android 百度地图 简单实现--- 美食 依赖包: 加入 Android 百度依赖包: 1 key: <!-- 开发人员 key --> <meta-dat ...
- hdu 1078 FatMouse and Cheese(简单记忆化搜索)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物 一道 ...
- Vue下简单分页及搜索功能
最近利用Vue和element ui仿写了个小页面,记一哈分页和搜索功能的简单实现. 首页 emmmm..... 搜索框输入..... 搜索完成 数据是直接写在这里面的: cardPhoto:[ ...
- Django 博客实现简单的全文搜索
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 搜索是一个复杂的功能,但对于一些简单的搜索任务,我们可以使用 Django Mode ...
- java简单的实现搜索框的下拉显示相关搜索功能
最近做了一个简单的搜索框下面下拉显示相关搜索的功能,有点模仿百度的下拉展示相关搜索 先上个展示图 : 点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来 ...
随机推荐
- oeasy教您玩转vim - 51 - # 读写文件
读写文件 回忆上节课内容 命令行的光标控制 方向键️️️️️可以控制左右移动 shift+️️️️️按照word左右移动光标 ctrl+b 到开头begin ctrl+e 到结尾end ctrl+w ...
- Python和RPA网页自动化-浏览器切换不同窗口页面
以百度为例,点击[BOSS直聘]词条会打开一个BOSS新窗口页面,分别使用Python和RPA网页自动化在不同的窗口页面来回切换窗口完成以下顺序步骤 1.Python代码如下 步骤:打开新窗口页面后, ...
- 【H5】04 建立超链接
摘自: https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks 超链接 ...
- 【Java】Main方法的命令行参数
可以使用命令行注入参数执行
- Ubuntu的性能模式与省电模式:进行科学计算时一定要手动将Ubuntu的CPU模式设置为性能模式
不论是什么系统,windows11还是Ubuntu.Centos.RedHat,其运行时都有一个运行模式的概念,其实这个运行模式就是CPU的性能模式,一般可以分为性能模式和省电模式两种,当然也有介于两 ...
- 【转载】 模仿学习:在线模仿学习与离线模仿学习 ———— Imitate with Caution: Offline and Online Imitation
网上闲逛找到的一篇文章,介绍模仿学习的,题目: Imitate with Caution: Offline and Online Imitation 之所以转载这个文章是因为这个文章还是蛮浅显易懂的, ...
- WPF 使用MediaElement,但Source带https会抛出未引用对象实列
原因和解决办法 如果恰好使用了MediaElement,在调用的时候,会出现空异常 var uri = new Uri("https://xxxx.mp4", UriKind.Re ...
- 多线程之park()与interrupt()的理解
1.背景 其他不多说,很多时候面试会问 2.代码 package com.ldp.demo01; import com.common.MyThreadUtil; import lombok.exter ...
- 9组-Alpha冲刺-总结
一.基本情况 1.1基本情况(10分): 组长博客链接:https://www.cnblogs.com/Microsoft-hc/p/15585517.html 1.2现场答辩总结 PPT上缺少了组内 ...
- DIjkstra进阶模板 路径记录 按权重(结点数最小等)记录
struct DIJ { using i64 = long long; using PII = pair<i64, i64>; vector<i64> dis, path, n ...