三步搭建属于你的AI搜索引擎FreeAskInternet:让GPT-3.5 Turbo可联网 + 国内直连 !

搭建 FreeAskInternet:让 GPT-3.5 Turbo 联网

作者:Aitrainee | AI进修生

文章太长了,请点击这里查看原文三步搭建属于你的AI搜索引擎FreeAskInternet:让GPT-3.5 Turbo可联网 + 国内直连 !

在这里插入图片描述

大家好,我是Aitrainee。微软的Copilot集成了GPT的AI搜索引擎,但由于IP限制,一般人无法使用。但是现在有了一个新项目,叫做 FreeAskInternet,它利用免费的GPT3.5 API(FreeGPT35)、ChatGPT-Next-Web和元搜索引擎SearXNG,构建了结合了GPT和搜索引擎的AI搜索引擎。

FreeAskInternet是什么?

FreeAskInternet是一个完全免费、私密且在本地运行的搜索聚合器和答案生成器,使用LLM,无需GPU。用户提问,系统利用searxng在多个搜索引擎上进行搜索,并将搜索结果与ChatGPT3.5 LLM结合,生成答案。所有过程在本地运行,不需要GPU或OpenAI或Google API密钥。

特点

  • 完全免费(无需API密钥)
  • 完全本地化(无需GPU,任何计算机均可运行)
  • 完全私密(所有内容在本地运行)
  • 无需LLM硬件即可运行(无需GPU!)
  • 使用免费的ChatGPT3.5 API(无需API密钥!感谢OpenAI)
  • 使用Docker Compose快速简便部署
  • 网页和移动友好界面,可轻松从任何设备访问(感谢ChatGPT-Next-Web)

工作原理

  1. 系统在本地运行的ChatGPT-Next-Web中获取用户输入的问题,并调用本地运行的searxng在多个搜索引擎上进行搜索。
  2. 爬取搜索结果链接内容并传递给ChatGPT3.5(使用本地运行的FreeGPT35),要求ChatGPT3.5根据这些内容作为参考回答用户的问题。
  3. 将答案流式传输到ChatGPT-Next-Web聊天界面。

如何部署?

第一步:安装Docker

如果你还没有安装Docker,首先要在你的系统上安装Docker。Docker是一个用于开发、部署和运行应用程序的开源平台。

第二步:获取FreeAskInternet项目代码

通过Git克隆FreeAskInternet项目代码到你的本地:

git clone https://github.com/nashsu/FreeAskInternet.git
cd FreeAskInternet

第三步:使用Docker Compose启动服务

进入项目目录后,使用Docker Compose启动服务:

docker-compose up -d

等待一段时间,服务启动完成后,你应该可以在http://localhost:3000打开Web界面。默认情况下不暴露任何其他内容。

现在,你可以输入问题进行测试了。

总结

FreeAskInternet让普通用户也能享受到GPT与搜索引擎相结合的好处,而且完全免费、本地化和私密。只需简单的部署步骤,就可以在本地运行这个强大的AI搜索引擎。


✨ AI算法工程师 | AIGC技术实践者 🚀

🎵 知音难求,自我修炼亦艰。

📚 吾生也有涯,而知也无涯。

🌌 AIGC时代,立志成为超级个体:抓住前沿技术的机遇,与我们一起成为创新的超级个体。

✉️ 回复“群聊”,就能和大家嗨聊!
文章太长了,请点击这里查看原文三步搭建属于你的AI搜索引擎FreeAskInternet:让GPT-3.5 Turbo可联网 + 国内直连 !

  • 公众号有最新咨询和AI工具教程

在这里插入图片描述

