langroid 0.45.6__tar.gz → 0.45.7__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 (134) hide show
  1. {langroid-0.45.6 → langroid-0.45.7}/PKG-INFO +1 -1
  2. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/models.py +1 -0
  3. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/base.py +6 -4
  4. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/model_info.py +7 -7
  5. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/openai_gpt.py +13 -6
  6. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/web_search.py +21 -2
  7. {langroid-0.45.6 → langroid-0.45.7}/pyproject.toml +1 -1
  8. {langroid-0.45.6 → langroid-0.45.7}/.gitignore +0 -0
  9. {langroid-0.45.6 → langroid-0.45.7}/LICENSE +0 -0
  10. {langroid-0.45.6 → langroid-0.45.7}/README.md +0 -0
  11. {langroid-0.45.6 → langroid-0.45.7}/langroid/__init__.py +0 -0
  12. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/__init__.py +0 -0
  13. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/base.py +0 -0
  14. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/batch.py +0 -0
  15. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/callbacks/__init__.py +0 -0
  16. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/callbacks/chainlit.py +0 -0
  17. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/chat_agent.py +0 -0
  18. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/chat_document.py +0 -0
  19. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/openai_assistant.py +0 -0
  20. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/__init__.py +0 -0
  21. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/arangodb/__init__.py +0 -0
  22. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  23. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/arangodb/system_messages.py +0 -0
  24. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/arangodb/tools.py +0 -0
  25. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/arangodb/utils.py +0 -0
  26. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/doc_chat_agent.py +0 -0
  27. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  28. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/lance_rag/__init__.py +0 -0
  29. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  30. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  31. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  32. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/lance_tools.py +0 -0
  33. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/neo4j/__init__.py +0 -0
  34. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  35. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  36. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/neo4j/system_messages.py +0 -0
  37. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/neo4j/tools.py +0 -0
  38. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  39. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/retriever_agent.py +0 -0
  40. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/__init__.py +0 -0
  41. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  42. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/utils/__init__.py +0 -0
  43. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  44. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  45. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/utils/system_message.py +0 -0
  46. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/sql/utils/tools.py +0 -0
  47. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/special/table_chat_agent.py +0 -0
  48. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/task.py +0 -0
  49. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tool_message.py +0 -0
  50. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/__init__.py +0 -0
  51. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  52. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/exa_search_tool.py +0 -0
  53. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/file_tools.py +0 -0
  54. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/google_search_tool.py +0 -0
  55. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  56. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/orchestration.py +0 -0
  57. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/recipient_tool.py +0 -0
  58. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/retrieval_tool.py +0 -0
  59. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/rewind_tool.py +0 -0
  60. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/segment_extract_tool.py +0 -0
  61. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/tools/tavily_search_tool.py +0 -0
  62. {langroid-0.45.6 → langroid-0.45.7}/langroid/agent/xml_tool_message.py +0 -0
  63. {langroid-0.45.6 → langroid-0.45.7}/langroid/cachedb/__init__.py +0 -0
  64. {langroid-0.45.6 → langroid-0.45.7}/langroid/cachedb/base.py +0 -0
  65. {langroid-0.45.6 → langroid-0.45.7}/langroid/cachedb/momento_cachedb.py +0 -0
  66. {langroid-0.45.6 → langroid-0.45.7}/langroid/cachedb/redis_cachedb.py +0 -0
  67. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/__init__.py +0 -0
  68. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/base.py +0 -0
  69. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/protoc/__init__.py +0 -0
  70. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  71. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  72. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  73. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  74. {langroid-0.45.6 → langroid-0.45.7}/langroid/embedding_models/remote_embeds.py +0 -0
  75. {langroid-0.45.6 → langroid-0.45.7}/langroid/exceptions.py +0 -0
  76. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/__init__.py +0 -0
  77. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/azure_openai.py +0 -0
  78. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/config.py +0 -0
  79. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/mock_lm.py +0 -0
  80. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  81. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/prompt_formatter/base.py +0 -0
  82. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  83. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  84. {langroid-0.45.6 → langroid-0.45.7}/langroid/language_models/utils.py +0 -0
  85. {langroid-0.45.6 → langroid-0.45.7}/langroid/mytypes.py +0 -0
  86. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/__init__.py +0 -0
  87. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/agent_chats.py +0 -0
  88. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/code_parser.py +0 -0
  89. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/document_parser.py +0 -0
  90. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/para_sentence_split.py +0 -0
  91. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/parse_json.py +0 -0
  92. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/parser.py +0 -0
  93. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/pdf_utils.py +0 -0
  94. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/repo_loader.py +0 -0
  95. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/routing.py +0 -0
  96. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/search.py +0 -0
  97. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/spider.py +0 -0
  98. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/table_loader.py +0 -0
  99. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/url_loader.py +0 -0
  100. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/urls.py +0 -0
  101. {langroid-0.45.6 → langroid-0.45.7}/langroid/parsing/utils.py +0 -0
  102. {langroid-0.45.6 → langroid-0.45.7}/langroid/prompts/__init__.py +0 -0
  103. {langroid-0.45.6 → langroid-0.45.7}/langroid/prompts/dialog.py +0 -0
  104. {langroid-0.45.6 → langroid-0.45.7}/langroid/prompts/prompts_config.py +0 -0
  105. {langroid-0.45.6 → langroid-0.45.7}/langroid/prompts/templates.py +0 -0
  106. {langroid-0.45.6 → langroid-0.45.7}/langroid/py.typed +0 -0
  107. {langroid-0.45.6 → langroid-0.45.7}/langroid/pydantic_v1/__init__.py +0 -0
  108. {langroid-0.45.6 → langroid-0.45.7}/langroid/pydantic_v1/main.py +0 -0
  109. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/__init__.py +0 -0
  110. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/algorithms/__init__.py +0 -0
  111. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/algorithms/graph.py +0 -0
  112. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/configuration.py +0 -0
  113. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/constants.py +0 -0
  114. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/git_utils.py +0 -0
  115. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/globals.py +0 -0
  116. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/logging.py +0 -0
  117. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/object_registry.py +0 -0
  118. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/output/__init__.py +0 -0
  119. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/output/citations.py +0 -0
  120. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/output/printing.py +0 -0
  121. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/output/status.py +0 -0
  122. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/pandas_utils.py +0 -0
  123. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/pydantic_utils.py +0 -0
  124. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/system.py +0 -0
  125. {langroid-0.45.6 → langroid-0.45.7}/langroid/utils/types.py +0 -0
  126. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/__init__.py +0 -0
  127. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/base.py +0 -0
  128. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/chromadb.py +0 -0
  129. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/lancedb.py +0 -0
  130. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/meilisearch.py +0 -0
  131. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/pineconedb.py +0 -0
  132. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/postgres.py +0 -0
  133. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/qdrantdb.py +0 -0
  134. {langroid-0.45.6 → langroid-0.45.7}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.45.6
