实现AI搜索,并赋值给大模型,学会给大模型上网,获取最新最准的信息----2
为什么要给大模型连上网
人们有获取最新信息的需求
减少大模型的幻觉
这里不再使用openai调用开发,使用国内的 智普AI进行开发。方便后边国产化。
SerpAPI
SerpAPI是一种 Python 工具,提供 SerpAPI Google!搜索引擎结果 AP!和 SerpAP! 必应搜索引擎结果 API 的 包装器
你可以使用该工具从多种不同的搜索引警(包括 Google 和必应)中检索搜索结果。
https://serpapi.com/search-api
比较多的搜索引擎,这边是国内的网络,使用的百度的搜索引擎。
解耦搜索引擎
搜索引擎的单条结果。
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class SearchResultItem:
title: str # 搜索标题
link: str # 链接
snippet: str # 摘要
@dataclass
class SearchResults:
results: List[SearchResultItem]
先把大模型封装成函数,后边搜索结果调用。
glm-4.py
def chat(query: str) -> str:
client = ZhipuAI(api_key="fde24905ae3c5af19145593f767cdfde.NlFmUfzSqkJmrhb",)
re_stream = client.chat.completions.create(
model='glm-4',
messages=[
{
"role": "user",
"content":query
}
],
stream=True,
)
# 返回数据
for chunk in re_stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="") # end="" 空字符串,打印的结果就不会换行了。
chat("武大郎怎么死的?")
上面的作参思路做参考,api都需要收费,所以采用的是国内 智普平台做开发。
实现
使用智普AI开发岗平台 web-search-Pro大模型实现
https://www.bigmodel.cn/dev/api/search-tool/web-search-pro
返回的响应格式
在做对应的字典 序列化即可。
{
"choices": [{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "tool",
"tool_calls": [{
"id": "1575e0ec714b5445",
"search_intent": [{
"category": "体育",
"index": 0,
"intent": "SEARCH_ALL",
"keywords": "中国队奥运会拿了多少奖牌",
"query": "中国队奥运会拿了多少奖牌"
}],
"type": "search_intent"
}, {
"id": "1575e0ec714b5445",
"search_result": [{
"content": "在刚刚结束的第33届夏季奥林匹克运动会巴黎奥运会上,中国代表团表现出色,获得了40金、27银、24铜共91枚奖牌,金牌数并列第一,创造了我国参加夏季奥运会以来境外参赛历史的最佳成绩。本次比赛中,中国队在多个项目上实现了历史性突破,包括自由式小轮车、男子100米自由泳、网球单打、男子25米手枪速射、男子混合泳接力、花样游泳集体项目、女子拳击、举重大级别、艺术体操集体全能和花样游泳双人项目等多个项目。文章还回顾了自1932年中国运动员刘长春第一次登上奥运赛场以来,中国奥运历史上的多个第一”,如1952年新中国选手在奥运会上获得的第一个比赛纪录、1984年获得第一枚奥运金牌和第一块奥运团体赛金牌、2008年北京成功举办奥运会等。这些成就体现了中国奥运事业的不断发展与辉煌。",
"icon": "https://sfile.chatglm.cn/searchImage/k_sina_com_cn_icon.jpg",
"index": 0,
"link": "https://k.sina.com.cn/article_1834783273_6d5c9229019011po6.html?cre=tianyi&mod=pcspth&loc=9&r=0&rfunc=68&tj=cxvertical_pc_spth&tr=12&from=society",
"media": "新浪",
"refer": "ref_1",
"title": "中国奥运这些“第一”,看多少次都自豪!(发布时间:2024-08-15 03:34:32)"
}, {
"content": "巴黎奥运会最后一个比赛日,中国代表团力争守住金牌榜第一的位置,目前所有选手结束了所有比赛,只有李雯雯拿到了举重女子81公斤以上级的金牌,帮助中国队的金牌总数达到40枚,创造了境外单届奥运会的最佳战绩,同时继续领跑金牌榜。\n这个比赛日,中国队只有3个项目有机会冲击金牌,包括举重女子81公斤以上级、场地自行车女子全能赛、现代五项女子个人赛。\n举重女子81公斤以上级:李雯雯在抓举阶段连续举起130公斤、136公斤,成绩定格136公斤,领先优势较大更是放弃第三次抓举。\n到了挺举阶段,李雯雯分别举起167公斤、173公斤,其他对手望尘莫及,最终李雯雯以抓举136公斤、挺举173公斤,总成绩309公斤强势夺冠,也是实现了卫冕。\n场地自行车女子全能赛:刘佳丽第一场捕捉赛得到18分,暂居第12位,第二场冲刺赛得到10分,跌至第16位,第三场淘汰赛第8个被淘汰出局,提前退居前三争夺,最终锁定第16名。\n现代五项女子个人赛:张明煜参加马术、击剑、游泳、跑步、射击比赛,前两项结束,张明煜总分排名第四,游泳结束之后跌至第五,最后两项发挥不佳,其中跑步第15完赛,最终总分1386锁定第十四,无缘奖牌。\n这样,中国代表团的所有比赛全部结束,在巴黎奥运会上总共取得40",
"icon": "https://sfile.chatglm.cn/searchImage/sports_eastday_com_icon.jpg",
"index": 0,
"link": "https://sports.eastday.com/a/240811202425960931797.html",
"media": "东方体育",
"refer": "ref_2",
"title": "40金27银24铜!中国奥运收官了,91枚奖牌创历史,仍力压美国领跑(发布时间:2024-08-11 20:40:31)"
}, {
"content": "最新奥运奖牌榜,中国队金第一,比美国多4金,第二、三又变了\n2024年8月6日星期二,巴黎奥运会进入第十一比赛日。截至当日清晨6时,奥运奖牌榜经历了显著变化,中国凭借优异表现跃居榜首,美国则紧随其后,位居第二。\n在过去的一天中,中国代表团收获颇丰,新增2金3银3铜,这一成绩超越了仅获得1枚金牌的美国队,导致美国排名下滑。目前,中国以21金18银14铜,总计53枚奖牌领跑;美国则持有20金30银28铜,奖牌总数达到78枚,暂列第二。\n排行榜上的其他位置也竞争激烈:澳大利亚以13金11银8铜位居第三;法国作为东道主,以12金16银18铜排在第四;英国和韩国各自以12金和11金位列第五和第六,奖牌总数分别为42枚和26枚;日本与意大利均以10金并列第七,奖牌数同为26枚;荷兰和德国分别以17枚和16枚奖牌排在第九和第十位。\n奖牌榜的波动显示了美中之间的激烈角逐,而昔日奖牌榜常客韩国和日本,现今已滑落至第六和第七,奖牌总数未构成太大威胁。焦点仍集中在奖牌数领先的两国身上。\n在中国的金牌中,李越宏在男子25米手枪速射决赛中以32分夺冠,韩国选手摘银;另一枚金牌由邹敬圆在男子双杠决赛中以16.200分赢得,乌克兰选手获得银牌。美国的",
"icon": "https://sfile.chatglm.cn/searchImage/sports_eastday_com_icon.jpg",
"index": 0,
"link": "https://sports.eastday.com/a/240806143930282993665.html",
"media": "东方体育",
"refer": "ref_3",
"title": "最新奥运奖牌榜,中国队金第一,比美国多4金,第二、三又变了(发布时间:2024-08-06 16:27:34)"
}, {
"content": "北京时间8月1日,巴黎奥运会第6个比赛日,中国代表团传来的捷报频频,刘宇坤在射击男子50米步枪三姿项目实现逆转夺冠,杨家玉在田径女子20公里竞走项目收获金牌,帮助中国代表团短短1个小时连夺2枚金牌,目前11金7银3铜稳居金牌榜第一位,同时郑钦文2-0首进奥运会女单决赛,创造中国网球的新历史。按照赛程,乒乓球男单1/4决赛,樊振东大战张本智和。\n在女子20公里竞走,现世界纪录保持者、中国选手杨家玉以1小时25分54秒的成绩,一路领先到夺冠,帮助中国田径队收获了本届奥运会的第一枚金牌,也是在这个项目上的第4枚金牌,其中杨家玉个人在该项目中也实现了集奥运会冠军、世锦赛冠军、世界纪录于一身的大满贯,弥补了上一届奥运会最后时刻被罚出局的遗憾。\n此外,中国队还在射击队在男子50米步枪三姿的项目上再添一枚金牌,由刘宇坤夺得。\n此前预赛,刘宇坤以594环总成绩第一晋级,来到决赛,刘宇坤大多数时间排名第二,直到淘汰赛阶段倒数第三枪完成反超,最后锁定第一,为中国射击队拿到本届奥运会的第4枚金牌。\n目前,中国代表团的成绩改写为11金7银3铜,总共21枚奖牌,继续高居金牌榜第一位,同时甩开了身后的法国队、日本队、澳大利亚队,尤其日本队,前面两个",
"icon": "https://sfile.chatglm.cn/searchImage/k_sina_com_cn_icon.jpg",
"index": 0,
"link": "https://k.sina.com.cn/article_2834321443_a8f05023001010ssg.html?cre=tianyi&mod=pcspth&loc=15&r=0&rfunc=35&tj=cxvertical_pc_spth&tr=12",
"media": "新浪",
"refer": "ref_4",
"title": "3个小时,诞生7金!中国拿2金,日本0奖牌,郑钦文首进奥运会决赛(发布时间:2024-08-02 09:55:39)"
}, {
"content": "巴黎奥运第15个比赛日已经到了尾声,奖牌榜榜首争夺进入白热化状态,在晚场的比赛中,中国队花泳双人比赛再夺一金,目前已经获得38枚金牌,金牌数和奖牌数都已经追平了东京奥运会,目前在奖牌榜我们排名第一。美国队在田径项目接连夺金,这个晚场收获四金一银两铜,金牌数已经来到了37枚金牌,但是接下来还有男篮决赛,美国男篮夺金没有悬念,他们在这个比赛日结束后,金牌数肯定也会来到38枚。\n本来美国队已经落后我们四枚金牌,不过在这个晚场比赛中,美国队追赶速度很快,先是女足决赛,1:0击败巴西夺金。接着在田径赛场,他们在女子100米跨栏,男子4400米接力,女子4400米接力这些项目连续获得金牌。另外在男子跳高项目中,美国戏剧性拿到银牌,本来他与新西兰选手科尔成绩相同,两人可以共享金牌,但是两人都不同意,最终进行一轮加赛,加赛中新西兰选手科尔获胜,美国队收获银牌。现在男篮决赛正在进行中,美国队获胜只是时间问题。\n男篮决赛一结束,美国的金牌数就会来到38金,凭借奖牌总数的优势,再次来到奖牌榜榜首位置,中国队想要在今天的比赛结束时,保住榜首位置,只能靠最后进行的拳击比赛了,凌晨4点35,女子拳击75公斤级决赛,李倩冲击金牌,一旦成功,中国队就",
"icon": "https://sfile.chatglm.cn/searchImage/www_sohu_com_icon.jpg",
"index": 0,
"link": "https://www.sohu.com/a/800069005_121926754",
"media": "搜狐",
"refer": "ref_5",
"title": "奥运最新奖牌榜,中国38金,美国37金,能否保住领先就看拳击了(发布时间:2024-08-11 14:59:00)"
}, {
"content": "巴黎奥运会最后一个比赛日,中国代表团力争守住金牌榜第一的位置,目前所有选手结束了所有比赛,只有李雯雯拿到了举重女子81公斤以上级的金牌,帮助中国队的金牌总数达到40枚,创造了境外单届奥运会的最佳战绩,不过美国代表团依靠女篮的夺冠,金牌数同样达到40枚,最后依靠银牌数多的优势反超登顶金牌榜。\n这个比赛日,中国队只有3个项目有机会冲击金牌,包括举重女子81公斤以上级、场地自行车女子全能赛、现代五项女子个人赛。\n举重女子81公斤以上级:李雯雯在抓举阶段连续举起130公斤、136公斤,成绩定格136公斤,领先优势较大更是放弃第三次抓举。\n到了挺举阶段,李雯雯分别举起167公斤、173公斤,其他对手望尘莫及,最终李雯雯以抓举136公斤、挺举173公斤,总成绩309公斤强势夺冠,也是实现了卫冕。\n场地自行车女子全能赛:刘佳丽第一场捕捉赛得到18分,暂居第12位,第二场冲刺赛得到10分,跌至第16位,第三场淘汰赛第8个被淘汰出局,提前退居前三争夺,最终锁定第16名。\n现代五项女子个人赛:张明煜参加马术、击剑、游泳、跑步、射击比赛,前两项结束,张明煜总分排名第四,游泳结束之后跌至第五,最后两项发挥不佳,其中跑步第15完赛,最终总分1386锁定第十四,无缘",
"icon": "https://sfile.chatglm.cn/searchImage/www_163_com_icon.jpg",
"index": 0,
"link": "https://www.163.com/dy/article/J9B8M4F305497GLB.html?clickfrom=w_sports",
"media": "网易",
"refer": "ref_6",
"title": "40金+91枚奖牌!中国奥运收官了,创历届最佳,却收到一件坏消息(发布时间:2024-08-11 19:50:49)"
}, {
"content": "百年过去,奥运会如何还能上新”? 随着盛夏的风吹过塞纳河,世界迎来了巴黎时刻”。在未来两周,巴黎将举办一场充满法式浪漫和历史的最高水平的体育竞技比赛。在东京奥运会上,中国代表团获得了88枚奖牌,其中包括38金、32银和18铜,人们的关注点是:中国队这次能拿多少金牌?同时,许多网友也好奇这届奥运会的看点。奥运会自1896年首届雅典奥运会以来,已经走过了一百多年的历史,举办了30多届。尽管年龄较大,但奥运会并未垂垂老矣”,相反,它与时代共同前进,保持着青春的底色。巴黎奥运会有很多上新”之处,比如首次取消主场馆,在河面上举办开幕式,运动员乘船入场,开放场地和城市共享空间的理念相呼应。此外,本届奥运会预计将有5250名男运动员和5250名女运动员参赛,实现男女运动员比例1:1,这是奥运会历史上的首次。同时,巴黎奥运会新增了4个年轻一代流行的运动项目:霹雳舞、滑板、冲浪和运动攀岩。奥运会始终保持对相互理解、友谊、团结和公平竞争的奥林匹克精神的追求,同时开放包容、紧随潮流,这就是每一代人都喜爱的奥运会。",
"icon": "https://sfile.chatglm.cn/searchImage/www_sohu_com_icon.jpg",
"index": 0,
"link": "https://www.sohu.com/a/796438016_121455647",
"media": "搜狐",
"refer": "ref_7",
"title": "百年过去,奥运咋还能“上新”?(发布时间:2024-07-27 07:01:00)"
}, {
"content": "导读:中国奥运会总共拿多少奖牌?中国奥运会现多少块金牌?上届奥运会中国获得多少金牌?中国在奥运会赢了几枚金牌?截至2018年,中国在奥运会共获得240枚金牌(其中夏奥会227枚,冬奥会13枚)。第23届夏季奥运会(1984)获得15枚金牌;.北京奥运会中国代表队含金量最高的五枚金牌你都知道哪几块?30届奥运会中国奖牌数?第30届奥运会中国共获得38枚金牌,88枚奖牌。25届中国奥运会金牌数?...\n中国在奥运会上获得了多少奖牌?\n2021年东京奥运会,中国奥运会共获得88枚奖牌。 8月8日,第32届夏季奥运会在日本东京正式闭幕。 经过17天的角逐,中国队位列世界奖牌榜第二位。\n中国奥运会有多少金牌?\n中国奥运会共获得262枚金牌。 各届获得的金牌数如下:1984年15枚,1988年5枚,1992年16枚中国各届奥运会奖牌,1996年16枚,2000年28枚,2004年32枚,2008年48枚。2012年38元,2016年26元。 ..在。\n中国在上届奥运会上获得了多少金牌?\n上一届奥运会在巴西里约热内卢举行。 在里约奥运会上,中国队共获得26金18银26铜,共计70枚奖牌。 截至里约奥运会,中国队10次参加夏季奥运会共获得227枚金牌和银牌。\n中国在奥运会上获得了多少",
"index": 0,
"link": "http://www.bja1.com/k12/91315.html",
"refer": "ref_8",
"title": "中国奥运会总共拿多少奖牌?2021东京奥运会含金量最高(发布时间:2023-01-06 16:09:00)"
}, {
"content": "中国参加奥运会运动员获金牌分别多少块2021年?\n2021年8月8日,中国代表团结束了第32届东京奥运会的比赛,最终获得38枚金牌,32枚银牌,18枚铜牌,奖牌总数88枚,列奖牌榜第二名。其中33位女性运动员夺金,14位\n2021奥运会中国能拿多少块金牌?\n这次东京奥运会的中国的夺金点还是非常多的,预测下来大概是在75个夺金点。 目前最为保守的估计中国队夺得金牌的数量为:40枚 目前现说最稳的三大项目,也是我国。\n2021年奥运会中国获得多少枚金牌?有何感想?\n2021年东京奥运会,中国体育代表团共获得了三十八枚奥运金牌。每一枚金牌的背后,都是教练、运动员、及团队其他成员共同努力的结果。随着我们国家的经济发展越。\n2021年冬季奥运会中国奖牌有多少?\n2021年冬季奥运会中国以38枚金牌名列奖牌榜第二,仅次于美国奥运会代表队。在这次参加的奥运会16天比赛中,中国代表团成绩突出金牌数成为参加海外追平了英国的。\n2021中国奥运会金牌榜?\n第01金:射击女子10米气步枪 杨倩 第02金:举重女子49公斤级 侯志慧 第03金:击剑女子个人重剑 孙一文 第04金:跳水女子双人三米板 施廷懋/王涵 第05金:举重男。\n2021年东京奥运会中国奖牌榜?\n2021年东京奥运会中国奖牌榜",
"icon": "https://sfile.chatglm.cn/searchImage/www_zlbqfj_cn_icon.jpg",
"index": 0,
"link": "https://www.zlbqfj.cn/aoyun/1819235953.html",
"media": "抖音",
"refer": "ref_9",
"title": "2021奥运会中国拿了多少奖牌(发布时间:2023-05-05 06:55:21)"
}],
"type": "search_result"
}]
}
}],
"created": 1723717370,
"id": "20240815182248e12590715ca34df4",
"model": "web-search-pro",
"request_id": "49a2a31f-10c3-4e95-9b7c-5e5fabcfce9e",
"usage": {
"completion_tokens": 2752,
"prompt_tokens": 467,
"total_tokens": 3219
}
}
不使用联网搜索引擎,不是最新数据。大模型计算结果,返回未知的值。
使用联网结果获取数据,并赋值给大模型,并计算。
成功拿到查询的最新,最准的,想要的数据。
import requests
from zhipuai import ZhipuAI
api_key = "fde24905ae3c5af19145593f767cdfde.NlFmUfzSqkJmrhb"
def search_data():
msg = [
{
"role": "user",
"content": "福彩3D, 2024年12月21日,中奖号码是多少?"
}
]
tool = "web-search-pro"
url = "https://open.bigmodel.cn/api/paas/v4/tools"
data = {
"tool": tool,
"stream": False,
"messages": msg
}
resp = requests.post(
url,
json=data,
headers={'Authorization': api_key},
timeout=300
)
res = eval(resp.content.decode()) # 转换成字典
list_v = res.get("choices")
for mes in list_v:
value = mes["message"]
tool_c = value.get("tool_calls")
for tool_data in tool_c:
result_v = tool_data.get("search_result")
for dict_v in result_v:
# print(dict_v["title"])
#print(dict_v["content"])
return dict_v
def chat(query: str) -> str:
"""
大模型使用搜索结果。
:param query:
:return:
"""
client = ZhipuAI(api_key="fde24905ae3c5af19145593f767cdfde.NlFmUfzSqkJmrhb",)
re_stream = client.chat.completions.create(
model='glm-4',
messages=[
{
"role": "user",
"content":query
}
],
stream=True,
)
# 返回数据
for chunk in re_stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="") # end="" 空字符串,打印的结果就不会换行了。
# chat("福彩3D, 2024年12月21日,中奖号码是多少?")
chat(search_data()) # 引用联网搜索的引擎拿到正确的结果。
end...
本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/18628329
分类:
AI大模型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App