系列篇章💥
No. | 文章 |
---|---|
1 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎的构建与初步实践 |
2 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎之GLM-4大模型技术的实践探索 |
3 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(初步实践) |
4 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(函数封装) |
5 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(流程优化) |
6 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎之github网站在线搜索 |
7 | AI大模型探索之路-实战篇:智能化IT领域搜索引擎之HuggingFace网站在线搜索 |
目录
- 系列篇章💥
- 一、前言
- 二、总体概览
- 三、HuggingFace API调用开发
- 1、定义一个Huggingface 模型查询函数
- 2、查询结果排序
- 3、提取解析第二条的ID
- 四、获取readme文档
- 1、定义模型readme查询函数
- 2、查询结果解析
- 3、chatglm查询测试
- 五、基于HuggingFace网站搜索代码封装
- 1、huggingface关键词提取函数
- 2、定义huggingface对话助手
- 3、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 模型查询函数
def search_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来查询各模型的说明文档。具体实现过程如下
def get_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查询测试
def get_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关键词提取函数
def convert_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对话助手
def chat_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的探索之旅,一起开启智能时代的大门!