langroid 0.1.206__tar.gz → 0.1.207__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 (121) hide show
  1. {langroid-0.1.206 → langroid-0.1.207}/PKG-INFO +1 -1
  2. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/openai_gpt.py +8 -2
  3. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/utils.py +10 -1
  4. {langroid-0.1.206 → langroid-0.1.207}/pyproject.toml +1 -1
  5. {langroid-0.1.206 → langroid-0.1.207}/LICENSE +0 -0
  6. {langroid-0.1.206 → langroid-0.1.207}/README.md +0 -0
  7. {langroid-0.1.206 → langroid-0.1.207}/langroid/__init__.py +0 -0
  8. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/__init__.py +0 -0
  9. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/base.py +0 -0
  10. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/batch.py +0 -0
  11. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/callbacks/__init__.py +0 -0
  12. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/callbacks/chainlit.py +0 -0
  13. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/chat_agent.py +0 -0
  14. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/chat_document.py +0 -0
  15. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/helpers.py +0 -0
  16. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/junk +0 -0
  17. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/openai_assistant.py +0 -0
  18. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/__init__.py +0 -0
  19. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/doc_chat_agent.py +0 -0
  20. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  21. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/lance_rag/__init__.py +0 -0
  22. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  23. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  24. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  25. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/lance_tools.py +0 -0
  26. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/neo4j/__init__.py +0 -0
  27. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  28. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  29. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/neo4j/utils/__init__.py +0 -0
  30. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/neo4j/utils/system_message.py +0 -0
  31. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  32. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/retriever_agent.py +0 -0
  33. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/__init__.py +0 -0
  34. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  35. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/utils/__init__.py +0 -0
  36. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  37. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  38. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/utils/system_message.py +0 -0
  39. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/sql/utils/tools.py +0 -0
  40. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/special/table_chat_agent.py +0 -0
  41. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/task.py +0 -0
  42. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tool_message.py +0 -0
  43. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/__init__.py +0 -0
  44. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  45. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/extract_tool.py +0 -0
  46. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/generator_tool.py +0 -0
  47. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/google_search_tool.py +0 -0
  48. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  49. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/recipient_tool.py +0 -0
  50. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/run_python_code.py +0 -0
  51. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/sciphi_search_rag_tool.py +0 -0
  52. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent/tools/segment_extract_tool.py +0 -0
  53. {langroid-0.1.206 → langroid-0.1.207}/langroid/agent_config.py +0 -0
  54. {langroid-0.1.206 → langroid-0.1.207}/langroid/cachedb/__init__.py +0 -0
  55. {langroid-0.1.206 → langroid-0.1.207}/langroid/cachedb/base.py +0 -0
  56. {langroid-0.1.206 → langroid-0.1.207}/langroid/cachedb/momento_cachedb.py +0 -0
  57. {langroid-0.1.206 → langroid-0.1.207}/langroid/cachedb/redis_cachedb.py +0 -0
  58. {langroid-0.1.206 → langroid-0.1.207}/langroid/embedding_models/__init__.py +0 -0
  59. {langroid-0.1.206 → langroid-0.1.207}/langroid/embedding_models/base.py +0 -0
  60. {langroid-0.1.206 → langroid-0.1.207}/langroid/embedding_models/clustering.py +0 -0
  61. {langroid-0.1.206 → langroid-0.1.207}/langroid/embedding_models/models.py +0 -0
  62. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/__init__.py +0 -0
  63. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/azure_openai.py +0 -0
  64. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/base.py +0 -0
  65. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/config.py +0 -0
  66. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/openai_assistants.py +0 -0
  67. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  68. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/prompt_formatter/base.py +0 -0
  69. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  70. {langroid-0.1.206 → langroid-0.1.207}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  71. {langroid-0.1.206 → langroid-0.1.207}/langroid/mytypes.py +0 -0
  72. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/__init__.py +0 -0
  73. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/agent_chats.py +0 -0
  74. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/code-parsing.md +0 -0
  75. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/code_parser.py +0 -0
  76. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/config.py +0 -0
  77. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/document_parser.py +0 -0
  78. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/json.py +0 -0
  79. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/para_sentence_split.py +0 -0
  80. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/parser.py +0 -0
  81. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/repo_loader.py +0 -0
  82. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/search.py +0 -0
  83. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/spider.py +0 -0
  84. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/table_loader.py +0 -0
  85. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/url_loader.py +0 -0
  86. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/url_loader_cookies.py +0 -0
  87. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/urls.py +0 -0
  88. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/utils.py +0 -0
  89. {langroid-0.1.206 → langroid-0.1.207}/langroid/parsing/web_search.py +0 -0
  90. {langroid-0.1.206 → langroid-0.1.207}/langroid/prompts/__init__.py +0 -0
  91. {langroid-0.1.206 → langroid-0.1.207}/langroid/prompts/chat-gpt4-system-prompt.md +0 -0
  92. {langroid-0.1.206 → langroid-0.1.207}/langroid/prompts/dialog.py +0 -0
  93. {langroid-0.1.206 → langroid-0.1.207}/langroid/prompts/prompts_config.py +0 -0
  94. {langroid-0.1.206 → langroid-0.1.207}/langroid/prompts/templates.py +0 -0
  95. {langroid-0.1.206 → langroid-0.1.207}/langroid/prompts/transforms.py +0 -0
  96. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/__init__.py +0 -0
  97. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/algorithms/__init__.py +0 -0
  98. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/algorithms/graph.py +0 -0
  99. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/configuration.py +0 -0
  100. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/constants.py +0 -0
  101. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/docker.py +0 -0
  102. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/globals.py +0 -0
  103. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/llms/__init__.py +0 -0
  104. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/llms/strings.py +0 -0
  105. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/logging.py +0 -0
  106. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/output/__init__.py +0 -0
  107. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/output/printing.py +0 -0
  108. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/pandas_utils.py +0 -0
  109. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/pydantic_utils.py +0 -0
  110. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/system.py +0 -0
  111. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/web/__init__.py +0 -0
  112. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/web/login.py +0 -0
  113. {langroid-0.1.206 → langroid-0.1.207}/langroid/utils/web/selenium_login.py +0 -0
  114. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/__init__.py +0 -0
  115. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/base.py +0 -0
  116. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/chromadb.py +0 -0
  117. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/lancedb.py +0 -0
  118. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/meilisearch.py +0 -0
  119. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/momento.py +0 -0
  120. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/qdrant_cloud.py +0 -0
  121. {langroid-0.1.206 → langroid-0.1.207}/langroid/vector_store/qdrantdb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.1.206
