langroid 0.59.2__tar.gz → 0.59.4__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 (146) hide show
  1. {langroid-0.59.2 → langroid-0.59.4}/PKG-INFO +1 -1
  2. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/model_info.py +9 -6
  3. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/openai_gpt.py +11 -32
  4. {langroid-0.59.2 → langroid-0.59.4}/pyproject.toml +1 -1
  5. {langroid-0.59.2 → langroid-0.59.4}/.gitignore +0 -0
  6. {langroid-0.59.2 → langroid-0.59.4}/LICENSE +0 -0
  7. {langroid-0.59.2 → langroid-0.59.4}/README.md +0 -0
  8. {langroid-0.59.2 → langroid-0.59.4}/langroid/__init__.py +0 -0
  9. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/__init__.py +0 -0
  10. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/base.py +0 -0
  11. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/batch.py +0 -0
  12. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/callbacks/__init__.py +0 -0
  13. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/callbacks/chainlit.py +0 -0
  14. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/chat_agent.py +0 -0
  15. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/chat_document.py +0 -0
  16. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/done_sequence_parser.py +0 -0
  17. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/openai_assistant.py +0 -0
  18. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/__init__.py +0 -0
  19. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/arangodb/__init__.py +0 -0
  20. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  21. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/arangodb/system_messages.py +0 -0
  22. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/arangodb/tools.py +0 -0
  23. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/arangodb/utils.py +0 -0
  24. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/doc_chat_agent.py +0 -0
  25. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/doc_chat_task.py +0 -0
  26. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  27. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/lance_rag/__init__.py +0 -0
  28. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  29. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  30. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  31. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/lance_tools.py +0 -0
  32. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/neo4j/__init__.py +0 -0
  33. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  34. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  35. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/neo4j/system_messages.py +0 -0
  36. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/neo4j/tools.py +0 -0
  37. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  38. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/retriever_agent.py +0 -0
  39. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/__init__.py +0 -0
  40. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  41. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/utils/__init__.py +0 -0
  42. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  43. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  44. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/utils/system_message.py +0 -0
  45. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/sql/utils/tools.py +0 -0
  46. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/special/table_chat_agent.py +0 -0
  47. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/task.py +0 -0
  48. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tool_message.py +0 -0
  49. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/__init__.py +0 -0
  50. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  51. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/exa_search_tool.py +0 -0
  52. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/file_tools.py +0 -0
  53. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/google_search_tool.py +0 -0
  54. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/mcp/__init__.py +0 -0
  55. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/mcp/decorators.py +0 -0
  56. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/mcp/fastmcp_client.py +0 -0
  57. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  58. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/orchestration.py +0 -0
  59. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/recipient_tool.py +0 -0
  60. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/retrieval_tool.py +0 -0
  61. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/rewind_tool.py +0 -0
  62. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/segment_extract_tool.py +0 -0
  63. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/task_tool.py +0 -0
  64. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/tools/tavily_search_tool.py +0 -0
  65. {langroid-0.59.2 → langroid-0.59.4}/langroid/agent/xml_tool_message.py +0 -0
  66. {langroid-0.59.2 → langroid-0.59.4}/langroid/cachedb/__init__.py +0 -0
  67. {langroid-0.59.2 → langroid-0.59.4}/langroid/cachedb/base.py +0 -0
  68. {langroid-0.59.2 → langroid-0.59.4}/langroid/cachedb/redis_cachedb.py +0 -0
  69. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/__init__.py +0 -0
  70. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/base.py +0 -0
  71. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/models.py +0 -0
  72. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/protoc/__init__.py +0 -0
  73. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  74. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  75. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  76. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  77. {langroid-0.59.2 → langroid-0.59.4}/langroid/embedding_models/remote_embeds.py +0 -0
  78. {langroid-0.59.2 → langroid-0.59.4}/langroid/exceptions.py +0 -0
  79. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/__init__.py +0 -0
  80. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/azure_openai.py +0 -0
  81. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/base.py +0 -0
  82. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/client_cache.py +0 -0
  83. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/config.py +0 -0
  84. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/mock_lm.py +0 -0
  85. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  86. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/prompt_formatter/base.py +0 -0
  87. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  88. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  89. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/provider_params.py +0 -0
  90. {langroid-0.59.2 → langroid-0.59.4}/langroid/language_models/utils.py +0 -0
  91. {langroid-0.59.2 → langroid-0.59.4}/langroid/mcp/__init__.py +0 -0
  92. {langroid-0.59.2 → langroid-0.59.4}/langroid/mcp/server/__init__.py +0 -0
  93. {langroid-0.59.2 → langroid-0.59.4}/langroid/mytypes.py +0 -0
  94. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/__init__.py +0 -0
  95. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/agent_chats.py +0 -0
  96. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/code_parser.py +0 -0
  97. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/document_parser.py +0 -0
  98. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/file_attachment.py +0 -0
  99. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/md_parser.py +0 -0
  100. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/para_sentence_split.py +0 -0
  101. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/parse_json.py +0 -0
  102. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/parser.py +0 -0
  103. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/pdf_utils.py +0 -0
  104. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/repo_loader.py +0 -0
  105. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/routing.py +0 -0
  106. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/search.py +0 -0
  107. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/spider.py +0 -0
  108. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/table_loader.py +0 -0
  109. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/url_loader.py +0 -0
  110. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/urls.py +0 -0
  111. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/utils.py +0 -0
  112. {langroid-0.59.2 → langroid-0.59.4}/langroid/parsing/web_search.py +0 -0
  113. {langroid-0.59.2 → langroid-0.59.4}/langroid/prompts/__init__.py +0 -0
  114. {langroid-0.59.2 → langroid-0.59.4}/langroid/prompts/dialog.py +0 -0
  115. {langroid-0.59.2 → langroid-0.59.4}/langroid/prompts/prompts_config.py +0 -0
  116. {langroid-0.59.2 → langroid-0.59.4}/langroid/prompts/templates.py +0 -0
  117. {langroid-0.59.2 → langroid-0.59.4}/langroid/py.typed +0 -0
  118. {langroid-0.59.2 → langroid-0.59.4}/langroid/pydantic_v1/__init__.py +0 -0
  119. {langroid-0.59.2 → langroid-0.59.4}/langroid/pydantic_v1/main.py +0 -0
  120. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/__init__.py +0 -0
  121. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/algorithms/__init__.py +0 -0
  122. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/algorithms/graph.py +0 -0
  123. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/configuration.py +0 -0
  124. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/constants.py +0 -0
  125. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/git_utils.py +0 -0
  126. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/globals.py +0 -0
  127. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/html_logger.py +0 -0
  128. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/logging.py +0 -0
  129. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/object_registry.py +0 -0
  130. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/output/__init__.py +0 -0
  131. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/output/citations.py +0 -0
  132. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/output/printing.py +0 -0
  133. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/output/status.py +0 -0
  134. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/pandas_utils.py +0 -0
  135. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/pydantic_utils.py +0 -0
  136. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/system.py +0 -0
  137. {langroid-0.59.2 → langroid-0.59.4}/langroid/utils/types.py +0 -0
  138. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/__init__.py +0 -0
  139. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/base.py +0 -0
  140. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/chromadb.py +0 -0
  141. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/lancedb.py +0 -0
  142. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/meilisearch.py +0 -0
  143. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/pineconedb.py +0 -0
  144. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/postgres.py +0 -0
  145. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/qdrantdb.py +0 -0
  146. {langroid-0.59.2 → langroid-0.59.4}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.59.2
