前言
最近参加一个集训,和团队的小伙伴选择了一个关于搭建生物问答助手的AI题目,由于本人并非人工智能专业,不会训练模型,只知道一些简单的python知识,为了完成任务在网上好一阵找。终于发现了一个宝藏仓库,GPT学术优化
![[Pasted image 20240330171549.png]]
作者对这个项目的描述:为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持Python和C++等项目剖析&自译解功能,PDF/LaTex论文翻译&总结功能,支持并行问询多种LLM模型,支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。
体验之后感觉确实不错,作者把框架也搭的差不多,有其他想要实现的功能可以通过自己写插件实现。(门槛不高,了解一些python就可以)
该项目有一个关于谷歌学术的插件,但是通过爬虫来实现的。我想能否通过调用Pubmed的api来自己完成一个插件,通过输入指定的keywords,便能够在在数据库中进行搜索,获取文献相关信息。
PubMed小助手
准备
- Pubmed API
- LLM API
- 所需python包
requirements.txt
代码部分(主要内容)
def Get_Pubmed(keyword, chatbot, history):
from metapub import PubMedFetcher
fetch = PubMedFetcher()
num_of_articles = 5
pmids = fetch.pmids_for_query(keyword, retmax=num_of_articles)
print(pmids)
cnt = 1
for pmid in pmids:
print(pmid)
article_info = {}
try:
article = fetch.article_by_pmid(pmid)
article_info = {
"pmid": pmid,
"Title": article.title,
"Abstract": article.abstract,
"Author": article.authors,
"Journal": article.journal,
"Citation": article.citation,
"Year": article.year,
"Issue": article.issue,
"Link": "https://pubmed.ncbi.nlm.nih.gov/" + pmid + "/",
"Doi": article.doi,
}
chatbot[-1] = [
chatbot[-1][0],
f"Successfully fetched article with PMID {pmid}, {cnt}/{num_of_articles}",
]
cnt += 1
# yield from update_ui(chatbot=chatbot, history=[])
except Exception as e:
chatbot[-1] = [
chatbot[-1][0],
f"Error fetching article with PMID {pmid}: {e}, {cnt}/{num_of_articles}",
]
yield from update_ui(chatbot=chatbot, history=[])
cnt += 1
continue
yield article_info # Yield the information of one article at a time
通过以上代码获取文献相关信息。
接下来调用LLM的API,再通过指定的prompt将信息输入给大模型,即可得到我们想要的结果。
![[QQ2024327-173958-HD第二版 (online-video-cutter.com).gif]]
结尾
代码小白,能力有限,欢迎大家指导,完整代码在GitHub仓库。