langroid 0.36.0__tar.gz → 0.37.0__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.
Files changed (130) hide show
  1. {langroid-0.36.0 → langroid-0.37.0}/PKG-INFO +33 -16
  2. {langroid-0.36.0 → langroid-0.37.0}/README.md +13 -5
  3. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/doc_chat_agent.py +14 -10
  4. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/models.py +2 -2
  5. {langroid-0.36.0 → langroid-0.37.0}/langroid/exceptions.py +16 -4
  6. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/code_parser.py +1 -1
  7. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/document_parser.py +167 -64
  8. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/parser.py +11 -7
  9. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/utils.py +2 -2
  10. langroid-0.37.0/langroid/utils/output/citations.py +61 -0
  11. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/base.py +1 -1
  12. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/chromadb.py +12 -1
  13. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/qdrantdb.py +1 -1
  14. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/weaviatedb.py +5 -5
  15. {langroid-0.36.0 → langroid-0.37.0}/pyproject.toml +24 -11
  16. langroid-0.36.0/langroid/utils/output/citations.py +0 -41
  17. {langroid-0.36.0 → langroid-0.37.0}/.gitignore +0 -0
  18. {langroid-0.36.0 → langroid-0.37.0}/LICENSE +0 -0
  19. {langroid-0.36.0 → langroid-0.37.0}/langroid/__init__.py +0 -0
  20. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/__init__.py +0 -0
  21. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/base.py +0 -0
  22. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/batch.py +0 -0
  23. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/callbacks/__init__.py +0 -0
  24. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/callbacks/chainlit.py +0 -0
  25. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/chat_agent.py +0 -0
  26. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/chat_document.py +0 -0
  27. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/openai_assistant.py +0 -0
  28. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/__init__.py +0 -0
  29. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/arangodb/__init__.py +0 -0
  30. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  31. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/arangodb/system_messages.py +0 -0
  32. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/arangodb/tools.py +0 -0
  33. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/arangodb/utils.py +0 -0
  34. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  35. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/lance_rag/__init__.py +0 -0
  36. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  37. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  38. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  39. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/lance_tools.py +0 -0
  40. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/neo4j/__init__.py +0 -0
  41. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  42. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  43. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/neo4j/system_messages.py +0 -0
  44. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/neo4j/tools.py +0 -0
  45. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  46. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/retriever_agent.py +0 -0
  47. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/__init__.py +0 -0
  48. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  49. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/utils/__init__.py +0 -0
  50. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  51. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  52. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/utils/system_message.py +0 -0
  53. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/sql/utils/tools.py +0 -0
  54. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/special/table_chat_agent.py +0 -0
  55. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/task.py +0 -0
  56. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tool_message.py +0 -0
  57. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/__init__.py +0 -0
  58. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  59. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/file_tools.py +0 -0
  60. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/google_search_tool.py +0 -0
  61. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  62. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/orchestration.py +0 -0
  63. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/recipient_tool.py +0 -0
  64. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/retrieval_tool.py +0 -0
  65. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/rewind_tool.py +0 -0
  66. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/tools/segment_extract_tool.py +0 -0
  67. {langroid-0.36.0 → langroid-0.37.0}/langroid/agent/xml_tool_message.py +0 -0
  68. {langroid-0.36.0 → langroid-0.37.0}/langroid/cachedb/__init__.py +0 -0
  69. {langroid-0.36.0 → langroid-0.37.0}/langroid/cachedb/base.py +0 -0
  70. {langroid-0.36.0 → langroid-0.37.0}/langroid/cachedb/momento_cachedb.py +0 -0
  71. {langroid-0.36.0 → langroid-0.37.0}/langroid/cachedb/redis_cachedb.py +0 -0
  72. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/__init__.py +0 -0
  73. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/base.py +0 -0
  74. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/protoc/__init__.py +0 -0
  75. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  76. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  77. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  78. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  79. {langroid-0.36.0 → langroid-0.37.0}/langroid/embedding_models/remote_embeds.py +0 -0
  80. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/__init__.py +0 -0
  81. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/azure_openai.py +0 -0
  82. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/base.py +0 -0
  83. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/config.py +0 -0
  84. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/mock_lm.py +0 -0
  85. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/openai_gpt.py +0 -0
  86. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  87. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/prompt_formatter/base.py +0 -0
  88. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  89. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  90. {langroid-0.36.0 → langroid-0.37.0}/langroid/language_models/utils.py +0 -0
  91. {langroid-0.36.0 → langroid-0.37.0}/langroid/mytypes.py +0 -0
  92. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/__init__.py +0 -0
  93. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/agent_chats.py +0 -0
  94. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/para_sentence_split.py +0 -0
  95. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/parse_json.py +0 -0
  96. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/repo_loader.py +0 -0
  97. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/routing.py +0 -0
  98. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/search.py +0 -0
  99. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/spider.py +0 -0
  100. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/table_loader.py +0 -0
  101. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/url_loader.py +0 -0
  102. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/urls.py +0 -0
  103. {langroid-0.36.0 → langroid-0.37.0}/langroid/parsing/web_search.py +0 -0
  104. {langroid-0.36.0 → langroid-0.37.0}/langroid/prompts/__init__.py +0 -0
  105. {langroid-0.36.0 → langroid-0.37.0}/langroid/prompts/dialog.py +0 -0
  106. {langroid-0.36.0 → langroid-0.37.0}/langroid/prompts/prompts_config.py +0 -0
  107. {langroid-0.36.0 → langroid-0.37.0}/langroid/prompts/templates.py +0 -0
  108. {langroid-0.36.0 → langroid-0.37.0}/langroid/py.typed +0 -0
  109. {langroid-0.36.0 → langroid-0.37.0}/langroid/pydantic_v1/__init__.py +0 -0
  110. {langroid-0.36.0 → langroid-0.37.0}/langroid/pydantic_v1/main.py +0 -0
  111. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/__init__.py +0 -0
  112. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/algorithms/__init__.py +0 -0
  113. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/algorithms/graph.py +0 -0
  114. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/configuration.py +0 -0
  115. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/constants.py +0 -0
  116. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/git_utils.py +0 -0
  117. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/globals.py +0 -0
  118. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/logging.py +0 -0
  119. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/object_registry.py +0 -0
  120. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/output/__init__.py +0 -0
  121. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/output/printing.py +0 -0
  122. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/output/status.py +0 -0
  123. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/pandas_utils.py +0 -0
  124. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/pydantic_utils.py +0 -0
  125. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/system.py +0 -0
  126. {langroid-0.36.0 → langroid-0.37.0}/langroid/utils/types.py +0 -0
  127. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/__init__.py +0 -0
  128. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/lancedb.py +0 -0
  129. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/meilisearch.py +0 -0
  130. {langroid-0.36.0 → langroid-0.37.0}/langroid/vector_store/momento.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.36.0
