当前位置: 首页 > backend >正文

AI(学习笔记第六课) 使用langchain进行AI开发 load documents(csv和文件夹)

文章目录

  • AI(学习笔记第六课) 使用langchain进行AI开发 load documents(csv和文件夹)
  • 学习内容:
    • 1.load documents(csv)
      • 1.1 学习`url`
      • 1.2 `load csv`文件
        • 1.2.1 默认`load`
        • 1.2.2 `csv`文件内容
        • 1.2.2 执行`csv`文件的`load`
      • 1.3 Customizing the CSV parsing and loading(自定义`loader`)
      • 1.3.1 实现代码
      • 1.3.2 代码执行
      • 1.4 Specify a column to identify the document source(执行列来标明`source`)
        • 1.4.1 实现`source`指定的代码
        • 1.4.2 执行`source`指定的代码
      • 1.3 使用`python`的`tempfile`
        • 1.3.1 `tempfile`使用的代码
        • 1.3.2 代码执行
    • 2.load documents(from directory)
      • 2.1 准备数据文件夹
      • 2.2 文件夹`load`的代码
      • 2.3 `trouble shooting`
        • 2.3.1 出现的问题
        • 2.3.2 使用`git bash`进行安装
      • 2.4 执行文件夹`load`的代码

AI(学习笔记第六课) 使用langchain进行AI开发 load documents(csv和文件夹)

  • 使用langchain如何解析csv文件

学习内容:

  • csvload文件
  • 从文件夹中loader文件

1.load documents(csv)

1.1 学习url

  • langchain的load documents(csv)文档
  • csv文件示例

1.2 load csv文件

1.2.1 默认load
from langchain_community.document_loaders.csv_loader import CSVLoader
import asynciofile_path = r'D:\00_study\07_python\PythonProject\src' \r'\document_loaders\examples\mlb_teams_2012.csv'async def load_csv():loader = CSVLoader(file_path=file_path)data = loader.load()for record in data[:2]:print(record)asyncio.run(load_csv())
1.2.2 csv文件内容

这里的示例csv文件

"Team", "Payroll (millions)", "Wins"
"Nationals",     81.34, 98
"Reds",          82.20, 97
"Yankees",      197.96, 95
"Giants",       117.62, 94
"Braves",        83.31, 94
"Athletics",     55.37, 94
"Rangers",      120.51, 93
"Orioles",       81.43, 93
"Rays",          64.17, 90
"Angels",       154.49, 89
"Tigers",       132.30, 88
"Cardinals",    110.30, 88
"Dodgers",       95.14, 86
"White Sox",     96.92, 85
"Brewers",       97.65, 83
"Phillies",     174.54, 81
"Diamondbacks",  74.28, 81
"Pirates",       63.43, 79
"Padres",        55.24, 76
"Mariners",      81.97, 75
"Mets",          93.35, 74
"Blue Jays",     75.48, 73
"Royals",        60.91, 72
"Marlins",      118.07, 69
"Red Sox",      173.18, 69
"Indians",       78.43, 68
"Twins",         94.08, 66
"Rockies",       78.06, 64
"Cubs",          88.19, 61
"Astros",        60.65, 55
1.2.2 执行csv文件的load

对解析出来的data的前两行的输出。
在这里插入图片描述

