AI搜索的最简流程是:
将用户问题google搜索一遍
基于搜索结果,让大模型进行总结输出
但这样的结果一般很粗糙。
一般用户在实际使用的时候,会基于第一次搜索结果进行二次搜索和点开部分网页,这样可以获得更加精细和可靠的结果。
所以更好一点的流程可以是:
将用户问题google搜索一遍
基于用户问题和搜索结果,进行可能有帮助的二次google搜索
基于第一次和第二次的搜索,获取部分和用户问题最相关的网页内容
基于1、2、3获取的搜索结果和网页内容,进行结构化整理输出给用户。
下面是基于GeneralAgent框架(开源地址: https://github.com/CosmosShadow/GeneralAgent),快速实现的一个AI搜索。
# AI搜索from GeneralAgent import Agentfrom GeneralAgent import skillsgoogle_results = []# 步骤1: 第一次google搜索question = input('请输入问题,进行 AI 搜索: ')# question = '周鸿祎卖车'content1 = skills.google_search(question)google_results.append(content1)# 步骤2: 第二次google搜索: 根据第一次搜索结构,获取继续搜索的问题agent = Agent('你是一个AI搜索助手。')querys = agent.run(f'用户问题: \n{question}\n\n搜索引擎结果: \n{content1}\n\n。请问可以帮助用户,需要继续搜索的关键短语有哪些(最多3个,且和问题本身不太重合)?返回关键短语列表变量([query1, query2])', return_type=list)print(querys)for query in querys:content = skills.google_search(query)google_results.append(content)# 步骤3: 提取重点网页内容agent.clear()web_contents = []google_result = '\n\n'.join(google_results)urls = agent.run(f'用户问题: \n{question}\n\n搜索引擎结果: \n{google_result}\n\n。哪些网页对于用户问题比较有帮助?请返回最重要的不超过5个的网页url列表变量([url1, url2, ...])', return_type=list)for url in urls:content = skills.web_get_text(url, wait_time=2)web_contents.append(content)# 步骤4: 输出结果agent.clear()web_content = '\n\n'.join(web_contents)agent.run(f'用户问题: \n{question}\n\n搜索引擎结果: \n{google_result}\n\n部分网页内容: \n{web_content}\n\n。请根据用户问题,搜索引擎结果,网页内容,给出用户详细的回答,要求按一定目录结构来输出,并且使用markdown格式。')
实际运行效果:
搜索"周鸿祎卖车",输出下面的结果:
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |