之前的文章:
- 零基础构建基于LangChain的聊天机器人(1)
- 零基础构建基于LangChain的聊天机器人(2)
- 零基础构建基于LangChain的聊天机器人(3)
- 零基础构建基于LangChain的聊天机器人(4)
第2步:了解业务需求和数据
在开始任何 AI 项目之前,必须要了解所要解决的问题,并为如何解决问题制定计划。这包括清楚地定义问题、收集需求、了解可以使用的数据和技术,并与利益相关者明确期望。对于本课程中的项目,将首先定义问题并收集聊天机器人的业务需求。
理解问题和需求
想象一下,你是一名为某个大型医院系统工作的 AI 工程师,你的利益相关者(医院领导)希望对系统中不断增加的数据有更深层次的应用,例如回答有关患者、访客、医生、医院和保险支付方等的问题,同时又不要求使用类似 SQL 这样的查询语言到数据库中搜索,更不用让有关分析师提供报告等。
为了实现这一点,有关领导希望有一个内部聊天机器人工具,类似于 ChatGPT,可以回答有关数据的问题。收集需求后,你可以提供了一个列表,列出聊天机器人应该回答的问题类型:
- XYZ医院当前的候诊时间是多少?
- 哪个医院目前有最短的候诊时间?
- 在哪些医院患者抱怨计费和保险问题?
- 有没有患者抱怨医院不干净?
- 患者对医生和护士与他们的沟通方式说了什么?
- 患者在XYZ医院对护理人员说了什么?
- 2023年医保支付金额多少?
- XXX医生治疗了多少患者?
- 有哪些医疗咨询是免费的,它们的平均时间是多少天?
- 哪位医生的平均问诊持续时间最短(以天为单位)?
- 患者789的住院费用是多少?
- 2023年与某医疗保险公司合作最多的医院是哪家?
- 急诊访问的平均计费金额是多少(按医院计算)?
- 从2022年到2023年,哪个地区的医疗补助增长百分比最大?
上面的问题中,有的是有确切答案的,比如“2023年医保支付金额多少?”,对这类问题,可以通过聚合统计回答。
像“有没有患者抱怨医院不干净?”或者“患者对医生和护士与他们的沟通方式说了什么?”这样的问题则更加主观,可能有许多可接受的答案。聊天机器人需要阅读文件,如患者评论,以回答这类问题。
最终,有关方面希望有一个单一的聊天界面,可以无缝回答主观和客观问题。这意味着,当提出一个问题时,聊天机器人需要知道被问到的是哪种类型的问题,以及应该从哪个数据源获取信息。
例如,如果被问到“患者789的住院费用是多少?”,聊天机器人应该知道它需要查询数据库以找到答案。如果被问到“患者对医生和护士与他们的沟通方式说了什么?”,聊天机器人应该知道它需要阅读和总结患者评论。
接下来,探索医院系统记录的数据,这可能是构建聊天机器人最重要的先决条件。
探索可用数据
在构建聊天机器人之前,需要对它将用于响应用户查询的数据有一个透彻的了解。这将有助于确定什么是可行的,以及如何结构化数据,以便聊天机器人可以轻松访问它。本文中使用的所有数据都是合成生成的,其中许多数据来源于Kaggle上的一个流行的医疗保健数据集(数据集下载地址:https://www.kaggle.com/datasets/prasad22/healthcare-dataset)。
在实践中,以下数据集可能会作为SQL数据库中的表存储,但为了保持对构建聊天机器人的焦点,将使用CSV文件进行操作。
在继续以下内容之前,将所有CSV文件放置在 data/
文件夹中:
-
hospitals.csv
hospitals.csv
文件记录公司管理的每家医院的信息。此数据集中共有30家医院、3属性:如果熟悉传统 SQL 数据库,则可以将
hospitals.csv
视为二维表,这种表相对较短,其中包含描述事实的数据,或者由上下文产生的描述性信息。在本例中,
hospital.csv
记录了特定医院的信息,可以将其连接到事实表中,在回答有关哪些患者、医生和付款人与医院相关的问题时,结合visits.csv
,会更加清楚。在本地安装
polars
库,可以查看hospitals.csv
中的信息。
在这个代码块中,导入了 Polars
库,定义了 hospitals.csv
文件的路径,将数据读入一个 Polars DataFrame
中,并显示前 5 行,显示了数据基本情况。
-
hospital_id
:用整数作为医院的唯一标识。hospital_name
:医院的名称。hospital_state
:医院所在的州。
-
physicians.csv
physicians.csv
文件包含了医院系统中的医生数据。这个数据集包含以下字段:仍然将这些数据视为一个表,可以使用 Polars 查看前几行数据:
如上面输出结果所示,physicians.csv
中共计包含 500 个医生数据,上面显示了前几行的数据。
-
physician_id
:整数型,用于唯一标识每位医生。physician_name
:医生的姓名。physician_dob
:医生的出生日期。physician_grad_year
:医生从医学院毕业的年份。medical_school
:医生所就读的医学院。salary
:医生的薪水。
-
payers.csv
payers.csv
记录了为患者支付医疗费用的保险公司的有关信息,与hospitals.csv
类似,它是一个包含几个字段的小文件:数据中只有五个保险公司:Medicaid, UnitedHealthcare, Aetna, Cigna 和 Blue Cross。利益相关者对保险公司的活动非常感兴趣,因此一旦将
payers.csv
与患者、医院和医生的数据连接起来,将会非常有用。 -
payer_id
:唯一标识每个保险公司的整数。payer_name
:保险公司的名称。
-
reviews.csv
文件
reviews.csv
包含了患者对医院就诊体验的评价。它包含以下字段:聊天机器人将使用
review
这个字段来回答有关评价详情和患者体验的问题。以下是
reviews.csv
的数据概览:
这里共计有 1005 调评价。
-
review_id
: 唯一标识每条评价的整数。visit_id
: 标识与评价相关的患者就诊记录的整数。review
: 患者的评价。physician_name
: 治疗患者的医生的姓名。hospital_name
: 患者住院的医院名称。patient_name
: 患者的姓名。
-
visits.csv
最后一个文件
visits.csv
记录了贵公司服务的每次医院访问的详细信息,可以将visits.csv
看作是一个连接医院、医生、患者和支付方的事实表。以下是字段说明:这个数据集提供了回答关于每个医院实体之间关系的问题所需的一切。例如,如果知道一个医生 ID,可以使用
visits.csv
来找出该医生与哪些患者、支付方和医院相关联。下面是在 Polars 中查看visits.csv
的举例:
可以看到,这里记录了 9998 次访问,以及上述描述的 15 个字段。请注意,某些记录的 chief_complaint
、treatment_description
和 primary_diagnosis
的值可能缺失。需要记住这一点,因为利益相关者可能不知道许多记录都缺少关键数据——这本身可能是一个有价值的见解!最后,请注意,当该记录对应的访问仍处于打开状态时,discharge_date
将缺失。
-
visit_id
:医院访问的唯一标识符。patient_id
:与该访问相关的患者的 ID。date_of_admission
:患者入院日期。room_number
:患者的房间号。admission_type
:入院类型之一,包括“选择性”、“紧急”或“紧急”。chief_complaint
:描述患者来医院的主要原因的字符串。primary_diagnosis
:医生给出的主要诊断描述的字符串。treatment_description
:医生给出的治疗的文本总结。test_results
:检测结果之一,包括“不确定”、“正常”或“异常”。discharge_date
:患者出院日期。physician_id
:治疗患者的医生的 ID。hospital_id
:患者入住的医院的 ID。payer_id
:患者使用的保险支付方的 ID。billing_amount
:向支付方收取的访问费用金额。visit_status
:访问状态之一,包括“OPEN”或“DISCHARGED”。
现在已经了解了构建的聊天机器人所使用的数据。概括一下,这些文件被拆分开来,以模拟传统 SQL 数据库可能的样子。每个医院、患者、医生、评论和支付方都通过 visits.csv
相互连接。
等待时间
可能已经注意到,没有数据可以回答诸如“XYZ医院的当前等待时间是多少?”或“哪家医院目前等待时间最短?”这样的问题。不幸的是,医院系统没有记录历史等待时间。聊天机器人将不得不调用 API 来获取当前等待时间信息。稍后将看到x相关操作。
在了解了业务需求、可用数据和 LangChain 功能之后,可以为聊天机器人创建一个设计了。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
![](https://img-blog.csdnimg.cn/img_convert/b417e97fd54c1ba9a917c1a541f1ebba.png)