langroid 0.51.0__tar.gz → 0.51.1__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.51.0 → langroid-0.51.1}/PKG-INFO +1 -1
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/document_parser.py +27 -12
- {langroid-0.51.0 → langroid-0.51.1}/pyproject.toml +1 -1
- {langroid-0.51.0 → langroid-0.51.1}/.gitignore +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/LICENSE +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/README.md +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/base.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/batch.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/callbacks/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/callbacks/chainlit.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/chat_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/chat_document.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/openai_assistant.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/system_messages.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/tools.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/doc_chat_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/doc_chat_task.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_tools.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/system_messages.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/tools.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/relevance_extractor_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/retriever_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/system_message.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/tools.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/table_chat_agent.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/task.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tool_message.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/exa_search_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/file_tools.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/google_search_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/metaphor_search_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/orchestration.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/recipient_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/retrieval_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/rewind_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/segment_extract_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/tavily_search_tool.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/xml_tool_message.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/base.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/momento_cachedb.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/redis_cachedb.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/base.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/models.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings.proto +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/remote_embeds.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/exceptions.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/azure_openai.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/base.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/config.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/mock_lm.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/model_info.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/openai_gpt.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/base.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/mytypes.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/agent_chats.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/code_parser.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/md_parser.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/para_sentence_split.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/parse_json.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/parser.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/pdf_utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/repo_loader.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/routing.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/search.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/spider.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/table_loader.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/url_loader.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/urls.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/web_search.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/dialog.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/prompts_config.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/templates.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/py.typed +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/pydantic_v1/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/pydantic_v1/main.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/algorithms/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/algorithms/graph.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/configuration.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/constants.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/git_utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/globals.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/logging.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/object_registry.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/citations.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/printing.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/status.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/pandas_utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/pydantic_utils.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/system.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/types.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/__init__.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/base.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/chromadb.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/lancedb.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/meilisearch.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/pineconedb.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/postgres.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/qdrantdb.py +0 -0
- {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1201,6 +1201,20 @@ class LLMPdfParser(DocumentParser):
|
|
1201
1201
|
pdf_chunks = pool.map(self._merge_pages_into_pdf_with_metadata, chunks)
|
1202
1202
|
return pdf_chunks
|
1203
1203
|
|
1204
|
+
@staticmethod
|
1205
|
+
def _page_num_str(page_numbers: Any) -> str:
|
1206
|
+
"""
|
1207
|
+
Converts page numbers to a formatted string.
|
1208
|
+
"""
|
1209
|
+
if isinstance(page_numbers, list):
|
1210
|
+
if len(page_numbers) == 0:
|
1211
|
+
return ""
|
1212
|
+
return str(page_numbers[0]) + "-" + str(page_numbers[-1])
|
1213
|
+
elif isinstance(page_numbers, int):
|
1214
|
+
return str(page_numbers)
|
1215
|
+
else:
|
1216
|
+
return str(page_numbers).replace(" ", "-")
|
1217
|
+
|
1204
1218
|
async def _send_chunk_to_llm(self, chunk: Dict[str, Any]) -> str:
|
1205
1219
|
"""
|
1206
1220
|
Sends a PDF chunk to the LLM API and returns the response text.
|
@@ -1219,6 +1233,7 @@ class LLMPdfParser(DocumentParser):
|
|
1219
1233
|
max_output_tokens=self.max_tokens,
|
1220
1234
|
)
|
1221
1235
|
llm = OpenAIGPT(config=llm_config)
|
1236
|
+
page_nums = self._page_num_str(chunk.get("page_numbers", "?"))
|
1222
1237
|
base64_string = base64.b64encode(chunk["pdf_bytes"]).decode("utf-8")
|
1223
1238
|
data_uri = f"data:application/pdf;base64,{base64_string}"
|
1224
1239
|
if "gemini" in self.model_name.lower():
|
@@ -1226,7 +1241,9 @@ class LLMPdfParser(DocumentParser):
|
|
1226
1241
|
type="image_url",
|
1227
1242
|
image_url=dict(url=data_uri),
|
1228
1243
|
)
|
1229
|
-
elif "claude" in self.model_name.lower()
|
1244
|
+
elif "claude" in self.model_name.lower():
|
1245
|
+
# optimistrally try this: some API proxies like litellm
|
1246
|
+
# support this, and others may not.
|
1230
1247
|
file_content = dict(
|
1231
1248
|
type="file",
|
1232
1249
|
file=dict(
|
@@ -1234,18 +1251,11 @@ class LLMPdfParser(DocumentParser):
|
|
1234
1251
|
),
|
1235
1252
|
)
|
1236
1253
|
else:
|
1237
|
-
|
1238
|
-
logger.warning(
|
1239
|
-
f"""
|
1240
|
-
File uploads may not be supported for this model
|
1241
|
-
{self.model_name}. But attempting to
|
1242
|
-
use OpenAI-like file upload.
|
1243
|
-
""",
|
1244
|
-
)
|
1254
|
+
# fallback: assume file upload is similar to OpenAI API
|
1245
1255
|
file_content = dict(
|
1246
1256
|
type="file",
|
1247
1257
|
file=dict(
|
1248
|
-
filename="
|
1258
|
+
filename=f"pages-{page_nums}.pdf",
|
1249
1259
|
file_data=data_uri,
|
1250
1260
|
),
|
1251
1261
|
)
|
@@ -1304,9 +1314,14 @@ class LLMPdfParser(DocumentParser):
|
|
1304
1314
|
await asyncio.sleep(delay)
|
1305
1315
|
else:
|
1306
1316
|
# Log failure after max retries
|
1317
|
+
page_nums = chunk.get("page_numbers", "Unknown")
|
1307
1318
|
logging.error(
|
1308
|
-
"
|
1309
|
-
|
1319
|
+
f"""
|
1320
|
+
Max retries reached for pages {page_nums}.
|
1321
|
+
It is possible your LLM API provider for
|
1322
|
+
the model {self.model_name} does not support
|
1323
|
+
file uploads via an OpenAI-compatible API.
|
1324
|
+
""",
|
1310
1325
|
)
|
1311
1326
|
break
|
1312
1327
|
return "" # Return empty string if all retries fail
|
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
|
{langroid-0.51.0 → langroid-0.51.1}/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
|
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.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/hf_formatter.py
RENAMED
File without changes
|
{langroid-0.51.0 → langroid-0.51.1}/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
|