3
+ Version: 0.45.7
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -30,6 +30,7 @@ class OpenAIEmbeddingsConfig(EmbeddingModelsConfig):
30
30
  # api_base is set from OPENAI_API_BASE env var, in .env or system env
31
31
  env_prefix = "OPENAI_"
32
32
 
33
+
33
34
  class AzureOpenAIEmbeddingsConfig(EmbeddingModelsConfig):
34
35
  model_type: str = "azure-openai"
35
36
  model_name: str = "text-embedding-3-small"
@@ -42,6 +42,8 @@ FunctionCallTypes = Literal["none", "auto"]
42
42
  ToolChoiceTypes = Literal["none", "auto", "required"]
43
43
  ToolTypes = Literal["function"]
44
44
 
45
+ DEFAULT_CONTEXT_LENGTH = 16_000
46
+
45
47
 
46
48
  class StreamEventType(Enum):
47
49
  TEXT = 1
@@ -66,9 +68,9 @@ class LLMConfig(BaseSettings):
66
68
  chat_model: str = ""
67
69
  completion_model: str = ""
68
70
  temperature: float = 0.0
69
- chat_context_length: int = 8000
71
+ chat_context_length: int | None = None
70
72
  async_stream_quiet: bool = True # suppress streaming output in async mode?
71
- completion_context_length: int = 8000
73
+ completion_context_length: int | None = None
72
74
  # if input length + max_output_tokens > context length of model,
73
75
  # we will try shortening requested output
74
76
  min_output_tokens: int = 64
@@ -625,10 +627,10 @@ class LanguageModel(ABC):
625
627
  return get_model_info(orig_model, model)
626
628
 
627
629
  def chat_context_length(self) -> int:
628
- return self.config.chat_context_length
630
+ return self.config.chat_context_length or DEFAULT_CONTEXT_LENGTH
629
631
 
