Langchain编程中常见Python库以及用途
Langchain-chat 项目依托于一系列丰富而强大的依赖库,展现出了巨大的潜力和广泛的应用前景。langsmith 可能在语言处理的流程管理和优化方面发挥着重要作用,为项目提供了高效的语言处理框架支持。jsonschema 确保数据的规范性和一致性,保障了项目中数据交互的准确性。fastapi 作为高性能的 Web 框架,为项目的后端服务提供了快速、稳定的运行环境,使得语言交互可以通过网络高效地进行。unstructured 库则能够处理各种非结构化数据,为项目拓宽了数据来源和处理能力。
而 Streamlit 相关的众多库更是为项目带来了丰富的交互体验和可视化效果。从垂直滑块到切换开关,从粘贴按钮到选项菜单,这些组件让用户能够更加便捷地与应用进行交互。模态窗口、图像坐标获取、反馈收集等功能则进一步增强了用户与应用之间的互动性。同时,aggrid 组件的集成使得表格数据的展示和操作更加高效,antd 组件的引入为应用增添了专业的界面设计元素。
langchain 核心库及其相关扩展,如 langchain-openai、langchain-community 等,为语言模型的交互、知识图谱构建和文本生成等关键功能提供了强大的支持。markdownlit 方便了 Markdown 文本的处理,而 langchain-chatchat 则专注于构建聊天交互应用。总之,这些依赖库共同为 Langchain-chat 项目打造了一个功能强大、交互丰富、应用广泛的语言交互平台。
#安装conda环境
conda env list #查看环境
conda config --show #查看配置
conda config --remove channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --remove channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda create -n chatchat python=3.8 #创建新环境chatchat
conda activate chatchat #激活环境
pip install langchain-chatchat -U #安装langchain-chatchat库
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt #指定源从需求文件清单中安装
conda list | findstr torch #检测依赖是否安装成功
torch 2.4.0 pypi_0 pypi
torchaudio 2.4.0 pypi_0 pypi
torchvision 0.19.0 pypi_0 pypi
strsimpy, pytz, python-magic-bin, python-decouple, pyreadline3, pyclipper,
pathlib, mpmath, jieba, flatbuffers, filetype, faiss-cpu, brotli, zipp, wrapt,
win32-setctime, websockets, watchdog, validators, urllib3, typing-extensions, tornado, toolz, toml, tenacity,
tabulate, sympy, soupsieve, socksio, sniffio, smmap, six, simplejson,
ruamel.yaml.clib, rpds-py, regex, rapidfuzz, PyYAML, python-multipart, python-magic,
python-iso639, python-dotenv, pyparsing, pymysql, PyMuPDFb, pyjwt, pygments, protobuf, prometheus-client,
pkgutil-resolve-name, pillow, packaging, orjson, ordered-set, numpy, networkx, nest-asyncio, mypy-extensions,
multidict, more-itertools, memoization, mdurl, MarkupSafe, lxml, kiwisolver, jsonpointer, jsonpath-python,
joblib, jiter, idna, hyperframe, humanfriendly, hpack, h11, greenlet, frozenlist, fonttools, exceptiongroup,
et-xmlfile, entrypoints, distro, cycler, colorama, charset-normalizer, chardet, certifi, cachetools, blinker,
backoff, attrs, async-timeout, aiohappyeyeballs, yarl, typing-inspect, types-requests, tqdm, SQLAlchemy,
Shapely, ruamel_yaml, requests, referencing, rank_bm25, python-docx, python-dateutil, pypdf, PyMuPDF,
pydantic-core, pyarrow, openpyxl, opencv-python, numexpr, marshmallow, markdown-it-py, loguru, langdetect,
jsonpatch, jinja2, importlib-resources, importlib-metadata, httpcore, htbuilder, h2, gitdb, emoji,
deprecation, deepdiff, contourpy, coloredlogs, click, beautifulsoup4, anyio, annotated-types, aiosignal,
uvicorn, tiktoken, starlette, st-annotated-text, rich, requests-toolbelt, pydeck, pydantic, pandas,
onnxruntime, nltk, matplotlib, markdownify, markdown, langchainhub, jsonschema-specifications, httpx,
gitpython, favicon, faker, dataclasses-json, aiohttp, unstructured-client, rapidocr_onnxruntime,
pymdown-extensions, pydantic_settings, openai, langsmith, jsonschema, fastapi, unstructured,
sse_starlette, langchain-core, altair, streamlit, langchain-text-splitters, langchain-openai,
langchain-community, streamlit-vertical-slider, streamlit-toggle-switch, streamlit-paste-button,
streamlit-option-menu, streamlit-modal, streamlit-keyup, streamlit-image-coordinates, streamlit-feedback,
streamlit-embedcode, streamlit-card, streamlit-camera-input-live, streamlit-antd-components,
streamlit-aggrid, langchain, streamlit-chatbox, langchain-experimental, streamlit-faker,
markdownlit, streamlit-extras, langchain-chatchat
-pytz
:用于处理时区相关的问题。
-jieba
:中文分词工具。
-sympy
:用于符号计算。
-urllib3
:用于发送 HTTP 请求。
-tornado
:一个异步的网络框架。
-toml
:用于处理 TOML 格式的配置文件。
-tenacity
:提供重试功能的库。
-tabulate
:用于将数据以表格形式输出。
-flatbuffers
:高效的跨平台序列化库,可用于快速的数据交换和存储。
-filetype
:用于识别文件类型。
-faiss-cpu
:高效的相似性搜索和聚类库,常用于大规模数据的相似性检索。
-brotli
:一种数据压缩算法的实现库,用于压缩和解压缩数据。
-zipp
:用于操作 ZIP 归档文件。
-wrapt
:有助于实现装饰器和代理对象等高级编程模式。
-win32-setctime
:可能与在 Windows 系统上设置文件创建时间相关。
-websockets
:用于在 Python 中实现 WebSocket 协议,进行双向通信。
-watchdog
:用于监控文件系统的变化。
-validators
:提供各种数据验证函数。
-typing-extensions
:为 Python 的类型提示提供额外的功能和扩展。
-toolz
:提供函数式编程工具。
-soupseive
:用于过滤和选择 HTML/XML 文档中的元素,通常配合 BeautifulSoup 使用。
-socksio
:可能与使用 SOCKS 代理进行网络通信有关。
-sniffio
:用于检测当前正在运行的异步库。
-smmap
:用于内存映射文件。
-six
:用于在 Python 2 和 Python 3 之间提供兼容性。
-simplejson
:提供比 Python 内置 JSON 模块更灵活的 JSON 处理功能。
-ruamel.yaml.clib
:可能与处理 YAML 格式配置文件相关的库。
-rpds-py
:不太清楚具体用途,可能是特定领域的数据处理库。
-regex
:用于正则表达式处理。
-rapidfuzz
:用于快速的字符串匹配和模糊搜索。
-PyYAML
:用于读写 YAML 格式的文件。
-python-multipart
:通常用于处理 HTTP 中的 multipart/form-data 类型的数据,比如文件上传等场景。
-python-magic
:用于识别文件类型,类似于 filetype
库。
-python-iso639
:可能与处理 ISO 639 语言代码相关,用于语言识别和转换等。
-python-dotenv
:用于从 .env
文件中加载环境变量。
-pyparsing
:用于解析文本和创建自定义的语法解析器。
-pymysql
:用于连接和操作 MySQL 数据库。
-PyMuPDF
:用于处理 PDF 文件,包括读取、编辑等操作。
-pyjwt
:用于生成和验证 JSON Web Tokens。
-pygments
:语法高亮库,可以为各种编程语言的代码进行语法高亮显示。
-protobuf
:Google 的 Protocol Buffers 的 Python 实现,用于高效的序列化和反序列化结构化数据。
-prometheus-client
:用于与 Prometheus 监控系统集成,提供指标收集和暴露功能。
-pkgutil-resolve-name
:不太清楚具体用途,可能与 Python 包的名称解析相关。
-pillow
:强大的图像处理库。
-packaging
:提供对 Python 包的打包和分发相关的功能。
-orjson
:快速的 JSON 处理库。
-ordered-set
:提供有序的集合数据结构。
-numpy
:用于数值计算,提供高效的多维数组和矩阵运算。
-networkx
:用于创建、操作和研究复杂网络的库。
-nest-asyncio
:用于在特定情况下嵌套使用 asyncio 事件循环。
-mypy-extensions
:为静态类型检查工具 mypy 提供扩展功能。
-multidict
:提供支持多个值对应一个键的数据结构。
-more-itertools
:提供额外的迭代器工具和函数。
-memoization
:用于实现函数的记忆化,提高函数调用效率。
-mdurl
:可能与处理 Markdown 中的 URL 相关。
-MarkupSafe
:用于处理安全的 HTML 和 XML 标记,防止跨站脚本攻击。
-lxml
:强大的 XML 和 HTML 处理库,支持 XPath 和 CSS 选择器等。
-kiwisolver
:用于解决约束优化问题。
-jsonpointer
:用于处理 JSON Pointer,一种用于指向 JSON 文档中特定部分的语法。
-jsonpath-python
:用于在 JSON 文档中使用 JSONPath 表达式进行查询。
-joblib
:用于并行计算和保存/加载 Python 对象。
-jiter
:不太清楚具体用途。
-idna
:用于处理国际化域名(IDN)。
-hyperframe
:不太清楚具体用途,可能与 HTTP/2 协议中的帧处理相关。
-humanfriendly
:提供用户友好的输出和交互功能。
-hpack
:与 HTTP/2 头部压缩相关。
-h11
:可能是一个 HTTP/1.1 和 HTTP/2 的实现库。
-greenlet
:用于实现轻量级的协程。
-frozenlist
:提供不可变的列表数据结构。
-fonttools
:用于处理字体文件。
-exceptiongroup
:用于处理多个异常的分组。
-et-xmlfile
:不太清楚具体用途,可能与处理 XML 文件相关。
-entrypoints
:用于发现和加载可插拔的插件系统。
-distro
:用于获取操作系统的发行版信息。
-cycler
:用于创建循环的迭代器,通常在绘图中用于循环使用颜色、线型等。
-colorama
:用于在终端中输出彩色文本。
-charset-normalizer
:用于字符集检测和规范化。
-chardet
:用于检测文本文件的字符编码。
-certifi
:提供可信任的根证书,用于验证 HTTPS 连接。
-cachetools
:提供各种缓存实现,用于提高函数调用的效率。
-blinker
:提供信号和事件系统,用于解耦代码。
-backoff
:用于实现重试策略,在遇到错误时自动重试。
-attrs
:简化类的定义,提供更简洁的方式定义带有属性的类。
-async-timeout
:用于在异步代码中设置超时。
-aiohappyeyeballs
:在异步环境中实现 Happy Eyeballs 算法,用于快速建立网络连接。
-yarl
:用于处理 URL 的库。
-typing-inspect
:用于检查和操作 Python 的类型提示信息。
-types-requests
:不太清楚具体用途,可能与 requests 库的类型相关。
-tqdm
:用于在命令行或 Jupyter Notebook 中显示进度条。
-SQLAlchemy
:强大的数据库对象关系映射(ORM)工具,用于连接和操作各种数据库。
-Shapely
:用于处理几何对象的库,如点、线、多边形等。
-ruamel_yaml
:用于处理 YAML 格式文件的库。
-requests
:用于发送 HTTP 请求。
-referencing
:不太清楚具体用途。
-rank_bm25
:用于实现 BM25 算法进行文本排序和检索。
-python-docx
:用于创建和操作 Microsoft Word(.docx)文件。
-python-dateutil
:提供强大的日期和时间处理功能。
-pypdf
:用于处理 PDF 文件。
-PyMuPDF
:同前面介绍,用于处理 PDF 文件。
-pydantic-core
:是 pydantic 的核心部分,用于数据验证和解析。
-pyarrow
:用于高效的内存数据表示和与其他数据格式的转换。
-openpyxl
:用于操作 Microsoft Excel(.xlsx)文件。
-opencv-python
:用于计算机视觉应用的库。
-numexpr
:用于快速数值表达式计算。
-marshmallow
:用于对象序列化和反序列化。
-markdown-it-py
:用于将 Markdown 文本转换为 HTML。
-loguru
:一个简单易用的日志记录库。
-langdetect
:用于检测文本的语言。
-jsonpatch
:用于处理 JSON Patch,一种用于修改 JSON 文档的格式。
-jinja2
:用于模板渲染的库。
-importlib-resources
:用于访问包中的资源文件。
-importlib-metadata
:用于获取包的元数据。
-httpcore
:低级别的 HTTP 客户端库。
-htbuilder
:不太清楚具体用途,可能与构建 HTML 相关。
-h2
:用于实现 HTTP/2 协议。
-gitdb
:用于与 Git 数据库交互。
-emoji
:用于处理和识别 emoji 字符。
-deprecation
:用于标记函数或方法已过时。
-deepdiff
:用于比较两个对象之间的深度差异。
-contourpy
:用于绘制等高线图。
-coloredlogs
:用于在日志中添加颜色。
-click
:用于创建命令行界面(CLI)应用。
-beautifulsoup4
:用于解析 HTML 和 XML 文档。
-anyio
:提供异步编程的工具和抽象。
-annotated-types
:不太清楚具体用途,可能与带注释的类型相关。
-aiosignal
:用于在异步环境中处理信号。
-uvicorn
:快速的 ASGI 服务器,常用于部署异步 Web 应用。
-tiktoken
:可能与处理 OpenAI 的 tokens 相关。
-starlette
:轻量级的 ASGI 框架。
-st-annotated-text
:不太清楚具体用途。
-rich
:提供丰富的终端输出格式和功能。
-requests-toolbelt
:为 requests 库提供额外的工具和功能。
-pydeck
:用于创建数据可视化的库,特别是地理空间数据可视化。
-pydantic
:用于数据验证和解析。
-pandas
:强大的数据处理和分析库。
-onnxruntime
:用于运行 ONNX 模型。
-nltk
:自然语言处理工具包。
-matplotlib
:用于绘制图表和可视化数据。
-markdownify
:将 HTML 转换为 Markdown。
-markdown
:用于处理 Markdown 格式的文本。
-langchainhub
:不太清楚具体用途,可能与语言处理相关的工具集。
-jsonschema-specifications
:用于处理 JSON Schema 规范。
-httpx
:现代的 HTTP 客户端库。
-gitpython
:用于与 Git 版本控制系统交互。
-favicon
:用于处理网站图标。
-faker
:用于生成假数据,常用于测试。
-dataclasses-json
:用于将 dataclasses 转换为 JSON 和从 JSON 转换回来。
-aiohttp
:异步的 HTTP 客户端和服务器库。
-unstructured-client
:不太清楚具体用途,可能与处理非结构化数据相关。
-rapidocr_onnxruntime
:可能与快速光学字符识别(OCR)和 ONNX 运行时相关。
-pymdown-extensions
:用于扩展 Markdown 的功能。
-pydantic_settings
:与 pydantic 的设置管理相关。
-openai
:用于与 OpenAI 的 API 进行交互。
-langsmith
:可能是用于语言相关任务的工具库,具体用途取决于其特定的功能设计,可能涉及语言模型的训练、评估或其他语言处理任务。
-jsonschema
:用于验证 JSON 数据是否符合特定的模式或结构定义。
-fastapi
:一个快速的现代 Web 框架,基于 Python 的类型提示和异步编程,适用于构建高效的 RESTful APIs。
-unstructured
:可能用于处理非结构化数据,例如从各种文档格式中提取信息。
-sse_starlette
:可能与在 Starlette 框架中实现服务器发送事件(Server-Sent Events)相关,用于实时数据推送。
-langchain-core
:可能是一个语言处理的核心库,可能包含语言模型的交互、知识图谱构建、文本生成等功能。
-altair
:一个用于数据可视化的 Python 库,尤其擅长基于声明式语法创建交互式图表。
-streamlit
:用于快速创建数据科学和机器学习应用的 Web 应用框架,允许用户以简洁的方式构建交互式界面。
-langchain-text-splitters
:可能用于将文本分割成合适的片段,例如在处理长文本时进行分段以便于处理。
-langchain-openai
:可能是用于与 OpenAI 的语言模型进行交互的特定实现,提供方便的接口和工具。
-langchain-community
:可能是一个由社区贡献的 langchain 相关扩展或工具集,用于增强语言处理能力。
-streamlit-vertical-slider
:为 Streamlit 提供垂直滑块组件,用于在应用中进行数值选择或调整。
-streamlit-toggle-switch
:为 Streamlit 提供切换开关组件,用于布尔值的选择。
-streamlit-paste-button
:可能提供一个粘贴按钮,方便用户在 Streamlit 应用中粘贴内容。
-streamlit-option-menu
:为 Streamlit 提供选项菜单组件,用于用户在多个选项中进行选择。
-streamlit-modal
:可能提供模态窗口功能,用于在 Streamlit 应用中显示弹窗或对话框。
-streamlit-keyup
:可能与在 Streamlit 中处理键盘按键事件相关。
-streamlit-image-coordinates
:可能用于获取图像上的坐标信息,例如在图像标注或交互应用中。
-streamlit-feedback
:可能用于在 Streamlit 应用中收集用户反馈。
-streamlit-embedcode
:可能用于在 Streamlit 应用中嵌入代码片段。
-streamlit-card
:可能提供卡片样式的组件,用于在 Streamlit 应用中展示信息。
-streamlit-camera-input-live
:可能允许在 Streamlit 应用中获取实时摄像头输入。
-streamlit-antd-components
:可能将 Ant Design 的组件引入 Streamlit 应用中。
-streamlit-aggrid
:集成 Ag-Grid 组件到 Streamlit 应用中,用于显示和操作表格数据。
-langchain
:一个用于构建语言处理应用的工具集,可能包括与语言模型的交互、知识图谱构建、文本生成等功能。
-streamlit-chatbox
:为 Streamlit 提供聊天框组件,用于构建聊天应用。
-langchain-experimental
:可能包含 langchain 的实验性功能或新的尝试。
-streamlit-faker
:可能用于在 Streamlit 应用中生成假数据进行测试或演示。
-markdownlit
:可能用于处理 Markdown 格式的文本,可能提供特定的功能或扩展。
-streamlit-extras
:可能是 Streamlit 的额外功能集,提供各种增强和扩展。
-langchain-chatchat
:可能用于构建聊天机器人或支持聊天交互的语言处理应用。
代码示例