<think>嗯,用户问的是在使用AI搜索时如何同时联网搜索,并且项目用的是Spring Boot。首先,我需要理解用户的具体需求。可能他们正在开发一个基于Spring Boot的应用,想要集成AI功能,同时需要让这个AI能够访问互联网获取实时信息。 接下来,我得考虑AI搜索通常指的是像集成GPT这样的模型,但这些模型通常是基于预训练的数据,不能实时联网。所以用户可能希望他们的应用不仅能处理AI生成的内容,还能结合最新的网络数据。 然后,可能的解决方案有几个方向。一是使用第三方API,比如SerpAPI或Google Custom Search JSON API,这些服务可以让应用通过HTTP请求获取搜索结果。另一个方向是利用现有的库,比如Jsoup来爬取网页,但需要注意法律和网站的使用条款。 再考虑Spring Boot的集成部分。在Spring Boot中,可以通过RestTemplate或者WebClient来调用外部API。需要指导用户如何配置这些HTTP客户端,处理API返回的数据,可能还要解析JSON或者HTML内容。 同时,用户可能需要处理API密钥的安全性,比如使用Spring Boot的配置管理,把密钥放在application.properties或者用环境变量,避免硬编码在代码里。 另外,可能要考虑异步处理,如果搜索请求比较耗时,可以用@Async来避免阻塞主线程。还有错误处理,比如网络超时或者API限制,需要添加重试机制或者友好的错误提示。 最后,可能需要提醒用户注意法律问题,比如遵守robots.txt,尊重版权,以及处理用户数据的隐私问题。同时,性能优化方面,缓存常用的搜索结果,减少API调用次数,节省成本和提升响应速度。 总结一下,用户需要一个结合AI和实时网络数据的Spring Boot应用,解决方案包括使用外部API、HTTP客户端集成、安全处理密钥、异步和错误处理,以及法律和性能方面的注意事项。需要一步步引导用户如何具体实现这些步骤,并提供代码示例和最佳实践建议。</think>我将分步骤为您解释如何在Spring Boot项目中集成AI并实现联网搜索功能: 1. 技术选型分析 - AI模型集成:推荐使用OpenAI API(GPT系列)或本地部署的Hugging Face模型 - 联网搜索实现: ▪️ 方案一:使用Google Custom Search API(需API key) ▪️ 方案二:SerpAPI(付费但更稳定) ▪️ 方案三:Jsoup网页解析(需处理反爬机制) 2. Spring Boot项目集成步骤 2.1 依赖配置(pom.xml) ```xml <!-- Web基础 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- HTTP客户端 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> ``` 2.2 配置API密钥(application.yml) ```yaml ai: openai-key: ${OPENAI_API_KEY} search: google-cse: api-key: your_google_cse_key cx: your_search_engine_id ``` 3. 核心实现示例 3.1 联网搜索服务类 ```java @Service public class WebSearchService { @Value("${search.google-cse.api-key}") private String apiKey; @Value("${search.google-cse.cx}") private String cx; public List<SearchResult> searchWeb(String query) { WebClient client = WebClient.create(); String url = String.format( "https://www.googleapis.com/customsearch/v1?key=%s&cx=%s&q=%s", apiKey, cx, URLEncoder.encode(query, StandardCharsets.UTF_8)); return client.get() .uri(url) .retrieve() .bodyToMono(GoogleResponse.class) .map(response -> response.getItems().stream() .map(item -> new SearchResult( item.getTitle(), item.getLink(), item.getSnippet() )).collect(Collectors.toList())) .block(); } } ``` 3.2 AI集成服务(示例使用OpenAI) ```java @Service public class AIService { @Value("${ai.openai-key}") private String apiKey; public String getAIResponse(String prompt) { WebClient client = WebClient.builder() .baseUrl("https://api.openai.com/v1") .defaultHeader("Authorization", "Bearer " + apiKey) .build(); ChatRequest request = new ChatRequest( "gpt-3.5-turbo", List.of(new Message("user", prompt)) ); return client.post() .uri("/chat/completions") .bodyValue(request) .retrieve() .bodyToMono(ChatResponse.class) .map(response -> response.getChoices().get(0).getMessage().getContent()) .block(); } } ``` 4. 组合调用逻辑 ```java @RestController public class HybridSearchController { @Autowired private WebSearchService webSearchService; @Autowired private AIService aiService; @PostMapping("/smart-search") public ResponseEntity<HybridResponse> hybridSearch( @RequestBody SearchRequest request) { // 步骤1:联网搜索 List<SearchResult> webResults = webSearchService.searchWeb(request.getQuery()); // 步骤2:构建AI提示词 String aiPrompt = String.format( "基于以下实时搜索结果回答【%s】:\n%s", request.getQuery(), webResults.stream() .map(SearchResult::getSnippet) .collect(Collectors.joining("\n")) ); // 步骤3:获取AI分析结果 String aiResponse = aiService.getAIResponse(aiPrompt); return ResponseEntity.ok( new HybridResponse(webResults, aiResponse)); } } ``` 5. 注意事项 - 异步处理:建议使用@Async优化高延迟的API调用 - 错误处理:需添加重试机制和降级策略 - 速率限制:配置RateLimiter控制API调用频率 - 结果缓存:使用Redis或Caffeine缓存高频查询结果 - 安全防护:对用户输入进行XSS过滤和敏感词检测 6. 性能优化建议 $$ T_{response} = T_{search} + T_{ai} + T_{network} $$ 其中: - $T_{search}$:搜索API响应时间 - $T_{ai}$:AI处理时间 - $T_{network}$:网络传输延迟 可采用以下优化策略: - 并行调用搜索和AI预生成 - 实现流式响应(SSE) - 使用本地模型缓存(Hugging Face Transformers) 建议结合具体业务场景选择最适合的方案,对于实时性要求高的场景优先使用第三方搜索API,对成本敏感的场景可考虑自建爬虫系统(需遵守robots.txt)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aitrainee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值