3
+ Version: 0.59.4
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -74,10 +74,10 @@ class GeminiModel(ModelName):
74
74
  GEMINI_1_5_PRO = "gemini-1.5-pro"
75
75
  GEMINI_2_5_PRO = "gemini-2.5-pro"
76
76
  GEMINI_2_5_FLASH = "gemini-2.5-flash"
77
- GEMINI_2_5_FLASH_LITE_PREVIEW = "gemini-2.5-flash-lite-preview-06-17"
77
+ GEMINI_2_5_FLASH_LITE = "gemini-2.5-flash-lite"
78
78
  GEMINI_2_PRO = "gemini-2.0-pro-exp-02-05"
79
79
  GEMINI_2_FLASH = "gemini-2.0-flash"
80
- GEMINI_2_FLASH_LITE = "gemini-2.0-flash-lite-preview"
80
+ GEMINI_2_FLASH_LITE = "gemini-2.0-flash-lite"
81
81
  GEMINI_2_FLASH_THINKING = "gemini-2.0-flash-thinking-exp"
82
82
 
83
83
 
@@ -90,6 +90,9 @@ class OpenAI_API_ParamInfo(BaseModel):
90
90
  params: Dict[str, List[str]] = dict(
91
91
  reasoning_effort=[
92
92
  OpenAIChatModel.O3_MINI.value,
93
+ GeminiModel.GEMINI_2_5_PRO.value,
94
+ GeminiModel.GEMINI_2_5_FLASH.value,
95
+ GeminiModel.GEMINI_2_5_FLASH_LITE.value,
93
96
  ],
94
97
  )
95
98
  # model-specific params in extra_body
@@ -438,7 +441,7 @@ MODEL_INFO: Dict[str, ModelInfo] = {
438
441
  input_cost_per_million=0.075,
439
442
  output_cost_per_million=0.30,
440
443
  rename_params={"max_tokens": "max_completion_tokens"},
441
- description="Gemini 2.0 Flash Lite Preview",
444
+ description="Gemini 2.0 Flash Lite",
442
445
  ),
