langroid 0.17.0__tar.gz → 0.18.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 (143) hide show
  1. {langroid-0.17.0 → langroid-0.18.0}/PKG-INFO +2 -2
  2. {langroid-0.17.0 → langroid-0.18.0}/README.md +1 -1
  3. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/xml_tool_message.py +2 -1
  4. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/base.py +13 -0
  5. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/openai_gpt.py +15 -16
  6. {langroid-0.17.0 → langroid-0.18.0}/pyproject.toml +1 -1
  7. {langroid-0.17.0 → langroid-0.18.0}/LICENSE +0 -0
  8. {langroid-0.17.0 → langroid-0.18.0}/langroid/__init__.py +0 -0
  9. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/__init__.py +0 -0
  10. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/base.py +0 -0
  11. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/batch.py +0 -0
  12. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/callbacks/__init__.py +0 -0
  13. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/callbacks/chainlit.py +0 -0
  14. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/chat_agent.py +0 -0
  15. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/chat_document.py +0 -0
  16. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/helpers.py +0 -0
  17. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/junk +0 -0
  18. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/openai_assistant.py +0 -0
  19. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/__init__.py +0 -0
  20. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/doc_chat_agent.py +0 -0
  21. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  22. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/lance_rag/__init__.py +0 -0
  23. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  24. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  25. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  26. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/lance_tools.py +0 -0
  27. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/neo4j/__init__.py +0 -0
  28. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  29. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  30. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/neo4j/utils/__init__.py +0 -0
  31. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/neo4j/utils/system_message.py +0 -0
  32. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  33. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/retriever_agent.py +0 -0
  34. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/__init__.py +0 -0
  35. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  36. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/utils/__init__.py +0 -0
  37. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  38. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  39. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/utils/system_message.py +0 -0
  40. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/sql/utils/tools.py +0 -0
  41. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/special/table_chat_agent.py +0 -0
  42. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/structured_message.py +0 -0
  43. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/task.py +0 -0
  44. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tool_message.py +0 -0
  45. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/__init__.py +0 -0
  46. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  47. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/file_tools.py +0 -0
  48. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/google_search_tool.py +0 -0
  49. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  50. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/orchestration.py +0 -0
  51. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/recipient_tool.py +0 -0
  52. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/retrieval_tool.py +0 -0
  53. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/rewind_tool.py +0 -0
  54. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/tools/segment_extract_tool.py +0 -0
  55. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent/typed_task.py +0 -0
  56. {langroid-0.17.0 → langroid-0.18.0}/langroid/agent_config.py +0 -0
  57. {langroid-0.17.0 → langroid-0.18.0}/langroid/cachedb/__init__.py +0 -0
  58. {langroid-0.17.0 → langroid-0.18.0}/langroid/cachedb/base.py +0 -0
  59. {langroid-0.17.0 → langroid-0.18.0}/langroid/cachedb/momento_cachedb.py +0 -0
  60. {langroid-0.17.0 → langroid-0.18.0}/langroid/cachedb/redis_cachedb.py +0 -0
  61. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/__init__.py +0 -0
  62. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/base.py +0 -0
  63. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/clustering.py +0 -0
  64. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/models.py +0 -0
  65. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/protoc/__init__.py +0 -0
  66. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  67. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  68. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  69. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  70. {langroid-0.17.0 → langroid-0.18.0}/langroid/embedding_models/remote_embeds.py +0 -0
  71. {langroid-0.17.0 → langroid-0.18.0}/langroid/exceptions.py +0 -0
  72. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/.chainlit/config.toml +0 -0
  73. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/.chainlit/translations/en-US.json +0 -0
  74. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/__init__.py +0 -0
  75. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/azure_openai.py +0 -0
  76. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/config.py +0 -0
  77. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/mock_lm.py +0 -0
  78. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  79. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/prompt_formatter/base.py +0 -0
  80. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  81. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  82. {langroid-0.17.0 → langroid-0.18.0}/langroid/language_models/utils.py +0 -0
  83. {langroid-0.17.0 → langroid-0.18.0}/langroid/mytypes.py +0 -0
  84. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/__init__.py +0 -0
  85. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/agent_chats.py +0 -0
  86. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/code-parsing.md +0 -0
  87. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/code_parser.py +0 -0
  88. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/config.py +0 -0
  89. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/document_parser.py +0 -0
  90. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/image_text.py +0 -0
  91. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/para_sentence_split.py +0 -0
  92. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/parse_json.py +0 -0
  93. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/parser.py +0 -0
  94. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/repo_loader.py +0 -0
  95. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/routing.py +0 -0
  96. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/search.py +0 -0
  97. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/spider.py +0 -0
  98. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/table_loader.py +0 -0
  99. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/url_loader.py +0 -0
  100. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/url_loader_cookies.py +0 -0
  101. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/urls.py +0 -0
  102. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/utils.py +0 -0
  103. {langroid-0.17.0 → langroid-0.18.0}/langroid/parsing/web_search.py +0 -0
  104. {langroid-0.17.0 → langroid-0.18.0}/langroid/prompts/__init__.py +0 -0
  105. {langroid-0.17.0 → langroid-0.18.0}/langroid/prompts/chat-gpt4-system-prompt.md +0 -0
  106. {langroid-0.17.0 → langroid-0.18.0}/langroid/prompts/dialog.py +0 -0
  107. {langroid-0.17.0 → langroid-0.18.0}/langroid/prompts/prompts_config.py +0 -0
  108. {langroid-0.17.0 → langroid-0.18.0}/langroid/prompts/templates.py +0 -0
  109. {langroid-0.17.0 → langroid-0.18.0}/langroid/py.typed +0 -0
  110. {langroid-0.17.0 → langroid-0.18.0}/langroid/pydantic_v1/__init__.py +0 -0
  111. {langroid-0.17.0 → langroid-0.18.0}/langroid/pydantic_v1/main.py +0 -0
  112. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/.chainlit/config.toml +0 -0
  113. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/.chainlit/translations/en-US.json +0 -0
  114. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/__init__.py +0 -0
  115. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/algorithms/__init__.py +0 -0
  116. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/algorithms/graph.py +0 -0
  117. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/configuration.py +0 -0
  118. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/constants.py +0 -0
  119. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/docker.py +0 -0
  120. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/git_utils.py +0 -0
  121. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/globals.py +0 -0
  122. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/llms/__init__.py +0 -0
  123. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/llms/strings.py +0 -0
  124. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/logging.py +0 -0
  125. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/object_registry.py +0 -0
  126. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/output/__init__.py +0 -0
  127. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/output/citations.py +0 -0
  128. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/output/printing.py +0 -0
  129. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/output/status.py +0 -0
  130. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/pandas_utils.py +0 -0
  131. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/pydantic_utils.py +0 -0
  132. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/system.py +0 -0
  133. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/types.py +0 -0
  134. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/web/__init__.py +0 -0
  135. {langroid-0.17.0 → langroid-0.18.0}/langroid/utils/web/login.py +0 -0
  136. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/__init__.py +0 -0
  137. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/base.py +0 -0
  138. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/chromadb.py +0 -0
  139. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/lancedb.py +0 -0
  140. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/meilisearch.py +0 -0
  141. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/momento.py +0 -0
  142. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/qdrant_cloud.py +0 -0
  143. {langroid-0.17.0 → langroid-0.18.0}/langroid/vector_store/qdrantdb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.17.0
