QQ开放平台搭建和优化个人本地LLM群机器人(二):联网搜索

QQ机器人联网搜索功能

QQ开放平台搭建和优化个人本地LLM群机器人(二):联网搜索

前言

添加指令

首先打开QQ开放平台,登入机器人
左侧栏位找到开发-发布设置-功能配置-指令

创建指令**/联网搜索**,简单设置介绍和权限
底下的是否传参主要是上线的时候给审核看的,不用开
创建好了保存一下就行,这个指令会出现在@机器人之后

联网搜索API

适合大模型的检索引擎也是一个技术方向,自从大模型火了之后有了一些专门做这方面的初创公司。例如,Tavily,一个用的比较多的大模型搜索引擎,不过每人每月只有1000次搜索,我们这次就不用了,我们用Exa,因为没有限制

点下面的USE OUR API,注册登录一下

进去了可以直接从右边的代码里面看到自己的api_key,可以在左边输入问题,运行查看一下结果

我们输入什么是大模型,下面以字典形式返回结果效果好像比较一般里面的比较重要的参数是

  • type是针对输入问题的匹配结果的方式
  • use_autoprompt是否通过提示词的形式来优化问题
  • num_results是一次搜索返回的结果的个数
    这些组合可以自己尝试一下,得到适合自己的任务参数设置

接入大模型

先安装一下包pip install exa-py
首先我们使用一个函数来标准化搜索到的内容为字符串,方便输入大模型
注意填入自己的api_key,我们这里添加了一个当前的日期来方便大模型理解

def exa_search(query):
	print('搜索:'  +  query)
	exa = Exa(api_key="your_api_key")
	result = exa.search_and_contents(query,
									 type="keyword",
                   num_results=10,
                   text=True)
	content = '今天日期是:'  +  str(date.today()) + '\n' + '---' + '\n'
	for i in result.results:
		content += '信息来源:' + i.title + '\n'
		content += '信息内容:' + i.text[:200] + '\n'
		content += '---' + '\n'
return  content

接下来我们编写提示词,把上面的函数加入调用大模型的过程中
注意我们这里使用的api是http://localhost:11434/api/generate,而非chat,当然chat应该也没有问题

def web_search_reply(query):
	content = exa_search(query)
	prompt = f'''你是一名信息整理助手。\n
             根据接下来提供的搜索结果,回答用户的问题。\n
             问题:{query}\n
             搜索结果:{content}\n
             回答:'''
	url  =  'http://localhost:11434/api/generate'
	data  = {"model": "darkidol:latest",
			 "prompt": prompt,
	         "stream": False}
	headers = {'Content-Type': 'application/json'}
	response = requests.post(url, data=json.dumps(data), headers=headers, stream=False)
	if response.status_code == 200:
		return  response.json()['response']
	else:
		return  f"Request failed with status {response.status_code}"

最后在bot的主运行文件里面添加就行了
注意这里我们是把传入字符串的前面“/联网搜索”截断了再输入的

if  '/联网搜索'  in  message.content:
	query = message.content[7:]
	ai_message = web_search_reply(query)
	messageResult = await message._api.post_group_message(
	group_openid=message.group_openid,
	msg_type=0,
	msg_id=message.id,
	content=ai_message)
	_log.info(messageResult)

总结

这期简单添加了联网搜索的功能,最终的结果不但要看搜索引擎的效果,还要考虑大模型的理解能力
我们在消费级PC/笔记本上部署的大模型,单次搜索任务还好,但是如果把搜索也加入记忆,是难以达到理想的效果的(连续询问,依据历史信息的问题),所以就不添加了。如果你的大模型性能足够强,可以考虑使用tool calling的方法来运用,可以从llama3.1的模板来看是怎么用tool的
源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值