3
+ Version: 0.37.0
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -12,6 +12,7 @@ Requires-Dist: async-generator<2.0,>=1.10
12
12
  Requires-Dist: bs4<1.0.0,>=0.0.1
13
13
  Requires-Dist: cerebras-cloud-sdk<2.0.0,>=1.1.0
14
14
  Requires-Dist: colorlog<7.0.0,>=6.7.0
15
+ Requires-Dist: docling<3.0.0,>=2.16.0
15
16
  Requires-Dist: docstring-parser<1.0,>=0.16
16
17
  Requires-Dist: duckduckgo-search<7.0.0,>=6.0.0
17
18
  Requires-Dist: faker<19.0.0,>=18.9.0
@@ -32,9 +33,10 @@ Requires-Dist: onnxruntime<2.0.0,>=1.16.1
32
33
  Requires-Dist: openai<2.0.0,>=1.45.0
33
34
  Requires-Dist: pandas<3.0.0,>=2.0.3
34
35
  Requires-Dist: prettytable<4.0.0,>=3.8.0
35
- Requires-Dist: pydantic<2.10.2,>=1
36
+ Requires-Dist: pydantic<3.0.0,>=1
36
37
  Requires-Dist: pygithub<2.0.0,>=1.58.1
37
38
  Requires-Dist: pygments<3.0.0,>=2.15.1
39
+ Requires-Dist: pymupdf4llm<0.1.0,>=0.0.17
38
40
  Requires-Dist: pyparsing<4.0.0,>=3.0.9
39
41
  Requires-Dist: pytest-rerunfailures<16.0,>=15.0
40
42
  Requires-Dist: python-dotenv<2.0.0,>=1.0.0