3
+ Version: 0.1.207
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -60,6 +60,7 @@ else:
60
60
  OLLAMA_BASE_URL = "http://localhost:11434/v1"
61
61
 
62
62
  OLLAMA_API_KEY = "ollama"
63
+ DUMMY_API_KEY = "xxx"
63
64
 
64
65
 
65
66
  class OpenAIChatModel(str, Enum):
@@ -210,7 +211,7 @@ class OpenAIGPTConfig(LLMConfig):
210
211
  """
211
212
 
212
213
  type: str = "openai"
213
- api_key: str = "" # CAUTION: set this ONLY via env var OPENAI_API_KEY
214
+ api_key: str = DUMMY_API_KEY # CAUTION: set this ONLY via env var OPENAI_API_KEY
214
215
  organization: str = ""
215
216
  api_base: str | None = None # used for local or other non-OpenAI models
216
217
  litellm: bool = False # use litellm api?
@@ -441,7 +442,12 @@ class OpenAIGPT(LanguageModel):
441
442
  # Pydantic's BaseSettings will automatically pick it up from the
442
443
  # .env file
443
444
  # The config.api_key is ignored when not using an OpenAI model
444
- self.api_key = config.api_key if self.is_openai_chat_model() else "xxx"
445
+ if self.is_openai_completion_model() or self.is_openai_chat_model():
446
+ self.api_key = config.api_key
447
+ if self.api_key == DUMMY_API_KEY:
448
+ self.api_key = os.getenv("OPENAI_API_KEY", DUMMY_API_KEY)
449
+ else:
450
+ self.api_key = DUMMY_API_KEY
445
451
  self.client = OpenAI(
446
452
  api_key=self.api_key,
447
453
  base_url=self.api_base,
@@ -25,6 +25,7 @@ def retry_with_exponential_backoff(
25
25
  requests.exceptions.RequestException,
26
26
  openai.APITimeoutError,
27
27
  openai.RateLimitError,
28
+ openai.AuthenticationError,
28
29
  openai.APIError,
29
30
  aiohttp.ServerTimeoutError,
30
31
  asyncio.TimeoutError,
@@ -47,6 +48,10 @@ def retry_with_exponential_backoff(
47
48
  # e.g. when context is too long
48
49
  logger.error(f"OpenAI API request failed with error: {e}.")
49
50
  raise e
51
+ except openai.AuthenticationError as e:
52
+ # do not retry when there's an auth error
53
+ logger.error(f"OpenAI API request failed with error: {e}.")
54
+ raise e
50
55
 
51
56
  # Retry on specified errors
52
57
  except errors as e:
@@ -85,6 +90,7 @@ def async_retry_with_exponential_backoff(
85
90
  errors: tuple = ( # type: ignore
86
91
  openai.APITimeoutError,
87
92
  openai.RateLimitError,
93
+ openai.AuthenticationError,
88
94
  openai.APIError,
89
95
  aiohttp.ServerTimeoutError,
90
96
  asyncio.TimeoutError,
@@ -108,7 +114,10 @@ def async_retry_with_exponential_backoff(
108
114
  # e.g. when context is too long
109
115
  logger.error(f"OpenAI API request failed with error: {e}.")
110
116
  raise e
111
-
117
+ except openai.AuthenticationError as e:
118
+ # do not retry when there's an auth error
119
+ logger.error(f"OpenAI API request failed with error: {e}.")
120
+ raise e
112
121
  # Retry on specified errors
113
122
  except errors as e:
114
123
  # Increment retries
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.1.206"
3
+ version = "0.1.207"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes