系列篇章💥
No.文章1AI大模型探索之路-实战篇:智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇:智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(初步实践)4AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(函数封装)5AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(流程优化)6AI大模型探索之路-实战篇:智能化IT领域搜索引擎之github网站在线搜索7AI大模型探索之路-实战篇:智能化IT领域搜索引擎之HuggingFace网站在线搜索
目录
一、前言
在前面篇章中,我们已成功实现了知乎与Github网站数据的智能搜索流程,并融入了代码开发之中。本章,我们将拓展边界,主要实现HuggingFace网站的在线智能搜索功能,致力于为用户提供更为全面且精准的搜索体验。
二、总体概览
本章的核心目标是通过编写高效代码,逐步实现对HuggingFace网站数据的智能化搜索,并无缝整合至我们的搜索引擎系统中,以提升整体的搜索质量与响应速度。
将Hugging face接入GPT模型中。得益于Hugging face完善的API体系,相比前两个智能搜索问答项目,将Hugging face接入GPT模型的过程会简单很多,甚至都不用谷歌搜索API即可完成。总的来说,将Hugging face接入GPT模型的流程是,首先,借助此前定义的convert_keyword_github函数提取用户提问的模型关键词,然后借助Hugging face的Search API完成模型搜索,和Github类似,在Hugging face中,同一个模型会有多种类型的变种,这里我们可以搜索得到一些较为受欢迎的模型进行模型功能的查询。而具体的查询过程也同样是查询不同模型的readme文档,而Hugging face上的readme文档同样也是可以通过API快速获取。
三、HuggingFace API调用开发
1、定义一个Huggingface 模型查询函数
defsearch_models(query):
url ="https://huggingface.co/api/models"
params ={"search": query}
response = requests.get(url, params=params)return response.json()
search_results = search_models("chatglm")len(search_results)
2、查询结果排序
## 我们根据模型的受欢迎程度(likes指标)对其进行降序排序,挑选较为受欢迎的模型进行问答:
sorted_results =sorted(search_results, key=lambda x: x['likes'], reverse=True)
sorted_results[:10]
输出:
[{'_id':'640f4f1409c94e1d9bca3ffc','id':'THUDM/chatglm-6b','likes':2773,'private':False,'downloads':26319,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-03-13T16:28:04.000Z','modelId':'THUDM/chatglm-6b'},{'_id':'64971933a9c42bc6a848d3f4','id':'THUDM/chatglm2-6b','likes':1995,'private':False,'downloads':100996,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','arxiv:1911.02150','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-06-24T16:26:27.000Z','modelId':'THUDM/chatglm2-6b'},{'_id':'6538e659a608e1c3a212cb75','id':'THUDM/chatglm3-6b','likes':923,'private':False,'downloads':260293,'tags':['transformers','pytorch','safetensors','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-10-25T09:56:41.000Z','modelId':'THUDM/chatglm3-6b'},{'_id':'6416f9b4ad63d650515a81f9','id':'THUDM/chatglm-6b-int4','likes':406,'private':False,'downloads':2182,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-03-19T12:01:56.000Z','modelId':'THUDM/chatglm-6b-int4'},{'_id':'64c670cb1d44fc06aff93c39','id':'THUDM/chatglm2-6b-32k','likes':295,'private':False,'downloads':712,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','arxiv:2306.15595','arxiv:1911.02150','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-07-30T14:16:43.000Z','modelId':'THUDM/chatglm2-6b-32k'},{'_id':'64a8dfd4de2d860082cd2428','id':'fb700/chatglm-fitness-RLHF','likes':267,'private':False,'downloads':0,'tags':['peft','pytorch','chatglm','chatglm-6b','chatglm2-6b','ft','sft','PPO','RLHF','RM','Transformer','custom_code','zh','en','license:apache-2.0','has_space','region:us'],'library_name':'peft','createdAt':'2023-07-08T04:02:28.000Z','modelId':'fb700/chatglm-fitness-RLHF'},{'_id':'653a63fa32c97d06552cbbd8','id':'THUDM/chatglm3-6b-32k','likes':235,'private':False,'downloads':10477,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-10-26T13:04:58.000Z','modelId':'THUDM/chatglm3-6b-32k'},{'_id':'6498371e07e994b4af4f8c41','id':'THUDM/chatglm2-6b-int4','likes':230,'private':False,'downloads':3607,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','arxiv:1911.02150','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-06-25T12:46:22.000Z','modelId':'THUDM/chatglm2-6b-int4'},{'_id':'653a32b3ff0158207aa9bd60','id':'THUDM/chatglm3-6b-base','likes':82,'private':False,'downloads':7492,'tags':['transformers','pytorch','chatglm','glm','thudm','custom_code','zh','en','arxiv:2103.10360','arxiv:2210.02414','endpoints_compatible','has_space','region:us'],'library_name':'transformers','createdAt':'2023-10-26T09:34:43.000Z','modelId':'THUDM/chatglm3-6b-base'},{'_id':'641857768b14a25b75826ad7','id':'THUDM/chatglm-6b-int4-qe','likes':80,'private':False,'downloads':103,'tags':['transformers','pytorch','chatglm','feature-extraction','glm','thudm','custom_code','zh','en','has_space','region:us'],'pipeline_tag':'feature-extraction','library_name':'transformers','createdAt':'2023-03-20T12:54:14.000Z','modelId':'THUDM/chatglm-6b-int4-qe'}]
3、提取解析第二条的ID
sorted_results[2]['id']
输出:
‘THUDM/chatglm3-6b’
四、获取readme文档
1、定义模型readme查询函数
## 接下来即可根据模型ID,调用对应Hugging face API来查询各模型的说明文档。具体实现过程如下defget_model_readme(model_id):
url =f"https://huggingface.co/{model_id}/resolve/main/README.md"
response = requests.get(url)return response.text
2、查询结果解析
model_readme = get_model_readme(sorted_results[1]['id'])
model_readme
3、chatglm查询测试
defget_model_readme(model_id):
url =f"https://huggingface.co/{model_id}/resolve/main/README.md"
response = requests.get(url)return response.text
调用测试
model_readme = get_model_readme("THUDM/chatglm-6b-int4")print(model_readme)
输出
五、基于HuggingFace网站搜索代码封装
1、huggingface关键词提取函数
defconvert_keyword_huggingface(q):"""
将用户输入的问题转化为适合在huggingface上进行搜索的关键词
"""
response = client.chat.completions.create(
model="glm-4",
messages=[{"role":"system","content":"你专门负责将用户的问题转化为huggingface上的搜索关键词,只返回一个你认为最合适的搜索关键词即可"},{"role":"user","content":"请问DeepSpeed是什么?"},{"role":"assistant","content":"DeepSpeed"},{"role":"user","content": q}])
q = response.choices[0].message.content
return q
2、定义huggingface对话助手
defchat_with_huggingface(q):# 调用转化函数,将用户的问题转化为模型关键词
query = convert_keyword_huggingface(q)
search_results = search_models(query)
sorted_results =sorted(search_results, key=lambda x: x['likes'], reverse=True)[:5]print('现有5个与“%s”相关的模型如下:'% query)for dic in sorted_results:print(dic['id'])#model_id = input('请输入想查询的模型ID:')
model_id =1
model_readme = get_model_readme(model_id)
messages=[{"role":"system","content": model_readme},{"role":"user","content": q}]
response = client.chat.completions.create(
model="glm-4",
messages=messages,)print("智能搜索平台回答如下:")print(response.choices[0].message.content)
3、huggingface对话助手测试
chat_with_huggingface("介绍一下ChatGLM3")
输出:
现有5个与“ChatGLM3-6B”相关的模型如下: THUDM/chatglm3-6b THUDM/chatglm3-6b-32k
THUDM/chatglm3-6b-base THUDM/chatglm3-6b-128k
shibing624/chatglm3-6b-csc-chinese-lora 智能搜索平台回答如下: ChatGLM3
是由智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。它是 ChatGLM
系列中的最新模型,继承了前两代模型在对话流畅性和部署门槛低等方面的优点,并引入了一些新的特性和改进。以下是对 ChatGLM3 的一些关键介绍:
- 更强大的基础模型:ChatGLM3 的基础模型是 ChatGLM3-6B-Base,它使用了更多样化的训练数据、更充分的训练步数和更合理的训练策略。根据官方发布的信息,该模型在多个评测数据集上展现出了优异的性能,尤其在10B以下的基础模型中具有顶尖的性能。
- 提升的性能:通过多阶段增强预训练方法、丰富的训练数据和优化后的训练方案,ChatGLM3 相比前一代模型在性能上有了显著提升。在44个中英文公开数据集上的测试表明,ChatGLM3 在国内同尺寸模型中排名第一,尤其在数学、推理、代码和知识等方面表现突出。
- 完整的功能支持:ChatGLM3 采用了全新设计的 Prompt 格式,除了支持多轮对话外,还原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
- 全面的开源序列:除了对话模型 ChatGLM3-6B,还包括基础模型 ChatGLM3-6B-Base 和长文本对话模型 ChatGLM3-6B-32K。这些模型的权重对学术研究完全开放,并在填写相应的问卷后允许免费商业使用。
- 性能和功能层面的升级:ChatGLM3-6B 在10B范围内的模型中性能最强,其推理能力甚至可以与 GPT-3.5 相媲美。此外,它还更新了多模态功能、代码解释器功能、联网功能以及 Agent 优化功能,这些核心功能的更新使其更加接近 GPT-4。
总体来说,ChatGLM3 作为一个开源的对话模型,不仅为学术研究提供了强大的工具,也为商业应用带来了更多的可能性。
结语
随着本章的圆满完成,我们不仅成功实现了HuggingFace网站数据的智能搜索功能,还将其无缝整合到了我们的搜索引擎系统之中。这一里程碑式的进步,标志着我们在智能化IT领域搜索引擎的发展道路上又迈出了坚实的一步。后面如有必要,我们将继续探索更多数据源,不断优化搜索算法,为用户提供更为丰富、精准且高效的搜索服务,推动智能化IT领域的持续发展与创新。
🎯🔖更多专栏系列文章:AIGC-AI大模型探索之路
😎 作者介绍:我是寻道AI小兵,资深程序老猿,从业10年+、互联网系统架构师,目前专注于AIGC的探索。
📖 技术交流:建立有技术交流群,可以扫码👇 加入社群,500本各类编程书籍、AI教程、AI工具等你领取!
如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我,让我们携手同行AI的探索之旅,一起开启智能时代的大门!
版权归原作者 寻道AI小兵 所有, 如有侵权,请联系我们删除。