443
446
  GeminiModel.GEMINI_1_5_FLASH.value: ModelInfo(
444
447
  name=GeminiModel.GEMINI_1_5_FLASH.value,
@@ -503,8 +506,8 @@ MODEL_INFO: Dict[str, ModelInfo] = {
503
506
  rename_params={"max_tokens": "max_completion_tokens"},
504
507
  description="Gemini 2.5 Flash",
505
508
  ),
506
- GeminiModel.GEMINI_2_5_FLASH_LITE_PREVIEW.value: ModelInfo(
507
- name=GeminiModel.GEMINI_2_5_FLASH_LITE_PREVIEW.value,
509
+ GeminiModel.GEMINI_2_5_FLASH_LITE.value: ModelInfo(
510
+ name=GeminiModel.GEMINI_2_5_FLASH_LITE.value,
508
511
  provider=ModelProvider.GOOGLE,
509
512
  context_length=65_536,
510
513
  max_output_tokens=65_536,
@@ -512,7 +515,7 @@ MODEL_INFO: Dict[str, ModelInfo] = {
512
515
  cached_cost_per_million=0.025,
513
516
  output_cost_per_million=0.40,
514
517
  rename_params={"max_tokens": "max_completion_tokens"},
515
- description="Gemini 2.5 Flash Lite Preview",
518
+ description="Gemini 2.5 Flash Lite",
516
519
  ),
517
520
  }
518
521
 
@@ -215,7 +215,7 @@ class OpenAICallParams(BaseModel):
215
215
  top_p: float | None = None
216
216
  reasoning_effort: str | None = None # or "low" or "high" or "medium"
217
217
  top_logprobs: int | None = None # if int, requires logprobs=True
218
- n: int = 1 # how many completions to generate (n > 1 is NOT handled now)
218
+ n: int | None = None # how many completions to generate (n > 1 is NOT handled now)
219
219
  stop: str | List[str] | None = None # (list of) stop sequence(s)
220
220
  seed: int | None = None
221
221
  user: str | None = None # user id for tracking
@@ -323,37 +323,15 @@ class OpenAIGPTConfig(LLMConfig):
323
323
  self, *, update: Mapping[str, Any] | None = None, deep: bool = False
324
324
  ) -> "OpenAIGPTConfig":
325
325
  """
326
- Override model_copy to handle unpicklable fields properly.
326
+ Copy config while preserving nested model instances and subclasses.
327
327
 
328
- This preserves fields like http_client_factory during normal copying
329
- while still allowing exclusion for pickling operations.
328
+ Important: Avoid reconstructing via `model_dump` as that coerces nested
329
+ models to their annotated base types (dropping subclass-only fields).
330
+ Instead, defer to Pydantic's native `model_copy`, which keeps nested
331
+ `BaseModel` instances (and their concrete subclasses) intact.
330
332
  """
331
- # Save references to unpicklable fields
332
- http_client_factory = self.http_client_factory
333
- streamer = self.streamer
334
- streamer_async = self.streamer_async
335
-
336
- # Get the current model data, excluding problematic fields
337
- data = self.model_dump(
338
- exclude={"http_client_factory", "streamer", "streamer_async"}
339
- )
340
-
341
- # Apply any updates
342
- if update:
343
- data.update(update)
344
-
345
- # Create a new instance with the copied data
346
- new_instance = self.__class__(**data)
347
-
348
- # Restore the unpicklable fields if they weren't overridden by update
349
- if "http_client_factory" not in (update or {}):
350
- new_instance.http_client_factory = http_client_factory
351
- if "streamer" not in (update or {}):
352
- new_instance.streamer = streamer
353
- if "streamer_async" not in (update or {}):
354
- new_instance.streamer_async = streamer_async
355
-
356
- return new_instance
333
+ # Delegate to BaseSettings/BaseModel implementation to preserve types
334
+ return super().model_copy(update=update, deep=deep) # type: ignore[return-value]
357
335
 
358
336
  def _validate_litellm(self) -> None:
359
337
  """
@@ -441,8 +419,9 @@ class OpenAIGPT(LanguageModel):
441
419
  Args:
442
420
  config: configuration for openai-gpt model
443
421
  """
444
- # copy the config to avoid modifying the original
445
- config = config.model_copy()
422
+ # copy the config to avoid modifying the original; deep to decouple
423
+ # nested models while preserving their concrete subclasses
424
+ config = config.model_copy(deep=True)
446
425
  super().__init__(config)
447
426
  self.config: OpenAIGPTConfig = config
448
427
  # save original model name such as `provider/model` before
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.59.2"
3
+ version = "0.59.4"
4
4
  authors = [
5
5
  {name = "Prasad Chalasani", email = "pchalasani@gmail.com"},
6
6
  ]
File without changes
File without changes
File without changes
File without changes
File without changes