langroid 0.1.257__tar.gz → 0.1.260__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langroid-0.1.257 → langroid-0.1.260}/PKG-INFO +48 -41
- {langroid-0.1.257 → langroid-0.1.260}/README.md +21 -7
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/callbacks/chainlit.py +45 -7
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/task.py +21 -3
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/openai_gpt.py +3 -1
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/qdrantdb.py +1 -1
- {langroid-0.1.257 → langroid-0.1.260}/pyproject.toml +32 -17
- {langroid-0.1.257 → langroid-0.1.260}/LICENSE +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/base.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/batch.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/callbacks/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/chat_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/chat_document.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/helpers.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/junk +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/openai_assistant.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/doc_chat_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_rag/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_tools.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/neo4j/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/neo4j/utils/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/neo4j/utils/system_message.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/relevance_extractor_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/retriever_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/utils/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/utils/system_message.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/utils/tools.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/table_chat_agent.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tool_message.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/extract_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/generator_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/google_search_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/metaphor_search_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/recipient_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/retrieval_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/run_python_code.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent/tools/segment_extract_tool.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/agent_config.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/cachedb/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/cachedb/base.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/cachedb/momento_cachedb.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/cachedb/redis_cachedb.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/base.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/clustering.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/models.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/protoc/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/protoc/embeddings.proto +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/remote_embeds.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/exceptions.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/azure_openai.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/base.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/config.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/openai_assistants.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/prompt_formatter/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/prompt_formatter/base.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/utils.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/mytypes.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/agent_chats.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/code-parsing.md +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/code_parser.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/config.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/document_parser.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/image_text.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/para_sentence_split.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/parse_json.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/parser.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/parser.pyi +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/repo_loader.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/routing.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/search.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/spider.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/table_loader.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/url_loader.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/url_loader_cookies.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/urls.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/utils.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/parsing/web_search.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/prompts/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/prompts/chat-gpt4-system-prompt.md +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/prompts/dialog.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/prompts/prompts_config.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/prompts/templates.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/prompts/transforms.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/algorithms/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/algorithms/graph.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/configuration.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/constants.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/docker.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/globals.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/llms/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/llms/strings.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/logging.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/output/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/output/citations.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/output/printing.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/output/status.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/pandas_utils.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/pydantic_utils.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/system.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/web/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/utils/web/login.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/__init__.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/base.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/chromadb.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/lancedb.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/meilisearch.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/momento.py +0 -0
- {langroid-0.1.257 → langroid-0.1.260}/langroid/vector_store/qdrant_cloud.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: langroid
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.260
|
4
4
|
Summary: Harness LLMs with Multi-Agent Programming
|
5
5
|
License: MIT
|
6
6
|
Author: Prasad Chalasani
|
@@ -10,13 +10,14 @@ Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
11
11
|
Classifier: Programming Language :: Python :: 3.10
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
13
|
+
Provides-Extra: all
|
13
14
|
Provides-Extra: chainlit
|
14
15
|
Provides-Extra: chromadb
|
15
16
|
Provides-Extra: db
|
16
17
|
Provides-Extra: doc-chat
|
17
18
|
Provides-Extra: docx
|
18
|
-
Provides-Extra: embeddings
|
19
19
|
Provides-Extra: hf-embeddings
|
20
|
+
Provides-Extra: hf-transformers
|
20
21
|
Provides-Extra: lancedb
|
21
22
|
Provides-Extra: litellm
|
22
23
|
Provides-Extra: meilisearch
|
@@ -31,11 +32,12 @@ Provides-Extra: scrapy
|
|
31
32
|
Provides-Extra: sql
|
32
33
|
Provides-Extra: transformers
|
33
34
|
Provides-Extra: unstructured
|
35
|
+
Provides-Extra: vecdbs
|
34
36
|
Requires-Dist: aiohttp (>=3.9.1,<4.0.0)
|
35
37
|
Requires-Dist: async-generator (>=1.10,<2.0)
|
36
38
|
Requires-Dist: bs4 (>=0.0.1,<0.0.2)
|
37
|
-
Requires-Dist: chainlit (>=1.0.400,<2.0.0) ; extra == "chainlit"
|
38
|
-
Requires-Dist: chromadb (>=0.4.21,<=0.4.23) ; extra == "chromadb"
|
39
|
+
Requires-Dist: chainlit (>=1.0.400,<2.0.0) ; extra == "all" or extra == "chainlit"
|
40
|
+
Requires-Dist: chromadb (>=0.4.21,<=0.4.23) ; extra == "vecdbs" or extra == "all" or extra == "chromadb"
|
39
41
|
Requires-Dist: colorlog (>=6.7.0,<7.0.0)
|
40
42
|
Requires-Dist: docstring-parser (>=0.15,<0.16)
|
41
43
|
Requires-Dist: duckduckgo-search (>=6.0.0,<7.0.0)
|
@@ -47,47 +49,38 @@ Requires-Dist: google-generativeai (>=0.5.2,<0.6.0)
|
|
47
49
|
Requires-Dist: groq (>=0.5.0,<0.6.0)
|
48
50
|
Requires-Dist: grpcio (>=1.62.1,<2.0.0)
|
49
51
|
Requires-Dist: halo (>=0.0.31,<0.0.32)
|
50
|
-
Requires-Dist: huggingface-hub (>=0.21.2,<0.22.0) ; extra == "
|
52
|
+
Requires-Dist: huggingface-hub (>=0.21.2,<0.22.0) ; extra == "hf-transformers" or extra == "all" or extra == "transformers"
|
51
53
|
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
|
52
|
-
Requires-Dist: lancedb (>=0.6.2,<0.7.0) ; extra == "lancedb"
|
53
|
-
Requires-Dist: litellm (>=1.30.1,<2.0.0) ; extra == "litellm"
|
54
|
+
Requires-Dist: lancedb (>=0.6.2,<0.7.0) ; extra == "vecdbs" or extra == "all" or extra == "lancedb"
|
55
|
+
Requires-Dist: litellm (>=1.30.1,<2.0.0) ; extra == "all" or extra == "litellm"
|
54
56
|
Requires-Dist: lxml (>=4.9.3,<5.0.0)
|
55
57
|
Requires-Dist: meilisearch (>=0.28.3,<0.29.0) ; extra == "meilisearch"
|
56
58
|
Requires-Dist: meilisearch-python-sdk (>=2.2.3,<3.0.0) ; extra == "meilisearch"
|
57
|
-
Requires-Dist: metaphor-python (>=0.1.23,<0.2.0) ; extra == "metaphor"
|
58
|
-
Requires-Dist: mkdocs (>=1.4.2,<2.0.0) ; extra == "mkdocs"
|
59
|
-
Requires-Dist: mkdocs-awesome-pages-plugin (>=2.8.0,<3.0.0) ; extra == "mkdocs"
|
60
|
-
Requires-Dist: mkdocs-gen-files (>=0.4.0,<0.5.0) ; extra == "mkdocs"
|
61
|
-
Requires-Dist: mkdocs-jupyter (>=0.24.1,<0.25.0) ; extra == "mkdocs"
|
62
|
-
Requires-Dist: mkdocs-literate-nav (>=0.6.0,<0.7.0) ; extra == "mkdocs"
|
63
|
-
Requires-Dist: mkdocs-material (>=9.1.5,<10.0.0) ; extra == "mkdocs"
|
64
|
-
Requires-Dist: mkdocs-rss-plugin (>=1.8.0,<2.0.0) ; extra == "mkdocs"
|
65
|
-
Requires-Dist: mkdocs-section-index (>=0.3.5,<0.4.0) ; extra == "mkdocs"
|
66
|
-
Requires-Dist: mkdocstrings[python] (>=0.21.2,<0.22.0) ; extra == "mkdocs"
|
59
|
+
Requires-Dist: metaphor-python (>=0.1.23,<0.2.0) ; extra == "all" or extra == "metaphor"
|
67
60
|
Requires-Dist: momento (>=1.10.2,<2.0.0) ; extra == "momento"
|
68
|
-
Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "neo4j"
|
61
|
+
Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "all" or extra == "neo4j"
|
69
62
|
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
|
70
63
|
Requires-Dist: nltk (>=3.8.1,<4.0.0)
|
71
64
|
Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
|
72
65
|
Requires-Dist: openai (>=1.14.0,<2.0.0)
|
73
66
|
Requires-Dist: pandas (>=2.0.3,<3.0.0)
|
74
|
-
Requires-Dist: pdf2image (>=1.17.0,<2.0.0) ; extra == "doc-chat" or extra == "pdf-parsers"
|
75
|
-
Requires-Dist: pdfplumber (>=0.10.2,<0.11.0) ; extra == "doc-chat" or extra == "pdf-parsers"
|
67
|
+
Requires-Dist: pdf2image (>=1.17.0,<2.0.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
68
|
+
Requires-Dist: pdfplumber (>=0.10.2,<0.11.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
76
69
|
Requires-Dist: prettytable (>=3.8.0,<4.0.0)
|
77
|
-
Requires-Dist: psycopg2 (>=2.9.7,<3.0.0) ; extra == "db" or extra == "postgres" or extra == "sql"
|
78
|
-
Requires-Dist: pyarrow (==15.0.0) ; extra == "lancedb"
|
70
|
+
Requires-Dist: psycopg2 (>=2.9.7,<3.0.0) ; extra == "db" or extra == "all" or extra == "postgres" or extra == "sql"
|
71
|
+
Requires-Dist: pyarrow (==15.0.0) ; extra == "vecdbs" or extra == "all" or extra == "lancedb"
|
79
72
|
Requires-Dist: pydantic (==1.10.13)
|
80
73
|
Requires-Dist: pygithub (>=1.58.1,<2.0.0)
|
81
74
|
Requires-Dist: pygments (>=2.15.1,<3.0.0)
|
82
|
-
Requires-Dist: pymupdf (>=1.23.3,<2.0.0) ; extra == "doc-chat" or extra == "pdf-parsers"
|
83
|
-
Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "db" or extra == "mysql" or extra == "sql"
|
75
|
+
Requires-Dist: pymupdf (>=1.23.3,<2.0.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
76
|
+
Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "db" or extra == "all" or extra == "mysql" or extra == "sql"
|
84
77
|
Requires-Dist: pyparsing (>=3.0.9,<4.0.0)
|
85
|
-
Requires-Dist: pypdf (>=3.12.2,<4.0.0) ; extra == "doc-chat" or extra == "pdf-parsers"
|
86
|
-
Requires-Dist: pytesseract (>=0.3.10,<0.4.0) ; extra == "doc-chat" or extra == "pdf-parsers"
|
87
|
-
Requires-Dist: python-docx (>=1.1.0,<2.0.0) ; extra == "doc-chat" or extra == "docx"
|
78
|
+
Requires-Dist: pypdf (>=3.12.2,<4.0.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
79
|
+
Requires-Dist: pytesseract (>=0.3.10,<0.4.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
80
|
+
Requires-Dist: python-docx (>=1.1.0,<2.0.0) ; extra == "doc-chat" or extra == "all" or extra == "docx"
|
88
81
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
89
82
|
Requires-Dist: python-magic (>=0.4.27,<0.5.0)
|
90
|
-
Requires-Dist: python-socketio (>=5.11.0,<6.0.0) ; extra == "chainlit"
|
83
|
+
Requires-Dist: python-socketio (>=5.11.0,<6.0.0) ; extra == "all" or extra == "chainlit"
|
91
84
|
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
92
85
|
Requires-Dist: qdrant-client (>=1.8.0,<2.0.0)
|
93
86
|
Requires-Dist: rank-bm25 (>=0.2.2,<0.3.0)
|
@@ -96,16 +89,16 @@ Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
96
89
|
Requires-Dist: requests-oauthlib (>=1.3.1,<2.0.0)
|
97
90
|
Requires-Dist: rich (>=13.3.4,<14.0.0)
|
98
91
|
Requires-Dist: scrapy (>=2.11.0,<3.0.0) ; extra == "scrapy"
|
99
|
-
Requires-Dist: sentence-transformers (==2.2.2) ; extra == "
|
100
|
-
Requires-Dist: sqlalchemy (>=2.0.19,<3.0.0) ; extra == "db" or extra == "sql"
|
101
|
-
Requires-Dist: tantivy (>=0.21.0,<0.22.0) ; extra == "lancedb"
|
92
|
+
Requires-Dist: sentence-transformers (==2.2.2) ; extra == "hf-transformers" or extra == "all" or extra == "hf-embeddings"
|
93
|
+
Requires-Dist: sqlalchemy (>=2.0.19,<3.0.0) ; extra == "db" or extra == "all" or extra == "sql"
|
94
|
+
Requires-Dist: tantivy (>=0.21.0,<0.22.0) ; extra == "vecdbs" or extra == "all" or extra == "lancedb"
|
102
95
|
Requires-Dist: thefuzz (>=0.20.0,<0.21.0)
|
103
96
|
Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
|
104
|
-
Requires-Dist: torch (==2.0.0) ; extra == "
|
97
|
+
Requires-Dist: torch (==2.0.0) ; extra == "hf-transformers" or extra == "all" or extra == "hf-embeddings" or extra == "transformers"
|
105
98
|
Requires-Dist: trafilatura (>=1.5.0,<2.0.0)
|
106
|
-
Requires-Dist: transformers (>=4.40.1,<5.0.0) ; extra == "
|
99
|
+
Requires-Dist: transformers (>=4.40.1,<5.0.0) ; extra == "hf-transformers" or extra == "all" or extra == "transformers"
|
107
100
|
Requires-Dist: typer (>=0.9.0,<0.10.0)
|
108
|
-
Requires-Dist: unstructured[docx,pdf,pptx] (>=0.10.16,<0.10.18) ; extra == "doc-chat" or extra == "unstructured"
|
101
|
+
Requires-Dist: unstructured[docx,pdf,pptx] (>=0.10.16,<0.10.18) ; extra == "doc-chat" or extra == "all" or extra == "unstructured"
|
109
102
|
Requires-Dist: wget (>=3.2,<4.0)
|
110
103
|
Description-Content-Type: text/markdown
|
111
104
|
|
@@ -117,6 +110,7 @@ Description-Content-Type: text/markdown
|
|
117
110
|
<div align="center">
|
118
111
|
|
119
112
|
[](https://pypi.org/project/langroid/)
|
113
|
+
[](https://pypi.org/project/langroid/)
|
120
114
|
[](https://github.com/langroid/langroid/actions/workflows/pytest.yml)
|
121
115
|
[](https://codecov.io/gh/langroid/langroid)
|
122
116
|
[](https://github.com/langroid/langroid/actions/workflows/docker-publish.yml)
|
@@ -234,12 +228,22 @@ teacher_task.run()
|
|
234
228
|
<summary> <b>Click to expand</b></summary>
|
235
229
|
|
236
230
|
- **May 2024:**
|
231
|
+
- **Slimmer langroid**: All document-parsers (i.e. pdf, doc, docx) and most
|
232
|
+
vector-databases (except qdrant)
|
233
|
+
are now optional/extra dependencies, which helps reduce build size, script
|
234
|
+
start-up time, and install time. For convenience various grouping of "extras" are
|
235
|
+
provided, e.g. `doc-chat`, `db` (for database-related dependencies). See updated
|
236
|
+
install instructions below and in the docs.
|
237
|
+
- **Few-shot examples** for tools: when defining a [ToolMessage](https://langroid.github.io/langroid/quick-start/chat-agent-tool/#example-find-the-smallest-number-in-a-list), previously you were able to include a classmethod named `examples`,
|
238
|
+
and a random example from this list would be used to generate a 1-shot example
|
239
|
+
for the LLM. This has been improved so you can now supply a list of examples
|
240
|
+
where each example is either a tool instance, or a tuple of (description,
|
241
|
+
tool instance), where the description is a "thought" that leads the LLM to use
|
242
|
+
the tool (see example in the [docs](https://langroid.github.io/langroid/quick-start/chat-agent-tool/#example-find-the-smallest-number-in-a-list)). In some scenarios this can improve LLM tool
|
243
|
+
generation accuracy. Also, now instead of a random example, ALL examples are used to generate few-shot
|
244
|
+
examples.
|
237
245
|
- [Infinite loop detection](https://github.com/langroid/langroid/blob/0ed30eb467b00d5eaf2933b577a4b2cc37de1aa1/langroid/agent/task.py#L1121) for task loops of cycle-length <= 10 (configurable
|
238
|
-
in [`TaskConfig`](https://github.
|
239
|
-
com/langroid/langroid/blob/0ed30eb467b00d5eaf2933b577a4b2cc37de1aa1/langroid/agent
|
240
|
-
/task.py#L61). Only detects _exact_ loops, rather than
|
241
|
-
_approximate_ loops where the entities are saying essentially similar (but not
|
242
|
-
exactly the same) things repeatedly.
|
246
|
+
in [`TaskConfig`](https://langroid.github.io/langroid/reference/agent/task/#langroid.agent.task.TaskConfig). Only detects _exact_ loops, rather than _approximate_ loops where the entities are saying essentially similar (but not exactly the same) things repeatedly.
|
243
247
|
- "@"-addressing: any entity can address any other by name, which can be the name
|
244
248
|
of an agent's responder ("llm", "user", "agent") or a sub-task name. This is a
|
245
249
|
simpler alternative to the `RecipientTool` mechanism, with the tradeoff that
|
@@ -433,7 +437,7 @@ section above)
|
|
433
437
|
a task of an agent can delegate to other sub-tasks: from the point of view of a Task,
|
434
438
|
sub-tasks are simply additional responders, to be used in a round-robin fashion
|
435
439
|
after the agent's own responders.
|
436
|
-
- **Modularity,
|
440
|
+
- **Modularity, Reusability, Loose coupling:** The `Agent` and `Task` abstractions allow users to design
|
437
441
|
Agents with specific skills, wrap them in Tasks, and combine tasks in a flexible way.
|
438
442
|
- **LLM Support**: Langroid supports OpenAI LLMs as well as LLMs from hundreds of
|
439
443
|
providers (local/open or remote/commercial) via proxy libraries and local model servers
|
@@ -489,7 +493,10 @@ For many practical scenarios, you may need additional optional dependencies:
|
|
489
493
|
```bash
|
490
494
|
pip install "langroid[doc-chat,db]"
|
491
495
|
```
|
492
|
-
|
496
|
+
- To simply install _all_ optional dependencies, use the `all` extra (but note that this will result in longer load/startup times and a larger install size):
|
497
|
+
```bash
|
498
|
+
pip install "langroid[all]"
|
499
|
+
```
|
493
500
|
<details>
|
494
501
|
<summary><b>Optional Installs for using SQL Chat with a PostgreSQL DB </b></summary>
|
495
502
|
|
@@ -6,6 +6,7 @@
|
|
6
6
|
<div align="center">
|
7
7
|
|
8
8
|
[](https://pypi.org/project/langroid/)
|
9
|
+
[](https://pypi.org/project/langroid/)
|
9
10
|
[](https://github.com/langroid/langroid/actions/workflows/pytest.yml)
|
10
11
|
[](https://codecov.io/gh/langroid/langroid)
|
11
12
|
[](https://github.com/langroid/langroid/actions/workflows/docker-publish.yml)
|
@@ -123,12 +124,22 @@ teacher_task.run()
|
|
123
124
|
<summary> <b>Click to expand</b></summary>
|
124
125
|
|
125
126
|
- **May 2024:**
|
127
|
+
- **Slimmer langroid**: All document-parsers (i.e. pdf, doc, docx) and most
|
128
|
+
vector-databases (except qdrant)
|
129
|
+
are now optional/extra dependencies, which helps reduce build size, script
|
130
|
+
start-up time, and install time. For convenience various grouping of "extras" are
|
131
|
+
provided, e.g. `doc-chat`, `db` (for database-related dependencies). See updated
|
132
|
+
install instructions below and in the docs.
|
133
|
+
- **Few-shot examples** for tools: when defining a [ToolMessage](https://langroid.github.io/langroid/quick-start/chat-agent-tool/#example-find-the-smallest-number-in-a-list), previously you were able to include a classmethod named `examples`,
|
134
|
+
and a random example from this list would be used to generate a 1-shot example
|
135
|
+
for the LLM. This has been improved so you can now supply a list of examples
|
136
|
+
where each example is either a tool instance, or a tuple of (description,
|
137
|
+
tool instance), where the description is a "thought" that leads the LLM to use
|
138
|
+
the tool (see example in the [docs](https://langroid.github.io/langroid/quick-start/chat-agent-tool/#example-find-the-smallest-number-in-a-list)). In some scenarios this can improve LLM tool
|
139
|
+
generation accuracy. Also, now instead of a random example, ALL examples are used to generate few-shot
|
140
|
+
examples.
|
126
141
|
- [Infinite loop detection](https://github.com/langroid/langroid/blob/0ed30eb467b00d5eaf2933b577a4b2cc37de1aa1/langroid/agent/task.py#L1121) for task loops of cycle-length <= 10 (configurable
|
127
|
-
in [`TaskConfig`](https://github.
|
128
|
-
com/langroid/langroid/blob/0ed30eb467b00d5eaf2933b577a4b2cc37de1aa1/langroid/agent
|
129
|
-
/task.py#L61). Only detects _exact_ loops, rather than
|
130
|
-
_approximate_ loops where the entities are saying essentially similar (but not
|
131
|
-
exactly the same) things repeatedly.
|
142
|
+
in [`TaskConfig`](https://langroid.github.io/langroid/reference/agent/task/#langroid.agent.task.TaskConfig). Only detects _exact_ loops, rather than _approximate_ loops where the entities are saying essentially similar (but not exactly the same) things repeatedly.
|
132
143
|
- "@"-addressing: any entity can address any other by name, which can be the name
|
133
144
|
of an agent's responder ("llm", "user", "agent") or a sub-task name. This is a
|
134
145
|
simpler alternative to the `RecipientTool` mechanism, with the tradeoff that
|
@@ -322,7 +333,7 @@ section above)
|
|
322
333
|
a task of an agent can delegate to other sub-tasks: from the point of view of a Task,
|
323
334
|
sub-tasks are simply additional responders, to be used in a round-robin fashion
|
324
335
|
after the agent's own responders.
|
325
|
-
- **Modularity,
|
336
|
+
- **Modularity, Reusability, Loose coupling:** The `Agent` and `Task` abstractions allow users to design
|
326
337
|
Agents with specific skills, wrap them in Tasks, and combine tasks in a flexible way.
|
327
338
|
- **LLM Support**: Langroid supports OpenAI LLMs as well as LLMs from hundreds of
|
328
339
|
providers (local/open or remote/commercial) via proxy libraries and local model servers
|
@@ -378,7 +389,10 @@ For many practical scenarios, you may need additional optional dependencies:
|
|
378
389
|
```bash
|
379
390
|
pip install "langroid[doc-chat,db]"
|
380
391
|
```
|
381
|
-
|
392
|
+
- To simply install _all_ optional dependencies, use the `all` extra (but note that this will result in longer load/startup times and a larger install size):
|
393
|
+
```bash
|
394
|
+
pip install "langroid[all]"
|
395
|
+
```
|
382
396
|
<details>
|
383
397
|
<summary><b>Optional Installs for using SQL Chat with a PostgreSQL DB </b></summary>
|
384
398
|
|
@@ -214,6 +214,7 @@ def wrap_text_preserving_structure(text: str, width: int = 90) -> str:
|
|
214
214
|
|
215
215
|
class ChainlitCallbackConfig(BaseSettings):
|
216
216
|
user_has_agent_name: bool = True # show agent name in front of "YOU" ?
|
217
|
+
show_subtask_response: bool = True # show sub-task response as a step?
|
217
218
|
|
218
219
|
|
219
220
|
class ChainlitAgentCallbacks:
|
@@ -277,12 +278,6 @@ class ChainlitAgentCallbacks:
|
|
277
278
|
|
278
279
|
def start_llm_stream(self) -> Callable[[str], None]:
|
279
280
|
"""Returns a streaming fn that can be passed to the LLM class"""
|
280
|
-
logger.info(
|
281
|
-
f"""
|
282
|
-
Starting LLM stream for {self.agent.config.name}
|
283
|
-
under parent {self._get_parent_id()}
|
284
|
-
"""
|
285
|
-
)
|
286
281
|
self.stream = cl.Step(
|
287
282
|
id=self.curr_step.id if self.curr_step is not None else None,
|
288
283
|
name=self._entity_name("llm"),
|
@@ -291,6 +286,13 @@ class ChainlitAgentCallbacks:
|
|
291
286
|
)
|
292
287
|
self.last_step = self.stream
|
293
288
|
self.curr_step = None
|
289
|
+
logger.info(
|
290
|
+
f"""
|
291
|
+
Starting LLM stream for {self.agent.config.name}
|
292
|
+
id = {self.stream.id}
|
293
|
+
under parent {self._get_parent_id()}
|
294
|
+
"""
|
295
|
+
)
|
294
296
|
run_sync(self.stream.send()) # type: ignore
|
295
297
|
|
296
298
|
def stream_token(t: str) -> None:
|
@@ -323,6 +325,13 @@ class ChainlitAgentCallbacks:
|
|
323
325
|
language="json" if is_tool else None,
|
324
326
|
)
|
325
327
|
step.output = textwrap.dedent(content) or NO_ANSWER
|
328
|
+
logger.info(
|
329
|
+
f"""
|
330
|
+
Finish STREAM LLM response for {self.agent.config.name}
|
331
|
+
id = {step.id}
|
332
|
+
under parent {self._get_parent_id()}
|
333
|
+
"""
|
334
|
+
)
|
326
335
|
run_sync(step.update()) # type: ignore
|
327
336
|
|
328
337
|
def show_llm_response(
|
@@ -343,6 +352,13 @@ class ChainlitAgentCallbacks:
|
|
343
352
|
self.last_step = step
|
344
353
|
self.curr_step = None
|
345
354
|
step.output = textwrap.dedent(content) or NO_ANSWER
|
355
|
+
logger.info(
|
356
|
+
f"""
|
357
|
+
Showing NON-STREAM LLM response for {self.agent.config.name}
|
358
|
+
id = {step.id}
|
359
|
+
under parent {self._get_parent_id()}
|
360
|
+
"""
|
361
|
+
)
|
346
362
|
run_sync(step.send()) # type: ignore
|
347
363
|
|
348
364
|
def show_error_message(self, error: str) -> None:
|
@@ -374,6 +390,13 @@ class ChainlitAgentCallbacks:
|
|
374
390
|
self.last_step = step
|
375
391
|
self.curr_step = None
|
376
392
|
step.output = content
|
393
|
+
logger.info(
|
394
|
+
f"""
|
395
|
+
Showing AGENT response for {self.agent.config.name}
|
396
|
+
id = {step.id}
|
397
|
+
under parent {self._get_parent_id()}
|
398
|
+
"""
|
399
|
+
)
|
377
400
|
run_sync(step.send()) # type: ignore
|
378
401
|
|
379
402
|
def show_start_response(self, entity: str) -> None:
|
@@ -390,6 +413,13 @@ class ChainlitAgentCallbacks:
|
|
390
413
|
step.output = ""
|
391
414
|
self.last_step = step
|
392
415
|
self.curr_step = step
|
416
|
+
logger.info(
|
417
|
+
f"""
|
418
|
+
Showing START response for {self.agent.config.name} ({entity})
|
419
|
+
id = {step.id}
|
420
|
+
under parent {self._get_parent_id()}
|
421
|
+
"""
|
422
|
+
)
|
393
423
|
run_sync(step.send()) # type: ignore
|
394
424
|
|
395
425
|
def _entity_name(
|
@@ -459,6 +489,13 @@ class ChainlitAgentCallbacks:
|
|
459
489
|
parent_id=self._get_parent_id(),
|
460
490
|
)
|
461
491
|
step.output = message
|
492
|
+
logger.info(
|
493
|
+
f"""
|
494
|
+
Showing USER response for {self.agent.config.name}
|
495
|
+
id = {step.id}
|
496
|
+
under parent {self._get_parent_id()}
|
497
|
+
"""
|
498
|
+
)
|
462
499
|
run_sync(step.send())
|
463
500
|
|
464
501
|
def show_first_user_message(self, msg: cl.Message):
|
@@ -575,7 +612,8 @@ class ChainlitTaskCallbacks(ChainlitAgentCallbacks):
|
|
575
612
|
super().__init__(task.agent, msg, config)
|
576
613
|
self._inject_callbacks(task)
|
577
614
|
self.task = task
|
578
|
-
|
615
|
+
if config.show_subtask_response:
|
616
|
+
self.task.callbacks.show_subtask_response = self.show_subtask_response
|
579
617
|
|
580
618
|
@classmethod
|
581
619
|
def _inject_callbacks(
|
@@ -156,6 +156,11 @@ class Task:
|
|
156
156
|
interactive (bool): if true, wait for human input after each non-human
|
157
157
|
response (prevents infinite loop of non-human responses).
|
158
158
|
Default is true. If false, then `default_human_response` is set to ""
|
159
|
+
Note: When interactive = False, the one exception is when the user
|
160
|
+
is explicitly addressed, via "@user" or using RecipientTool, in which
|
161
|
+
case the system will wait for a user response. In other words, use
|
162
|
+
`interactive=False` when you want a "largely non-interactive"
|
163
|
+
run, with the exception of explicit user addressing.
|
159
164
|
only_user_quits_root (bool): if true, only user can quit the root task.
|
160
165
|
[This param is ignored & deprecated; Keeping for backward compatibility.
|
161
166
|
Instead of this, setting `interactive` suffices]
|
@@ -912,7 +917,11 @@ class Task:
|
|
912
917
|
parent (ChatDocument|None): parent message of the current message
|
913
918
|
"""
|
914
919
|
self.n_stalled_steps += 1
|
915
|
-
|
920
|
+
user_dummy_response = self.pending_sender != Entity.USER and self.interactive
|
921
|
+
if (not self.is_pass_thru) and (
|
922
|
+
not self.task_progress or self.allow_null_result or user_dummy_response
|
923
|
+
):
|
924
|
+
|
916
925
|
# There has been no progress at all in this task, so we
|
917
926
|
# update the pending_message to a dummy NO_ANSWER msg
|
918
927
|
# from the entity 'opposite' to the current pending_sender,
|
@@ -1375,9 +1384,18 @@ class Task:
|
|
1375
1384
|
)
|
1376
1385
|
|
1377
1386
|
def _can_respond(self, e: Responder) -> bool:
|
1378
|
-
|
1379
|
-
#
|
1387
|
+
user_can_respond = self.interactive or (
|
1388
|
+
# regardless of self.interactive, if a msg is explicitly addressed to
|
1389
|
+
# user, then wait for user response
|
1390
|
+
self.pending_message is not None
|
1391
|
+
and self.pending_message.metadata.recipient == Entity.USER
|
1392
|
+
)
|
1393
|
+
|
1394
|
+
if self.pending_sender == e or (e == Entity.USER and not user_can_respond):
|
1395
|
+
# sender is same as e (an entity cannot respond to its own msg),
|
1396
|
+
# or user cannot respond
|
1380
1397
|
return False
|
1398
|
+
|
1381
1399
|
if self.pending_message is None:
|
1382
1400
|
return True
|
1383
1401
|
if self._recipient_mismatch(e):
|
@@ -421,7 +421,9 @@ class OpenAIGPT(LanguageModel):
|
|
421
421
|
self.api_base = "http://" + self.api_base
|
422
422
|
elif self.config.chat_model.startswith("ollama/"):
|
423
423
|
self.config.ollama = True
|
424
|
-
|
424
|
+
|
425
|
+
# use api_base from config if set, else fall back on OLLAMA_BASE_URL
|
426
|
+
self.api_base = self.config.api_base or OLLAMA_BASE_URL
|
425
427
|
self.api_key = OLLAMA_API_KEY
|
426
428
|
self.config.chat_model = self.config.chat_model.replace("ollama/", "")
|
427
429
|
else:
|
@@ -68,7 +68,7 @@ class QdrantDBConfig(VectorStoreConfig):
|
|
68
68
|
embedding: EmbeddingModelsConfig = OpenAIEmbeddingsConfig()
|
69
69
|
distance: str = Distance.COSINE
|
70
70
|
use_sparse_embeddings: bool = False
|
71
|
-
sparse_embedding_model: str = ""
|
71
|
+
sparse_embedding_model: str = "naver/splade-v3-distilbert"
|
72
72
|
sparse_limit: int = 3
|
73
73
|
|
74
74
|
|
@@ -1,25 +1,18 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "langroid"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.260"
|
4
4
|
description = "Harness LLMs with Multi-Agent Programming"
|
5
5
|
authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
|
6
6
|
readme = "README.md"
|
7
7
|
license = "MIT"
|
8
|
+
include = ["pyproject.toml"]
|
9
|
+
|
8
10
|
|
9
11
|
# =============== MAIN DEPS ==============
|
10
12
|
[tool.poetry.dependencies]
|
11
13
|
python = ">=3.10,<3.12"
|
12
14
|
|
13
|
-
# OPTIONALS
|
14
|
-
mkdocs = {version="^1.4.2", optional=true}
|
15
|
-
mkdocs-material = {version="^9.1.5", optional=true}
|
16
|
-
mkdocstrings = {extras = ["python"], version = "^0.21.2", optional=true}
|
17
|
-
mkdocs-awesome-pages-plugin = {version="^2.8.0", optional=true}
|
18
|
-
mkdocs-rss-plugin = {version="^1.8.0", optional=true}
|
19
|
-
mkdocs-gen-files = {version="^0.4.0", optional=true}
|
20
|
-
mkdocs-literate-nav = {version="^0.6.0", optional=true}
|
21
|
-
mkdocs-section-index = {version="^0.3.5", optional=true}
|
22
|
-
mkdocs-jupyter = {version="^0.24.1", optional=true}
|
15
|
+
# =========== OPTIONALS ==============================
|
23
16
|
chromadb = {version=">=0.4.21, <=0.4.23", optional=true}
|
24
17
|
momento = {version="^1.10.2", optional=true}
|
25
18
|
unstructured = {extras = ["docx", "pptx", "pdf"], version = ">=0.10.16,<0.10.18", optional=true}
|
@@ -96,9 +89,6 @@ async-generator = "^1.10"
|
|
96
89
|
|
97
90
|
python-magic = "^0.4.27"
|
98
91
|
|
99
|
-
|
100
|
-
# ================= EXTRAS =================
|
101
|
-
|
102
92
|
[tool.poetry.extras]
|
103
93
|
# install these using, e.g.,
|
104
94
|
# `poetry install -E [...]` where [...] is one of the extras below
|
@@ -110,8 +100,18 @@ doc-chat = [
|
|
110
100
|
"pymupdf", "pdf2image", "pytesseract"
|
111
101
|
]
|
112
102
|
db = ["postgres", "mysql", "sqlalchemy", "psycopg2", "pymysql"]
|
113
|
-
|
114
|
-
|
103
|
+
hf-transformers = ["sentence-transformers", "torch", "transformers", "huggingface-hub"]
|
104
|
+
vecdbs = ["lancedb", "tantivy", "pyarrow", "chromadb"]
|
105
|
+
all = [
|
106
|
+
"unstructured", "python-docx", "pdfplumber", "pypdf",
|
107
|
+
"pymupdf", "pdf2image", "pytesseract",
|
108
|
+
"postgres", "mysql", "sqlalchemy", "psycopg2", "pymysql",
|
109
|
+
"sentence-transformers", "torch", "transformers", "huggingface-hub",
|
110
|
+
"lancedb", "tantivy", "pyarrow", "chromadb",
|
111
|
+
"metaphor-python", "neo4j",
|
112
|
+
"litellm",
|
113
|
+
"chainlit", "python-socketio",
|
114
|
+
]
|
115
115
|
# more granular groupings
|
116
116
|
lancedb = ["lancedb", "tantivy", "pyarrow"]
|
117
117
|
pdf-parsers = ["pdfplumber", "pypdf", "pymupdf", "pdf2image", "pytesseract"]
|
@@ -156,9 +156,24 @@ pytest-redis = "^3.0.2"
|
|
156
156
|
pytest-asyncio = "^0.21.1"
|
157
157
|
pytest-postgresql = "^5.0.0"
|
158
158
|
pytest-mysql = "^2.4.2"
|
159
|
+
coverage = "^7.2.5"
|
160
|
+
|
161
|
+
[tool.poetry.group.docs]
|
162
|
+
optional = true
|
163
|
+
|
164
|
+
[tool.poetry.group.docs.dependencies]
|
165
|
+
|
166
|
+
mkdocs = "^1.4.2"
|
167
|
+
mkdocs-material = "^9.1.5"
|
168
|
+
mkdocstrings = {extras = ["python"], version = "^0.21.2"}
|
169
|
+
mkdocs-awesome-pages-plugin = "^2.8.0"
|
170
|
+
mkdocs-rss-plugin = "^1.8.0"
|
171
|
+
mkdocs-gen-files = "^0.4.0"
|
172
|
+
mkdocs-literate-nav = "^0.6.0"
|
173
|
+
mkdocs-section-index = "^0.3.5"
|
174
|
+
mkdocs-jupyter = "^0.24.1"
|
159
175
|
|
160
176
|
|
161
|
-
coverage = "^7.2.5"
|
162
177
|
|
163
178
|
# ========================================
|
164
179
|
[build-system]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/lance_rag/query_planner_agent.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langroid-0.1.257 → langroid-0.1.260}/langroid/agent/special/sql/utils/description_extractors.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langroid-0.1.257 → langroid-0.1.260}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/prompt_formatter/hf_formatter.py
RENAMED
File without changes
|
{langroid-0.1.257 → langroid-0.1.260}/langroid/language_models/prompt_formatter/llama2_formatter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|