本项目旨在实现一个与放射学相关文献进行交互式聊天的应用,使用 Gradio 作为前端界面,结合 Python 后端逻辑完成。通过项目提供的功能,用户可以:
- 浏览存储在本地的放射学文献元数据与摘要。
- 输入 DOI 或索引来查看对应文献的标题、期刊信息、发表日期与摘要。
- 在聊天界面向模型提问,获取基于文献内容的回答。
- 通过 /find 命令来根据关键词或关键信息查找文献的 DOI。
- 获取论文"一句话总结",帮助快速筛选感兴趣的文献。
├── app.py # Gradio 前端与后端逻辑的主入口
├── chatchat.py # 与大模型交互的核心逻辑,包括检索、摘要等功能
├── cleaned_literature_data.xlsx # 本地存储的文献元数据
├── Abstract/ # 存放每篇文献的摘要 .md 文件
├── images/ # 存放与文献相关的图片或 GIF
├── logo.ico # 网页图标
├── README.md # 项目的说明文件(本文件)
└── ... # 其他资源或配置文件
- Python 版本:推荐使用 Python 3.8 及以上。
- 安装项目依赖:
如果没有
pip install -r requirements.txt
requirements.txt
,可以根据下面的依赖列表手动安装:- gradio
- pandas
- openai(或其他大模型接口相关库)
- markdown(用于解析摘要 Markdown 到 HTML)
- re(用于正则处理)
- random
- os
-
将本项目克隆或下载到本地,并确保已经安装必要依赖。
-
将目标文献的 Excel 数据文件命名为
cleaned_literature_data.xlsx
,存放在项目根目录下(如果你要修改文件名或路径,请在app.py
和chatchat.py
与加载文献的代码对应改动)。 -
确保与每篇文献对应的摘要文件都放在
Abstract/
目录下,文件名应按照DOI.md
(将 DOI 中的斜杠 “/” 替换为下划线 “_”)的规则命名。 -
运行应用程序:
python app.py
启动后,会在命令行输出一个链接或在本地开启一个服务器(默认端口为7860),点击链接即可访问 Gradio 前端页面,通常为 http://127.0.0.1:7860/。
-
在前端界面中,你可以:
- 使用文本框输入问题,点击“发送”按钮,会将问题与当前文献摘要上下文安全送到模型端进行回答。
- 点击“下一篇”按钮,会自动将索引跳到后一篇文献。
- 在“文章索引”文本框中输入对应的索引数值后,点击“确认索引”按钮即可跳转到该索引对应的文献。
- 在“输入DOI”文本框中输入 DOI,点击“确认DOI”即可直接查看对应文献。
- 如果想要搜索文献,可以在聊天框中输入命令 “/find 关键词”,模型会尝试返回检索到的文献 DOI。
- 如果希望快速了解一篇文献,可以在自动显示的“一句话总结”中获取简短概括。
-
app.py
- 主入口文件,包含 Gradio 界面布局与交互逻辑。
- 通过
load_article
函数读取并展示文献数据、摘要和图片等。 - 通过
respond
函数对用户输入进行处理并与chatchat.py
中的聊天函数对接。 - 为每篇文献构建主题、期刊、发表日期与备注等信息。
- 提供对 DOI 与索引的切换与确认功能。
-
chatchat.py
- 与大模型交互的核心文件,类
ChatClient
用于包装对大模型接口的调用。 Chat_agent
函数提供一个综合接口,根据用户输入决定是执行 DOI 检索(/find)还是普通对话。only_one_sentence
函数可将整段摘要压缩为一句话用于简短概括。find_doi
函数根据用户输入内容,在cleaned_literature_data.xlsx
中检索相应文献信息并输出结果。
- 与大模型交互的核心文件,类
-
cleaned_literature_data.xlsx
- 封装了文献元数据的 Excel 表格,如 Title、DOI、Publication Date、Journal 等字段。
-
Abstract/ 目录
- 存放与每篇文献对应的摘要 .md 文件。
- 正确命名方式:以文献的 DOI 替换掉斜杠“/”为下划线“_”后,拼成文件名(例如 “10.1148_radiol.2018180382.md”)。
- 在
app.py
中会根据 DOI 构造文件路径并读取摘要内容。
-
images/ 目录
- 用于存放与文献相匹配的图像,如 GIF、PNG、JPG 等。若对应文献有图片,则在界面中显示预览。
-
/find 命令:
- 允许用户在聊天框中输入 “/find 关键词” 来检索匹配的文献。
- 目前仅能基于提供的
cleaned_literature_data.xlsx
实现简单检索。
-
论文“一句话总结”:
- 系统默认在开始展示文献时,会调用
only_one_sentence
来输出简单概括。 - 帮助用户快速定位当前文献的主题与研究方向。
- 系统默认在开始展示文献时,会调用
-
文章索引切换:
- 提供一个数值滑块或文本框,方便快速在文献列表中跳转。
-
DOI 输入:
- 提供一个文本框来输入感兴趣的文献 DOI,支持手动定位到恰当文献。
- 请确保当地网络环境已连通对应大模型接口(如 openai 或其他接口)。
- 如果你需要换用其他大模型或本地模型,请在
chatchat.py
中替换相关调用接口(比如修改KEY
、URL
、MODEL
等)。 - 如果遇到文件路径或编码错误,请确保
.md
文件的命名格式、Abstract
文件夹位置、编码格式等一致。 - 若想使用 GPU 加速或有更多并发需求,可在服务器上部署并自行进行性能调优和安全优化。
本项目遵循 MIT License 协议,在使用、复制、修改和发布本项目代码时需遵循 MIT 许可中的条款。由于本项目调用第三方大模型接口,请自行确认相关服务的使用权限与合规要求。