@@ -55,14 +57,15 @@ Provides-Extra: all
55
57
  Requires-Dist: arango-datasets<2.0.0,>=1.2.2; extra == 'all'
56
58
  Requires-Dist: chainlit<3.0.0,>=2.0.1; extra == 'all'
57
59
  Requires-Dist: chromadb<=0.4.23,>=0.4.21; extra == 'all'
60
+ Requires-Dist: docling<3.0.0,>=2.16.0; extra == 'all'
58
61
  Requires-Dist: fastembed<0.4.0,>=0.3.1; extra == 'all'
59
- Requires-Dist: huggingface-hub<0.22.0,>=0.21.2; extra == 'all'
62
+ Requires-Dist: huggingface-hub<1.0.0,>=0.21.2; extra == 'all'
60
63
  Requires-Dist: litellm<2.0.0,>=1.30.1; extra == 'all'
61
64
  Requires-Dist: metaphor-python<0.2.0,>=0.1.23; extra == 'all'
62
65
  Requires-Dist: neo4j<6.0.0,>=5.14.1; extra == 'all'
63
66
  Requires-Dist: pdf2image<2.0.0,>=1.17.0; extra == 'all'
64
- Requires-Dist: pdfplumber<0.11.0,>=0.10.2; extra == 'all'
65
67
  Requires-Dist: psycopg2<3.0.0,>=2.9.7; extra == 'all'
68
+ Requires-Dist: pymupdf4llm<0.1.0,>=0.0.17; extra == 'all'
66
69
  Requires-Dist: pymupdf<2.0.0,>=1.23.3; extra == 'all'
67
70
  Requires-Dist: pymysql<2.0.0,>=1.1.0; extra == 'all'
68
71
  Requires-Dist: pypdf>=5.1.0; extra == 'all'
@@ -74,7 +77,7 @@ Requires-Dist: sentence-transformers<3.0.0,>=2.2.2; extra == 'all'
74
77
  Requires-Dist: sqlalchemy<3.0.0,>=2.0.19; extra == 'all'
75
78
  Requires-Dist: torch<3.0.0,>=2.0.0; extra == 'all'
76
79
  Requires-Dist: transformers<5.0.0,>=4.40.1; extra == 'all'
77
- Requires-Dist: unstructured[docx,pdf,pptx]<0.10.18,>=0.10.16; extra == 'all'
80
+ Requires-Dist: unstructured[docx,pdf,pptx]<1.0.0,>=0.16.15; extra == 'all'
78
81
  Requires-Dist: weaviate-client>=4.9.6; extra == 'all'
79
82
  Provides-Extra: arango
80
83
  Requires-Dist: arango-datasets<2.0.0,>=1.2.2; extra == 'arango'
@@ -89,13 +92,16 @@ Requires-Dist: psycopg2<3.0.0,>=2.9.7; extra == 'db'
89
92
  Requires-Dist: pymysql<2.0.0,>=1.1.0; extra == 'db'
90
93
  Requires-Dist: sqlalchemy<3.0.0,>=2.0.19; extra == 'db'
91
94
  Provides-Extra: doc-chat
95
+ Requires-Dist: docling<3.0.0,>=2.16.0; extra == 'doc-chat'
92
96
  Requires-Dist: pdf2image<2.0.0,>=1.17.0; extra == 'doc-chat'
93
- Requires-Dist: pdfplumber<0.11.0,>=0.10.2; extra == 'doc-chat'
97
+ Requires-Dist: pymupdf4llm<0.1.0,>=0.0.17; extra == 'doc-chat'
94
98
  Requires-Dist: pymupdf<2.0.0,>=1.23.3; extra == 'doc-chat'
95
99
  Requires-Dist: pypdf>=5.1.0; extra == 'doc-chat'
96
100
  Requires-Dist: pytesseract<0.4.0,>=0.3.10; extra == 'doc-chat'
97
101
  Requires-Dist: python-docx<2.0.0,>=1.1.0; extra == 'doc-chat'
98
- Requires-Dist: unstructured[docx,pdf,pptx]<0.10.18,>=0.10.16; extra == 'doc-chat'
102
+ Requires-Dist: unstructured[docx,pdf,pptx]<1.0.0,>=0.16.15; extra == 'doc-chat'
103
+ Provides-Extra: docling
104
+ Requires-Dist: docling<3.0.0,>=2.16.0; extra == 'docling'
99
105
  Provides-Extra: docx