3
+ Version: 0.18.0
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -244,7 +244,7 @@ teacher_task.run()
244
244
  <summary> <b>Click to expand</b></summary>
245
245
 
246
246
  - **Oct 2024:**
247
- - **[0.17.0]** XML-based tools, see [docs](https://langroid.github.io/langroid/tutorials/xml-tools/).
247
+ - **[0.17.0]** XML-based tools, see [docs](https://langroid.github.io/langroid/notes/xml-tools/).
248
248
  - **Sep 2024:**
249
249
  - **[0.16.0](https://github.com/langroid/langroid/releases/tag/0.16.0)** Support for OpenAI `o1-mini` and `o1-preview` models.
250
250
  - **[0.15.0](https://github.com/langroid/langroid/releases/tag/0.15.0)** Cerebras API support -- run llama-3.1 models hosted on Cerebras Cloud (very fast inference).
@@ -135,7 +135,7 @@ teacher_task.run()
135
135
  <summary> <b>Click to expand</b></summary>
136
136
 
137
137
  - **Oct 2024:**
138
- - **[0.17.0]** XML-based tools, see [docs](https://langroid.github.io/langroid/tutorials/xml-tools/).
138
+ - **[0.17.0]** XML-based tools, see [docs](https://langroid.github.io/langroid/notes/xml-tools/).
139
139
  - **Sep 2024:**
140
140
  - **[0.16.0](https://github.com/langroid/langroid/releases/tag/0.16.0)** Support for OpenAI `o1-mini` and `o1-preview` models.
141
141
  - **[0.15.0](https://github.com/langroid/langroid/releases/tag/0.15.0)** Cerebras API support -- run llama-3.1 models hosted on Cerebras Cloud (very fast inference).
@@ -11,7 +11,7 @@ class XMLToolMessage(ToolMessage):
11
11
  Mainly tested for non-nested tool structures.
12
12
 
13
13
  When a subclass defines a field with the attribute `verbatim=True`,
14
- its value will be:
14
+ instructions are sent to the LLM to ensure the field's content is:
15
15
  - preserved as is, including whitespace, indents, quotes, newlines, etc
16
16
  with no escaping, and
17
17
  - enclosed in a CDATA section in the XML output.
@@ -19,6 +19,7 @@ class XMLToolMessage(ToolMessage):
19
19
  results can be far superior compared to sending code in JSON-formatted tools,
20
20
  where code needs to confirm to JSON's strict rules and escaping requirements.
21
21
  (see test_xml_tool_message.py for an example).
22
+
22
23
  """
23
24
 
24
25
  request: str
@@ -39,6 +39,10 @@ ToolTypes = Literal["function"]
39
39
 
40
40
 
41
41
  class LLMConfig(BaseSettings):
42
+ """
43
+ Common configuration for all language models.
44
+ """
45
+
42
46
  type: str = "openai"
43
47
  streamer: Optional[Callable[[Any], None]] = noop_fn
44
48
  api_base: str | None = None
@@ -48,6 +52,7 @@ class LLMConfig(BaseSettings):
48
52
  completion_model: str = ""
49
53
  temperature: float = 0.0
50
54
  chat_context_length: int = 8000
55
+ async_stream_quiet: bool = True # suppress streaming output in async mode?
51
56
  completion_context_length: int = 8000
52
57
  max_output_tokens: int = 1024 # generate at most this many tokens
53
58
  # if input length + max_output_tokens > context length of model,
@@ -149,6 +154,10 @@ class OpenAIToolSpec(BaseModel):
149
154
 
150
155
 
151
156
  class LLMTokenUsage(BaseModel):
157
+ """
158
+ Usage of tokens by an LLM.
159
+ """
160
+
152
161
  prompt_tokens: int = 0
153
162
  completion_tokens: int = 0
154
163
  cost: float = 0.0
@@ -173,6 +182,10 @@ class LLMTokenUsage(BaseModel):
173
182
 
174
183
 
175
184
  class Role(str, Enum):
185
+ """
186
+ Possible roles for a message in a chat.
187
+ """
188
+
176
189
  USER = "user"
177
190
  SYSTEM = "system"
178
191
  ASSISTANT = "assistant"
@@ -708,7 +708,7 @@ class OpenAIGPT(LanguageModel):
708
708
  event_args = ""
709
709
  event_fn_name = ""
710
710
  event_tool_deltas: Optional[List[Dict[str, Any]]] = None
711
-
711
+ silent = is_async and self.config.async_stream_quiet
712
712
  # The first two events in the stream of Azure OpenAI is useless.
713
713
  # In the 1st: choices list is empty, in the 2nd: the dict delta has null content
714
714
  if chat:
@@ -727,42 +727,40 @@ class OpenAIGPT(LanguageModel):
727
727
  event_text = choices[0]["text"]
728
728
  if event_text:
729
729
  completion += event_text
730
- if not is_async:
730
+ if not silent:
731
731
  sys.stdout.write(Colors().GREEN + event_text)
732
732
  sys.stdout.flush()
733
733
  self.config.streamer(event_text)
734
734
  if event_fn_name:
735
735
  function_name = event_fn_name
736
736
  has_function = True
737
- if not is_async:
737
+ if not silent:
738
738
  sys.stdout.write(Colors().GREEN + "FUNC: " + event_fn_name + ": ")
739
739
  sys.stdout.flush()
740
740
  self.config.streamer(event_fn_name)
741
741
 
742
742
  if event_args:
743
743
  function_args += event_args
744
- if not is_async:
744
+ if not silent:
745
745
  sys.stdout.write(Colors().GREEN + event_args)
746
746
  sys.stdout.flush()
747
747
  self.config.streamer(event_args)
748
748
 
749
- if event_tool_deltas is not None:
750
- # print out streaming tool calls
749
+ if event_tool_deltas is not None and not silent:
750
+ # print out streaming tool calls, if not async
751
751
  for td in event_tool_deltas:
752
752
  if td["function"]["name"] is not None:
753
753
  tool_fn_name = td["function"]["name"]
754
- if not is_async:
755
- sys.stdout.write(
756
- Colors().GREEN + "OAI-TOOL: " + tool_fn_name + ": "
757
- )
758
- sys.stdout.flush()
759
- self.config.streamer(tool_fn_name)
754
+ sys.stdout.write(
755
+ Colors().GREEN + "OAI-TOOL: " + tool_fn_name + ": "
756
+ )
757
+ sys.stdout.flush()
758
+ self.config.streamer(tool_fn_name)
760
759
  if td["function"]["arguments"] != "":
761
760
  tool_fn_args = td["function"]["arguments"]
762
- if not is_async:
763
- sys.stdout.write(Colors().GREEN + tool_fn_args)
764
- sys.stdout.flush()
765
- self.config.streamer(tool_fn_args)
761
+ sys.stdout.write(Colors().GREEN + tool_fn_args)
762
+ sys.stdout.flush()
763
+ self.config.streamer(tool_fn_args)
766
764
 
767
765
  # show this delta in the stream
768
766
  if choices[0].get("finish_reason", "") in [
@@ -872,6 +870,7 @@ class OpenAIGPT(LanguageModel):
872
870
  completion=completion,
873
871
  function_args=function_args,
874
872
  function_name=function_name,
873
+ is_async=True,
875
874
  )
876
875
  if is_break:
877
876
  break
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.17.0"
3
+ version = "0.18.0"
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
File without changes
File without changes