langroid 0.15.2__py3-none-any.whl → 0.16.1__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.
@@ -88,6 +88,8 @@ class OpenAIChatModel(str, Enum):
88
88
  GPT4_TURBO = "gpt-4-turbo"
89
89
  GPT4o = "gpt-4o-2024-08-06"
90
90
  GPT4o_MINI = "gpt-4o-mini"
91
+ O1_PREVIEW = "o1-preview"
92
+ O1_MINI = "o1-mini"
91
93
 
92
94
 
93
95
  class OpenAICompletionModel(str, Enum):
@@ -105,6 +107,8 @@ _context_length: Dict[str, int] = {
105
107
  OpenAIChatModel.GPT4_TURBO: 128_000,
106
108
  OpenAIChatModel.GPT4o: 128_000,
107
109
  OpenAIChatModel.GPT4o_MINI: 128_000,
110
+ OpenAIChatModel.O1_PREVIEW: 128_000,
111
+ OpenAIChatModel.O1_MINI: 128_000,
108
112
  OpenAICompletionModel.TEXT_DA_VINCI_003: 4096,
109
113
  AnthropicModel.CLAUDE_3_5_SONNET: 200_000,
110
114
  AnthropicModel.CLAUDE_3_OPUS: 200_000,
@@ -120,6 +124,8 @@ _cost_per_1k_tokens: Dict[str, Tuple[float, float]] = {
120
124
  OpenAIChatModel.GPT4_TURBO: (0.01, 0.03), # 128K context
121
125
  OpenAIChatModel.GPT4o: (0.0025, 0.010), # 128K context
122
126
  OpenAIChatModel.GPT4o_MINI: (0.00015, 0.0006), # 128K context
127
+ OpenAIChatModel.O1_PREVIEW: (0.015, 0.060), # 128K context
128
+ OpenAIChatModel.O1_MINI: (0.003, 0.012), # 128K context
123
129
  AnthropicModel.CLAUDE_3_5_SONNET: (0.003, 0.015),
124
130
  AnthropicModel.CLAUDE_3_OPUS: (0.015, 0.075),
125
131
  AnthropicModel.CLAUDE_3_SONNET: (0.003, 0.015),
@@ -132,6 +138,8 @@ openAIChatModelPreferenceList = [
132
138
  OpenAIChatModel.GPT4_TURBO,
133
139
  OpenAIChatModel.GPT4,
134
140
  OpenAIChatModel.GPT4o_MINI,
141
+ OpenAIChatModel.O1_MINI,
142
+ OpenAIChatModel.O1_PREVIEW,
135
143
  OpenAIChatModel.GPT3_5_TURBO,
136
144
  ]
137
145
 
@@ -140,6 +148,15 @@ openAICompletionModelPreferenceList = [
140
148
  OpenAICompletionModel.TEXT_DA_VINCI_003,
141
149
  ]
142
150
 
151
+ NON_STREAMING_MODELS = [
152
+ OpenAIChatModel.O1_MINI,
153
+ OpenAIChatModel.O1_PREVIEW,
154
+ ]
155
+
156
+ NON_SYSTEM_MESSAGE_MODELS = [
157
+ OpenAIChatModel.O1_MINI,
158
+ OpenAIChatModel.O1_PREVIEW,
159
+ ]
143
160
 
144
161
  if "OPENAI_API_KEY" in os.environ:
145
162
  try:
@@ -579,6 +596,27 @@ class OpenAIGPT(LanguageModel):
579
596
  openai_completion_models = [e.value for e in OpenAICompletionModel]
580
597
  return self.config.completion_model in openai_completion_models
581
598
 
599
+ def unsupported_params(self) -> List[str]:
600
+ """
601
+ List of params that are not supported by the current model
602
+ """
603
+ match self.config.chat_model:
604
+ case OpenAIChatModel.O1_MINI | OpenAIChatModel.O1_PREVIEW:
605
+ return ["temperature", "stream"]
606
+ case _:
607
+ return []
608
+
609
+ def rename_params(self) -> Dict[str, str]:
610
+ """
611
+ Map of param name -> new name for specific models.
612
+ Currently main troublemaker is o1* series.
613
+ """
614
+ match self.config.chat_model:
615
+ case OpenAIChatModel.O1_MINI | OpenAIChatModel.O1_PREVIEW:
616
+ return {"max_tokens": "max_completion_tokens"}
617
+ case _:
618
+ return {}
619
+
582
620
  def chat_context_length(self) -> int:
583
621
  """
584
622
  Context-length for chat-completion models/endpoints
@@ -623,7 +661,11 @@ class OpenAIGPT(LanguageModel):
623
661
 
624
662
  def get_stream(self) -> bool:
625
663
  """Get streaming status"""
626
- return self.config.stream and settings.stream
664
+ return (
665
+ self.config.stream
666
+ and settings.stream
667
+ and self.config.chat_model not in NON_STREAMING_MODELS
668
+ )
627
669
 
628
670
  @no_type_check
629
671
  def _process_stream_event(
@@ -1421,6 +1463,12 @@ class OpenAIGPT(LanguageModel):
1421
1463
  else:
1422
1464
  llm_messages = messages
1423
1465
 
1466
+ # for models that don't support system msg, change SYSTEM role to USER
1467
+ if self.config.chat_model in NON_SYSTEM_MESSAGE_MODELS:
1468
+ for i, m in enumerate(llm_messages):
1469
+ if m.role == Role.SYSTEM:
1470
+ llm_messages[i].role = Role.USER
1471
+
1424
1472
  # Azure uses different parameters. It uses ``engine`` instead of ``model``
1425
1473
  # and the value should be the deployment_name not ``self.config.chat_model``
1426
1474
  chat_model = self.config.chat_model
@@ -1457,6 +1505,15 @@ class OpenAIGPT(LanguageModel):
1457
1505
  tool_choice=tool_choice,
1458
1506
  )
1459
1507
  )
1508
+ for p in self.unsupported_params():
1509
+ # some models e.g. o1-mini (as of sep 2024) don't support some params,
1510
+ # like temperature and stream, so we need to remove them.
1511
+ args.pop(p, None)
1512
+
1513
+ param_rename_map = self.rename_params()
1514
+ for old_param, new_param in param_rename_map.items():
1515
+ if old_param in args:
1516
+ args[new_param] = args.pop(old_param)
1460
1517
  return args
1461
1518
 
1462
1519
  def _process_chat_completion_response(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.15.2
3
+ Version: 0.16.1
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -66,7 +66,7 @@ Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "all" or extra == "neo4j"
66
66
  Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
67
67
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
68
68
  Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
69
- Requires-Dist: openai (>=1.14.0,<2.0.0)
69
+ Requires-Dist: openai (>=1.45.0,<2.0.0)
70
70
  Requires-Dist: pandas (>=2.0.3,<3.0.0)
71
71
  Requires-Dist: pdf2image (>=1.17.0,<2.0.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
72
72
  Requires-Dist: pdfplumber (>=0.10.2,<0.11.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
@@ -242,6 +242,11 @@ teacher_task.run()
242
242
  <details>
243
243
  <summary> <b>Click to expand</b></summary>
244
244
 
245
+ - **Sep 2024:**
246
+ - **[0.16.0](https://github.com/langroid/langroid/releases/tag/0.16.0)** Support for OpenAI `o1-mini` and `o1-preview` models.
247
+ - **[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).
248
+ - **[0.14.0](https://github.com/langroid/langroid/releases/tag/0.14.0)** `DocChatAgent` uses Reciprocal Rank Fusion (RRF) to rank chunks retrieved by different methods.
249
+ - **[0.12.0](https://github.com/langroid/langroid/releases/tag/0.12.0)** `run_batch_task` new option -- `stop_on_first_result` - allows termination of batch as soon as any task returns a result.
245
250
  - **Aug 2024:**
246
251
  - **[0.11.0](https://github.com/langroid/langroid/releases/tag/0.11.0)** Polymorphic `Task.run(), Task.run_async`.
247
252
  - **[0.10.0](https://github.com/langroid/langroid/releases/tag/0.10.0)** Allow tool handlers to return arbitrary result type, including other tools.
@@ -72,7 +72,7 @@ langroid/language_models/azure_openai.py,sha256=G4le3j4YLHV7IwgB2C37hO3MKijZ1Kjy
72
72
  langroid/language_models/base.py,sha256=ytJ_0Jw5erbqrqLPp4JMCo_nIkwzUvBqoKUr8Sae9Qg,21792
73
73
  langroid/language_models/config.py,sha256=9Q8wk5a7RQr8LGMT_0WkpjY8S4ywK06SalVRjXlfCiI,378
74
74
  langroid/language_models/mock_lm.py,sha256=HuiAvjHiCfffYF5xjFJUq945HVTW0QPbeUUctOnNCzQ,3868
75
- langroid/language_models/openai_gpt.py,sha256=1wG1nXho6bLOWyWqlR51uY45ZFkt5NWXx0hbXzKLVoQ,62050
75
+ langroid/language_models/openai_gpt.py,sha256=rZJCX1hJHPvlL8mR5ec3TUyG2nwFTZH4UifnE7wrWD4,64111
76
76
  langroid/language_models/prompt_formatter/__init__.py,sha256=2-5cdE24XoFDhifOLl8yiscohil1ogbP1ECkYdBlBsk,372
77
77
  langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
78
78
  langroid/language_models/prompt_formatter/hf_formatter.py,sha256=PVJppmjRvD-2DF-XNC6mE05vTZ9wbu37SmXwZBQhad0,5055
@@ -138,8 +138,8 @@ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3Hmh
138
138
  langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
139
139
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
140
140
  langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
141
- pyproject.toml,sha256=UKn6g-ebguW3_jvH4H7Ru7Iqbo7XJtZEr2aSX-cIJ5E,7157
142
- langroid-0.15.2.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
143
- langroid-0.15.2.dist-info/METADATA,sha256=4L_GLwCE6hG1sGsNreAlqSfUQw801L85U2bPTlM71Mk,55481
144
- langroid-0.15.2.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
145
- langroid-0.15.2.dist-info/RECORD,,
141
+ pyproject.toml,sha256=HDI-JAyZ243qlEJ5tk58A02rIuiPzsy_PFdrgYzWPT4,7157
142
+ langroid-0.16.1.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
143
+ langroid-0.16.1.dist-info/METADATA,sha256=TC5RuK81GFIJC6X-RW8TBXbyDMU8OBEAgcxqQ8wxhSE,56165
144
+ langroid-0.16.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
145
+ langroid-0.16.1.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.15.2"
3
+ version = "0.16.1"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"
@@ -53,7 +53,7 @@ trafilatura = "^1.5.0"
53
53
  halo = "^0.0.31"
54
54
  typer = "^0.9.0"
55
55
  colorlog = "^6.7.0"
56
- openai = "^1.14.0"
56
+ openai = "^1.45.0"
57
57
  tiktoken = "^0.7.0"
58
58
  pygithub = "^1.58.1"
59
59
  pygments = "^2.15.1"