100
106
  Requires-Dist: python-docx<2.0.0,>=1.1.0; extra == 'docx'
101
107
  Provides-Extra: fastembed
@@ -104,7 +110,7 @@ Provides-Extra: hf-embeddings
104
110
  Requires-Dist: sentence-transformers<3.0.0,>=2.2.2; extra == 'hf-embeddings'
105
111
  Requires-Dist: torch<3.0.0,>=2.0.0; extra == 'hf-embeddings'
106
112
  Provides-Extra: hf-transformers
107
- Requires-Dist: huggingface-hub<0.22.0,>=0.21.2; extra == 'hf-transformers'
113
+ Requires-Dist: huggingface-hub<1.0.0,>=0.21.2; extra == 'hf-transformers'
108
114
  Requires-Dist: sentence-transformers<3.0.0,>=2.2.2; extra == 'hf-transformers'
109
115
  Requires-Dist: torch<3.0.0,>=2.0.0; extra == 'hf-transformers'
110
116
  Requires-Dist: transformers<5.0.0,>=4.40.1; extra == 'hf-transformers'
@@ -125,13 +131,16 @@ Requires-Dist: pymysql<2.0.0,>=1.1.0; extra == 'mysql'
125
131
  Provides-Extra: neo4j
126
132
  Requires-Dist: neo4j<6.0.0,>=5.14.1; extra == 'neo4j'
127
133
  Provides-Extra: pdf-parsers
134
+ Requires-Dist: docling<3.0.0,>=2.16.0; extra == 'pdf-parsers'
128
135
  Requires-Dist: pdf2image<2.0.0,>=1.17.0; extra == 'pdf-parsers'
129
- Requires-Dist: pdfplumber<0.11.0,>=0.10.2; extra == 'pdf-parsers'
136
+ Requires-Dist: pymupdf4llm<0.1.0,>=0.0.17; extra == 'pdf-parsers'
130
137
  Requires-Dist: pymupdf<2.0.0,>=1.23.3; extra == 'pdf-parsers'
131
138
  Requires-Dist: pypdf>=5.1.0; extra == 'pdf-parsers'
132
139
  Requires-Dist: pytesseract<0.4.0,>=0.3.10; extra == 'pdf-parsers'
133
140
  Provides-Extra: postgres
134
141
  Requires-Dist: psycopg2<3.0.0,>=2.9.7; extra == 'postgres'
142
+ Provides-Extra: pymupdf4llm
143
+ Requires-Dist: pymupdf4llm<0.1.0,>=0.0.17; extra == 'pymupdf4llm'
135
144
  Provides-Extra: scrapy
136
145
  Requires-Dist: scrapy<3.0.0,>=2.11.0; extra == 'scrapy'
137
146
  Provides-Extra: sql
@@ -139,11 +148,11 @@ Requires-Dist: psycopg2<3.0.0,>=2.9.7; extra == 'sql'
139
148
  Requires-Dist: pymysql<2.0.0,>=1.1.0; extra == 'sql'
140
149
  Requires-Dist: sqlalchemy<3.0.0,>=2.0.19; extra == 'sql'
141
150
  Provides-Extra: transformers
142
- Requires-Dist: huggingface-hub<0.22.0,>=0.21.2; extra == 'transformers'
151
+ Requires-Dist: huggingface-hub<1.0.0,>=0.21.2; extra == 'transformers'
143
152
  Requires-Dist: torch<3.0.0,>=2.0.0; extra == 'transformers'
144
153
  Requires-Dist: transformers<5.0.0,>=4.40.1; extra == 'transformers'
145
154
  Provides-Extra: unstructured
146
- Requires-Dist: unstructured[docx,pdf,pptx]<0.10.18,>=0.10.16; extra == 'unstructured'
155
+ Requires-Dist: unstructured[docx,pdf,pptx]<1.0.0,>=0.16.15; extra == 'unstructured'
147
156
  Provides-Extra: vecdbs
148
157
  Requires-Dist: chromadb<=0.4.23,>=0.4.21; extra == 'vecdbs'
149
158
  Requires-Dist: lancedb<0.9.0,>=0.8.2; extra == 'vecdbs'
