diff --git a/.github/workflows/release-please-core.yml b/.github/workflows/release-please-core.yml index 3e8668351..c9dc15f10 100644 --- a/.github/workflows/release-please-core.yml +++ b/.github/workflows/release-please-core.yml @@ -43,23 +43,13 @@ jobs: working-directory: backend/core steps: - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v3 + - name: Install Rye + uses: eifinger/setup-rye@v2 with: - python-version: '3.11' - - name: Check working directory - run: pwd - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install poetry - - name: Install project dependencies - run: poetry install - - name: Build package - run: poetry build - - name: Publish package - uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} - packages_dir: backend/core/dist \ No newline at end of file + enable-cache: true + - name: Rye Sync + run: UV_INDEX_STRATEGY=unsafe-first-match rye sync --no-lock + - name: Rye Build + run: rye build + - name: Rye Publish + run: rye publish --token ${{ secrets.PYPI_API_TOKEN }} --yes \ No newline at end of file diff --git a/backend/core/quivr_core/chat.py b/backend/core/quivr_core/chat.py index 7247dc812..01ab56fe0 100644 --- a/backend/core/quivr_core/chat.py +++ b/backend/core/quivr_core/chat.py @@ -7,6 +7,11 @@ from quivr_core.models import ChatMessage class ChatHistory: + """ + Chat history is a list of ChatMessage. + It is used to store the chat history of a chat. + """ + def __init__(self, chat_id: UUID, brain_id: UUID | None) -> None: self.id = chat_id self.brain_id = brain_id @@ -30,6 +35,9 @@ class ChatHistory: def append( self, langchain_msg: AIMessage | HumanMessage, metadata: dict[str, Any] = {} ): + """ + Append a message to the chat history. + """ chat_msg = ChatMessage( chat_id=self.id, message_id=uuid4(), @@ -41,6 +49,9 @@ class ChatHistory: self._msgs.append(chat_msg) def iter_pairs(self) -> Generator[Tuple[HumanMessage, AIMessage], None, None]: + """ + Iterate over the chat history as pairs of HumanMessage and AIMessage. + """ # Reverse the chat_history, newest first it = iter(self.get_chat_history(newest_first=True)) for ai_message, human_message in zip(it, it): diff --git a/backend/core/quivr_core/processor/implementations/megaparse_processor.py b/backend/core/quivr_core/processor/implementations/megaparse_processor.py index 5e486fe48..5d7a3dc62 100644 --- a/backend/core/quivr_core/processor/implementations/megaparse_processor.py +++ b/backend/core/quivr_core/processor/implementations/megaparse_processor.py @@ -14,6 +14,19 @@ logger = logging.getLogger("quivr_core") class MegaparseProcessor(ProcessorBase): + ''' + Megaparse processor for PDF files. + + It can be used to parse PDF files and split them into chunks. + + It comes from the megaparse library. + + ## Installation + ```bash + pip install megaparse + ``` + + ''' supported_extensions = [FileExtension.pdf] def __init__( diff --git a/backend/core/quivr_core/processor/implementations/simple_txt_processor.py b/backend/core/quivr_core/processor/implementations/simple_txt_processor.py index d7dd05ad9..7caffb1d3 100644 --- a/backend/core/quivr_core/processor/implementations/simple_txt_processor.py +++ b/backend/core/quivr_core/processor/implementations/simple_txt_processor.py @@ -27,6 +27,11 @@ def recursive_character_splitter( class SimpleTxtProcessor(ProcessorBase): + """ + SimpleTxtProcessor is a class that implements the ProcessorBase interface. + It is used to process the files with the Simple Txt parser. + """ + supported_extensions = [FileExtension.txt] def __init__( diff --git a/backend/core/quivr_core/processor/implementations/tika_processor.py b/backend/core/quivr_core/processor/implementations/tika_processor.py index 907527d1b..11c6f7981 100644 --- a/backend/core/quivr_core/processor/implementations/tika_processor.py +++ b/backend/core/quivr_core/processor/implementations/tika_processor.py @@ -14,6 +14,16 @@ logger = logging.getLogger("quivr_core") class TikaProcessor(ProcessorBase): + """ + TikaProcessor is a class that implements the ProcessorBase interface. + It is used to process the files with the Tika server. + + To run it with docker you can do: + ```bash + docker run -d -p 9998:9998 apache/tika + ``` + """ + supported_extensions = [FileExtension.pdf] def __init__( diff --git a/backend/core/quivr_core/processor/splitter.py b/backend/core/quivr_core/processor/splitter.py index ca1ce9657..9a3945594 100644 --- a/backend/core/quivr_core/processor/splitter.py +++ b/backend/core/quivr_core/processor/splitter.py @@ -2,5 +2,12 @@ from pydantic import BaseModel class SplitterConfig(BaseModel): + """ + This class is used to configure the chunking of the documents. + + Chunk size is the number of characters in the chunk. + Chunk overlap is the number of characters that the chunk will overlap with the previous chunk. + """ + chunk_size: int = 400 chunk_overlap: int = 100 diff --git a/backend/core/quivr_core/quivr_rag.py b/backend/core/quivr_core/quivr_rag.py index da2d6da7e..9f3049bc8 100644 --- a/backend/core/quivr_core/quivr_rag.py +++ b/backend/core/quivr_core/quivr_rag.py @@ -45,6 +45,10 @@ class IdempotentCompressor(BaseDocumentCompressor): class QuivrQARAG: + """ + QuivrQA RAG is a class that provides a RAG interface to the QuivrQA system. + """ + def __init__( self, *, @@ -60,6 +64,9 @@ class QuivrQARAG: @property def retriever(self): + """ + Retriever is a function that retrieves the documents from the vector store. + """ return self.vector_store.as_retriever() def filter_history( @@ -92,6 +99,9 @@ class QuivrQARAG: return filtered_chat_history[::-1] def build_chain(self, files: str): + """ + Builds the chain for the QuivrQA RAG. + """ compression_retriever = ContextualCompressionRetriever( base_compressor=self.reranker, base_retriever=self.retriever ) @@ -149,6 +159,9 @@ class QuivrQARAG: list_files: list[QuivrKnowledge], metadata: dict[str, str] = {}, ) -> ParsedRAGResponse: + """ + Answers a question using the QuivrQA RAG synchronously. + """ concat_list_files = format_file_list(list_files, self.rag_config.max_files) conversational_qa_chain = self.build_chain(concat_list_files) raw_llm_response = conversational_qa_chain.invoke( @@ -169,6 +182,9 @@ class QuivrQARAG: list_files: list[QuivrKnowledge], metadata: dict[str, str] = {}, ) -> AsyncGenerator[ParsedRAGChunkResponse, ParsedRAGChunkResponse]: + """ + Answers a question using the QuivrQA RAG asynchronously. + """ concat_list_files = format_file_list(list_files, self.rag_config.max_files) conversational_qa_chain = self.build_chain(concat_list_files) diff --git a/backend/docs/.gitignore b/backend/docs/.gitignore new file mode 100644 index 000000000..ae8554dec --- /dev/null +++ b/backend/docs/.gitignore @@ -0,0 +1,10 @@ +# python generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# venv +.venv diff --git a/backend/docs/.python-version b/backend/docs/.python-version new file mode 100644 index 000000000..2419ad5b0 --- /dev/null +++ b/backend/docs/.python-version @@ -0,0 +1 @@ +3.11.9 diff --git a/backend/docs/README.md b/backend/docs/README.md new file mode 100644 index 000000000..69c1233e2 --- /dev/null +++ b/backend/docs/README.md @@ -0,0 +1,3 @@ +# docs + +Describe your project here. diff --git a/backend/docs/docs/css/style.css b/backend/docs/docs/css/style.css new file mode 100644 index 000000000..7923029fd --- /dev/null +++ b/backend/docs/docs/css/style.css @@ -0,0 +1,50 @@ +.md-container .jp-Cell-outputWrapper .jp-OutputPrompt.jp-OutputArea-prompt, +.md-container .jp-Cell-inputWrapper .jp-InputPrompt.jp-InputArea-prompt { + display: none !important; +} + +/* CSS styles for side-by-side layout */ +.container { + display: flex-col; + justify-content: space-between; + margin-bottom: 20px; + /* Adjust spacing between sections */ + position: sticky; + top: 2.4rem; + z-index: 1000; + /* Ensure it's above other content */ + background-color: white; + /* Match your page background */ + padding: 0.2rem; +} + +.example-heading { + margin: 0.2rem !important; +} + +.usage-examples { + width: 100%; + /* Adjust the width as needed */ + border: 1px solid var(--md-default-fg-color--light); + border-radius: 2px; + padding: 0.2rem; +} + +/* Additional styling for the toggle */ +.toggle-example { + cursor: pointer; + color: white; + text-decoration: underline; + background-color: var(--md-primary-fg-color); + padding: 0.2rem; + border-radius: 2px; +} + +.hidden { + display: none; +} + +/* mendable search styling */ +#my-component-root>div { + bottom: 100px; +} \ No newline at end of file diff --git a/backend/docs/docs/index.md b/backend/docs/docs/index.md new file mode 100644 index 000000000..dd90130b4 --- /dev/null +++ b/backend/docs/docs/index.md @@ -0,0 +1,41 @@ +# Welcome to Quivr Documentation + +Welcome to the documentation of Quivr! This is the place where you'll find help, guidance and support for collaborative software development. Whether you're involved in an open-source community or a large software team, these resources should get you up and running quickly! + +[Quivr](https://quivr.app) is your **Second Brain** that can act as your **personal assistant**. Quivr is a platform that enables the creation of AI assistants, referred to as "Brain". These assistants are designed with specialized capabilities. Some can connect to specific data sources, allowing users to interact directly with the data. Others serve as specialized tools for particular use cases, powered by Rag technology. These tools process specific inputs to generate practical outputs, such as summaries, translations, and more. + +## Quick Links + +- [Video Installation](https://dub.sh/quivr-demo) + +!!! note + **Our goal** is to make Quivr the **best personal assistant** that is powered by your knowledge and your applications 🔥 + +## What does it do? + +
+ +
+ +## How to get started? 👀 + +!!! tip + It takes less than **5 seconds** to get started with Quivr. You can even use your Google account to sign up. + +1. **Create an account**: Go to [Quivr](https://quivr.app) and create an account. +2. **Create a Brain**: Let us guide you to create your first brain! +3. **Feed this Brain**: Add documentation and/or URLs to feed your brain. +4. **Ask Questions to your Brain**: Ask your Brain questions about the knowledge that you provide. + +## Empowering Innovation with Foundation Models & Generative AI + +As a Leader in AI, Quivr leverages Foundation Models and Generative AI to empower businesses to achieve gains through Innovation. + +- 50k+ users +- 6k+ companies +- 35k+ github stars +- Top 100 open-source + diff --git a/backend/docs/docs/installation.md b/backend/docs/docs/installation.md new file mode 100644 index 000000000..4f7cbfa54 --- /dev/null +++ b/backend/docs/docs/installation.md @@ -0,0 +1,5 @@ +## Installation + +```bash +pip install quivr-core +``` \ No newline at end of file diff --git a/backend/docs/docs/parsers/index.md b/backend/docs/docs/parsers/index.md new file mode 100644 index 000000000..d878fa1fb --- /dev/null +++ b/backend/docs/docs/parsers/index.md @@ -0,0 +1,3 @@ + +Quivr provides a suite of parsers to extract structured data from various sources. + diff --git a/backend/docs/docs/parsers/megaparse.md b/backend/docs/docs/parsers/megaparse.md new file mode 100644 index 000000000..ea92eae9e --- /dev/null +++ b/backend/docs/docs/parsers/megaparse.md @@ -0,0 +1,5 @@ +## Megaparse + +::: quivr_core.processor.implementations.megaparse_processor + options: + heading_level: 2 \ No newline at end of file diff --git a/backend/docs/docs/parsers/simple.md b/backend/docs/docs/parsers/simple.md new file mode 100644 index 000000000..530f89972 --- /dev/null +++ b/backend/docs/docs/parsers/simple.md @@ -0,0 +1,5 @@ +## Simple Txt + +::: quivr_core.processor.implementations.simple_txt_processor + options: + heading_level: 2 \ No newline at end of file diff --git a/backend/docs/mkdocs.yml b/backend/docs/mkdocs.yml new file mode 100644 index 000000000..daaa258db --- /dev/null +++ b/backend/docs/mkdocs.yml @@ -0,0 +1,62 @@ +site_name: Quivr +extra_css: + - css/style.css + +markdown_extensions: + - attr_list + - admonition + - pymdownx.details + - pymdownx.superfences + - md_in_html + - toc: + permalink: "#" + +theme: + custom_dir: overrides + features: + - navigation.instant + - navigation.tabs + - navigation.indexes + - navigation.top + - navigation.footer + - toc.follow + - content.code.copy + - search.suggest + - search.highlight + name: material + palette: + - media: (prefers-color-scheme) + toggle: + icon: material/brightness-auto + name: Switch to light mode + - accent: purple + media: "(prefers-color-scheme: light)" + primary: white + scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - accent: purple + media: "(prefers-color-scheme: dark)" + primary: black + scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to system preference + +plugins: +- mkdocstrings: + default_handler: python + + +nav: + - Home: + - index.md + - installation.md + - Features: + - Parsers: + - parsers/index.md + - parsers/megaparse.md + - parsers/simple.md + - Enterprise: https://docs.quivr.app/ + diff --git a/backend/docs/pyproject.toml b/backend/docs/pyproject.toml new file mode 100644 index 000000000..993b21618 --- /dev/null +++ b/backend/docs/pyproject.toml @@ -0,0 +1,35 @@ +[project] +name = "docs" +version = "0.1.0" +description = "Add your description here" +authors = [ + { name = "Stan Girard", email = "stan@quivr.app" } +] +dependencies = [ + "mkdocs>=1.6.1", + "mkdocstrings[python]>=0.26.0", + "mkdocs-jupyter>=0.24.8", + "mkdocs-include-dir-to-nav>=1.2.0", + "mkdocs-material>=9.5.34", + "mkdocs-redirects>=1.2.1", +] +readme = "README.md" +requires-python = ">= 3.8" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.rye] +managed = true +dev-dependencies = [] +virtual = true + +[tool.rye.scripts] +docs = "mkdocs serve" + + +[tool.hatch.metadata] +allow-direct-references = true + + diff --git a/backend/docs/requirements-dev.lock b/backend/docs/requirements-dev.lock new file mode 100644 index 000000000..7f2d5362c --- /dev/null +++ b/backend/docs/requirements-dev.lock @@ -0,0 +1,231 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false +# with-sources: false +# generate-hashes: false +# universal: false + +asttokens==2.4.1 + # via stack-data +attrs==24.2.0 + # via jsonschema + # via referencing +babel==2.16.0 + # via mkdocs-material +beautifulsoup4==4.12.3 + # via nbconvert +bleach==6.1.0 + # via nbconvert +certifi==2024.8.30 + # via requests +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via mkdocs + # via mkdocstrings +colorama==0.4.6 + # via griffe + # via mkdocs-material +comm==0.2.2 + # via ipykernel +debugpy==1.8.5 + # via ipykernel +decorator==5.1.1 + # via ipython +defusedxml==0.7.1 + # via nbconvert +executing==2.1.0 + # via stack-data +fastjsonschema==2.20.0 + # via nbformat +ghp-import==2.1.0 + # via mkdocs +griffe==1.2.0 + # via mkdocstrings-python +idna==3.8 + # via requests +ipykernel==6.29.5 + # via mkdocs-jupyter +ipython==8.27.0 + # via ipykernel +jedi==0.19.1 + # via ipython +jinja2==3.1.4 + # via mkdocs + # via mkdocs-material + # via mkdocstrings + # via nbconvert +jsonschema==4.23.0 + # via nbformat +jsonschema-specifications==2023.12.1 + # via jsonschema +jupyter-client==8.6.2 + # via ipykernel + # via nbclient +jupyter-core==5.7.2 + # via ipykernel + # via jupyter-client + # via nbclient + # via nbconvert + # via nbformat +jupyterlab-pygments==0.3.0 + # via nbconvert +jupytext==1.16.4 + # via mkdocs-jupyter +markdown==3.7 + # via mkdocs + # via mkdocs-autorefs + # via mkdocs-material + # via mkdocstrings + # via pymdown-extensions +markdown-it-py==3.0.0 + # via jupytext + # via mdit-py-plugins +markupsafe==2.1.5 + # via jinja2 + # via mkdocs + # via mkdocs-autorefs + # via mkdocstrings + # via nbconvert +matplotlib-inline==0.1.7 + # via ipykernel + # via ipython +mdit-py-plugins==0.4.1 + # via jupytext +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via mkdocs + # via mkdocs-get-deps +mistune==3.0.2 + # via nbconvert +mkdocs==1.6.1 + # via mkdocs-autorefs + # via mkdocs-include-dir-to-nav + # via mkdocs-jupyter + # via mkdocs-material + # via mkdocs-redirects + # via mkdocstrings +mkdocs-autorefs==1.2.0 + # via mkdocstrings + # via mkdocstrings-python +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-include-dir-to-nav==1.2.0 +mkdocs-jupyter==0.24.8 +mkdocs-material==9.5.34 + # via mkdocs-jupyter +mkdocs-material-extensions==1.3.1 + # via mkdocs-material +mkdocs-redirects==1.2.1 +mkdocstrings==0.26.0 + # via mkdocstrings-python +mkdocstrings-python==1.10.9 + # via mkdocstrings +nbclient==0.10.0 + # via nbconvert +nbconvert==7.16.4 + # via mkdocs-jupyter +nbformat==5.10.4 + # via jupytext + # via nbclient + # via nbconvert +nest-asyncio==1.6.0 + # via ipykernel +packaging==24.1 + # via ipykernel + # via jupytext + # via mkdocs + # via nbconvert +paginate==0.5.7 + # via mkdocs-material +pandocfilters==1.5.1 + # via nbconvert +parso==0.8.4 + # via jedi +pathspec==0.12.1 + # via mkdocs +pexpect==4.9.0 + # via ipython +platformdirs==4.2.2 + # via jupyter-core + # via mkdocs-get-deps + # via mkdocstrings +prompt-toolkit==3.0.47 + # via ipython +psutil==6.0.0 + # via ipykernel +ptyprocess==0.7.0 + # via pexpect +pure-eval==0.2.3 + # via stack-data +pygments==2.18.0 + # via ipython + # via mkdocs-jupyter + # via mkdocs-material + # via nbconvert +pymdown-extensions==10.9 + # via mkdocs-material + # via mkdocstrings +python-dateutil==2.9.0.post0 + # via ghp-import + # via jupyter-client +pyyaml==6.0.2 + # via jupytext + # via mkdocs + # via mkdocs-get-deps + # via pymdown-extensions + # via pyyaml-env-tag +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.2.0 + # via ipykernel + # via jupyter-client +referencing==0.35.1 + # via jsonschema + # via jsonschema-specifications +regex==2024.7.24 + # via mkdocs-material +requests==2.32.3 + # via mkdocs-material +rpds-py==0.20.0 + # via jsonschema + # via referencing +six==1.16.0 + # via asttokens + # via bleach + # via python-dateutil +soupsieve==2.6 + # via beautifulsoup4 +stack-data==0.6.3 + # via ipython +tinycss2==1.3.0 + # via nbconvert +tornado==6.4.1 + # via ipykernel + # via jupyter-client +traitlets==5.14.3 + # via comm + # via ipykernel + # via ipython + # via jupyter-client + # via jupyter-core + # via matplotlib-inline + # via nbclient + # via nbconvert + # via nbformat +typing-extensions==4.12.2 + # via ipython +urllib3==2.2.2 + # via requests +watchdog==5.0.0 + # via mkdocs +wcwidth==0.2.13 + # via prompt-toolkit +webencodings==0.5.1 + # via bleach + # via tinycss2 diff --git a/backend/docs/requirements.lock b/backend/docs/requirements.lock new file mode 100644 index 000000000..7f2d5362c --- /dev/null +++ b/backend/docs/requirements.lock @@ -0,0 +1,231 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false +# with-sources: false +# generate-hashes: false +# universal: false + +asttokens==2.4.1 + # via stack-data +attrs==24.2.0 + # via jsonschema + # via referencing +babel==2.16.0 + # via mkdocs-material +beautifulsoup4==4.12.3 + # via nbconvert +bleach==6.1.0 + # via nbconvert +certifi==2024.8.30 + # via requests +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via mkdocs + # via mkdocstrings +colorama==0.4.6 + # via griffe + # via mkdocs-material +comm==0.2.2 + # via ipykernel +debugpy==1.8.5 + # via ipykernel +decorator==5.1.1 + # via ipython +defusedxml==0.7.1 + # via nbconvert +executing==2.1.0 + # via stack-data +fastjsonschema==2.20.0 + # via nbformat +ghp-import==2.1.0 + # via mkdocs +griffe==1.2.0 + # via mkdocstrings-python +idna==3.8 + # via requests +ipykernel==6.29.5 + # via mkdocs-jupyter +ipython==8.27.0 + # via ipykernel +jedi==0.19.1 + # via ipython +jinja2==3.1.4 + # via mkdocs + # via mkdocs-material + # via mkdocstrings + # via nbconvert +jsonschema==4.23.0 + # via nbformat +jsonschema-specifications==2023.12.1 + # via jsonschema +jupyter-client==8.6.2 + # via ipykernel + # via nbclient +jupyter-core==5.7.2 + # via ipykernel + # via jupyter-client + # via nbclient + # via nbconvert + # via nbformat +jupyterlab-pygments==0.3.0 + # via nbconvert +jupytext==1.16.4 + # via mkdocs-jupyter +markdown==3.7 + # via mkdocs + # via mkdocs-autorefs + # via mkdocs-material + # via mkdocstrings + # via pymdown-extensions +markdown-it-py==3.0.0 + # via jupytext + # via mdit-py-plugins +markupsafe==2.1.5 + # via jinja2 + # via mkdocs + # via mkdocs-autorefs + # via mkdocstrings + # via nbconvert +matplotlib-inline==0.1.7 + # via ipykernel + # via ipython +mdit-py-plugins==0.4.1 + # via jupytext +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via mkdocs + # via mkdocs-get-deps +mistune==3.0.2 + # via nbconvert +mkdocs==1.6.1 + # via mkdocs-autorefs + # via mkdocs-include-dir-to-nav + # via mkdocs-jupyter + # via mkdocs-material + # via mkdocs-redirects + # via mkdocstrings +mkdocs-autorefs==1.2.0 + # via mkdocstrings + # via mkdocstrings-python +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-include-dir-to-nav==1.2.0 +mkdocs-jupyter==0.24.8 +mkdocs-material==9.5.34 + # via mkdocs-jupyter +mkdocs-material-extensions==1.3.1 + # via mkdocs-material +mkdocs-redirects==1.2.1 +mkdocstrings==0.26.0 + # via mkdocstrings-python +mkdocstrings-python==1.10.9 + # via mkdocstrings +nbclient==0.10.0 + # via nbconvert +nbconvert==7.16.4 + # via mkdocs-jupyter +nbformat==5.10.4 + # via jupytext + # via nbclient + # via nbconvert +nest-asyncio==1.6.0 + # via ipykernel +packaging==24.1 + # via ipykernel + # via jupytext + # via mkdocs + # via nbconvert +paginate==0.5.7 + # via mkdocs-material +pandocfilters==1.5.1 + # via nbconvert +parso==0.8.4 + # via jedi +pathspec==0.12.1 + # via mkdocs +pexpect==4.9.0 + # via ipython +platformdirs==4.2.2 + # via jupyter-core + # via mkdocs-get-deps + # via mkdocstrings +prompt-toolkit==3.0.47 + # via ipython +psutil==6.0.0 + # via ipykernel +ptyprocess==0.7.0 + # via pexpect +pure-eval==0.2.3 + # via stack-data +pygments==2.18.0 + # via ipython + # via mkdocs-jupyter + # via mkdocs-material + # via nbconvert +pymdown-extensions==10.9 + # via mkdocs-material + # via mkdocstrings +python-dateutil==2.9.0.post0 + # via ghp-import + # via jupyter-client +pyyaml==6.0.2 + # via jupytext + # via mkdocs + # via mkdocs-get-deps + # via pymdown-extensions + # via pyyaml-env-tag +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.2.0 + # via ipykernel + # via jupyter-client +referencing==0.35.1 + # via jsonschema + # via jsonschema-specifications +regex==2024.7.24 + # via mkdocs-material +requests==2.32.3 + # via mkdocs-material +rpds-py==0.20.0 + # via jsonschema + # via referencing +six==1.16.0 + # via asttokens + # via bleach + # via python-dateutil +soupsieve==2.6 + # via beautifulsoup4 +stack-data==0.6.3 + # via ipython +tinycss2==1.3.0 + # via nbconvert +tornado==6.4.1 + # via ipykernel + # via jupyter-client +traitlets==5.14.3 + # via comm + # via ipykernel + # via ipython + # via jupyter-client + # via jupyter-core + # via matplotlib-inline + # via nbclient + # via nbconvert + # via nbformat +typing-extensions==4.12.2 + # via ipython +urllib3==2.2.2 + # via requests +watchdog==5.0.0 + # via mkdocs +wcwidth==0.2.13 + # via prompt-toolkit +webencodings==0.5.1 + # via bleach + # via tinycss2 diff --git a/backend/docs/src/docs/__init__.py b/backend/docs/src/docs/__init__.py new file mode 100644 index 000000000..8fdb6d784 --- /dev/null +++ b/backend/docs/src/docs/__init__.py @@ -0,0 +1,2 @@ +def hello() -> str: + return "Hello from docs!" diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 0aef12aa7..0f57a09db 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -40,7 +40,7 @@ dev-dependencies = [ ] [tool.rye.workspace] -members = [".", "core", "worker", "api", "core/examples/chatbot"] +members = [".", "core", "worker", "api", "docs", "core/examples/chatbot"] [tool.hatch.metadata] allow-direct-references = true diff --git a/backend/requirements-dev.lock b/backend/requirements-dev.lock index e864b2b90..9ceae7d3b 100644 --- a/backend/requirements-dev.lock +++ b/backend/requirements-dev.lock @@ -62,12 +62,15 @@ attrs==24.2.0 # via aiohttp # via jsonschema # via referencing +babel==2.16.0 + # via mkdocs-material backoff==2.2.1 # via posthog # via unstructured beautifulsoup4==4.12.3 # via llama-index-readers-file # via markdownify + # via nbconvert # via unstructured bidict==0.23.1 # via python-socketio @@ -75,6 +78,8 @@ billiard==4.2.0 # via celery black==24.8.0 # via flake8-black +bleach==6.1.0 + # via nbconvert boto3==1.35.2 # via cohere botocore==1.35.2 @@ -116,6 +121,8 @@ click==8.1.7 # via click-plugins # via click-repl # via litellm + # via mkdocs + # via mkdocstrings # via nltk # via uvicorn click-didyoumean==0.3.1 @@ -131,7 +138,10 @@ cohere==5.8.1 colorama==0.4.6 # via click # via colorlog + # via griffe # via ipython + # via mkdocs + # via mkdocs-material # via pytest # via tox # via tqdm @@ -164,6 +174,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via langchain-anthropic + # via nbconvert deprecated==1.2.14 # via llama-index-core # via llama-index-legacy @@ -206,6 +217,8 @@ fastapi==0.110.3 # via sentry-sdk fastavro==1.9.5 # via cohere +fastjsonschema==2.20.0 + # via nbformat filelock==3.15.4 # via huggingface-hub # via torch @@ -237,6 +250,8 @@ fsspec==2024.2.0 # via llama-index-core # via llama-index-legacy # via torch +ghp-import==2.1.0 + # via mkdocs google-api-core==2.19.1 # via google-api-python-client # via google-cloud-vision @@ -265,6 +280,8 @@ gotrue==2.7.0 greenlet==3.0.3 # via playwright # via sqlalchemy +griffe==1.2.0 + # via mkdocstrings-python grpcio==1.65.5 # via google-api-core # via grpcio-status @@ -330,12 +347,17 @@ iniconfig==2.0.0 iopath==0.1.10 # via layoutparser ipykernel==6.29.5 + # via mkdocs-jupyter ipython==8.26.0 # via ipykernel jedi==0.19.1 # via ipython jinja2==3.1.3 # via litellm + # via mkdocs + # via mkdocs-material + # via mkdocstrings + # via nbconvert # via torch jiter==0.5.0 # via anthropic @@ -353,13 +375,22 @@ jsonpointer==3.0.0 # via jsonpatch jsonschema==4.23.0 # via litellm + # via nbformat jsonschema-specifications==2023.12.1 # via jsonschema jupyter-client==8.6.2 # via ipykernel + # via nbclient jupyter-core==5.7.2 # via ipykernel # via jupyter-client + # via nbclient + # via nbconvert + # via nbformat +jupyterlab-pygments==0.3.0 + # via nbconvert +jupytext==1.16.4 + # via mkdocs-jupyter kiwisolver==1.4.5 # via matplotlib kombu==5.4.0 @@ -474,13 +505,24 @@ lxml==5.3.0 mammoth==1.8.0 # via megaparse markdown==3.7 + # via mkdocs + # via mkdocs-autorefs + # via mkdocs-material + # via mkdocstrings + # via pymdown-extensions # via unstructured markdown-it-py==3.0.0 + # via jupytext + # via mdit-py-plugins # via rich markdownify==0.13.1 # via quivr-api markupsafe==2.1.5 # via jinja2 + # via mkdocs + # via mkdocs-autorefs + # via mkdocstrings + # via nbconvert marshmallow==3.22.0 # via dataclasses-json # via marshmallow-enum @@ -495,10 +537,40 @@ matplotlib-inline==0.1.7 # via ipython mccabe==0.7.0 # via flake8 +mdit-py-plugins==0.4.1 + # via jupytext mdurl==0.1.2 # via markdown-it-py megaparse==0.0.31 # via quivr-core +mergedeep==1.3.4 + # via mkdocs + # via mkdocs-get-deps +mistune==3.0.2 + # via nbconvert +mkdocs==1.6.1 + # via mkdocs-autorefs + # via mkdocs-include-dir-to-nav + # via mkdocs-jupyter + # via mkdocs-material + # via mkdocs-redirects + # via mkdocstrings +mkdocs-autorefs==1.2.0 + # via mkdocstrings + # via mkdocstrings-python +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-include-dir-to-nav==1.2.0 +mkdocs-jupyter==0.25.0 +mkdocs-material==9.5.34 + # via mkdocs-jupyter +mkdocs-material-extensions==1.3.1 + # via mkdocs-material +mkdocs-redirects==1.2.1 +mkdocstrings==0.26.1 + # via mkdocstrings-python +mkdocstrings-python==1.11.1 + # via mkdocstrings monotonic==1.6 # via posthog mpmath==1.3.0 @@ -514,6 +586,14 @@ mypy-extensions==1.0.0 # via mypy # via typing-inspect # via unstructured-client +nbclient==0.10.0 + # via nbconvert +nbconvert==7.16.4 + # via mkdocs-jupyter +nbformat==5.10.4 + # via jupytext + # via nbclient + # via nbconvert nest-asyncio==1.6.0 # via chainlit # via ipykernel @@ -616,10 +696,13 @@ packaging==23.2 # via faiss-cpu # via huggingface-hub # via ipykernel + # via jupytext # via langchain-core # via literalai # via marshmallow # via matplotlib + # via mkdocs + # via nbconvert # via onnxruntime # via pikepdf # via pyproject-api @@ -629,18 +712,23 @@ packaging==23.2 # via transformers # via unstructured-client # via unstructured-pytesseract +paginate==0.5.7 + # via mkdocs-material pandas==2.2.2 # via langchain-cohere # via layoutparser # via llama-index-core # via llama-index-legacy # via unstructured +pandocfilters==1.5.1 + # via nbconvert parameterized==0.9.0 # via cohere parso==0.8.4 # via jedi pathspec==0.12.1 # via black + # via mkdocs pdf2docx==0.5.8 # via megaparse pdf2image==1.17.0 @@ -674,6 +762,8 @@ pillow-heif==0.18.0 platformdirs==4.2.2 # via black # via jupyter-core + # via mkdocs-get-deps + # via mkdocstrings # via tox # via virtualenv playwright==1.46.0 @@ -760,12 +850,18 @@ pyflakes==3.2.0 # via flake8 pygments==2.18.0 # via ipython + # via mkdocs-jupyter + # via mkdocs-material + # via nbconvert # via rich pyinstrument==4.7.2 # via quivr-api pyjwt==2.9.0 # via chainlit # via msal +pymdown-extensions==10.9 + # via mkdocs-material + # via mkdocstrings pymupdf==1.24.9 # via pdf2docx pymupdfb==1.24.9 @@ -801,6 +897,7 @@ pytest-xdist==3.6.1 python-dateutil==2.9.0.post0 # via botocore # via celery + # via ghp-import # via jupyter-client # via matplotlib # via pandas @@ -845,15 +942,22 @@ pywin32==306 ; (platform_python_implementation != 'PyPy' and sys_platform == 'wi # via portalocker pyyaml==6.0.2 # via huggingface-hub + # via jupytext # via langchain # via langchain-community # via langchain-core # via layoutparser # via llama-index-core + # via mkdocs + # via mkdocs-get-deps # via omegaconf # via pre-commit + # via pymdown-extensions + # via pyyaml-env-tag # via timm # via transformers +pyyaml-env-tag==0.1 + # via mkdocs pyzmq==26.1.1 # via ipykernel # via jupyter-client @@ -869,6 +973,7 @@ referencing==0.35.1 # via jsonschema # via jsonschema-specifications regex==2024.7.24 + # via mkdocs-material # via nltk # via tiktoken # via transformers @@ -883,6 +988,7 @@ requests==2.32.3 # via litellm # via llama-index-core # via llama-index-legacy + # via mkdocs-material # via msal # via opentelemetry-exporter-otlp-proto-http # via posthog @@ -920,6 +1026,7 @@ simple-websocket==1.0.0 # via python-engineio six==1.16.0 # via asttokens + # via bleach # via dropbox # via ecdsa # via fire @@ -987,6 +1094,8 @@ tiktoken==0.7.0 timm==1.0.8 # via effdet # via unstructured-inference +tinycss2==1.3.0 + # via nbconvert tokenizers==0.19.1 # via anthropic # via cohere @@ -1034,6 +1143,9 @@ traitlets==5.14.3 # via jupyter-client # via jupyter-core # via matplotlib-inline + # via nbclient + # via nbconvert + # via nbformat transformers==4.44.1 # via unstructured-inference types-requests==2.31.0.6 @@ -1107,10 +1219,15 @@ vine==5.1.0 virtualenv==20.26.3 # via pre-commit # via tox +watchdog==5.0.2 + # via mkdocs watchfiles==0.20.0 # via chainlit wcwidth==0.2.13 # via prompt-toolkit +webencodings==0.5.1 + # via bleach + # via tinycss2 websockets==12.0 # via realtime wrapt==1.16.0 diff --git a/backend/requirements.lock b/backend/requirements.lock index 09b47029d..96ee9ada7 100644 --- a/backend/requirements.lock +++ b/backend/requirements.lock @@ -36,7 +36,7 @@ amqp==5.2.0 # via kombu annotated-types==0.7.0 # via pydantic -anthropic==0.34.1 +anthropic==0.34.2 # via langchain-anthropic antlr4-python3-runtime==4.9.3 # via omegaconf @@ -45,6 +45,10 @@ anyio==4.4.0 # via httpx # via openai # via starlette +appnope==0.1.4 ; platform_system == 'Darwin' + # via ipykernel +asttokens==2.4.1 + # via stack-data async-timeout==4.0.3 ; python_full_version < '3.12' # via asyncpg asyncpg==0.29.0 @@ -53,15 +57,20 @@ attrs==24.2.0 # via aiohttp # via jsonschema # via referencing +babel==2.16.0 + # via mkdocs-material backoff==2.2.1 # via posthog # via unstructured beautifulsoup4==4.12.3 # via llama-index-readers-file # via markdownify + # via nbconvert # via unstructured billiard==4.2.0 # via celery +bleach==6.1.0 + # via nbconvert boto3==1.35.2 # via cohere botocore==1.35.2 @@ -79,8 +88,9 @@ certifi==2022.12.7 # via requests # via sentry-sdk # via unstructured-client -cffi==1.17.0 ; platform_python_implementation != 'PyPy' +cffi==1.17.0 ; platform_python_implementation != 'PyPy' or implementation_name == 'pypy' # via cryptography + # via pyzmq chardet==5.2.0 # via unstructured charset-normalizer==2.1.1 @@ -93,6 +103,8 @@ click==8.1.7 # via click-plugins # via click-repl # via litellm + # via mkdocs + # via mkdocstrings # via nltk # via uvicorn click-didyoumean==0.3.1 @@ -105,14 +117,20 @@ cobble==0.1.4 # via mammoth cohere==5.8.1 # via langchain-cohere -colorama==0.4.6 ; sys_platform == 'win32' or platform_system == 'Windows' +colorama==0.4.6 # via click # via colorlog + # via griffe + # via ipython + # via mkdocs + # via mkdocs-material # via tqdm coloredlogs==15.0.1 # via onnxruntime colorlog==6.8.2 # via quivr-api +comm==0.2.2 + # via ipykernel contourpy==1.2.1 # via matplotlib cryptography==43.0.0 @@ -127,8 +145,13 @@ dataclasses-json==0.6.7 # via llama-index-legacy # via unstructured # via unstructured-client +debugpy==1.8.5 + # via ipykernel +decorator==5.1.1 + # via ipython defusedxml==0.7.1 # via langchain-anthropic + # via nbconvert deprecated==1.2.14 # via llama-index-core # via llama-index-legacy @@ -153,6 +176,8 @@ emoji==2.12.1 # via unstructured et-xmlfile==1.1.0 # via openpyxl +executing==2.1.0 + # via stack-data faiss-cpu==1.8.0.post1 # via quivr-core fastapi==0.112.1 @@ -160,6 +185,8 @@ fastapi==0.112.1 # via sentry-sdk fastavro==1.9.5 # via cohere +fastjsonschema==2.20.0 + # via nbformat filelock==3.13.1 # via huggingface-hub # via torch @@ -185,6 +212,8 @@ fsspec==2024.2.0 # via llama-index-core # via llama-index-legacy # via torch +ghp-import==2.1.0 + # via mkdocs google-api-core==2.19.1 # via google-api-python-client # via google-cloud-vision @@ -211,6 +240,8 @@ gotrue==2.7.0 greenlet==3.0.3 # via playwright # via sqlalchemy +griffe==1.2.0 + # via mkdocstrings-python grpcio==1.65.5 # via google-api-core # via grpcio-status @@ -266,8 +297,18 @@ importlib-metadata==8.4.0 # via litellm iopath==0.1.10 # via layoutparser +ipykernel==6.29.5 + # via mkdocs-jupyter +ipython==8.27.0 + # via ipykernel +jedi==0.19.1 + # via ipython jinja2==3.1.3 # via litellm + # via mkdocs + # via mkdocs-material + # via mkdocstrings + # via nbconvert # via torch jiter==0.5.0 # via anthropic @@ -285,8 +326,22 @@ jsonpointer==3.0.0 # via jsonpatch jsonschema==4.23.0 # via litellm + # via nbformat jsonschema-specifications==2023.12.1 # via jsonschema +jupyter-client==8.6.2 + # via ipykernel + # via nbclient +jupyter-core==5.7.2 + # via ipykernel + # via jupyter-client + # via nbclient + # via nbconvert + # via nbformat +jupyterlab-pygments==0.3.0 + # via nbconvert +jupytext==1.16.4 + # via mkdocs-jupyter kiwisolver==1.4.5 # via matplotlib kombu==5.4.0 @@ -326,9 +381,9 @@ langchain-text-splitters==0.2.2 # via langchain langdetect==1.0.9 # via unstructured -langgraph==0.2.14 +langgraph==0.2.19 # via quivr-core -langgraph-checkpoint==1.0.6 +langgraph-checkpoint==1.0.9 # via langgraph langsmith==0.1.100 # via langchain @@ -397,13 +452,24 @@ lxml==5.3.0 mammoth==1.8.0 # via megaparse markdown==3.7 + # via mkdocs + # via mkdocs-autorefs + # via mkdocs-material + # via mkdocstrings + # via pymdown-extensions # via unstructured markdown-it-py==3.0.0 + # via jupytext + # via mdit-py-plugins # via rich markdownify==0.13.1 # via quivr-api markupsafe==2.1.5 # via jinja2 + # via mkdocs + # via mkdocs-autorefs + # via mkdocstrings + # via nbconvert marshmallow==3.22.0 # via dataclasses-json # via marshmallow-enum @@ -413,10 +479,43 @@ marshmallow-enum==1.5.1 matplotlib==3.9.2 # via pycocotools # via unstructured-inference +matplotlib-inline==0.1.7 + # via ipykernel + # via ipython +mdit-py-plugins==0.4.1 + # via jupytext mdurl==0.1.2 # via markdown-it-py megaparse==0.0.31 # via quivr-core +mergedeep==1.3.4 + # via mkdocs + # via mkdocs-get-deps +mistune==3.0.2 + # via nbconvert +mkdocs==1.6.1 + # via mkdocs-autorefs + # via mkdocs-include-dir-to-nav + # via mkdocs-jupyter + # via mkdocs-material + # via mkdocs-redirects + # via mkdocstrings +mkdocs-autorefs==1.2.0 + # via mkdocstrings + # via mkdocstrings-python +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-include-dir-to-nav==1.2.0 +mkdocs-jupyter==0.25.0 +mkdocs-material==9.5.34 + # via mkdocs-jupyter +mkdocs-material-extensions==1.3.1 + # via mkdocs-material +mkdocs-redirects==1.2.1 +mkdocstrings==0.26.1 + # via mkdocstrings-python +mkdocstrings-python==1.11.1 + # via mkdocstrings monotonic==1.6 # via posthog mpmath==1.3.0 @@ -429,7 +528,16 @@ multidict==6.0.5 mypy-extensions==1.0.0 # via typing-inspect # via unstructured-client +nbclient==0.10.0 + # via nbconvert +nbconvert==7.16.4 + # via mkdocs-jupyter +nbformat==5.10.4 + # via jupytext + # via nbclient + # via nbconvert nest-asyncio==1.6.0 + # via ipykernel # via llama-index-core # via llama-index-legacy networkx==3.2.1 @@ -495,23 +603,35 @@ packaging==24.1 # via deprecation # via faiss-cpu # via huggingface-hub + # via ipykernel + # via jupytext # via langchain-core # via marshmallow # via matplotlib + # via mkdocs + # via nbconvert # via onnxruntime # via pikepdf # via quivr-monorepo # via transformers # via unstructured-client # via unstructured-pytesseract +paginate==0.5.7 + # via mkdocs-material pandas==2.2.2 # via langchain-cohere # via layoutparser # via llama-index-core # via llama-index-legacy # via unstructured +pandocfilters==1.5.1 + # via nbconvert parameterized==0.9.0 # via cohere +parso==0.8.4 + # via jedi +pathspec==0.12.1 + # via mkdocs pdf2docx==0.5.8 # via megaparse pdf2image==1.17.0 @@ -523,6 +643,8 @@ pdfminer-six==20231228 pdfplumber==0.11.4 # via layoutparser # via megaparse +pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' + # via ipython pgvector==0.3.2 # via quivr-api pikepdf==9.1.1 @@ -540,6 +662,10 @@ pillow==10.2.0 # via unstructured-pytesseract pillow-heif==0.18.0 # via unstructured +platformdirs==4.3.2 + # via jupyter-core + # via mkdocs-get-deps + # via mkdocstrings playwright==1.46.0 # via quivr-worker ply==3.11 @@ -554,6 +680,7 @@ prometheus-client==0.20.0 # via flower prompt-toolkit==3.0.47 # via click-repl + # via ipython proto-plus==1.24.0 # via google-api-core # via google-cloud-vision @@ -566,9 +693,14 @@ protobuf==5.27.3 # via onnxruntime # via proto-plus psutil==6.0.0 + # via ipykernel # via unstructured psycopg2-binary==2.9.9 # via quivr-api +ptyprocess==0.7.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' + # via pexpect +pure-eval==0.2.3 + # via stack-data pyasn1==0.6.0 # via pyasn1-modules # via python-jose @@ -577,7 +709,7 @@ pyasn1-modules==0.4.0 # via google-auth pycocotools==2.0.8 # via effdet -pycparser==2.22 ; platform_python_implementation != 'PyPy' +pycparser==2.22 ; platform_python_implementation != 'PyPy' or implementation_name == 'pypy' # via cffi pycryptodome==3.20.0 # via megaparse @@ -604,11 +736,18 @@ pydantic-settings==2.4.0 pyee==11.1.0 # via playwright pygments==2.18.0 + # via ipython + # via mkdocs-jupyter + # via mkdocs-material + # via nbconvert # via rich pyinstrument==4.7.2 # via quivr-api pyjwt==2.9.0 # via msal +pymdown-extensions==10.9 + # via mkdocs-material + # via mkdocstrings pymupdf==1.24.9 # via pdf2docx pymupdfb==1.24.9 @@ -629,6 +768,8 @@ pyreadline3==3.4.1 ; sys_platform == 'win32' python-dateutil==2.9.0.post0 # via botocore # via celery + # via ghp-import + # via jupyter-client # via matplotlib # via pandas # via posthog @@ -660,18 +801,29 @@ python-pptx==1.0.2 pytz==2024.1 # via flower # via pandas -pywin32==306 ; platform_system == 'Windows' +pywin32==306 ; (platform_python_implementation != 'PyPy' and sys_platform == 'win32') or platform_system == 'Windows' + # via jupyter-core # via portalocker pyyaml==6.0.2 # via huggingface-hub + # via jupytext # via langchain # via langchain-community # via langchain-core # via layoutparser # via llama-index-core + # via mkdocs + # via mkdocs-get-deps # via omegaconf + # via pymdown-extensions + # via pyyaml-env-tag # via timm # via transformers +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.2.0 + # via ipykernel + # via jupyter-client rapidfuzz==3.9.6 # via unstructured # via unstructured-inference @@ -684,6 +836,7 @@ referencing==0.35.1 # via jsonschema # via jsonschema-specifications regex==2024.7.24 + # via mkdocs-material # via nltk # via tiktoken # via transformers @@ -698,6 +851,7 @@ requests==2.32.3 # via litellm # via llama-index-core # via llama-index-legacy + # via mkdocs-material # via msal # via posthog # via requests-oauthlib @@ -728,6 +882,8 @@ scipy==1.14.1 sentry-sdk==2.13.0 # via quivr-api six==1.16.0 + # via asttokens + # via bleach # via dropbox # via ecdsa # via fire @@ -752,6 +908,8 @@ sqlalchemy==2.0.32 # via sqlmodel sqlmodel==0.0.21 # via quivr-api +stack-data==0.6.3 + # via ipython starlette==0.38.2 # via fastapi stone==3.3.1 @@ -790,6 +948,8 @@ tiktoken==0.7.0 timm==1.0.8 # via effdet # via unstructured-inference +tinycss2==1.3.0 + # via nbconvert tokenizers==0.19.1 # via anthropic # via cohere @@ -817,6 +977,8 @@ torchvision==0.19.0+cpu ; platform_machine == 'x86_64' # via timm tornado==6.4.1 # via flower + # via ipykernel + # via jupyter-client tqdm==4.66.5 # via huggingface-hub # via iopath @@ -825,6 +987,16 @@ tqdm==4.66.5 # via openai # via transformers # via unstructured +traitlets==5.14.3 + # via comm + # via ipykernel + # via ipython + # via jupyter-client + # via jupyter-core + # via matplotlib-inline + # via nbclient + # via nbconvert + # via nbformat transformers==4.44.1 # via unstructured-inference types-requests==2.31.0.6 @@ -838,6 +1010,7 @@ typing-extensions==4.12.2 # via fastapi # via huggingface-hub # via iopath + # via ipython # via langchain-core # via llama-index-core # via llama-index-legacy @@ -889,8 +1062,13 @@ vine==5.1.0 # via amqp # via celery # via kombu +watchdog==5.0.2 + # via mkdocs wcwidth==0.2.13 # via prompt-toolkit +webencodings==0.5.1 + # via bleach + # via tinycss2 websockets==12.0 # via realtime wrapt==1.16.0