1.3 Customizing the CSV parsing and loading(自定义loader

1.3.1 实现代码

async def load_customized_csv():loader = CSVLoader(file_path=file_path,csv_args={"delimiter": ",","quotechar": '"',"fieldnames": ["MLB Team", "Payroll in millions", "Wins"],},)data = loader.load()for record in data[:2]:print(record)asyncio.run(load_customized_csv())

1.3.2 代码执行

在这里插入图片描述

1.4 Specify a column to identify the document source(执行列来标明source

上面的例子看出,metadata中的source都是这个csv的所在文件的绝对路径,那么如果想使用某一个column作为source也是可以的。

1.4.1 实现source指定的代码
async def load_specify_source():loader = CSVLoader(file_path=file_path,source_column="Team")data = loader.load()for record in data[:2]:print(record)asyncio.run(load_specify_source())
1.4.2 执行source指定的代码

在这里插入图片描述

1.3 使用pythontempfile

如果没有文件,临时使用内存变量进行模拟csv文件,进行load

1.3.1 tempfile使用的代码
async def load_with_tempfile():string_data = """"Team", "Payroll (millions)", "Wins""Nationals",     81.34, 98"Reds",          82.20, 97"Yankees",      197.96, 95"Giants",       117.62, 94""".strip()with tempfile.NamedTemporaryFile(delete=False, mode="w+") as temp_file:temp_file.write(string_data)temp_file_path = temp_file.nameloader = CSVLoader(file_path=temp_file_path,)data = loader.load()for record in data[:2]:print(record)asyncio.run(load_specify_source())
1.3.2 代码执行

在这里插入图片描述

2.load documents(from directory)

2.1 准备数据文件夹

在这里插入图片描述

虽然这个文件夹就两个文件,但是使用这个作为练习的目标文件夹。

2.2 文件夹load的代码

from langchain_community.document_loaders import DirectoryLoaderdirectory_path = r'D:\00_study\07_python\PythonProject\src' \r'\document_loaders\examples'
loader = DirectoryLoader(directory_path,glob="**/*.md")
docs = loader.load()
print(len(docs))

2.3 trouble shooting

2.3.1 出现的问题

这里,执行的时候发现出现错误,让执行pip install "unstructured[md]",这时候通过pycharm的包管理的界面已经搜索不到了。
在这里插入图片描述

2.3.2 使用git bash进行安装

没有办法,只能进行命令行的pip install "unstructured"注意,这里的双引号不能省略

  • 进入git bash
  • 激活venv
    cd /d/00_study/07_python/PythonProject
    source ./venv/Scripts/activate
    
  • 检查是pip还是pip3
    环境不同,有时候需要执行pip install,有时候需要执行pip3,所以需要检查一下。
    $ where pip
    C:\Users\Dell\AppData\Local\Microsoft\WindowsApps\pip.exe
    (.venv)
    Dell@finlay-pc MINGW64 /d/00_study/07_python/PythonProject$ where pip3
    D:\00_study\07_python\PythonProject\.venv\Scripts\pip3.exe
    C:\Users\Dell\AppData\Local\Microsoft\WindowsApps\pip3.exe
    (.venv)
    
    这里很清楚,如果为虚拟python环境venv安装需要的包,那么执行pip3 install
  • 执行pip3 install
    pip3 install "unstructured[md]"
    
    注意,安装完毕之后,切换到pycharm的画面,可以看到pycharm也在加载,自动进行更新
    在这里插入图片描述

2.4 执行文件夹load的代码

debug模式执行代码,可以看到md文件已经被成功load
在这里插入图片描述

http://www.xdnf.cn/news/15880.html

相关文章:

  • 开源社区贡献指南:如何通过Three.js插件开发提升企业技术影响力?
  • Windows批量修改文件属性方法
  • swift-关联性/范型
  • 每日算法刷题Day50:7.20:leetcode 栈8道题,用时2h30min
  • 深度学习方法生成抓取位姿与6D姿态估计的完整实现
  • Python应用进阶DAY10--模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • 设计模式笔记(1)简单工厂模式
  • 【图论】图的定义与一些常用术语
  • thinkphp8\guzzlehttp上传文件应用示例
  • Linux基础命令详解:从入门到精通
  • prometheus 黑盒监控和docker检测
  • git操作
  • Node.js:常用工具、GET/POST请求的写法、工具模块
  • ByteBuf 体系的设计与实现
  • `tidyverse` 长表、宽表的处理
  • 【HarmonyOS】ArkUI - 自定义组件和结构重用
  • 处理Electron Builder 创建新进程错误 spawn ENOMEM
  • Spring AI 聊天记忆
  • 28.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(二)
  • Spring Boot 配置文件解析
  • SpringBoot集成MyBatis的SQL拦截器实战
  • Java学习第六十部分——JVM
  • [硬件电路-52]:什么是模拟电路与数字电路;它们的共同点、核心差异点(原理、目标、关注点等)以及它们如何相互转化
  • LeetCode 852:山脉数组的峰顶索引解析与实现
  • STM32CubeMX的一些操作步骤的作用
  • 7-20 关于mysql
  • 网络安全隔离技术解析:从网闸到光闸的进化之路
  • 【硬件】GalaxyTabPro10.1(SM-T520)刷机/TWRP/LineageOS14/安卓7升级小白向保姆教程
  • RxSwift-事件属性
  • JVM-Java