@@ -292,20 +301,28 @@ teacher_task.run()
292
301
  <summary> <b>Click to expand</b></summary>
293
302
 
294
303
  - **Jan 2025:**
295
- - [0.33.0](https://github.com/langroid/langroid/releases/tag/0.33.3) Move from Poetry to uv!
304
+ - [0.36.0](https://github.com/langroid/langroid/releases/tag/0.36.0): Weaviate vector-db support (thanks @abab-dev).
305
+ - [0.35.0](https://github.com/langroid/langroid/releases/tag/0.35.0): Capture/Stream reasoning content from
306
+ Reasoning LLMs (e.g. DeepSeek, OpenAI o1) in addition to final answer.
307
+ - [0.34.0](https://github.com/langroid/langroid/releases/tag/0.34.0): DocChatAgent
308
+ chunk enrichment to improve retrieval. (collaboration with @dfm88).
309
+ - [0.33.0](https://github.com/langroid/langroid/releases/tag/0.33.3) Move from Poetry to uv! (thanks @abab-dev).
296
310
  - [0.32.0](https://github.com/langroid/langroid/releases/tag/0.32.0) DeepSeek v3 support.
297
311
  - **Dec 2024:**
298
312
  - [0.31.0](https://github.com/langroid/langroid/releases/tag/0.31.0) Azure OpenAI Embeddings
299
- - [0.30.0](https://github.com/langroid/langroid/releases/tag/0.30.0) Llama-cpp embeddings.
300
- - [0.29.0](https://github.com/langroid/langroid/releases/tag/0.29.0) Custom Azure OpenAI Client
313
+ - [0.30.0](https://github.com/langroid/langroid/releases/tag/0.30.0) Llama-cpp embeddings (thanks @Kwigg).
314
+ - [0.29.0](https://github.com/langroid/langroid/releases/tag/0.29.0) Custom Azure OpenAI Client (thanks
315
+ @johannestang).
301
316
  - [0.28.0](https://github.com/langroid/langroid/releases/tag/0.28.0) `ToolMessage`: `_handler` field to override
302
- default handler method name in `request` field.
317
+ default handler method name in `request` field (thanks @alexagr).
303
318
  - [0.27.0](https://github.com/langroid/langroid/releases/tag/0.27.0) OpenRouter Support.
304
319
  - [0.26.0](https://github.com/langroid/langroid/releases/tag/0.26.0) Update to latest Chainlit.
305
- - [0.25.0](https://github.com/langroid/langroid/releases/tag/0.25.0) True Async Methods for agent and user-response.
320
+ - [0.25.0](https://github.com/langroid/langroid/releases/tag/0.25.0) True Async Methods for agent and
321
+ user-response (thanks @alexagr).
306
322
  - **Nov 2024:**
307
323
  - **[0.24.0](https://langroid.github.io/langroid/notes/structured-output/)**:
308
324
  Enables support for `Agent`s with strict JSON schema output format on compatible LLMs and strict mode for the OpenAI tools API.
325
+ (thanks @nilspalumbo).
309
326
  - **[0.23.0](https://langroid.github.io/langroid/tutorials/local-llm-setup/#local-llms-hosted-on-glhfchat)**:
310
327
  support for LLMs (e.g. `Qwen2.5-Coder-32b-Instruct`) hosted on glhf.chat
311
328
  - **[0.22.0](https://langroid.github.io/langroid/notes/large-tool-results/)**:
@@ -136,20 +136,28 @@ teacher_task.run()
136
136
  <summary> <b>Click to expand</b></summary>
137
137
 
138
138
  - **Jan 2025:**
139
- - [0.33.0](https://github.com/langroid/langroid/releases/tag/0.33.3) Move from Poetry to uv!
139
+ - [0.36.0](https://github.com/langroid/langroid/releases/tag/0.36.0): Weaviate vector-db support (thanks @abab-dev).
140
+ - [0.35.0](https://github.com/langroid/langroid/releases/tag/0.35.0): Capture/Stream reasoning content from
141
+ Reasoning LLMs (e.g. DeepSeek, OpenAI o1) in addition to final answer.
142
+ - [0.34.0](https://github.com/langroid/langroid/releases/tag/0.34.0): DocChatAgent
143
+ chunk enrichment to improve retrieval. (collaboration with @dfm88).
144
+ - [0.33.0](https://github.com/langroid/langroid/releases/tag/0.33.3) Move from Poetry to uv! (thanks @abab-dev).
140
145
  - [0.32.0](https://github.com/langroid/langroid/releases/tag/0.32.0) DeepSeek v3 support.
141
146
  - **Dec 2024:**
142
147
  - [0.31.0](https://github.com/langroid/langroid/releases/tag/0.31.0) Azure OpenAI Embeddings
143
- - [0.30.0](https://github.com/langroid/langroid/releases/tag/0.30.0) Llama-cpp embeddings.
144
- - [0.29.0](https://github.com/langroid/langroid/releases/tag/0.29.0) Custom Azure OpenAI Client
148
+ - [0.30.0](https://github.com/langroid/langroid/releases/tag/0.30.0) Llama-cpp embeddings (thanks @Kwigg).
149
+ - [0.29.0](https://github.com/langroid/langroid/releases/tag/0.29.0) Custom Azure OpenAI Client (thanks
150
+ @johannestang).
145
151
  - [0.28.0](https://github.com/langroid/langroid/releases/tag/0.28.0) `ToolMessage`: `_handler` field to override
146
- default handler method name in `request` field.
152
+ default handler method name in `request` field (thanks @alexagr).
147
153
  - [0.27.0](https://github.com/langroid/langroid/releases/tag/0.27.0) OpenRouter Support.
148
154
  - [0.26.0](https://github.com/langroid/langroid/releases/tag/0.26.0) Update to latest Chainlit.
149
- - [0.25.0](https://github.com/langroid/langroid/releases/tag/0.25.0) True Async Methods for agent and user-response.
155
+ - [0.25.0](https://github.com/langroid/langroid/releases/tag/0.25.0) True Async Methods for agent and
156
+ user-response (thanks @alexagr).
150
157
  - **Nov 2024:**
151
158
  - **[0.24.0](https://langroid.github.io/langroid/notes/structured-output/)**:
152
159
  Enables support for `Agent`s with strict JSON schema output format on compatible LLMs and strict mode for the OpenAI tools API.
160
+ (thanks @nilspalumbo).
153
161
  - **[0.23.0](https://langroid.github.io/langroid/tutorials/local-llm-setup/#local-llms-hosted-on-glhfchat)**:
154
162
  support for LLMs (e.g. `Qwen2.5-Coder-32b-Instruct`) hosted on glhf.chat
155
163
  - **[0.22.0](https://langroid.github.io/langroid/notes/large-tool-results/)**:
@@ -15,6 +15,7 @@ pip install "langroid[hf-embeddings]"
15
15
  """
16
16
 
17
17
  import logging
18
+ import textwrap
18
19
  from collections import OrderedDict
19
20
  from functools import cache
20
21
  from typing import Any, Callable, Dict, List, Optional, Set, Tuple, no_type_check
@@ -81,7 +82,7 @@ You will be given various passages from these documents, and asked to answer que
81
82
  about them, or summarize them into coherent answers.
82
83
  """
83
84
 
84
- CHUNK_ENRICHMENT_DELIMITER = "<##-##-##>"
85
+ CHUNK_ENRICHMENT_DELIMITER = "\n<##-##-##>"
85
86
 
86
87
  has_sentence_transformers = False
87
88
  try:
@@ -99,7 +100,7 @@ hf_embed_config = SentenceTransformerEmbeddingsConfig(
99
100
 
100
101
  oai_embed_config = OpenAIEmbeddingsConfig(
101
102
  model_type="openai",
102
- model_name="text-embedding-ada-002",
103
+ model_name="text-embedding-3-small",
103
104
  dims=1536,
104
105
  )
105
106
 
@@ -188,8 +189,8 @@ class DocChatAgentConfig(ChatAgentConfig):
188
189
  # NOTE: PDF parsing is extremely challenging, and each library
189
190
  # has its own strengths and weaknesses.
190
191
  # Try one that works for your use case.
191
- # or "unstructured", "pdfplumber", "fitz", "pypdf"
192
- library="pdfplumber",
192
+ # or "unstructured", "fitz", "pymupdf4llm", "pypdf"
193
+ library="pymupdf4llm",
193
194
  ),
194
195
  )
195
196
 
@@ -810,9 +811,11 @@ class DocChatAgent(ChatAgent):
810
811
  return "\n".join(
811
812
  [
812
813
  f"""
813
- [{i+1}]
814
+ -----[EXTRACT #{i+1}]----------
814
815
  {content}
815
816
  {source}
817
+ -----END OF EXTRACT------------
818
+
816
819
  """
817
820
  for i, (content, source) in enumerate(zip(contents, sources))
818
821
  ]
@@ -949,12 +952,13 @@ class DocChatAgent(ChatAgent):
949
952
  continue
950
953
 
951
954
  # Combine original content with questions in a structured way
952
- combined_content = f"""
953
- {doc.content}
954
-
955
+ combined_content = textwrap.dedent(
956
+ f"""\
957
+ {doc.content}
955
958
  {enrichment_config.delimiter}
956
959
  {enrichment}
957
- """.strip()
960
+ """
961
+ )
958
962
 
959
963
  new_doc = doc.copy(
960
964
  update={
@@ -1440,7 +1444,7 @@ class DocChatAgent(ChatAgent):
1440
1444
  delimiter = self.config.chunk_enrichment_config.delimiter
1441
1445
  return [
1442
1446
  (
1443
- doc.copy(update={"content": doc.content.split(delimiter)[0].strip()})
1447
+ doc.copy(update={"content": doc.content.split(delimiter)[0]})
1444
1448
  if doc.content and getattr(doc.metadata, "has_enrichment", False)
1445
1449
  else doc
1446
1450
  )
@@ -18,7 +18,7 @@ AzureADTokenProvider = Callable[[], str]
18
18
 
19
19
  class OpenAIEmbeddingsConfig(EmbeddingModelsConfig):
20
20
  model_type: str = "openai"
21
- model_name: str = "text-embedding-ada-002"
21
+ model_name: str = "text-embedding-3-large"
22
22
  api_key: str = ""
23
23
  api_base: Optional[str] = None
24
24
  organization: str = ""
@@ -28,7 +28,7 @@ class OpenAIEmbeddingsConfig(EmbeddingModelsConfig):
28
28
 
29
29
  class AzureOpenAIEmbeddingsConfig(EmbeddingModelsConfig):
30
30
  model_type: str = "azure-openai"
31
- model_name: str = "text-embedding-ada-002"
31
+ model_name: str = "text-embedding-3-large"
32
32
  api_key: str = ""
33
33
  api_base: str = ""
34
34
  deployment_name: Optional[str] = None
@@ -1,4 +1,4 @@
1
- from typing import Optional
1
+ from typing import List, Optional
2
2
 
3
3
 
4
4
  class XMLException(Exception):
@@ -15,7 +15,7 @@ class LangroidImportError(ImportError):
15
15
  def __init__(
16
16
  self,
17
17
  package: Optional[str] = None,
18
- extra: Optional[str] = None,
18
+ extra: Optional[str | List[str]] = None,
19
19
  error: str = "",
20
20
  *args: object,
21
21
  ) -> None:
@@ -33,9 +33,21 @@ class LangroidImportError(ImportError):
33
33
  error = f"{package} is not installed by default with Langroid.\n"
34
34
 
35
35
  if extra:
36
+ if isinstance(extra, list):
37
+ help_preamble = f"""
38
+ If you want to use it, please install langroid with one of these
39
+ extras: {', '.join(extra)}. The examples below use the first one,
40
+ i.e. {extra[0]}.
41
+ """
42
+ extra = extra[0]
43
+ else:
44
+ help_preamble = f"""
45
+ If you want to use it, please install langroid with the
46
+ `{extra}` extra.
47
+ """
48
+
36
49
  install_help = f"""
37
- If you want to use it, please install langroid
38
- with the `{extra}` extra, for example:
50
+ {help_preamble}
39
51
 
40
52
  If you are using pip:
41
53
  pip install "langroid[{extra}]"
@@ -65,7 +65,7 @@ class CodeParsingConfig(BaseSettings):
65
65
  "bash",
66
66
  ]
67
67
  chunk_size: int = 500 # tokens
68
- token_encoding_model: str = "text-embedding-ada-002"
68
+ token_encoding_model: str = "text-embedding-3-small"
69
69
  n_similar_docs: int = 4
70
70
 
71
71