langroid 0.33.6__py3-none-any.whl → 0.33.7__py3-none-any.whl

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 (129) hide show
  1. langroid/__init__.py +106 -0
  2. langroid/agent/__init__.py +41 -0
  3. langroid/agent/base.py +1983 -0
  4. langroid/agent/batch.py +398 -0
  5. langroid/agent/callbacks/__init__.py +0 -0
  6. langroid/agent/callbacks/chainlit.py +598 -0
  7. langroid/agent/chat_agent.py +1899 -0
  8. langroid/agent/chat_document.py +454 -0
  9. langroid/agent/openai_assistant.py +882 -0
  10. langroid/agent/special/__init__.py +59 -0
  11. langroid/agent/special/arangodb/__init__.py +0 -0
  12. langroid/agent/special/arangodb/arangodb_agent.py +656 -0
  13. langroid/agent/special/arangodb/system_messages.py +186 -0
  14. langroid/agent/special/arangodb/tools.py +107 -0
  15. langroid/agent/special/arangodb/utils.py +36 -0
  16. langroid/agent/special/doc_chat_agent.py +1466 -0
  17. langroid/agent/special/lance_doc_chat_agent.py +262 -0
  18. langroid/agent/special/lance_rag/__init__.py +9 -0
  19. langroid/agent/special/lance_rag/critic_agent.py +198 -0
  20. langroid/agent/special/lance_rag/lance_rag_task.py +82 -0
  21. langroid/agent/special/lance_rag/query_planner_agent.py +260 -0
  22. langroid/agent/special/lance_tools.py +61 -0
  23. langroid/agent/special/neo4j/__init__.py +0 -0
  24. langroid/agent/special/neo4j/csv_kg_chat.py +174 -0
  25. langroid/agent/special/neo4j/neo4j_chat_agent.py +433 -0
  26. langroid/agent/special/neo4j/system_messages.py +120 -0
  27. langroid/agent/special/neo4j/tools.py +32 -0
  28. langroid/agent/special/relevance_extractor_agent.py +127 -0
  29. langroid/agent/special/retriever_agent.py +56 -0
  30. langroid/agent/special/sql/__init__.py +17 -0
  31. langroid/agent/special/sql/sql_chat_agent.py +654 -0
  32. langroid/agent/special/sql/utils/__init__.py +21 -0
  33. langroid/agent/special/sql/utils/description_extractors.py +190 -0
  34. langroid/agent/special/sql/utils/populate_metadata.py +85 -0
  35. langroid/agent/special/sql/utils/system_message.py +35 -0
  36. langroid/agent/special/sql/utils/tools.py +64 -0
  37. langroid/agent/special/table_chat_agent.py +263 -0
  38. langroid/agent/task.py +2095 -0
  39. langroid/agent/tool_message.py +393 -0
  40. langroid/agent/tools/__init__.py +38 -0
  41. langroid/agent/tools/duckduckgo_search_tool.py +50 -0
  42. langroid/agent/tools/file_tools.py +234 -0
  43. langroid/agent/tools/google_search_tool.py +39 -0
  44. langroid/agent/tools/metaphor_search_tool.py +68 -0
  45. langroid/agent/tools/orchestration.py +303 -0
  46. langroid/agent/tools/recipient_tool.py +235 -0
  47. langroid/agent/tools/retrieval_tool.py +32 -0
  48. langroid/agent/tools/rewind_tool.py +137 -0
  49. langroid/agent/tools/segment_extract_tool.py +41 -0
  50. langroid/agent/xml_tool_message.py +382 -0
  51. langroid/cachedb/__init__.py +17 -0
  52. langroid/cachedb/base.py +58 -0
  53. langroid/cachedb/momento_cachedb.py +108 -0
  54. langroid/cachedb/redis_cachedb.py +153 -0
  55. langroid/embedding_models/__init__.py +39 -0
  56. langroid/embedding_models/base.py +74 -0
  57. langroid/embedding_models/models.py +461 -0
  58. langroid/embedding_models/protoc/__init__.py +0 -0
  59. langroid/embedding_models/protoc/embeddings.proto +19 -0
  60. langroid/embedding_models/protoc/embeddings_pb2.py +33 -0
  61. langroid/embedding_models/protoc/embeddings_pb2.pyi +50 -0
  62. langroid/embedding_models/protoc/embeddings_pb2_grpc.py +79 -0
  63. langroid/embedding_models/remote_embeds.py +153 -0
  64. langroid/exceptions.py +71 -0
  65. langroid/language_models/__init__.py +53 -0
  66. langroid/language_models/azure_openai.py +153 -0
  67. langroid/language_models/base.py +678 -0
  68. langroid/language_models/config.py +18 -0
  69. langroid/language_models/mock_lm.py +124 -0
  70. langroid/language_models/openai_gpt.py +1964 -0
  71. langroid/language_models/prompt_formatter/__init__.py +16 -0
  72. langroid/language_models/prompt_formatter/base.py +40 -0
  73. langroid/language_models/prompt_formatter/hf_formatter.py +132 -0
  74. langroid/language_models/prompt_formatter/llama2_formatter.py +75 -0
  75. langroid/language_models/utils.py +151 -0
  76. langroid/mytypes.py +84 -0
  77. langroid/parsing/__init__.py +52 -0
  78. langroid/parsing/agent_chats.py +38 -0
  79. langroid/parsing/code_parser.py +121 -0
  80. langroid/parsing/document_parser.py +718 -0
  81. langroid/parsing/para_sentence_split.py +62 -0
  82. langroid/parsing/parse_json.py +155 -0
  83. langroid/parsing/parser.py +313 -0
  84. langroid/parsing/repo_loader.py +790 -0
  85. langroid/parsing/routing.py +36 -0
  86. langroid/parsing/search.py +275 -0
  87. langroid/parsing/spider.py +102 -0
  88. langroid/parsing/table_loader.py +94 -0
  89. langroid/parsing/url_loader.py +111 -0
  90. langroid/parsing/urls.py +273 -0
  91. langroid/parsing/utils.py +373 -0
  92. langroid/parsing/web_search.py +156 -0
  93. langroid/prompts/__init__.py +9 -0
  94. langroid/prompts/dialog.py +17 -0
  95. langroid/prompts/prompts_config.py +5 -0
  96. langroid/prompts/templates.py +141 -0
  97. langroid/pydantic_v1/__init__.py +10 -0
  98. langroid/pydantic_v1/main.py +4 -0
  99. langroid/utils/__init__.py +19 -0
  100. langroid/utils/algorithms/__init__.py +3 -0
  101. langroid/utils/algorithms/graph.py +103 -0
  102. langroid/utils/configuration.py +98 -0
  103. langroid/utils/constants.py +30 -0
  104. langroid/utils/git_utils.py +252 -0
  105. langroid/utils/globals.py +49 -0
  106. langroid/utils/logging.py +135 -0
  107. langroid/utils/object_registry.py +66 -0
  108. langroid/utils/output/__init__.py +20 -0
  109. langroid/utils/output/citations.py +41 -0
  110. langroid/utils/output/printing.py +99 -0
  111. langroid/utils/output/status.py +40 -0
  112. langroid/utils/pandas_utils.py +30 -0
  113. langroid/utils/pydantic_utils.py +602 -0
  114. langroid/utils/system.py +286 -0
  115. langroid/utils/types.py +93 -0
  116. langroid/vector_store/__init__.py +50 -0
  117. langroid/vector_store/base.py +359 -0
  118. langroid/vector_store/chromadb.py +214 -0
  119. langroid/vector_store/lancedb.py +406 -0
  120. langroid/vector_store/meilisearch.py +299 -0
  121. langroid/vector_store/momento.py +278 -0
  122. langroid/vector_store/qdrantdb.py +468 -0
  123. {langroid-0.33.6.dist-info → langroid-0.33.7.dist-info}/METADATA +95 -94
  124. langroid-0.33.7.dist-info/RECORD +127 -0
  125. {langroid-0.33.6.dist-info → langroid-0.33.7.dist-info}/WHEEL +1 -1
  126. langroid-0.33.6.dist-info/RECORD +0 -7
  127. langroid-0.33.6.dist-info/entry_points.txt +0 -4
  128. pyproject.toml +0 -356
  129. {langroid-0.33.6.dist-info → langroid-0.33.7.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,124 @@
1
+ """Mock Language Model for testing"""
2
+
3
+ from typing import Awaitable, Callable, Dict, List, Optional, Union
4
+
5
+ import langroid.language_models as lm
6
+ from langroid.language_models import LLMResponse
7
+ from langroid.language_models.base import (
8
+ LanguageModel,
9
+ LLMConfig,
10
+ OpenAIJsonSchemaSpec,
11
+ OpenAIToolSpec,
12
+ ToolChoiceTypes,
13
+ )
14
+ from langroid.utils.types import to_string
15
+
16
+
17
+ def none_fn(x: str) -> None | str:
18
+ return None
19
+
20
+
21
+ class MockLMConfig(LLMConfig):
22
+ """
23
+ Mock Language Model Configuration.
24
+
25
+ Attributes:
26
+ response_dict (Dict[str, str]): A "response rule-book", in the form of a
27
+ dictionary; if last msg in dialog is x,then respond with response_dict[x]
28
+ """
29
+
30
+ response_dict: Dict[str, str] = {}
31
+ response_fn: Callable[[str], None | str] = none_fn
32
+ response_fn_async: Optional[Callable[[str], Awaitable[Optional[str]]]] = None
33
+ default_response: str = "Mock response"
34
+
35
+ type: str = "mock"
36
+
37
+
38
+ class MockLM(LanguageModel):
39
+
40
+ def __init__(self, config: MockLMConfig = MockLMConfig()):
41
+ super().__init__(config)
42
+ self.config: MockLMConfig = config
43
+
44
+ def _response(self, msg: str) -> LLMResponse:
45
+ # response is based on this fallback order:
46
+ # - response_dict
47
+ # - response_fn
48
+ # - default_response
49
+ mapped_response = self.config.response_dict.get(
50
+ msg, self.config.response_fn(msg) or self.config.default_response
51
+ )
52
+ return lm.LLMResponse(
53
+ message=to_string(mapped_response),
54
+ cached=False,
55
+ )
56
+
57
+ async def _response_async(self, msg: str) -> LLMResponse:
58
+ # response is based on this fallback order:
59
+ # - response_dict
60
+ # - response_fn_async
61
+ # - response_fn
62
+ # - default_response
63
+ if self.config.response_fn_async is not None:
64
+ response = await self.config.response_fn_async(msg)
65
+ else:
66
+ response = self.config.response_fn(msg)
67
+
68
+ mapped_response = self.config.response_dict.get(
69
+ msg, response or self.config.default_response
70
+ )
71
+ return lm.LLMResponse(
72
+ message=to_string(mapped_response),
73
+ cached=False,
74
+ )
75
+
76
+ def chat(
77
+ self,
78
+ messages: Union[str, List[lm.LLMMessage]],
79
+ max_tokens: int = 200,
80
+ tools: Optional[List[OpenAIToolSpec]] = None,
81
+ tool_choice: ToolChoiceTypes | Dict[str, str | Dict[str, str]] = "auto",
82
+ functions: Optional[List[lm.LLMFunctionSpec]] = None,
83
+ function_call: str | Dict[str, str] = "auto",
84
+ response_format: Optional[OpenAIJsonSchemaSpec] = None,
85
+ ) -> lm.LLMResponse:
86
+ """
87
+ Mock chat function for testing
88
+ """
89
+ last_msg = messages[-1].content if isinstance(messages, list) else messages
90
+ return self._response(last_msg)
91
+
92
+ async def achat(
93
+ self,
94
+ messages: Union[str, List[lm.LLMMessage]],
95
+ max_tokens: int = 200,
96
+ tools: Optional[List[OpenAIToolSpec]] = None,
97
+ tool_choice: ToolChoiceTypes | Dict[str, str | Dict[str, str]] = "auto",
98
+ functions: Optional[List[lm.LLMFunctionSpec]] = None,
99
+ function_call: str | Dict[str, str] = "auto",
100
+ response_format: Optional[OpenAIJsonSchemaSpec] = None,
101
+ ) -> lm.LLMResponse:
102
+ """
103
+ Mock chat function for testing
104
+ """
105
+ last_msg = messages[-1].content if isinstance(messages, list) else messages
106
+ return await self._response_async(last_msg)
107
+
108
+ def generate(self, prompt: str, max_tokens: int = 200) -> lm.LLMResponse:
109
+ """
110
+ Mock generate function for testing
111
+ """
112
+ return self._response(prompt)
113
+
114
+ async def agenerate(self, prompt: str, max_tokens: int = 200) -> LLMResponse:
115
+ """
116
+ Mock generate function for testing
117
+ """
118
+ return await self._response_async(prompt)
119
+
120
+ def get_stream(self) -> bool:
121
+ return False
122
+
123
+ def set_stream(self, stream: bool) -> bool:
124
+ return False