630
632
  def completion_context_length(self) -> int:
631
- return self.config.completion_context_length
633
+ return self.config.completion_context_length or DEFAULT_CONTEXT_LENGTH
632
634
 
633
635
  def chat_cost(self) -> Tuple[float, float]:
634
636
  return self.config.chat_cost_per_1k_tokens
@@ -60,13 +60,13 @@ class DeepSeekModel(ModelName):
60
60
  class GeminiModel(ModelName):
61
61
  """Enum for Gemini models"""
62
62
 
63
- GEMINI_1_5_FLASH = "gemini/gemini-1.5-flash"
64
- GEMINI_1_5_FLASH_8B = "gemini/gemini-1.5-flash-8b"
65
- GEMINI_1_5_PRO = "gemini/gemini-1.5-pro"
66
- GEMINI_2_PRO = "gemini/gemini-2.0-pro-exp-02-05"
67
- GEMINI_2_FLASH = "gemini/gemini-2.0-flash"
68
- GEMINI_2_FLASH_LITE = "gemini/gemini-2.0-flash-lite-preview"
69
- GEMINI_2_FLASH_THINKING = "gemini/gemini-2.0-flash-thinking-exp"
63
+ GEMINI_1_5_FLASH = "gemini-1.5-flash"
64
+ GEMINI_1_5_FLASH_8B = "gemini-1.5-flash-8b"
65
+ GEMINI_1_5_PRO = "gemini-1.5-pro"
66
+ GEMINI_2_PRO = "gemini-2.0-pro-exp-02-05"
67
+ GEMINI_2_FLASH = "gemini-2.0-flash"
68
+ GEMINI_2_FLASH_LITE = "gemini-2.0-flash-lite-preview"
69
+ GEMINI_2_FLASH_THINKING = "gemini-2.0-flash-thinking-exp"
70
70
 
71
71
 
72
72
  class OpenAI_API_ParamInfo(BaseModel):
@@ -660,17 +660,24 @@ class OpenAIGPT(LanguageModel):
660
660
 
661
661
  def chat_context_length(self) -> int:
662
662
  """
663
- Context-length for chat-completion models/endpoints
664
- Get it from the dict, otherwise fail-over to general method
663
+ Context-length for chat-completion models/endpoints.
664
+ Get it from the config if explicitly given,
665
+ otherwise use model_info based on model name, and fall back to
666
+ generic model_info if there's no match.
665
667
  """
666
- return self.info().context_length
668
+ return self.config.chat_context_length or self.info().context_length
667
669
 
668
670
  def completion_context_length(self) -> int:
669
671
  """
670
- Context-length for completion models/endpoints
671
- Get it from the dict, otherwise fail-over to general method
672
+ Context-length for completion models/endpoints.
673
+ Get it from the config if explicitly given,
674
+ otherwise use model_info based on model name, and fall back to
675
+ generic model_info if there's no match.
672
676
  """
673
- return self.completion_info().context_length
677
+ return (
678
+ self.config.completion_context_length
679
+ or self.completion_info().context_length
680
+ )
674
681
 
675
682
  def chat_cost(self) -> Tuple[float, float]:
676
683
  """
@@ -51,8 +51,27 @@ class WebSearchResult:
51
51
 
52
52
  def get_full_content(self) -> str:
53
53
  try:
54
- response: Response = requests.get(self.link)
55
- soup: BeautifulSoup = BeautifulSoup(response.text, "lxml")
54
+ # First check headers only to get content length and type
55
+ head_response: Response = requests.head(self.link, timeout=5)
56
+ if head_response.status_code != 200:
57
+ return f"Error: HTTP {head_response.status_code} for {self.link}"
58
+
59
+ # Skip large files
60
+ content_length = int(head_response.headers.get("content-length", 0))
61
+ if content_length > 5_000_000: # 5MB limit
62
+ return (
63
+ f"Error: Content too large ({content_length} bytes) for {self.link}"
64
+ )
65
+
66
+ response: Response = requests.get(self.link, timeout=10)
67
+
68
+ import warnings
69
+
70
+ from bs4 import XMLParsedAsHTMLWarning
71
+
72
+ warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning)
73
+
74
+ soup: BeautifulSoup = BeautifulSoup(response.text, "html.parser")
56
75
  text = " ".join(soup.stripped_strings)
57
76
  return text[: self.max_content_length]
58
77
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.45.6"
3
+ version = "0.45.7"
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